Hacker News new | past | comments | ask | show | jobs | submit login
The Early History of Smalltalk (1993) (worrydream.com)
113 points by gjvc on Nov 7, 2020 | hide | past | favorite | 28 comments



> "Smalltalk's design—and existence—is due to the insight that everything we can describe can be represented by the recursive composition of a single kind of behavioral building block that hides its combination of state and process inside itself and can be dealt with only through the exchange of messages. Philosophically, Smalltalk's objects have much in common with the monads of Leibniz and the notions of 20th century physics and biology. Its way of making objects is quite Platonic in that some of them act as idealizations of concepts—Ideas—from which manifestations can be created. That the Ideas are themselves manifestations (of the Idea-Idea) and that the Idea-Idea is a-kind-of Manifestation-Idea—which is a-kind-of itself, so that the system is completely self-describing— would have been appreciated by Plato as an extremely practical joke [Plato].

> In computer terms, Smalltalk is a recursion on the notion of computer itself. Instead of dividing "computer stuff" into things each less strong than the whole—like data structures, procedures, and functions which are the usual paraphernalia of programming languages—each Smalltalk object is a recursion on the entire possibilities of the computer. Thus its semantics are a bit like having thousands and thousands of computers all hooked together by a very fast network. Questions of concrete representation can thus be postponed almost indefinitely because we are mainly concerned that the computers behave appropriately, and are interested in particular strategies only if the results are off or come back too slowly."

Oh that others that claimed "Object Oriented" could have been inspired thusly. I did a bunch of Smalltalk over the years, and I find this an apt and poetic description. It wasn't perfect, but it was cool. I've never felt that any of the other hybrid/multi paradigm did OO the kind of service described above.


> I've never felt that any of the other hybrid/multi paradigm did OO the kind of service described above.

That’s how I feel in general about multi-paradigm languages.

I like mine opinionated: there are very real advantages to a language which has a strong sense of purpose and the corresponding constraints that typically follow.

Sure, Python has functional features layered atop it, but without reliable immutability it’s not nearly as pleasant to work with as, say, Erlang.


Just as an aside, one of my favorite talks[1] is the late Joe Armstrong interviewing Alan Kay.

[1] https://news.ycombinator.com/item?id=25013361


Thank you very much for that.


Erlang certainly seems very close to that description. One principle that gets flouted for convenience is exposing internal "objects" directly via accessorsor other methods. Instead, the idea behind message passing has to be clarified as passing serializable messages - i.e. they're "just data". This restriction is a powerful one and permits the kind of encapsulation being talked about.


Also we were already doing lambda stuff and LINQ like collection manipulations before it was trendy.


I prefer this view of Smalltalk's history: https://dl.acm.org/doi/10.1145/3386335 (The evolution of Smalltalk: from Smalltalk-72 through Squeak).


I just picked up pharo and gtoolkit recently... wishing this was the direction we were going in these days


I came across a video showing Pharo and Smalltalk that blew me away[0] and I completely agree with you.

In some fields, we are heading back in this direction with literate programming (notebooks) and new languages like Dark that attempt to rethink some of our ingrained traditions for engineering workflows. I'm working on a project in this space too. There is still hope!

[0] - MountainWest RubyConf 2014 - But Really, You Should Learn Smalltalk (https://www.youtube.com/watch?v=eGaKZBr0ga4)



There's are reasons these technologies never took off.


Try adding something to the discussion. I'm not sure what you mean by "these technologies". I'm also not sure what you mean by "took off." The fact that we still talk about Smalltalk and Lisp despite their apparent lack of ascendency, and yet don't recall other languages from those eras must at least say that certain aspects of them "took hold" to the extent we still talk about them. Does explaining why they didn't "take off" add an interesting insight or corollary about whatever happened?


Right but what software that you use is written in smalltalk?


A great one which I used in the nineties was the Objectory software engineering tool by Ivar Jacobson and his team (later bought by Rational which unfortunately discontinued the tool in favour of Rose).


That seems like a weirdly reductionist view of “taking off.” Smalltalk had always been a primarily academic language whose footprint on programming languages in general vastly exceeds its specific user base. Ruby, Python, Java, C#, etc, all owe a great deal to Smalltalk. In that sense it’s like SML and Scheme: you could fairly say “more studied than used” but that hardly makes it irrelevant.


> Smalltalk had always been a primarily academic language

There was quite a hype in the nineties with many enterprise applications based on Smalltalk; my first contact with Smalltalk was in a commercial, not an academic setting; most of it blew away when cheap, fast (HotSpot) Java became available.

> Ruby, Python, Java, C#, etc, all owe a great deal to Smalltalk.

That's a bit too optimistic. E.g. Python is not a descentent of Smalltalk (see e.g. http://python-history.blogspot.com/2013/10/), neither is Java (see e.g. https://www.youtube.com/watch?v=ccRtIdlTqlU&feature=youtu.be...). C# is also rather a brain child of Java and C++ than of Smalltalk.


They were taking off before the free beer UNIX generation took over everything, and made such enviroments a thing only enterprises care to pay for.


What products in what time are we talking about here? Smalltalk environments often were priced where only enterprises could pay for them. What advanced product tried to compete on the hobbyist front, i.e. comparable to Turbo Pascal/Delphi on the pricing range?

And around here, enterprise SmallTalk is about the same size as enterprise Perl. Java, which is definitely an enterprise creation, was and is the big killer here. Both on the consuming side and the producing one.


> Smalltalk environments often were priced where only enterprises could pay for them

There were also packages available for less than 100$. There were even free ST compilers.


Sure, but where those the advanced environments that were cancelled by people hopping on the Linux/C/etc bandwagon? I don't think that the argument goes with more funding Little Smalltalk would've been our software savior.

There sure was a lot of abandoned programming environments, but it was usually the enterprised that fathered them that killed it. NeWs was more interesting than pretty much all of its successors. And I'm sure the Lisp Machine or Oberon grognards are willing to chime in, too.

Everything being boring AF, both on the hardware and software side, certainly enabled Linux to succeed. It's a lot easier to compete if the state of the art is libc and X11.


There's are reasons these technologies never took off.

Well, there is some history here. In the early to mid 90s IBM was all-in on Smalltalk, they had a product called VisualAge, they were all set to push it as the next enterprise language, replacing RAD tools like Delphi etc etc. Then Java happened and immediately developed a huge mindshare and IBM pivoted the VM and tooling they had developed for Smalltalk into Java and rode that wave.

But if Java had been a flash-in-the-pan, then Smalltalk would be today where Java is now in terms of adoption (and decades ahead of Java in terms of technology).


A commercial smalltalk implementation is used widely in Lam Research for semiconductor machine tools.


That's hardly "widely used".


Please elaborate.


If Apple had gone with Smalltalk for the Mac instead of making something that merely looked like it we’d be living a better future.


They had plenty of ex PARC developers in their team and even a ST80 license, so they could have done so no doubt. Obviously they considered ST80 not mature or efficient enough for their projects and invented Object Pascal instead. This is actually not that surprising considering that neither Xerox used ST80 in their products. Even the first WYSIWYG and DTP programs in existence were written in BCPL (precursor of C) on the Alto, not in ST (see http://xeroxalto.computerhistory.org/xerox_alto_file_system_...). There is an article by Tesler where he describes how they had to increase the frame rate of a demonstration video ten times because the application written in ST76 was so slow (see https://dl.acm.org/doi/10.1145/2212877.2212896).


It would be really fun to implement Smalltalk like system with Logic Programming constructs!





Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: