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 :)
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.
5 comments
[ 3.4 ms ] story [ 22.0 ms ] threadOne 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.
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.