Heron-Centric: Ruminations of a Language Designer Defininition of a Programming Language by Christopher Diggins July 14, 2006
Here is a challenge, try to define what a programming language is.
Here are some definitions of "programming language" which I have found around the internet:
An artificial language used to write instructions that can be translated into machine language and then executed by a computer. - "programming language." The American Heritage® Dictionary of the English Language, Fourth Edition. Houghton Mifflin Company, 2004. Answers.com 14 Jul. 2006. http://www.answers.com/topic/programming-language
syntax, grammar, and symbols or words used to give instructions to a computer. - programming language." The Columbia Electronic Encyclopedia, Sixth Edition. Columbia University Press., 2003. Answers.com 14 Jul. 2006. http://www.answers.com/topic/programming-language
A programming language is an artificial language that can be used to control the behavior of a machine (often a computer). - "programming language." Wikipedia. Wikipedia, 2005. Answers.com 14 Jul. 2006. http://www.answers.com/topic/programming-language
These definitions are insufficient because a programming language doesn't neccessarily require translation, or execution by a computer. These definitions reflects the more mechanical view of programming languages, as a means of communicating a series of instructions to a machine.
Another view of a programming language, which would appeal to the more academically minded, is that a programming language is a language for expressing computations. This also would be insufficient by itself, because it ignores the fact that much of programming is telling a computer what to do. (e.g. tell the OS to move a file, send a digital signal down a cable, store bits in memory, etc.).
Here is my ambitious attempt at a definition:
Programming Language - A language which: expresses instructions governing the behavior of software, or a machine; or which expresses a computation
What this highlights for me is a fundamental problem of theoretical computer science: bridging the gap between computing something, and doing something. This is an important and often overlooked problem.
How would you define what a programming language is?
Have an opinion?
Readers have already posted
about this weblog entry. Why not
If you'd like to be notified whenever Christopher Diggins adds a new entry to his weblog, subscribe to his RSS feed.
Christopher Diggins is a software developer and freelance writer. Christopher loves programming, but is eternally frustrated by the shortcomings of modern programming languages. As would any reasonable person in his shoes, he decided to quit his day job to write his own ( www.heron-language.com ). Christopher is the co-author of the C++ Cookbook from O'Reilly. Christopher can be reached through his home page at www.cdiggins.com.