This is a story about how I discovered Factor, a young programming language that brought the fun back in my developer's life. It's also an analysis of what pushed me overnight to start chatting and blogging, just to be able to talk about it.
This Wikipedia article better summarizes its features than I could. You can take my word for it and just go grab it at Factor's site or keep reading on for the long story.
I'm a programming language lover. I just can't resist the urge of testing every newcomer. Through the years I sticked with some out of need, others left my desktop the very next day. This path has taken me slowly to functional programming.
I'm usually just an observer and I seldom participate to the core development activity. I often define myself as a "client-programmer" to those languages and their libraries.
Among the languages I keep using are C, Java, Python, Ruby, and Erlang. I'm a good salesman and I could easily convince my clients that Java or, for the sake of the argument, even Visual Basic is more than enough for their needs. But as most of the readers, I came to programming just for fun in the first place. This fun factor never leaves you and you keep looking for a "better" language.
The definition of a better programming language differs a lot but instead of entering the details of the features I'll just say that I don't have a simple answer. This leaves us with the fun factor.
A good language should be like a Christmas tree with beautiful gifts. Under the hood it should hold many "pleasant" surprises and keep surprising you. Like: Ah! it has this, and that feature. Later when you think you have discovered everything about it, pleasant surprises keep coming at a constant rate.
When I started learning Ruby, the fun was there and is still there but deployment of the applications started to become a nightmare. Scalability is even more difficult to attain than with Java. So let's just say that this spoils your pleasure especially when you're running an IT company and keep receiving mad calls from your clients and you know pertinently that the language just can't cope with your scalability needs.
Ruby was also a turning point and a gateway to functional programming. You quickly discover how nice blocks are and slowly shift away from the object oriented paradigm with continuations. So after years of OOP brainwashing you start eyeing Lisp.
I started with Scheme (PLT MzScheme) but was quickly put off by the excessive use of parenthesis. I do understand the principles behind them and I did my best to just ignore the noise, in vain. Meanwhile I had drifted to Gambit-C only to discover Termite.
According to Termite's own site: "Termite is an Erlang-like distributed programming system written in Scheme." What follows is simple to imagine. I went all the way with Erlang. It solved every scalability, reliability, and concurrency problem I had. My whole product line is currently based on it. It answers my needs and my clients are satisfied.
Still, I am not yet appeased. Eternal quest you may think, but I believe I will find peace with Factor. It combines the fun of Ruby with the Erlang-style lightweight threads for the much needed concurrency. What's more, since Lisp is one of its main influences it was able to replace the nasty parentheses with a stack system inspired by Forth and Joy while still retaining Lisp's power.
What I almost forgot to tell you in my enthusiasm for Factor is that its (still) small community is one of the friendliest I've ever met. Brilliant minds but humble people that love to help and share.
I'll be back with more details about this beautiful language as my knowledge grows.