I just listened to theJon Udell podcast interview with John Lam,which was quite interesting. Highly recommended. I do, of course, have a bone to pick.
Class definition by running plain old code.
So, note that. No language level modularity features likea 'package' and 'class' keyword. It's all dynamic. And perhaps someconventions provided by libraries you happen to be using.
Which is quite similiar to Smalltalk. There are no 'language level'features for defining classes. There is no 'class' keyword. Instead, to definea new class, I'd go into a class browser, and fill in a template like:
Number subclass: #Fraction instanceVariableNames: 'numerator denominator' classVariableNames: '' poolDictionaries: ''
This is a class definition. However, literally, it's a message send.A message sent to a class (Number) to create a subclass (Fraction)with two instance variables (numerator and denominator).
I don't recall anyone who ever bothered to learn Smalltalkhaving made claims that it wasn't modular. So I don't think havinglanguage level modularity features is a neccessity formaking the language usage modular.
This leads me to a number of questions:
Could we build a set of conventions around package/namespace/class/methoddefinition that would be usable in a number of different contexts? IDEs, live class browsers, etc.
Could we get these things to work with the rather crude code injectionapparatus we currently have for web applications (<script src=...>)?
WWSD - What WouldSelfDo? Self is probably the best known prototype-based language. It would beinteresting to go back and look at some of the Self stuff; it's been yearsfor me.