Hacker News new | past | comments | ask | show | jobs | submit login

Great article, I love learning more about language influence. I was wondering something:

> Smalltalk wasn’t the only casualty of the “Javapocalypse”: Java also marginalized Eiffel, Ada95, and pretty much everything else in the OOP world. The interesting question isn’t “Why did Smalltalk die”, it’s “Why did C++ survive”. I think it’s because C++ had better C interop so was easier to extend into legacy systems.

Maybe it's linked to performance? Even today some application are rewritten from Java to C++ (or clones are made) to gain performance (like with Cassandra and Scylla).




I have another theory about why Java beat other object-oriented programming languages except C++: cost. I can't speak for Eiffel and Ada since I'm unfamiliar with those environments, but in the mid-1990s Java caused a revolution of sorts by providing free-as-in-beer runtimes and development tools that were available for download. I don't know how good GNU G++ was in 1995, but I know that Borland's Turbo C++ and Microsoft's Visual C++ were affordably priced. By comparison, commercial Smalltalk implementations had expensive licensing fees, and in 1995 Squeak and Pharo didn't exist. There was also OpenStep and Objective-C, but that was also very expensive; this 1996 article from CNet (https://www.cnet.com/news/next-gets-to-nt/) says that the Windows NT version of OpenStep cost $5,000 per developer and $25,000 for a version that allowed deployment.

With the high prices of Smalltalk and Objective-C environments, Java attracted a lot of companies and developers who wanted an object-oriented programming language that provided some of Smalltalk's benefits (e.g., garbage collection, memory safety, a rich standard library) without having to shell out the cash for a Smalltalk implementation.


Cost was likely an issue for Eiffel adoption in the 1990's.

There were a couple commercial implementations, with ISE being the dominant player. I bought a copy, but it wasn't cheap.

The open source SmallEiffel (later SmartEiffel) compiler by Dominique Colnet (and others) from loria.fr [1] didn't implement implement some parts of the language until the late 1990's.

It never had a big community.

[1] http://smarteiffel.loria.fr/


But there was an affordable Smalltalk system in the early 1990s -- Digitalk's Smalltalk/V. It cost $99 and came with a huge manual that had a great tutorial. It introduced me (and lots of others) to the whole idea of object-orientation.


I've seen this several times. You need to get the stuff to the students who usually have no money to spare.

Emphasis on "NO". Affordable doesn't cut it.

If you can't download it from somewhere for free, something else will be used by students that will later determine what they'll use at their startups or companies.

Even better if it's legal to download for free.


I'm not denying that the modern world of open source tooling and online documentation is better, but in the 1980s-early-1990s that's just not how it was. Things like Turbo Pascal and Smalltalk/V cost money, but not that much, and were worth it because of the large printed manuals they included, which were needed because you couldn't just Google things.


I don't say that it wasn't worth it.

I say that it was an additional barrier to entry which got more significant the later we are in the 90s. That it was free was a significant boost for the popularity of Java (probably also the free JVM from Microsoft was a significant contributor).

In the early 80s you always had a programming language for free with your computer and often, those manuals were not bad either as that was seen as an additional selling point for the hardware and that's why the hardware producers did it.


Yes, which does not contradict his original point. Java arrived in the mid 90s, and unlike many of its competitors you could just download Java and use it for free which gave Java a competitive advantage. Universities had good Internet connections at that point.


> …cost money, but not that much…

Knowing no-better, $0 seems better to most.


It was probably too late (around 1996 to 97), but there was Smalltalk Express which was essentially Smalltalk/V for Windows that was released for free after ParcPlace and Digitalk merged. It never received any updates though and was only a Windows 3.1 program. It also came with a lengthy tutorial (actually a 16 chapter book) in HTML format.

Here it is running under Windows 10 (thanks to otvdm/winevdm that allows running 16bit programs in 64bit windows): https://i.imgur.com/r5aQNyJ.png


> download it from somewhere for free

The Smalltalk vendors provided student licenses / educator licenses.

Back in 1998, "…the largest object-oriented course in the world: the Open University’s new introduction to computing, for which over 5,000 students have enrolled for its first year. The course introduces computing from a systems-building stance specifically, through object technology, Smalltalk and our own adaptation and extension of Goldberg’s LearningWorks programming environment."

[pdf] https://www.academia.edu/33568403/An_Object-oriented_Approac...


I went to college in 1995... $99 would have likely been out of reach.

I had access to C/C++ in high school on a PC only because my father ran an engineering group and brought home a VC++ license for us. I didn't get to use it that much before heading off to college.

I mostly used BASIC early on cause we had it free with the first 2-3 PCs we had. By High School I had gotten my hands on Turbo Pascal for free, maybe again through my father. High School classes were in Pascal. Turbo Pascal blazed and worked even on our 286 IIRC, which had minimal graphics capabilities. Even once we got a 486 TP was so lightweight compared to booting up windows that probably helped it's popularity for people who were stuck on PCs at home.

As soon as I went to college I always had access to C/C++ and that's what classes were taught in, and by Winter 95/96 we were all getting linux up and running and started having access to all the GNU stuff for doing our work.


Yes, that was the one I was using at the Smalltalk programming classes at the university.


I bought Turbo Pascal for Windows 1.5 (last release before Delphi) for about 150 euros, and Turbo C++ for Windows was about 200 euro, when converted for today's money.

This in 1990 - 1992.


> …Java caused a revolution of sorts by providing free-as-in-beer…

Yes, when a well funded corporation gives away programming language runtimes and development tools — that puts language and development tool vendors out-of-business.


This is something else I've been thinking about lately as I read more about Smalltalk and Lisp. The people who have used the commercial Smalltalk and Lisp offerings from the 1980s and 1990s, including Lisp machines, seem to have had great experiences with these environments. They felt very productive in these environments, and they also lament the state of today's development tools for more popular commercially-used languages.

However, it takes a large amount of money in order to develop something like a modern-day Symbolics Genera. Where is the money going to come from? There seems to be little room in today's marketplace for modern-day equivalents of ParcPlace or Symbolics, or even Borland for that matter, since free tools are good enough for many developers. Inexpensive Unix workstations from Sun and DEC helped kill the Lisp machine, and Linux on ever-faster and ever-cheaper x86 PCs helped kill the Unix workstation market; good-enough-and-affordable seems to do better in the marketplace than polished-and-expensive. It seems to me that development tools and operating systems seem to be either the product of research organizations or are "subsidized" by companies where developer tools and operating systems are not their main businesses unless the operating system is a monopoly.

I don't see an easy way around this, though. Maybe if someone like Alan Kay or Richard Gabriel visited a FAANG campus and convinced its engineers to build their infrastructure on top of a new object-based operating system, we'd finally get a modern, full-featured Smalltalk or Lisp operating system that's at par with the commercial Smalltalks and Lisps from the 1980s and 1990s....


> They felt very productive in these environments…

Of course, it may have felt productive — lots of mousy interaction and tight focus engagement — without being so very productive.

> … development tools … product of research organizations or are "subsidized"…

https://www.jetbrains.com/ ?

http://esug.org/data/ESUG2003/lars@2bbak@2besug.pdf


That is why many of us that experienced those environments ended up gravitating around Delphi, Android, iOS, Java and .NET tooling.

While not the same, it is the most mainstream stacks that are somehow close to those ones.


I can't see how something like Pharo Smalltalk is anything near something like Java unless you're comparing it to C++. Same thing with .NET. Those tools are all fine in their own way (high performance, extremely fine tuned garbage collectors, and extremely large libraries), but I can't see them being as productive once you're up to speed.


Moreover, it is much safer to start to learn a new language/environment if you can immediately try it for free and not invest first into an expensive implementation.


Ada was also very expensive up until relatively recently, so there could very well be something to what you're saying.


"The GNAT project started in 1992 when the United States Air Force awarded New York University (NYU) a contract to build a free compiler for Ada to help with the Ada 9X standardization process. The 3-million-dollar contract required the use of the GNU GPL for all development, and assigned the copyright to the Free Software Foundation. The first official validation of GNAT occurred in 1995."

https://en.wikipedia.org/wiki/GNAT


I always thought that was a major miscalculation by the Ada project. All they thought about was defense contractors and their approach of relying on commercial implementions (priced for those contractors) made it unused in academic environments.


It is somewhat performance, but there are three other more important factors. (Java performance, not counting startup overhead, is fairly close to C++ now.)

One factor is determinism. GC introduces unpredictable (non-deterministic) time latency, making GC languages generally unsuitable for real time programming.

Another is size efficiency, Java programs have a well-deserved rep for using lots of memory. That isn't a good mix for smaller/embedded systems. Java also carries along a large runtime, although Graal and other efforts are addressing this.

The final factor is that C++ is perceived (rightly or wrongly) to be an "improved C". As the heir apparent to C, C++ has a ton of mindshare and momentum. Rust is now providing a major challenge, one I hope it wins! (Honorable mention to D, which is a nice language as well.)


In the mid 90s I wrote and supported a C++ program for moving around and processing data in a semiconductor factory. It ran on Windows and two different flavors of Unix. Half of my time was spent recompiling/relinking and trying to keep up with the upgrades of the few libraries I've used. When Java came out it was so liberating - I'd write a new version of the software on my laptop and ship an update to a client with HP Unix and it would run without a hitch. I doubt that there's still a lot of use of C++ for entire applications. I suspect it's mostly used in performance critical components.


Those rewrites don't get much uptake in many enterprises, most are more open to just rewrite a couple of modules into native libraries and call them from Java, than throwing away the whole eco-system and respective tooling.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: