Hi Sebastian, this is the way I use to present Smalltalk: - open Xerox Smalltalk-80 image (using Hobes) - show this UI, how scrollbars work, how you have to specify window regions, basics of window management etc. Tell them few words about visit of Steve Jobs in Xerox and how it influenced the next development of personal computers. Almost nobody had an opportunity to see it in action so you will gain their attention. - then mention the date in Transcript (31 May 1983). Tell them about an image, VM, snapshoting, that you resume the program after almost 30 years on different computer architecture in the different millenium :-) - tell that Smalltalk-80 is a combination of OS, IDE and programming language and that you will show some examples - show 3+4 - print it - Pen example - do it, open Browser and show them this method - use explain command on "Pen" - open a class browser on it - then show: MessageTally spyOn: [Pen example], profiling is quite interesting property in such old environment - evaluate 1/0, open debugger, change value of dividend to 2 and continue with the evaluation - evaluate 1/0 again, open debugger and then change the method to return 0 instead of rising the error, continue. Then do several next divisions by zero to show that you changed behavior of the whole system. - evaluate Display inspect and show inspector, inspecting of instance variables and their modification. - evaluate String allInstances size - evaluate (String allInstances asSortedCollection: [:a :b | a size <= b size]) last inspect (it doesn't have detect: message) - show an example of become: message, that you changed all references to the object. - show the browser capabilities - senders, implementors, implementations of used messages. - tell them that all you did you did on system without attached source codes, that the code you have seen and changed were all decompiled - finally ask yourself: when Smalltalk-80 was able to do all this things in the year 1983, what it can do now? ;-) Cheers, -- Pavel On Wed, Oct 17, 2012 at 4:58 PM, <sebastian@flowingconcept.com> wrote:
hahaha XD
great stuff
dynamic vs. static isn't an issue anymore
dynamic won hands down already and years ago
the thing now is to expand people's vision of what can be done with it
and these are good points (to talk to engineers)
the audience has other people too so I need more stories from the trenches :)
sebastian
o/
----- Original Message ----- From: "Torsten Bergmann" <astares@gmx.de> To: pharo-project@lists.gforge.inria.fr Sent: Wednesday, October 17, 2012 11:19:26 AM Subject: [Pharo-project] what is your pharo story?
Pick one ...
STORY 1: ========
What I like most is that I do not rely on IDE vendors or tools to do measure things like:
TestCase allSubclasses size
inspect things like:
Account allInstances collect: [:each | each value > 10 ]
or script my environment:
TestCase allSubclasses do: [:each | each removeFromSystem ]
Try all this in any of the other "static" environments. And yes - one can shoot itself in the foot:
true become: false
but I like the freedom.
STORY 2: ======= In any program environment you have to use a debugger. In Smalltalk you can just save the image and continue the next work day on exactly the same point you left.
In other environments you usually close the IDE in the evening and start to debug the program the next day again until you are at this point, have the stack and variables in the same state. Lots of wasted time and developer resources in static world...
STORY 3: ======== "Rethinking the typing" as you can see http://astares.blogspot.de/2006/08/rethinking-typing.html
STORY 4: ======== When I tell people that Smalltalk is not a language - just a dynamic object system with a language built on top of it. A method, a class ... anything is an object.
So if you need additions you just implement them without waiting for the next language spec or vendors.
Need traits, interfaces, namespaces, ... just add them.
Embed other languages: just add them (see Helvetica) http://astares.blogspot.de/2009/11/helvetia-embedding-languages.html)
New control structures? Just implement them. An example: Pascal hat a REPEAT UNTIL. C/C++/Java language family and Smalltalk does not have such a construct.
The difference: in Smalltalk I can just add a new method #repeatUntil: to BlockClosure if I really need it.
STORY X: ======== ...