14 ms·
Design Principles Behind Smalltalk (1981)
- AnimalMuppet 10y agoHmm. "Languages and systems that are of sound design will persist, to be supplanted only by better ones." I wonder if the author still thinks that, looking at the programming language landscape today. (Either he would have to say "it didn't work out that way", or to say that C++ and Java were better than Smalltalk.)
- gnaritas 10y agoThey were better than Smalltalk, not in terms of the language, but in terms of availability to developers. C++ and Java were free, Smalltalk during the time it could have risen, had no free implementations and cost a fortune to use. It's still a better language than either of those, but lost network effects gained by Java by being free.
- stcredzero 10y agoThey were better than Smalltalk, not in terms of the language, but in terms of availability to developers...Smalltalk during the time it could have risen, had no free implementations and cost a fortune to use. There were literally per-seat licenses at $5000 and $10000 at one point. There were free implementations around the time when Java was new, like GNU Smalltalk, but it would have been better if those hadn't existed, because they didn't convey the benefits at all. LightTable had YouTube to enable people seeing the benefit of the environment. Smalltalk could have really used that at the right time. That still wouldn't have helped, because the Smalltalk community didn't understand the network-effect benefits to the same degree almost any programmer understands them today. Smalltalk could have been Java. Sun actually approached the owners of the VM to ask if they could use it for their early set top box project. They were rebuffed and went on to write what was to become the JVM. (Smalltalk becoming Java might well have resulted in huge early Internet security disasters blamed on it, because of the difficulty in securing the system, and the preference developers had for code signing as the primary security mechanism.)
- goatlover 10y agoSelf was developed at Sun as a prototypal alternative to Smalltalk, which involved a lot of work on the compiler to make it performant. I'm pretty sure that effort fed into the JVM.
- igouy 10y agofyi http://www.strongtalk.org/ http://www.strongtalk.org/
- jecel 10y agoSelf started life as Smalltalk-86 at Xerox Parc in a collaboration with Stanford, and then got implemented at Stanford before moving to Sun Labs. When Self was killed at Sun (the first time in 1994) part of the group joined forces with the "Smalltalk with Types" group to implement StrongTalk. Meanwhile the part of the Self group still at Sun created Pep, which was a Java on top of Self that was way faster than any other Java. But it was a quick hack with a few serious limitations. Animorphic, the StrongTalk company, did a more polished implementation of Java on top of their VM technology and got bought by Sun to turn that into the HotSpot VM working together with the part of the Self group that had stayed at Sun all along. Around 2000 Sun allowed the Self project to be restarted until they killed it again in 2006, at which time they open sourced StrongTalk (which had been hidden since Animorphic had been bought).
- stcredzero 10y agoI'm pretty sure that effort fed into the JVM. It did. Much later than the introduction of the JVM, however.
- devinmcgloin 10y agoI think quite a few of the ideas behind Smalltalk were too radical for its time. Looking at the intellectual legacy of Smalltalk there is no denying it has been profoundly influential. It's not so much about C++ / Java vs Smalltalk but rather OOP vs Procedural Programming. There's a question about whether Java is OOP done right, but I think it's fair to say that it's done well enough to reap the majority of the benefits of OOP.
- hota_mazi 10y agoCan you be more specific? If anything, a lot of the ideas in Smalltalk ended up being abandoned: - Image based distributions - Dynamic typing - Extreme object orientedness (boolean ifTrue: foo ifFalse: bar) - Meta object protocol
- aaron-lebo 10y agoHow has dynamic typing been abandoned? What is Javascript? what is Python? What is Ruby? The meta object protocol is alive and well in Python, Ruby, and to a lesser extent lua with metatables. I don't see the point in exaggeration.
- otabdeveloper1 10y ago> How has dynamic typing been abandoned? What is Javascript? what is Python? What is Ruby? Languages that are in the process of tacking on static typing features in a bid to stay relevant. Most serious Javascript programmers are now moving to Typescript, Python has PEP-484, etc.
- hota_mazi 10y agoNobody would consider starting a large project with Python or Ruby these days. Javascript will be the last mainstream dynamically typed language, and while it's going to be around for a while, even it is slowly being replaced by statically typed versions of itself (Typescript, Dart). The trend is crystal clear for anyone who's been paying attention to the field for the past decade. There's simply no longer any good reason to use a dynamically typed language.
- noblethrasher 10y agoOn 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.
- state 10y ago"...a language of description (programming language) that serves as an interface between the models in the human mind and those in computing hardware" We do know what the models in our computing hardware look like, but do we actually know the models in the human mind? Don't get me wrong, I love everything about this document. But I can't help but feel like that conceit is really dangerous. And seems common in this era of work.
- panic 10y agoIn what way is it dangerous? It's a good description of what programming languages do, even if we don't know exactly how our minds work.
- Retric 10y agoPeople are associate not procedural so objects do map somewhat better than functions. Many of the hardest problems in computer science are very short term. Navigating a car across the country is not that hard, not hitting anything or breaking any laws in the next 10 seconds and every 10 seconds along the way is vastly more difficult. It's easy to calculate a trajectory to toss a ball into a hoop, it's much harder to get a robotic arm to do so.
- kensai 10y agoAt a molecular level, we could argue that everything is procedural in humans as well. Of course things get complicated at biological neural networks where parallel processing becomes more important. In the end, both humans and machines have to follow the laws of nature (physics) in order to process information. There is nothing magic about it, at a certain point of abstraction we both (all) work in the same information processing way.
- Tarean 10y agoWhen trying to come up with hard problems in computer science I would think np hard, not robotics. Building a robot to toss the ball is still hard but that is an engineering and physics problem. The calculations remain simple.
- 10y ago
- WhitneyLand 10y agoIf you had to bet, which do you think will happen first: 1) The singularity/General AI is achieved 2) The last smalltalk article to make it to HN front page gets posted I'm going with (1).
- tlow 10y agoI believe there is a mistake in the user interface section. They use the word "esthetics" when they mean aesthetics which is > a set of principles underlying and guiding the work of a particular artist or artistic movement. The root of the word is possibly Germananic (in German: Ästhetisch) or Greek Aisthetikos. It's not clear that there is a difference from any citable source, however deductive reasoning suggests that escetics is concerned with cosmetology and estheticians. The argument to be made that its the Latin dipthong AE is simplified to E is not valid in this case as inspection of Greek shows. Edit: update. One given definition of esthetics is > relating to, involving, or concerned with pure emotion and sensation as opposed to pure intellectuality. [dictionary.com]
- igouy 10y agoJust different spelling: https://www.merriam-webster.com/dictionary/esthetic https://www.merriam-webster.com/dictionary/esthetic http://dictionary.cambridge.org/us/dictionary/english/aesthetic http://dictionary.cambridge.org/us/dictionary/english/aesthe...
- tlow 10y agoI think you may be correct and what I perceived might be called emergence of different uses.