The Semicolon Wars
americanscientist.org
americanscientist.org
Take for example ML (prototypical high-level functional) vs C (prototypical low-level imperative). What makes them essentially different? In ML you have the common imperative features (assignment, references) and in C you can write functions including higher-order (via pointers). The answer you are looking for is "memory management", automatic in ML versus manual in C. Everything comes out of this distinction, down to the fact that in C you don't have lambdas and currying (because no garbage collection means no closures).
What makes ML and Algol 60 different? Both have a strikingly similar set of primitives, imperative and functional. The difference is call-by-value in ML vs. call-by-name in Algol 60, which leads to global effects in ML vs. local effects in Algol 60.
What makes Lisp different from Scheme, the misunderstanding of alpha conversion in Lisp versus its correct implementation in Scheme.
And so on. It would be fun if someone who actually know programming languages beyond the naive and the trivial took time to write a proper potted history and/or comparative analysis.
Rather, I'd argue that there are ideal computer languages for specific problems, and most of the holy wars he mocks have their roots in people working on different problems rightly concluding that their language X is ideal and language Y is inferior. The flame wars are peripheral.
That said, there are solid reasons for Dijkstra's critiques of BASIC and in lesser degrees Pascal and friends. Almost all the dialects of BASIC deserve to die.
Dijkstra hates Basic, Fortran, Cobol and APL .. but not Pascal. He wrote an Algol compiler and used Algol-based languages and formalisms throughout his entire career, even inventing some himself.
The reason is simple: Pascal is hard to hate (or love for that matter.) It's a reliable 4-door, automatic sedan.
http://j.mp/hiPGXA
Other factors to consider: learning a new programming language requires less than a tenth the effort of learning a natural language (my estimate). That's for people. Getting my laptop to speak a new language is mostly a matter of downloading the interpreter or compiler. Granted the interpreter or compiler has to be initially ported to the architecture or OS. So not only is there less programming language balkanization, but the cost of balkanization is less.The challenge of learning a new human language lies primarily in their sheer size; especially assuming two essentially unrelated languages like Chinese and English, you must relearn everything; the words, the phonology, the surface grammar, even as you still really have noun, verb, adverb, adjective. Learning a new programming language on the other hand can cause you to rethink everything you thought you knew about programming in general... but you can do it relatively quickly because opening a file, reading some strings, chewing on them, and spitting them out into a new file just doesn't take several thousand verbs and nouns.
I make these observations without value judgment. I'm not saying one is better or worse than the other; both are worth pursuing. If I have a particular point at all I guess it would be that using the learning of a computer or human language as a metaphor for the other doesn't seem like a great idea to me, there's too many relevant differences for the points people want to make.
Anyway, this article made me buy the Wizard Book and Land of Lisp just to get back to the language... Last time I read (parts of) the Wizard book was in the student commune some time around 97.
A bit unfair but I guess vulgarization is more important than correctness in this context.
Toy language? ...but also possibly the most important ~ http://javascript.crockford.com/popular.html
It is far from being 'largely unchanged for hundreds of years'.
For example, look at the notation for this piece by Iannis Xenakis. (Shows the sheet music in the video). http://www.youtube.com/watch?v=SZazYFchLRI
Compare to this gregorian chant: http://en.wikipedia.org/wiki/File:Graduale_Aboense_2.jpg
Or to this piece by his teacher oliver messiaen http://en.wikipedia.org/wiki/File:Messiaen_Oiseaux_exotiques...
There are some important things that are the same between the chant and the piece by Messian, but the notations are very very different, and have accumulated some really important stuff over the years.
Saying that musical notation has been largely unchanged for hundreds of years is kind of like saying that English has remained largely unchanged for hundreds of years.... in that it is incorrect.
Yes, I'm familiar with the experimentation with notation of 20th century composers such as Xenakis, Cage, Stockhausen, etc, but they're beside the point (no offense to you or Xenakis, I happen to like his work). Their music is obscure and inaccessible to a great deal of Westerners, even many of those who could ordinarily be considered "musically literate", and few of these modern, experimental forms of notation, to my knowledge, have caught on in a way that's comparable to the popularity of even an "obscure" or "academic" computer language such as Haskell. There have been and always will be exceptions, not to mention music that falls outside the realm of Western tradition entirely, but you have to admit that the umbrella of expression that fits the modern standard of notation is pretty wide.
The point to take away, I think, is that once a standard came into common use that allowed composers to convey enough relevant information about the music they were creating, innovation in notation became a lot less important, for quite a long time. By a similar token, while English has of course been constantly evolving throughout its history, as all languages do, standard English orthography hasn't changed much in the last few hundred years either. You don't need a new kind of staff or notehead to represent chromaticism vs. baroque counterpoint, any more than you need new letters of the alphabet in order to write words and phrases that no one has ever heard before, in dialects that didn't exist at the time Walt Whitman wrote "Leaves of Grass", or what have you. As long as you're talking about notes over the chromatic scale, time and key signatures, common rhythmic subdivisions, and so on, you can notate whatever it is you like.
In any case, the point I was making earlier in the thread is that this seems fairly different from the development of computer languages, and I think that a lot of it has to do with the inherent nature of computer languages as tools of abstraction that extend beyond the merely representational. Hence the comparison with musical instruments – in my view, code is more like a hammer than it is a book.
EDIT: apparently both are languages as well. What retarded naming!
I suspect he's not a 'web guy'.
And the language that took the research baton from Lisp was Peter Landin's ISWIM, and its descendant, the Meta Language of LCF.
And before them SASL and the Kent Recursive Calculator.
Something that Wirth or Hoare wrote in 1970 deserves to be labeled old (and that's only because computing is such a new field - in quite a few other fields, that would be relatively recent). An article from 2006 is hardly old, and I think it still reflects the current state of the programming world.
EDIT: sorry, this came across terribly entitled. To put it differently, I think it helps to know the context of things, and the year something was made is part of the context. If the article submitter had linked to the actual article instead of the print version, the sidebar would have given the date. Alternatively, the submitter could have simply added the year into the title. Both wouldn't have cost anything and would have added a bit more context to the submission.
This site is called Hacker News and a lot of the submissions here are in fact new or at least news-y.
I welcome older articles here but it would be better if they were marked so.
Perl to PHP?????
Smalltalk with no descendents?
That language diagram is crazy.