More on Smalltalk

Posted by Damien Pollet Sun, 01 Jul 2007 14:58:29 GMT

As a follow-up on my previous post on Smalltalk blogs, Giovanni blogs on Squeak and Seaside, and recently started to write posts in English.

Posted in  | Tags ,  | no comments

Bad assumptions

Posted by Damien Pollet Wed, 13 Dec 2006 02:15:54 GMT

James Robertson already nicely answered this guy about Cees’ comments on Java, so I…must…not…troll…further…phew.

But I couldn’t ignore this:

6 months isn’t really enough to get properly comfortable with all aspects of a language.

OK, so let’s make my timeline of things with Smalltalk:

  • getting over the, hmm, aesthetics of Squeak… not sure I’m done with that :-)
  • learning the whole syntax, 30min.
  • starting to get my way using the tools and write simple stuff, 1 day.
  • knowing the basic stuff in the library, like iterations, conditionals, understanding that the debugger is really my best friend: 1 week
  • getting used to the image, exploring the system, reading the source, and starting to get what object-orientation really was about: 1-2 months. At this point, reading code really becomes an opportunity to learn interesting new stuff from others.

It’s been a little bit more than six months now and think I can say I’m properly comfortable with all aspects of the language. In fact I’ve also looked into all this machinery that looked like a mysterious black monolith before: the metaclass hierarchy, what exactly is a virtual machine doing, how are exceptions and continuations implemented, at the runtime objects like CompiledMethod, the bytecodes, etc.

Even with Python or Ruby I wasn’t drawn in the language like with Smalltalk. Both have really weird design decisions, like meaningful spaces, and the general procedural-with-OO-afterthought feeling for Python, or the inheritance and interpreter kludges in Ruby. Smalltalk and in particular Squeak does have ugly code (Morphic anyone?), but it’s just library code. The language itself has a beautiful ideal and it’s so light and fast while being so dynamic, you just have to go and look how that miracle happens.

Posted in  | Tags , , ,  | no comments

On Smalltalk

Posted by Damien Pollet Fri, 24 Nov 2006 09:56:18 GMT

On Smalltalk is a great blog on Smalltalk and Seaside by Ramon Leon. Go read it now!

…and since it was kinda asked for in the comments, I’ll complete this post with my partial list of other blogs from the Smalltalk community. First there is a planet-style meta-blog that already aggregates most of the blogs in this list, and the weekly squeak news. Then, from my Smalltalk RSS subscriptions, the most notable entries are blogs by:

To more precisely answer Sébastien’s comment, the recent community news I’d note would be the open-sourcing of Strongtalk, the Squeak license changes to APSL 2 then Apache, and that Smalltalk in general is indeed benefiting from the current momentum in dynamic languages, thanks to Python, Ruby, and again Seaside.

On the Squeak side, 3.9 final was recently released, and it’s a great step from a happy mess to an environment more suitable for serious playing, especially with traits, the cleaner closure compiler, Damien Cassou’s image for developers, and Craig Latta’s promising spoon

Posted in  | Tags , ,  | 2 comments

Smalltalk trick: dynamic variables

Posted by Damien Pollet Wed, 01 Nov 2006 23:42:57 GMT

Here is a cool hack with the exceptions of Smalltalk that Lukas Renggli just explained to me.

Sometimes the code needs access to an object that is well-known but whose actual identity depends on the context. A global variable or a Singleton pattern would be justified because the role is global, but that can’t work directly if the actual object playing this well-known role changes in some parts of the control flow.

Read more…

Posted in  | Tags ,  | no comments

What to do when the debugger sucks?

Posted by Damien Pollet Fri, 29 Sep 2006 18:53:34 GMT

…well, you extend it, of course :-)

This afternoon Stéphane showed me the Object haltIf: method in Squeak. The boring part of the code goes like this:

haltIf: condition 
    "... here be fun stuff (see below) ..."
    (condition isBlock
            ifTrue: [condition valueWithPossibleArgument: self]
            ifFalse: [condition])
        ifTrue: [Halt signal]

