May 30, 2005
What is a Programming Language?
Debates occassionally break out on this blog and other forms of media about the superiority of one programming language over another. The sides usually have good points to make about their case and consensus is impossible to reach. When trying to formulate answers for a side in one of these debates, I asked myself, "what is a programming language?"
The phrase itself says that a "programming language" is a language. This is a circular definition, but one that doesn't receive much attention. Language is simply a means of communication. Communication, which is the exchange of ideas, cannot be defined at a lower level. For humans, communication is made through actions and words, either spoken or written. For computers, communication is made through streams of 0's and 1's. Language is made up of an ordered series of words. Us humans know English, Spanish, Japanese, and many other languages. Computers know C, C++, Java, PHP, Perl, Python, and many more. For us, there are dictionaries that define how words form the language. For computers, there are compilers.
Programming languages are not that uncommon from spoken languages. The only difference is the final means of communication.
We can apply this similarity to the programming language superiority debate. Is Japanese better than English? Is Spanish better than French? What about Latin? These questions, like the ones about programming languages are debated frivilously by the ones who speak them. Languages are the means to efficient communication. Can you really say that one means of communication is superior to another? Well, we can say that one language is more efficient than other. For instance, Spanish can communicate the gender of an object by simply changing the ending of the word. In English, we have to add an entirely new modifier. Spanish is more efficient in this sense. Is it a superior language? If you say yes, then why are people still speaking English? A lot of people speak English poorly, does this make it an inferior language? Of course it doesn't!
The line of thought just outlined is what people attempt with programming languages.
Programming languages are interfaces to computer communication. As long as we communicate the same thing, what difference does the language conveying the message make? Some languages may be more difficult to learn or may be more graceful than others, but as long as they accomplish the same thing, what do we care? Like you can't criticize someone for speaking his native tongue in his own country, you can't criticize a programmer for using the programming language of his choice.
Trackback
You can ping this entry by using http://blog.case.edu/gps10/mt-tb.cgi/1426 .
Comments
This argument is as old as programming languages themselves. There are two basic sides to it:
1) All useful programming languages are turing-complete[1], hence there is no computation that one language could make that another language could not.
2) Although all programming languages are turing complete, there are obvious benefits to some languages and obvious downsides to other languages. If there wern't, then no new languages would ever be created. Some languages make it easier to express certain calculations, hence some languages are better than others[2].
As I see it, you're arguing #1 without even mentioning Turing, instead making an analogy which is just about as good. But it still doesn't hold up. Human languages are exceedingly complex, and the dynamics which control how a language evolves and whether or not it survives are not well understood even by linguists, much less computer scientists. Take any project you're working on right now, and try rewriting it in brainfuck[3], and you'll see why not all languages are created equal.
[1] Wikipedia - Turing Complete
[2] "Revenge of the Nerds" by Peter Graham
[3] Wikipedia - Turing Tarpit
tight milf milf means
adult movies empire big joggs movies free
indian sex galleries indian boobs
The Rolling Stones postpone a show in the US to allow singer Sir Mick Jagger time to rest his voice...
dfkjr ofdpkwrc gndzkwehx aescwth anwoe auhyd lzpkyjbhn
Hi very nice blog
i reed this blog
mkvpaxhz gbqlvteuj cofl fekbvcz ukjnoyl ncvqb rupend