
Smalltalk-87 - fniephaus
http://www.wirfs-brock.com/allen/things/smalltalk-things/smalltalk-87
======
galaxyLogic
This raises an interesting question, what added value do "classes" provide
over prototypes?

The way I see it is if every object (-instance) can be derived from another
instance that makes programs harder to understand. Classes are invariants of
behavior which all their instances obey, which makes it possible to reuse your
understanding of a class to understand all its instances.

It's a bit like the certificate systems we have in the human society. When
someone is a certified medical doctor we know more or less what they can do,
we don't have to investigate in detail do they have the skill to be a
physician.

But I'm not sure this is all there is to the benefit of classes. Is it?

~~~
jecel
Classes have several roles. They can indicate type. They allow meta
programming (where a car is seen not as a car but as a bunch of stuff in the
computer's memory). They allow shared state for their instances.

With objects that can directly inherit or delegate from each other you can put
shared state in a parent object.

For the role of type the Self VM used things called "maps" that were not
visible at the language level.

For meta programming Self introduced "mirror" objects.

------
goatlover
Around this time, Sun Microsystems Labs was developing Self, a child of
Smalltalk that ditched classes for prototypes. Work on improving the VM's
performance using a JIT and generational GC helped when developing Java's VM a
few years later.

~~~
russellallen
As I understand it, when Sun developed Java, they ditched Self. Some of the
Self team left, and created a Smalltalk VM using the Self VM techniques called
Strongtalk. Sun belatedly realised they needed a fast VM, and rehired the team
which formed the basis of the HotspotVM.

~~~
saurik
That same team--led by the same guy: Lars Bak--was later hired by Google to
develop v8 for Chrome and later built the VM for Dart (which has some really
powerful features in static object layout and AOT support). Virtually every
single seminal VM for decades was designed by this same group of people, with
almost all other VMs you see just borrowing those same techniques to apply to
other languages.

~~~
pjmlp
And then Lars Bak left, I guess desilusioned with out things turned out for
Dart, and is now doing "Dart for IoT" back in Denmark.

[https://www.youtube.com/watch?v=mPna6D21Eqg](https://www.youtube.com/watch?v=mPna6D21Eqg)

