Hacker News new | ask | show | jobs
by shenoyroopesh 4243 days ago
A lot of people point out here Smalltalk is not great. I personally don't know either ways, because I haven't used it.

However, I do want to point out that adoption and quality need not be correlated. Haskell, for e.g., was relatively obscure till recently (and even now I would say very few people use it). But it is absolutely amazing compared to most mainstream languages.

The article linked makes some excellent points about business and other considerations and how it influences adoption of any language/tech (other than the quality itself).

The question itself can be reframed either as "Is Smalltalk good?" or "Why does noone use Smalltalk?"

2 comments

As a haskell user, I would say that you're overstating how amazing it is. The language is certainly fantastic, but the tools are so awful that it almost makes me willing to use go! GHC takes ages to compile code, as well as easily a couple of GB of RAM. When you're longing for the days of C++ because your build time was so much faster, something is seriously messed up. Cabal mostly stinks, ocaml's cabal inspired packager is far better despite being much newer and having fewer resources invested into it.

The community is borderline insane when it comes to style, so you basically have to use a huge complicated emacs setup with a bunch of plugins just to be able to produce code that meets the bizarre style guides without manually messing with spaces all the time. That last point shouldn't matter since for your own code you can just pretend it is a normal language, but as soon as you want to make a change to an open source library you're stuck.

Much of this is similar to smalltalk, where the language itself was good, but trying to use it would drive you mad.

> GHC takes ages to compile code, as well as easily a couple of GB of RAM. When you're longing for the days of C++ because your build time was so much faster, something is seriously messed up.

IMO, that's only true if what you get out of the compiler provides the same or less value as what you get out of the compiler for competing options. OTOH, the whole reason people choose Haskell over other languages is value-add from Haskell's compilation process. Spending some clock cycles at build time for that is, IMO, worth it.

You are assuming that it is necessary to take many minutes and GBs of RAM to compile haskell code. There is no reason to believe that is so. Especially since other haskell compilers are much faster. It is 100% certain that GHC contains at least one memory leak that has been unaddressed for years. Simply put, absolutely nobody has put any effort into making GHC fast. Only into making it produce fast output. Ocaml gives you 90% of the benefits of haskell with 10% of the compile time (actually faster than that, but close enough).
> It is 100% certain that GHC contains at least one memory leak that has been unaddressed for years.

That's clearly a problem.

> Simply put, absolutely nobody has put any effort into making GHC fast. Only into making it produce fast output.

OTOH, as annoying as it may be to developers, on the assumption that code will be run more frequently than it will be built, that seems like priorities being in the right place.

I sense a similar thing happening with languages stealing functional features from Haskell, similarly to how languages stole OO features from Smalltalk.

C++, Java, Objective C, Ruby borrowed OO ideas from Smalltalk to varying degrees. Eventually, you could get most of the benefit of Smalltalk OO ideas without actually using Smalltalk.

Swift, Rust, Scala borrow functional programming ideas from Haskell (and ML) to varying degrees. My hunch is many programmers will encounter and use functional programming constructs in those languages, without ever programming in Haskell.

To complete the comparison, Smalltalk is still arguably OO in its purest form, as Haskell is probably the purest embodiment of the functional programming paradigm. But in both cases, most programmers are happy to adopt some subset of those features in languages more similar to the onese they already know.