In 1966, Samuel R. Delany published a novel called Babel-17.  Here is an excerpt from its Wiki description:

During an interstellar war one side develops a language, Babel-17, that can be used as a weapon. Learning it turns one into an unwilling traitor as it alters perception and thought. The change is made more dangerous by the language’s seductive enhancement of other abilities.

I decided that Babel-17 is a good name for my new phlegmatic programming language. There is already a first reference implementation V 0.1 out there, but before Babel-17 approaches V 1.0, many changes are bound to happen. My current vision for Babel-17 can be broken down into the following goals:

  • Babel-17 does purely functional programming.
  • Babel-17 does object-oriented programming and encapsulation.
  • Babel-17 does imperative programming.
  • Babel-17 does exceptions.
  • Babel-17 does dynamic typing.
  • Babel-17 does strict, lazy and concurrent programming.
  • The different programming paradigms it supports should be designed to integrate with each other as neatly as possible.
  • Babel-17 is based on simple concepts most easily understood by the mathematical mind.

The first goal seems to be somewhat at odds with the second goal, and totally contrary to the third goal. But I believe that object-oriented programming and purely functional programming can coexist happily in one program. And although a truly imperative program certainly isn’t a purely functional program (and it should be possible in Babel-17 to write truly imperative programs), there are many programs that seem to be imperative, but really can  just as well be understood as functional programs (I will describe this point in a later post).

What is so phlegmatic about Babel-17? First comes to mind the last (but not least) of the above goals:

  • Babel-17 is based on simple concepts most easily understood by the mathematical mind.

Second, I’d like to use Babel-17 to write down many useful algorithms and programs of varying size. Structuring big programs calls for object-oriented design and encapsulation. Many algorithms and programs are best understood as purely functional programs. But other algorithms like Quicksort are best understood  in their full brilliance in an imperative setting. In general, an elegant solution to a problem may rely on a combination of different programming paradigms; Babel-17 should be powerful enough to make using such a combination not only possible but also easy and unproblematic.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: