5 comments

[ 3.4 ms ] story [ 22.0 ms ] thread
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 http://www.cs.arizona.edu/icon/ . I got my first Icon distribution on magnetic tape :)
There are two kinds of languages: Languages that are heroes, and languages that live long enough to see themselves become a villain ;)
While i find icon to be a nice language, imperative string operations with implicit context is a huge turn off. I'd rather use regexps.
Huh. That's a neat language.

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.

Icon's notions of success/failure and generators were giant steps that unfortunately went unnoticed.

They lead to a level of source code expressiveness that is still unmatched today.

Once you get used to that, most current programming languages look like sophisticated assemblers.