Wednesday, February 27, 2013

OOP - a critical approach

Some years ago I had email exchange with Huw Collingbourne about programming and Smalltalk and  Smallscript/S# in particular. At this time I helped my friend David Simmons a little bit with some early Smallscript releases.

Huw runs the and he had a tutorial on Smalltalk with Squeak and one about Dolphin Smalltalk.

Huw also published an interview with David as the creator of Smallscript. Smallscript (as some of you may know) is still closed and not released into the wild for various reasons. It is still one of the most fascinating software technologies and dynamic scripting environment/language I was able to get my hands on.
But I dont want to write about Smallscript here.

Huw Collingbourne is instructor on programming languages, he wrote books about Ruby and is director of technology at SapphireSteel Software (known for their Ruby IDE).

I found an interesting post about Smalltalk and other programming languages in the context of object oriented programming from Dec 2012 written by Huw:

Read it. It should make you think and again remind you that the IT world made no real progress with recent languages and software technologies regarding objects.

Day by day I see so many people write code or writing about OO code (in blogs, papers, ...).
Not all really understood about OOP and its key concepts.

People learn languages like Groovy, CoffeScript or Scala today, the next day they learn Dart or the next language. Sometimes only the syntax changed. But they never looked at OOP, they never looked at its origins in Smalltalk or Lisp because these technologies are "too old" and not mainstream. But they should - it will help fighting complexity and help when the code grows.

Only a few of them ever took the time to look at Smalltalk. And a few of the few people really continued to look and understand that Smalltalk is not really a language. It is a dynamic object system with the language just built in. Even a class is an object and therefore has a class. It can dynamically changed, created or removed and garbage collected like any other object. If you need new control structures just add them as new methods. It's turtles all the way down and the power is in the simplicity: Objects and Messages.

Worked with several languages and environments I learned to know about both worlds. On one side the text file based, often static compiled world (mostly combined with a horrible grammar) that constraints writing good OOP and on the other side a dynamic live environment where you can lively interact with all the objects around either by using code or direct manipulation.

Smalltalk is still the mother of OO languages - you can not get any closer to OOP than within its environment. And it is also opens the door to metaprogramming - something I will write about later here.

I can only recommend it - grab a free copy and learn about it. You will not regret it even if you continue to work with more mainstream technologies.

1 comment:

FDominicus said...

My Proposals:
check Io
or why not

Yes those are even less known and used as Smalltalk, but there you have the "logical" continuation of Smalltalks...