Is the new Smalltalk?

Possibly a question that you never thought would (or should?) be asked and one to which the one-word answer has to be “no”. But its “no” with some interesting caveats.

I’m an engineer by background, not a computer scientist. I have a passing interest in language design but I’m much more interested in what a language allows you to deliver and how: does it make delivery quicker, is it easy to maintain, how easy is it to hire people with these skills, and so on? I’ve developed seriously in assembly language, C, Smalltalk and Java and have dabbled with Fortran, Javascript, C# and Ruby. Of these Smalltalk was the first I really felt at home in: I could quickly and easily build powerful, performant, scalable systems and, at the time, its was still accepted that Smalltalk was a viable choice for enterprise systems so there was a good community of people with real experience to talk to and learn from. In many ways, moving to Java was a step back initially but as the Eclipse IDE got better, Java gained the ability to remote debug, and the library and component support got richer, I began to feel at home with it too.

Dabbling with reminded me of my experiences with Smalltalk. The most striking thing about it is the thing I really loved about Smalltalk: you develop in the same environment the user uses. This is an incredibly powerful concept that allows programmer and customer to literally work side by side in developing a solution (Dave Thomas called this a ‘super pairing’ in a conversation a couple of years ago). 

The next most interesting thing is how quick and easy it is to do what you want. In Smalltalk/GemStone, adding a new field to the database was a simple as adding a member to a class. No SQL to generate and run and no object-relational mapping layer to define. In DST (the Smalltalk CORBA product if you remember CORBA), making a method available remotely was a simple as including it in the IDL; no stubs and skeletons to generate and tailor. In you add a new field to an object and there it is available in your forms, reports, via the REST API, and so on. Ruby/Rails may be a step forward from J2EE but its still not as easy as this.

These two combined means its very easy to work with your user to thrash out ambiguity, explore difficult concepts and making small change without having to resort to mock-ups or smoke-and-mirrors ‘rapid prototypes’. It might not be the way you want to do everything but its great for many of those features that are really important to the user.

Like Smalltalk, everything in – including, tabs, object definitions, classes, pages and workflow tasks – is an object, a degree of simplicity that Java can never hope to achieve regardless of how much autoboxing and annotation you put in it. Everything the user uses in has state, relationships and behaviour that are easily accessible by the developer in a single technology. Simple and powerful.

There are a number of rough edges, the such as atrocious support for debugging (back to the days of printf(“You are here”) again!) and the Apex language is, shall we say, pragmatic rather than elegant (as I said, I do have a passing interest in language design) but I can see those being smoothed off quite quickly as the developer community grows and the developers have to start supporting this community.

Clearly is a product delivered as a service run by a for-profit company where as Smalltalk is a general purpose language supported by a community of enthusiasts and commercial organisations so there is no direct comparison. But some of the old ‘Smalltalkness’ that Java never really gained despite trying very hard is very much present.


5 thoughts on “Is the new Smalltalk?

  1. Jon

    Great post Paul – I had never thought of the “develop in the same environment the user uses” angle. Yes, it is very powerful – the immediacy of changes is great.

    On, that’s all driven through the metadata – the object that represents the shape of the data you will persist is metadata, which can drive the web services API (SOAP btw), and of course the user interface (dynamically) if you so choose.

    Jon ( Community Manager @ Developer Force )

  2. Andy Evans

    Paul, good to see people like yourself taking note of and comparing it with languages like Smalltalk.

    I spent many years applying and researching development technologies and processes, with the end goal of achieving the holy grail of a step change in productivity. You name it: SOA, MDA, CBD, Frameworks, product lines. However, in my opinion is a completely game changing technology. The fact that you are configuring a platform with meta-data has such a big advantage over traditional approaches that I see it as being the next big approach to application development.

    My main wish for is that it could separate itself a little further from Salesforce and CRM – not because I am anti-commercial (I think Salesforce is a great company) but because it would gain greater traction from the development community if it were *perceived” as being completely application and commercially independent/agnostic. So, just build the app you want, distribute it, and then let the user choose to pay a service fee for its use (just like amazon) but purely as a application. What a greal model.


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