August 25, 2011
A long-standing tradition among software developers while learning a new programming system is to first display the message “hello, world.” While something so simple might seem pointless, there’s actually a lot that must go on before that, usually wiring up a development environment, creating the project, and writing the minimum amount of code. Hello world programs are about getting the plumbing right. Often programmers use a variation of “hello, world” such as the OLPC/Sugar team, which displayed, “Hello, (children of the) world,” which I quite like. I’ve already decided on my “hello, world” phrase, something that has personal significance to me.
The next decision is what programming language and core tools to use. Many developers are religious in their advocacy of a particular language or tool. I’m more pragmatic. My chief concerns are: 1) are there lots of people using it, so I can find help; 2) are there lots of specialized tools I can use with it; and 3) can I get up to speed quickly without wasting time learning to walk again.
Given these three criteria, there’s only one choice for me. Java has been the most popular programming environment for decades, with nearly all colleges teaching it as their primary language, which means lots of specialized Java tools are available, many more than other systems. I’ve also been using Java for 14+ years, so I can jump right in and get results.
Would I like to use Python or Ruby or Squeak? Sure. Programmers like learning new languages, and I’m no different. But when making these sorts of decisions, I’m much more conscious of avoiding gotchas and sinkholes which inevitably come from switching systems. My goal is to stay productive, which is even easier with all the changes to the Java platform in recent years.
So with that choice behind me, it’s time to fire up my favorite development tool (IntelliJ IDEA), create a new project, set up the version control (Subversion), and write some code. For the record, I’m using a MacBook Pro that’s more than three years old, which is ample.
Off I go …
(two hours later)
A very good start. I’ve created Java interfaces and base classes for agents, channels, prisms, and messages, along with an application wrapper that starts an agent and gets it running. The mechanisms for im/mu/ex processing and prism/channel maintenance are all finished. My code is in Subversion and I’ve got a Maven project all set-up. In other words, I’ve done pretty much all the plumbing-only stuff.
Now to try it. I open the Mac terminal and type “storybot” …
teefal$ storybot You may begin.