4 ms·
Smalltalk is not the Grand Old Man of programming languages, but the future of software development created 40 years in the past. Yup. And that future was rea
by gamache 12y ago
Smalltalk is not the Grand Old Man of programming languages, but the future of software development created 40 years in the past.
Yup. And that future was realized in systems less monolithic than Smalltalk. The WIMP interface made it to most major platforms by 1990. Objective-C and later Ruby swiped Smalltalk's message passing semantics and basic object model and freed it from its all-or-nothing execution environment. And tons of languages (not least of which is C++) have taken Smalltalk's cue on object oriented design.
What more is there left for Smalltalk to accomplish? That's not bad, for a language which basically never made it out of PARC for two decades!
- i_am_ralpht 12y agoSmalltalk as a live environment blurs the boundaries between runtime and editing code. There's a video on ThingLab[1], a constraint solver, from 1978 where Alan Borning draws constraints graphically and then switches view to show the code that was generated. When he manipulates a constraint the runtime creates and compiles a new method based on the system that was graphically defined. That kind of thing would still be pretty awesome today (who generates JS at runtime for performance?). Your comment reads a bit like "we cargo-culted the things we could see in the Smalltalk environment, but didn't understand the underlying philosophy or elegance of what had been made; what's left to learn?" (I know that's probably not what you meant, but I feel like there's a lot left to learn from Smalltalk and the tools that were built with it). [1]: http://en.wikipedia.org/wiki/ThingLab http://en.wikipedia.org/wiki/ThingLab (see link 4 for the video; it's really fun to watch). Also check out: https://github.com/cdglabs/thinglab https://github.com/cdglabs/thinglab -- there's a link to a St-78 image with ThingLab. Also interesting to note proportional fonts, text selection (by Larry Tesler) and popup menus, all of which I thought came later...
- gamache 12y agoYour comment reads a bit like "we cargo-culted the things we could see in the Smalltalk environment, but didn't understand the underlying philosophy or elegance of what had been made; what's left to learn?" Seeing features you like and porting them to a system where you can use them isn't cargo culting. It's progress.
- jbergens 12y agoUnless you miss the bigger picture. Of course you can use any part you like but if the main value comes from a combination which you are no longer using while you still thinks you're using the same method/idea it might be seen as cargo culture.
- deleted 12y ago[deleted]
- klibertp 12y agoReducing "Smalltalk experience" to "windows, images, menus and pointer" is a gross mischaracterisation. Reducing "Smalltalk the language" to message passing is similarly unfair. Imagine an environment where you can modify and debug every single program you run without ever restarting it; where every little part of GUI of every program is there for you to manipulate (in real time, without restarting) if you want. Environment where you can grab an item from a deeply nested menu and pin it to the desktop, change its color and make it spin, while still being able to click it and invoke the function it's supposed to call. Environment where you can inspect and modify everything in real time (have you seen "Inventing on Principle" by Bret Victor?), from GUI artifacts to underlying models, to system resources, to the very core of the system. An environment which you can clone with one click and run anywhere with a real, not Java-like, guarantee that it will work exactly the same way as for you. Well, that's still not quite it and there are many other things "left for Smalltalk to accomplish", but hopefully you get the picture.
- drather19 12y agoWe use Smalltalk for a good portion of our distributed control system on our semiconductor manufacturing equipment (at least the non-RT critical portions). It's actually sort of awesome to be able to test/rework/enhance the software on the fly as we discover things we'd like to change in the clean room without having to go through traditional implement/build/deploy cycles. There's certainly other caveats about working in the environment we have, but those we can chat about offline :). From what I've read and played with (briefly), JRebel gives you a bit of this experience on the Java side as well, though I've never used it extensively enough to know if it delivers a comparable experience. It's not that far removed from what many web application developers take for granted in terms of ability to make/test/refine changes on a live system with ease, but it does bring more of this experience to other functional domains.
- deleted 12y ago[deleted]
- ScottBurson 12y ago"Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind." -- Alan Kay
- cbsmith 12y ago> And tons of languages (not least of which is C++) have taken Smalltalk's cue on object oriented design. Is that a joke? C++'s approach to OO is practically antithetical to Smalltalk's. There's a famous Alan Kay quote about it. > Objective-C and later Ruby swiped Smalltalk's message passing semantics and basic object model and freed it from its all-or-nothing execution environment. Actually, there have been many implementations of Smalltalk since the old days of park that have "freed it from its all-or-nothing execution environment".
- GregBuchholz 12y ago>Is that a joke? C++'s approach to OO is practically antithetical to Smalltalk's. There's a famous Alan Kay quote about it. Alan Kay's C++ quote comes from his speech, "The Computer Revolution Hasn't Happened Yet": http://blog.moryton.net/2007/12/computer-revolution-hasnt-happened-yet.html http://blog.moryton.net/2007/12/computer-revolution-hasnt-ha... "...it's interesting, again, to look at what is actually being done in the world under the name of OOP. I've been shown some very, very strange-looking pieces of code over the years by various people, including people in universities, that they have said is OOP code, and written in an OOP language—and actually, I made up the term object-oriented, and I can tell you I did not have C++ in mind. [Laughter and applause] An important thing here is—I have many of the same feelings about Smalltalk..."