GNU Smalltalk to support Seaside

I found this item on reddit. An entry in the GNU Smalltalk FAQ, under the heading “Does GNU Smalltalk run Seaside?” says that it will support Seaside in a release scheduled for March 8th. Now, the FAQ posting that says this is dated June 20, 2007. I’ve asked about this on reddit. Has the release date slipped any since then? Anyone know?

Anyway, this is good news. It gives those who want to use Seaside more options. GNU Smalltalk offers operating options that some find more convenient for what they’re trying to do. For example it offers good scripting support. Of course, I’m not sure if the scripting support will be compatible with Seaside. I guess we’ll see.

I used GNU Smalltalk a bit in college many years ago. It was the first implementation of Smalltalk I encountered. It was really my first exposure to OOP. We used its scripting support then–just the Smalltalk language. We were told about the Smalltalk system that was developed at Xerox, but we did not use the whole system with the GUI, browsers, workspaces, transcript windows, etc. It was very compatible with the “Unix way”. You wrote your code in vi, Emacs, whatever, and then ran it through the interpreter on the command line. The code we wrote looked similar to a file-out of Squeak code. The metadata was a little simpler. One oddity (I think) was if you wanted to print something out to the console you had to wrap it inside of an array and use its printNl method. For example:

#(‘Hello world’) printNl

Yep, we even had to wrap strings. Even so I thoroughly enjoyed the experience at the time. Ah, memory lane. 🙂

Edit 2/27/08: I got a little more information. It turns out the FAQ posting about this on the GNU Smalltalk site originally said something vague about how “Seaside could be made to work with it”, but was updated just recently to say that this implementation will support Seaside on March 8th. So the release date is a firm one.

—Mark Miller,

2 thoughts on “GNU Smalltalk to support Seaside

  1. Thanks for blogging about it!

    Actually, I think the wrapping that you referred to was that you had to write “printString” manually for everything except Strings, Integers, Floats and a couple other kinds of objects. E.g. “#(1 2 3) printString!” printed “(1 2 3)”, while “#(1 2 3)!” printed just “Array new: 3”.

    But the oddities are gone by now. No need to wrap. 🙂

    In addition to this the usability of the command-line interpreter improved a lot in 3.0 in different ways:

    1) each statement is evaluated separately and variables persist until you type a bang (exclamation mark). In 2.x each bang-separated chunk would be a single evaluation unit. If you want more statements to act as single evaluation units in 3.x, wrap them with “Eval [ … ]”

    2) periods are implied at the end of a line if the grammar allows that

    3) temporary declarations are optional.

    Also, there is now an alternative syntax that is much less verbose than Squeak fileouts.

  2. Hi Paolo. You’re welcome. As far as the “oddity”, the time when I used GNU Smalltalk was in 1991. I didn’t delve into the class library back then. We were given handouts on what methods we could use. We knew nothing about how to discover methods for classes. I knew how to add my own classes and methods, but I saw Smalltalk then more like how Ruby is implemented now. We were told back then that with the original Smalltalk system (ie. Smalltalk-80) it was possible to modify the system while it was running, which was a far out concept to me. I hadn’t the foggiest how that was accomplished, so I didn’t put 2 and 2 together about the rest of it.

    My guess is, from what you’re saying, that maybe they just told us about the wrapping technique to make programming easier for us beginners. With an array you can combine several elements together and print it without having to send printString to each one.

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