
Ask HN: Why did Smalltalk fail to catch on? - AdmiralAsshat
Smalltalk appears to be little more than a footnote in the history of popular computing languages. But I&#x27;ve yet to hear anyone speak badly of it. The design seems to be technically sound. Its OOP implementation seems to have influenced Objective C and pretty much every OOP language that came after it. It appears to be well-beloved by developers.[0] It has its own virtual machine implemented, which should make it portable.<p>So why did Smalltalk die while Objective C, C++, and Java all gained widespread adoption and thrived?<p>[0]https:&#x2F;&#x2F;insights.stackoverflow.com&#x2F;survey&#x2F;2017#technology-most-loved-dreaded-and-wanted-languages
======
eesmith
This is an oft-asked question.

Start with
[http://wiki.c2.com/?WhyIsSmalltalkDead](http://wiki.c2.com/?WhyIsSmalltalkDead)
.

The top answer at [https://stackoverflow.com/questions/711140/why-isnt-
smalltal...](https://stackoverflow.com/questions/711140/why-isnt-smalltalk-
popular) concludes "Ultimately, Smalltalk peaked early, and then had damage
done to it by the stupidity of the early vendors in the space."

There are many other answers there, with different views.

Remember too that Smalltalk was expensive.

More answers at [https://www.quora.com/Why-isnt-Smalltalk-widely-used-
anymore](https://www.quora.com/Why-isnt-Smalltalk-widely-used-anymore) .

------
RNeff
The first object oriented language was Simula 1 and 67. Smalltalk was a modern
(for 1970's) new implantation of the OO concepts.

Smalltalk (-80, described in the books) was a great language and programming
environment for one smart, experienced, 10X programmer. It was not designed
for and could not support teamwork. All of the source code for all of the
system libraries, compiler, and environment was available for editing. Any
change to the system makes your code no longer portable. Imagine a C
programmer, in a moment of arrogant hubris, changes libc or the standard io
modules. Really fatal to portability.

Changes to your code were tracked in your workspace. There wasn't support for
external source code control or merging changes from different programmers.
Git and other source code control systems have lots of features to manage and
track TEAM work on an evolving code base.

C defined a number of conventions for code syntax, the operators, '{}", ';',
English word operations, layout. Smalltalk started over, so the code looks
'weird'.

Concepts in Smalltalk influenced later languages.

~~~
scroot
A couple of things:

> It was not designed for and could not support teamwork.

Smalltalk implementations could, did, and still do support all the things
you'd expect from today's systems: code sharing, merging, etc. Envy was an
early system and today there is Monticello. Now there is even Git integration.

> There wasn't support for external source code control or merging changes
> from different programmers

Again, there was this support. But is that a function of a language? Does C,
Java, or any other widely used "portable" language offer these abilities out
of the box, or are there toold built on top to facilitate it?

> Any change to the system makes your code no longer portable. Imagine a C
> programmer, in a moment of arrogant hubris, changes libc or the standard io
> modules. Really fatal to portability.

Lots of today's dynamic languages have this deep capability, like Ruby and
Javascript. It would be tough to argue that these are less "portable" because
of it.

> Changes to your code were tracked in your workspace.

This is akin to saying, for Algol inspired languages, "Changes to your code
were tracked in your text files on your hard drive." It has little to do with
either portability or collaboration.

~~~
eesmith
"All statements about Smalltalk are false" \-
[http://wiki.c2.com/?AllStatementsAboutSmalltalkAreFalse](http://wiki.c2.com/?AllStatementsAboutSmalltalkAreFalse)
:)

That also contains the statement "As it happens, my Smalltalk is
DolphinSmalltalk, and its compiler is not written in Smalltalk and the source
is not available for hacking.", which is a counter-example to the top-level
comment here "All of the source code for all of the system libraries,
compiler, and environment was available for editing."

