----- Original Nachricht ----
Von:     Erlis Vidal <er...@erlisvidal.com>
An:      smalltalk <beginners@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@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. )
_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to