Factor Language Blog

Advantages of concatenative and stack-based languages

Friday, January 2, 2009

Factor has many features that make it stand out – I’ve blogged extensively about some of these, such as interactive development, the compiler, various libraries, application deployment, and so on. In those respects, I think it is pretty clear that Factor is competitive, or even ahead of, existing languages.

However, I don’t think I’ve ever written about the one aspect of Factor that many programmers find the most striking: the fact that it is concatenative language. For example, a recent blog post titled 10 programming languages worth checking out, the author decided to add Factor to the list not because of any of the features I mentioned in the first paragraph, but because it uses a stack to pass parameters; that alone make it “worth checking out” in his view.

Because many people have asked me the question, “why the stack”, I’ve finally decided to put together an overview of what these languages, and especially Factor, are all about. I’ve mentioned most of the material below in presentations, comments on forums and blogs, mailing list posts, and on IRC.

Indeed, I believe that the underlying paradigm in Factor is the “secret weapon” which has allowed such a small community to build up a robust language implementation with a large collection of very capable libraries in only 5 years. There are inherent productivity advantages here, and we probably would have given up long ago if Factor was harder to use than existing languages.

Originally I was going to write a series of blog posts, but I decided to put it in the wiki instead, under the Concatenative language article there.

On another note, I haven’t done much hacking for the last two weeks because of a vacation; our git repository has been pretty quiet of late. On January 5th I go back to work, and there is good stuff coming up for the UI developer tools, compiler, and web framework.