When the condition argument is a block, haltIf: will spawn the debugger only if condition evaluates to true. So instead of adding a self halt. in your code, you can put self haltIf: [ "hmm do I really want to halt here?" ].

The funnier part goes like this:

Read more…

Posted in  | Tags ,  | 1 comment

Strongtalk, now open source

Posted by Damien Pollet Tue, 12 Sep 2006 09:44:24 GMT

Strongtalk is a rethinking of Smalltalk-80 with an optional strong static typing system; it was bought by Sun before it could be released to become the basis for the Hotspot Java virtual machine. Now Sun just released it under a BSD-style license.

It currently only compiles in the m$ world but hopefully that will change soon.

Update: See also James Robertson’s report and David Griswold’s announcement on the Squeak list.

Update 2: Avi Bryant also mentions Strongtalk while answering to a post on Ruby performance by Joel Spolsky.

Posted in  | Tags ,  | no comments | no trackbacks

Contagious smalltalkers

Posted by Damien Pollet Thu, 07 Sep 2006 21:09:00 GMT

Besides getting more faces to put on mailing-lists posts, meeting Squeak and VisualWorks hackers during this whole week has been very motivating:

  • While Stef wrote tests for Regex, Oscar Nierstrasz and I started porting some good ideas from the string manipulation methods of Ruby to Squeak: and here is RubyShards.

  • I contributed my share of bugs to Damien Cassou’s ImageForDevelopers that will install a bunch of stuff from SqueakMap and SqueakSource and make a nicer base image.

  • Philippe Marschall from the Berne group spent quite some time with me trying to add static URLs for the main menu of SqueakSource, but it uses an ancient release of Seaside, so the patch would end up duplicating functionality (better help upgrading SqS to the latest Seaside I guess).

  • We also saw also some quite interesting talks during the research session, in particular from the team at ULB which is planning to record object histories (yes, execution traces with full state) or Romain Robbes from Lugano who wants to spy all actions the developer makes to make meaningful versioning systems.

Finally I think anyone will remember Plopp developed by the team at Impara, and winner of this year’s ESUG Awards ;-)

Posted in  | Tags , , ,  | no comments

Talks redux

Posted by Damien Pollet Tue, 05 Sep 2006 12:24:00 GMT

Reflective properties of Smalltalk should be improved! [Markus about Geppeto]

In stateless traits, there is no state. [Stef about stateful traits]

We don’t use clean, carefully chosen, or meaningful URLs. [Lukas’ opening slide on Seaside]

Posted in  | Tags , , , ,  | no comments

Hi from ESUG'2006!

Posted by Damien Pollet Sat, 02 Sep 2006 09:20:00 GMT

I’m at in Prague, attending ESUG’2006 as a volunteer student until next friday.

Many interesting people to meet and many intensive hacking hours ahead :-)

ESUG 2006 logo

Update: For photos, you might want to check James Robertson’s blog, as he’s reporting from the talks in near realtime. eXtreme Blogging?

Posted in  | Tags , , , ,  | 1 comment

Design Principles Behind Smalltalk

Posted by Damien Pollet Fri, 21 Oct 2005 20:16:44 GMT

I just read the article by Dan Ingalls on the design principles behind Smalltalk, published in august 1981 in Byte Magazine.

Many of the principles listed in the article would be recognized by today’s programmers as principles of object-orientation: Objects, Messages, Modularity, Classification, Polymorphism, Virtual Machine. Storage Management doesn’t really exist outside Smalltalk, or as rather crude versions (object-relational mappings vs. the Smalltalk image system). And yet some others relate to very current hype and buzz: the pragmatic programmers’ “Don’t Repeat Yourself” (Factoring, Leverage), domain-specific languages (Purpose of Language, Scope).

But the last two were rather funny, in a way:

Operating System: An operating system is a collection of things that don’t fit into a language. There shouldn’t be one.

Natural Selection: Languages and systems that are of sound design will persist, to be supplanted only by better ones.

About that last one, I must have a strange sense of humor… or maybe 25 years just isn’t long enough?

Posted in  | Tags , ,  | no comments

Older posts: 1 2