The rantings of a beautiful mind

On life, society, and computer technology.

My Photo
Location: Toronto, Ontario, Canada

I live in the Fortress of Solitude. I drive the Silver Beast. My obsession is justice. I used to be a Windows software developer. I retired in 2000 when my stock options helped me achieve financial security.

Sunday, October 01, 2006

In Praise of Smalltalk

From a blog...

C# or Java?
Over the last few years at work I've been coding in ASP/Javascript, then C#, and eventually Java. The previous year I was using Websphere/Java, but I switched departments recently and am now back to coding in Visual Studio/C#. I'm not overly partisan regarding either platform. I really don't feel a strong preference for one over the other.

Java has an immense library, and some good free IDEs, with my favorite (at home) IDE being Eclipse with the MyEclipseIDE add-on. (MyEclipse conveniently packages tons of great additional functionality for Eclipse. You could hunt down and install most of what they provide for free, but if nothing else they save you a lot of effort.)

But, I also enjoy working with C#. Visual Studio is very easy to develop in, and, like Java, there's an abundance of support and resources available for either one.

Since my focus is going to be graphics and game creation, I considered C++ too, but didn't want to worry about pointers, garbage collection, etc. etc.. That just doesn't sound appealing. They may not match C++ for speed, but I'm not looking to create the next Half-Life 2 or Doom 3, so I don't think that'll matter.

But, thinking about that reminded me of one of my key goals: not to necessarily pick the most 'efficient', the 'best' language, but to pick something that I would find fun to code in. I won't pretend that my decision is in any way based on careful research or a well-reasoned consideration of all various factors. It's going to be very subjective.

So, time to actually decide...

And the language of choice is....Smalltalk!
When we're going out to a restaurant, Russ is amused by my inability to decide exactly what I'll order until the waiter is hovering over us. Sometimes, after having been saying I'll order either A or B, B or A, I'll blurt out a third thing at the last minute. I just did it again: "Let's see, C# or Java? Which one......oh, how about Smalltalk!" Okay, it wasn't quite that impromptu, but it definitely was a come-from-behind decision to pick Smalltalk.

I know most people would find that decision downright ridiculous, but there's a (form of) reasoning behind my madness. I've always found Smalltalk interesting from the perspective of language development history, and had dabbled in various free versions of it over the last few years. (Squeak and Cincom VisualWorks in particular). While I wasn't initially blown away by it (for reasons I'll detail in some later post) I was intrigued.

As I mentioned in a previous post, having fun and enjoying the development process itself was of key importance. In thinking about this I remembered one of the best times I ever had: writing in Forth on my Commodore 64 back in the mid-eighties. What really appealed to me about it was the way code was naturally segregated into smaller parts, and you could incrementally build up your functionality and slowly let it 'grow' one piece at a time. (One could object that this is true of any language, but some facilitate this more than others...) Similarly, Smalltalk provides a very interactive experience that lets you fluidly move between design, coding, and testing. It's also rigorously object-oriented (some may say to the detriment of the language, but I love it), and I enjoy using a Class Hierarchy Browser for not only reference but as a place to code in. It makes looking up information feel like a smoothly integral part of the development process rather than an interruption to my coding while I hunt for what I need to know.

So, a major theme of this blog will be about my experiences and such as I go about developing a small game in Smalltalk. There are some wonderful sites with lots of information on Smalltalk, especially insofar as the language itself. BUT, there's not a whole lot of information out there (at least easily available) on developing games in Smalltalk, so I'm hoping to pass along whatever interesting/helpful info bits I find or discover as I do this. At the time of this post, my sidebar links are a miscellaneous mix of stuff, but over time I'll put a separate section of smalltalk-related links that I find especially helpful or interesting.

Next up: I'll review the various Smalltalk implementations, and make a choice for which one to concentrate on for my initial efforts.

This fellow shares my sentiments about Smalltalk. It's about having fun and exploring a delightfully different way to develop software.


Post a Comment

<< Home