Archive for the ‘Programming’ Category

The gods have taste

David Pollak talks about Smalltalk being the language of the gods. To summarize he talks favorably about the language and community surrounding Smalltalk but also the “requirements” [my word] that the language demands. Here’s a quote that sums his post up:

“I am not sure I’d make the commitment to being a god that Smalltalk requires. Most of the developers I meet on a day-to-day basis… the kind of developers who work hard and are conscientious in the work for 10 or so hours a day are not looking for an environment that requires a mind meld. They’re looking for a tool to achieve their goals. From what I’ve experienced with Smalltalk, I don’t think Smalltalk is that kind of tool.”

He goes onto say that the “requirements” of Smalltalk will relegate it to being a niche language.

I agree with a lot of what he says. I agree Smalltalk does require more from it’s users then other languages. I agree that it, as a result of that commitment, delivers more to it’s users. I agree that it is a thing of beauty and could possible be the language of the gods. However, I don’t agree that it will always be a niche language. The jury’s still out.

When I was younger I too looked for the path of least resistance. Heck, for a long time I didn’t even bother to comment my code because it was more important to churn out the programs then to “document.” Well, now that I’m firmly ensconced in the second half of my life I’ve learned to appreciate spending some extra time to get a better “product.” Because of that I have, so to speak, truly learned to love Smalltalk and to be willing to spend that extra time to reap the rewards.

While I didn’t come out of the pioneers of computing I like to think I came out of the early days of computing. After all I do remember a world before the Internet and PC’s, where disks were stored in “packs” and were removable from their drives. I think it would be a safe bet to say that most of the programming population came after me (and was probably born after I started programming, gag!). Perhaps as the world’s programmers age and mature and start to appreciate the finer things in life, they too will learn to love and devote themselves to Smalltalk.

If not, I’m still OK with that. Things that stay niche tend to keep their beauty and don’t get watered down by the latest fad. We might be best served to keep Smalltalk as our own little secret.


My first Smalltalk ah-ha moment

When I first learned Smalltalk (back in the mid-1990’s), the instructor told us that it would take at least five years to become proficient in object oriented design and Smalltalk. Of course, at the time I didn’t believe him. After all, I was an excellent programmer and certainly pick this up quicker then everyone else. Now that I’m back into Smalltak and reading more about it, I’m starting to believe what he said.

A few months ago while reading Smalltalk-80: The Language I had my first Smalltalk ah-ha moment. It came when they talked about using SampleSpace to randomly hand out elements from a set (in the situation in the book, cards from a deck). They break that behavior out into an object that just does that, hand out elements from a set. Doesn’t care what the elements are, just randomly picks one.

Breaking out this behavior neverĀ  dawned on me before. In fact, I implemented the same card dealing logic into a Deck object in Java when I was doing a War simulation (War the card game, not fighting between armies). I was dumbfounded when I realized that by breaking out that behavior there were so many other places it could be used.

Now I understand what the instructor was talking about. He wasn’t talking about learning the language or OOD concepts but about being able to use them to their fullest advantage. Guess I need to resolve myself to the fact that it will take me five years.

Y2Kx “bug”?

Apparently, our (the US’s) multi-billion dollar feet of space shuttles has a “bug” in the computer software (read here).

“A computer problem could force NASA to postpone next month’s launch of shuttle Discovery until 2007 to avoid having the spaceship in orbit when the clock strikes midnight on New Year’s Eve….’The shuttle computers were never envisioned to fly through a year-end changeover,’ space shuttle program manager Wayne Hale told a briefing….The problem, according to Hale, is that the shuttle’s computers do not reset to day one, as ground-based systems that support shuttle navigation do. Instead, after December 31, the 365th day of the year, shuttle computers figure January 1 is just day 366.”

Quite frankly this is unbelievable and unacceptable. How could this problem not have been addressed. Haven’t the software engineers at NASA learned anything from the Y2K “bug”? This just makes NASA in particular, and the United States in general, look like complete buffoons.

BTW, I put “bug” in quotes because I really have a problem with calling what happened at the turn of the millennium a bug. Usually bugs are introduced in software by accident. The Y2K mess was introduced knowingly. Don’t get me wrong, I was perpetrator in this crime as well. I began my programming career in 1987 and I distinctly remember hashing this over with my boss at the time. When I said to him, “isn’t this going to be a mess someday,” his response was, “what do you care. You probably won’t be here and neither will I.” For the next 13 years I knowingly sabotaged the programs I wrote. Perhaps sabotage is too strong a word, but what else would you call it?