(Background: 12 New Languages in 2013)
Icon is a cool little programming language. It's worth learning, even if it isn't practical for daily use.
- Syntax is similar to C, which makes it easy to learn.
- A handful of publication-quality Icon books (now out of print) are available for free download as PDF. I used The Icon Programming Language, 3rd Ed as my primary resource.
- Latest version was released in 2010 and has been validated against newer systems (Ubuntu 12.04, Mac OS 10.7).
- "Everything is an expression", expression failure, backtracking, and some of the string functions are different enough to make your brain exercise new pathways when solving various problems with Icon. (This is one of my benchmarks about whether it's worth learning a new language.)
- There are debian packages (
apt-get install icon-ipl iconc icont iconx).
Cons (some of these are just nits, really):
- Documentation (at least what I found online) for the library is poor (at best).
- 1-based indexing; this has caused me a handful of hard-to-find bugs. ("Positions in Icon" is kind of odd, too. It's not what you're used to.)
It's basically a dead language. Newest version was released in 2010. The FAQ says:
We continue to use Icon on a daily basis, but no significant changes are planned.
Runtime error reporting is dreadful. Better with the interpreter, but more or less unusable with the compiler. Not much is caught at compile time.
- Do you known any Icon fanboys? Any popular projects that use Icon? Yeah...
On balance, it's not something I'd reach for to solve a given problem, but I'm writing a book processor with it (more in a future post), and I'm finding that it's up to the job of mangling text.