Aw: [Newbies] I don't get it

bblochl at arcor.de bblochl at arcor.de
Tue Jun 21 16:19:43 UTC 2011


 
----- Original Nachricht ----
Von:     Erlis Vidal <erlis at erlisvidal.com>
An:      smalltalk <beginners at lists.squeakfoundation.org>
Datum:   21.06.2011 15:46
Betreff: [Newbies] I don't get it

> Hi guys,
> 
> I was reading recently Jim Coplien ideas about DCI and I was surprised with
> the following statement:
> 
> *"The Smalltalk people, when they put together Smalltalk originally the
> computational model was exactly right, in terms of thinking in terms of
> objects. And then they screwed it up with the language. The language is so
> class focused! Most languages that we?re saddled with today had made this
> error."
> *
> you can find it here:
> http://blog.redtexture.net/2010/06/01/coplien-on-dci-mvc/
> 
> Does someone knows what Jim is criticizing? In which sense the
> computational
> model was screwed by the language? I see smalltalk as a language that
> express very well the intended computational model behind.
> 
> But that's just me, maybe some of you could help me to understand Jim's
> point.
> 
> Thanks
> Erlis
> 
> 
> --------------------------------
> 
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
> 

You find the answer on the page the link to you cited above:

"... It is interesting that (as a consequence of web browsers) the most used language on the planet, JavaScript, satisfies his desire for a non-class-based object-oriented programming language.
..."

To explain it in short: There are two paradigms of Object orientation, a class-based one and a prototype based one. The cleanest class-based one is smalltalk. There are some protype-based languages, with javascript as the most popular one - but most people do not even know that JavaScript is Prototype-based. A prototype-based language, does not make the distinction of classes vs objects: it simply has objects.

"A prototype-based language has the notion of a prototypical object, an object used as a template from which to get the initial properties for a new object. Any object can specify its own properties, either when you create it or at run time. In addition, any object can be associated as the prototype for another object, allowing the second object to share the first object's properties." (from  http://stackoverflow.com/questions/186244/what-does-it-mean-that-javascript-is-a-prototype-based-language)

There are some more prototype based languages, as for instance "io", derived from self. A new and interesting prototype one is Lisaac (http://en.wikipedia.org/wiki/Lisaac). If you are interested in an overview of prototype-based languaged see http://en.wikipedia.org/wiki/Prototype-based_programming.

Let me first add, that the "siver bullet" of programming has not yet been found. From a system design point of view it has been recognized, that class based design leads to some "rigidification" in growing systems. If you study the pototyping way of OOP you will find a much higher plasticiy of the system. Obviously that is what James Coplien is missing in class-based programming. (I am quite sure that many Smalltalk users will disagree. But do Smalltalk programmers really know the prototype part of JavaScript (not just the DOM) in depths? Or other prototype based languages?  As a rule  that is not the rule.)

To my regret I have to add, that most of the CS-professors do not know the difference. I had a lot of trouble with this topic in the past. May be things are different in OO-research active countries.

Any flames?

Have fun!

B. Blochl

PS: A personal unsolicited advice of an old man: Do not lose any time with procedural languages! (Possible exception: You have to program close to the processors hadware.  because , to my regret, register are still now not objects. )


More information about the Beginners mailing list