7 ms·
On the other hand, the big idea behind Smalltalk, message passing (i.e. programming with computers rather just the programming of computers), keeps getting reca
by noblethrasher 10y ago
On the other hand, the big idea behind Smalltalk, message passing (i.e. programming with computers rather just the programming of computers), keeps getting recapitulated in various forms such as Ruby, Erlang, Docker, etc. Even C#'s LINQ, in its most powerful form, is ultimately a message passing system (and version 4 of the language that introduced `dynamic` went even further).
Consider that the first MVC paper concerned Smalltalk and was published sometime in the late seventies, but only discovered by the broader programmer community about 15 years ago. Certainly Microsoft developers only seemed to have become aware of it in the last ten years.
Consider that both the JVM (Hotspot) and Google's V8 owe their performance to Smalltalk hackers.
Consider that IDEs are becoming every more tightly integrated with their their client programming languages (Roslyn+Visual Studio, Atom/VSCode+JavaScript, VBA, Browser Dev Tools). Smalltalk was the canonical existence proof that this was a good idea (although Sketchpad did it first).
...
Dan Ingalls (along with Alan Kay and Adele Goldberg) deserve to feel pretty smug (although Kay was supposedly disappointed that they stopped evolving Smalltalk because it became too useful).
- hota_mazi 10y ago> On the other hand, the big idea behind Smalltalk, message passing (i.e. programming with computers rather just the programming of computers), keeps getting recapitulated in various forms such as Ruby, Erlang, Docker, "Recapitulated"... interesting choice of words. Yes, this approach keeps being rediscovered, becomes a fad for a bit and then gets forgotten again. And for good reason: it leads to spaghetti designs with a chaos of actors sending and receiving messages to each other as an undebuggable mess. Plus, it encourages the removal of types in programs. It's really a poor idea in practice.
- deleted 10y ago[deleted]
- jacquesm 10y agoMessage passing has its place, some of the most impressive software projects ever built use it at their core. That smalltalk does this at the object level is quite possibly not the most useful thing (though it is interesting), but at other levels in an architecture it can be an extremely powerful tool. You can make spaghetti designs with any architecture, that's nothing to do with message passing per-se.
- fusiongyro 10y agoWhat a bunch of baloney. Smalltalk didn't invent message passing. Even if it did, Ruby is an obvious descendant of Smalltalk. Messaging in Smalltalk and messaging in Erlang are almost completely different. There's nothing remotely asynchronous about messaging in Smalltalk. Docker and LINQ? You're insane. MVC has to do with this how? MVC has enjoyed continuous popularity since its invention. And of course partly this is because MVC keeps getting post-facto redefined, much like messaging. The Controller in original Smalltalk MVC translated keycodes into messages to the model. This is pretty different from the role of the controller in Rails, where it acts as the be-all dispatcher. Also, look at the most direct descendants of Smalltalk's MVC concept: Morphic, which is an unmitigated disaster with no controller at all, and Cocoa, which eventually replaced almost all the controllers with three stock ones. Everybody doing anything like a GUI is using MVC, but almost nobody is doing it like Smalltalk originally did, including Smalltalk today. JVM and V8 owing their performance to Smalltalk hackers just means that dynamic languages get optimized similarly to each other, and the people who did it the first time had the experience to do it again. There's almost nothing of Smalltalk in Javascript. Some of the same people being involved? So what, James Gosling and Guy Steele were huge influences in Java, do you see any goddamn Common Lisp in there? Gosling thought the central idea of Lisp was that it was garbage collected! Atom isn't integrated with Javascript, it's an editor built on Javascript. If you think this is like Smalltalk, where the editor and the code are alive together in the same process image, you've totally missed it. And by the way, as wonderful as this is, it also means you can trash your image and lose code. This is an interesting idea but having lost work to it I am not at all convinced it is a good idea. VBA? Browser Dev Tools? I feel like I'm reading a recruiter-authored job post here, not a Hacker News comment. Your interpretation of what has happened with Smalltalk is seriously confused. I think you've mixed up cause and effect, similarity with equivalence and allowed a cult of personality to override technical truths. This is the birth of a cult, not an honest appraisal of progress. Smalltalk is a really interesting idea. Some of the insights from it have enjoyed wider success. But most of your heroes have moved on from it, and rightfully. If you want to keep the candle burning you should be honest with yourself about why that happened, rather than trying to rewrite history to fit your narrative.
- aaron-lebo 10y agoWhy so angry? Even if it did, Ruby is an obvious descendant of Smalltalk. So you agree with him. Ruby's most powerful feature is the combination of OO and blocks. That's Smalltalk through and through. MVC has to do with this how? MVC has enjoyed continuous popularity since its invention. And of course partly this is because MVC keeps getting post-facto redefined, much like messaging. The Controller in original Smalltalk MVC translated keycodes into messages to the model. This is pretty different from the role of the controller in Rails, where it acts as the be-all dispatcher. Also, look at the most direct descendants of Smalltalk's MVC concept: Morphic, which is an unmitigated disaster with no controller at all, and Cocoa, which eventually replaced almost all the controllers with three stock ones. Everybody doing anything like a GUI is using MVC, but almost nobody is doing it like Smalltalk originally did, including Smalltalk today. So, again, you agree with him? MVC has been refined, but it still has a basis in Smalltalk. JVM and V8 owing their performance to Smalltalk hackers just means that dynamic languages get optimized similarly to each other, and the people who did it the first time had the experience to do it again. There's almost nothing of Smalltalk in Javascript. Of course he's referring to Strongtalk, which was the basis for the JVM. Javascript is clearly inspired by Self which is a descendant of Smalltalk. You've got some good points but they'd be easier to take if you weren't being so rude about them. This is the birth of a cult, not an honest appraisal of progress. How is it the birth of a cult when as you've said people are moving on?
- jacquesm 10y ago> Ruby, Erlang, Docker Erlang is about messaging between processes, a smalltalk object is not a process and I really don't understand why Docker is in that list.
- noblethrasher 10y agoWith respect to the semantics of the system, a Smalltalk object is supposed to be a full Turing machine (sometimes universal, but often times special-purpose), which is the same thing as a process. I mentioned Docker because of the similarity to the Smalltalk image.
- stcredzero 10y agoThere were some insider events called Camp Smalltalk clustered around the year 2000, where people were saying to each other that we lost the battles, lost the war, but we won our cause. So many of the ideas that went into Smalltalk became mainstream. Java and then C#/DotNet was the validation of that. People continued to say this at other conferences. Consider that IDEs are becoming every more tightly integrated with their their client programming languages You should take a look at Smalltalk "IDEs" some time. There's hardly anything there! The meta level is so easy to access, along with the compiler. The debugger is mostly just an ordinary Smalltalk application. In VisualWorks, a good coder can start writing a debugger and be browsing stack frames from real exceptions, literally within minutes. A warty but fully workable Class Browser could be finished by one coder in a week. There is no "tight integration" with the language. It just seems that way because almost everything is just an ordinary first class Object.
- noblethrasher 10y ago> You should take a look at Smalltalk "IDEs" some time. I've been delightedly toying with Squeak, Pharo, and Dolphin (as well as GNU Smalltalk, which is an anti-example, of course) for some time. I cope with my day job by pretending that SQL Server is a Smalltalk.
- stcredzero 10y agoWe had a nice discussion about this at Camp Smalltalk back in the day. In Smalltalk, everything is an Object, and we even use Objects to define Objects. In a proper relational server, everything is a table, and the tables are themselves defined using tables. SQL database servers are also very dynamic and everything is changeable at runtime, until you start restricting things. Even that last part is parallel to Smalltalk. There are some things you can do as an advanced VisualWorks developer that look like queries of the codebase. You can search on one predicate like "sender of #message:" and take the intersection of that with another search, and have that pop up as a custom browser.