I wish I had something more important to say, but I just wanted to note that Icon, albeit obscure these days, was/is a neat powerful language, especially for complex text processing. I remember using it back in the 80's for fun projects like writing a chaos generator and more useful things like scanning for patterns in DNA/protein sequences (yes, we had a few sequences even back then). It seemed so exotic with it's fancy backtracking pattern matcher, generators and co-routines -- especially for someone coming from a C background. The biggest drawback for me was lack of popularity, which meant I couldn't share the programs I wrote and couldn't get help from almost anyone I worked with since none of them used Icon or even knew about Icon. For anyone interested, it's still available for many platforms at <a href="http://www.cs.arizona.edu/icon/" rel="nofollow">http://www.cs.arizona.edu/icon/</a> . I got my first Icon distribution on magnetic tape :)
Huh. That's a neat language.<p>One thing that struck me was how many of these concepts have been incorporated into Clojure. One of the top Github projects in Clojure is Instaparse, a DSL for parsing grammars like the example at the end of this article.
Good article that demonstrates how much room for improvement still exist for modern languages.<p>Icon's notions of success/failure and generators were giant steps that unfortunately went unnoticed.<p>They lead to a level of source code expressiveness that is still unmatched today.<p>Once you get used to that, most current programming languages look like sophisticated assemblers.