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

I'm angry because the cult-building around Smalltalk is stupid and I fell for it and wasted years trying to see what was there.

- It's stupid because you can use Pharo today; Smalltalk isn't dead. Try it and find out if it's great. They're trying as hard as they can to keep it relevant and it's a constant struggle because they have to build from scratch everything Smalltalk didn't invent.

- It's stupid because tiny languages like Smalltalk beget huge libraries; I have owned ~20 books on Smalltalk and all but two of them were essentially useless tours of defunct libraries. (The other two are fantastic and useful no matter what language you're using, if it's OOP.)

- It's stupid because most of what was powerful about Smalltalk is either nowhere in sight or became mainstream years ago. I'm angry at the cult-building because it builds nostalgia instead of systems. It makes it easy to spurn what we have and make excuses for our own non-productivity—obviously I'd be so much more productive if only it were 1985 and I had Smalltalk! If Smalltalk GUI building is so great, how come nobody uses it today? Because it's maddeningly inferior to everything we have today. Take your "Javascript fatigue" and try out Morphic, tonight. Here's a bottle of Rogaine and vue-cli for when you lose your hair and sanity trying that little experiment.

The cult-building is maddening because it misses the truly amazing things. To appreciate the amazing things requires immersion, and immersion sucks! You know, if you make a web app with Seaside and it throws an exception, you can serialize the debug window, bring it down to your image and continue the debugging session locally. The serialization works on blocks, which is to say closures, so you get the whole state of the app locally. Has the OP tried this lately? Because it only works if you use the newest serialization method, if you have exactly the same code in both images, and once you make the change in your local image, how do you get it up to the server again? Oh, you either have to endure the awful homegrown Monticello VCS (inseparable from its insufferable GUI, because Smalltalk) or you have to do the file-out file-in trick with git, because Smalltalk hates external tools.

It's a cult because MVC, in the overarching sense that it would have to mean to be applicable to all the aforementioned systems, would have arisen organically without Smalltalk because it's just a sensible design. It's a cult because messaging in the broadest sense that must be meant by including completely different things like Erlang and LINQ predates Smalltalk. If you ascribe things to Smalltalk (or influential people who happened to use Smalltalk) that did not originate in Smalltalk, you are taking Smalltalk as more important than history or fact, and that is the essence of building a cult. Methods-as-messages originate in Smalltalk, sure. If you say Smalltalk invented that, that's true. But of the five things mentioned, only Ruby has that. Java, Javascript, LINQ and Erlang do not. They are not Smalltalk's inheritors; they don't owe their concepts to Smalltalk, even if the same people worked on it.

Smalltalk was great, is great. Pharo is great. What makes it a cult is the alpha-and-omega bullshit. Great ideas happened before and after Smalltalk. They chose general names for specific ideas. History is mutilated if we ascribe to Smalltalk the general ideas or give Smalltalk credit for unrelated things because some of the same folks were in the room.




> If Smalltalk GUI building is so great, how come nobody uses it today? Because it's maddeningly inferior to everything we have today.

I'd argue that the CompSci community DOESN'T choose the best thing that comes along, but merely the first one that fits the bill. It's a mixture of darwinian processes and market force.

If you take the example of Smalltalk vs UNIX vs DOS in the 80s then you get exactly that. People chose DOS+IBM PC because it was a shitload cheaper than a Xerox Star. They'd also choose UNIX (for mainframes) over Smalltalk because it was already there, everyone knew how to use it, and nobody wants to ever break backwards compatibility (so you're stuck).

(EDIT: also, compare to the WWW. Is it really so much superior than what we had before?)

Sure, SOME things have improved, but overall it's a complete shit show and I don't think that the things that have improved are THAT much better (while everything else is downright garbage).


Yes, but today they're both free. Why don't you download Pharo today and use Morphic? Then come back and tell me it's competitive with Cocoa, Qt, JavaFX. Morphic was a neat idea where it was born (in Self!) but there are reasons it hasn't taken off among hobbyists—it's bloated, it's slow, it is worse for most usecases. If it were better today, where's the community of people being hyper-productive and trumpeting it today?


That's not what I was arguing. I was arguing that a better idea does not (necessarily) get adopted, even if it is superior. Sure, Smalltalk might not compete today, but I'd say it was superior /then/ (and still didn't see wide adoption!). That's why I don't have any hope that a superior idea will get adopted in the /future/, whatever it may look like (and this is my main issue here).

I'm especially not thrilled about the underpinnings of current systems. You have to put in a huge amount of effort (millions of lines of code) for very little effect (web browsers, modern operating systems, etc). Just because something is the best that doesn't mean it is actually good. /I/ think, we could do a whole lot better. Just recently, I had a similar debate. Money quote: "nothing beats a nice C implementation".

What I'm always curious about: does this /Idea/ really not work or did simply put not enough effort in it (compare what amount of money, time, and man power is spent on modern systems compared to Smalltalk or any less popular system; I'd say it isn't a fair comparison wrt the former leading to better results).


I think we've reached agreement here, and I've calmed down a bit so I can restate things a little more dispassionately and maybe demonstrate that.

Fundamentally, I think if you're talking about Smalltalk, you're either talking about it in situ, or as it is today, or as an influencer. In the original context, it was thrilling, far ahead of its time in many ways, and lost out because of the reasons you mention: expensive machines, expensive licensing, performance.

If you're talking about it as it is today, it's a mixture of great and horrible and if someone is uniformly positive about it that tells me they have limited experience—either with Smalltalk itself or with competing modern systems.

As an influencer, there are things that can make a reasonable claim to inherit concepts from Smalltalk, especially Ruby. But the influence is not as wide as gets claimed by its proponents. Some of the ideas in Smalltalk are synergistic and don't work well taken piecemeal. Many of the claims about Smalltalk's influence above are unreasonable, either because they are a semantic ball-and-cup game or because they claim a kind of invisible human influence that bears no technical resemblance.

Smalltalk is worth using today, but it has actual faults that shouldn't be whitewashed, and I find the cult of Smalltalk distasteful because it prioritizes in-group mythbuilding over the truth. We should all download Pharo and use it for a few weeks. That direct, personal experimentation is the ultimate cure to technology triumphalism, whether we're talking about Smalltalk or anything else.

I certainly agree with you that we can do better than what we have today, and that Smalltalk has lessons for how to do that which would absolutely apply.


I think you pretty much nailed it here.

> If you're talking about it as it is today, it's a mixture of great and horrible

Most PC run Wintel and nowadays even more people use/care about ARM/Android/iOS. That's reality and I don't debate that. I'm only/mostly interested in reserarch/CompSci as a discipline.

> But the influence is not as wide as gets claimed by its proponents.

To me, the problem always seemed to be less of how wide these ideas spread but how well they and their origins were understood. OOP made a lot more sense to me, when I found out what Alan Kay had in mind (Sketchpad, Arpanet, biology, etc.).

> Some of the ideas in Smalltalk are synergistic and don't work well taken piecemeal.

Exactly. I think of Smalltalk as more of a system and not just a language. In my opinion, C++, Java, et al. fail (or aren't as good as they could be), because they only take just one idea from Smalltalk (e.g. classes; or the GUI, in case of the Apple Macintosh or Niklaus Wirth's Lilith), when the good things about Smalltalk were due to the interplay of multiple ideas.

> Smalltalk is worth using today, but it has actual faults that shouldn't be whitewashed

I see Smalltalk (and its usefulness) more as a research system than a production system. I'm mostly interested in research and moving Computer "Science" as a discipline forward. I'm sick of people trying to sell me their 5% performance improvement as "new"/"research". Problem is, things haven't fundamentally changed since 1965 (the von Neumann bottleneck is still present, both physically and mentally). Smalltalk could have been the greatest piece garbage in computing history and I'd still respect it (somewhat), because at least it tried to do things fundamentally different.

> I find the cult of Smalltalk distasteful because it prioritizes in-group mythbuilding over the truth.

To be honest, you've got that problem everywhere. Heck, look at Apple, Linux, BSD, Unix/Plan9 …

Btw: I'm currently reading "Smalltalk-80: The Language and its implementation". What's your opinion on that book? And thanks for the other two book recommendations.


Nothing else to comment on but this:

> Btw: I'm currently reading "Smalltalk-80: The Language and its implementation". What's your opinion on that book?

It's required reading and it will tell you how to build Smalltalk-the-language (inefficiently, but productively), but it won't really teach you how to use Smalltalk today. For your purposes, it's definitely the right book.


Thanks. This was a fun discussion.


Glad you had fun. I did too.


> competitive with Cocoa, Qt, JavaFX.

Where did Cocoa come from? It came from NeXT, which was Steve's second attempt at implementing the ideas he got from his PARC visit where he saw Smalltalk, the first obviously being Lisa/Mac.

And of course Cocoa is implemented in Objective-C, which is Smalltalk added to C.

And I would claim that Cocoa is hands down superior to Qt or JavaFX (does anyone actually use JavaFX?), and for precisely the reasons that are made possible by the dynamic nature of Objective-C. Having experienced 4GLs and other UI building systems, Cocoa managed and still manages to achieve the holy grail of combining 4GL-/screen-painter-like productivity with complete flexibility to implement anything you want, on a smooth curve.

We take that achievement for granted nowadays, but it is no mean feat.

But yes, Pharo/Squeak etc. are somewhat fossilized, but still amazingly productive compared to most anything else, and that's why there are communities of people committed to these fossils, being amazingly productive on them and trumpeting it.


I have always considered the standard library to be part of the language.

How big is Python the language? How big is Erlang/Elixir?

The power you get from each is that there are very powerful batteries included, and most 3rd party libraries fall into the same patterns learned from the STL.


That sounds......too emotional.


No, it's the right amount of emotional. When people distort the truth, it makes me angry. This is misinformation well beyond the protection of Hanlon's razor. And I resent that you are unable to attack my facts, so you have decided to try to go after my tone instead. If you are in possession of better facts, you should trot them out. But if you're somehow harmed by my honesty or passion then that's your problem.


> But if you're somehow harmed by my honesty or passion then that's your problem.

You're harmed by your "honesty" and "passion". People don't listen to what you have to say if they are turned off by your tone.

Look, I've been there, too. I've gotten angry about Lisp and Haskell zealots, for much the same reasons you got angry about Smalltalk fans. And my anger was... unproductive at best.


Gosh, thanks Mahatma.


I read your post a couple times and I'm not even sure what you're angry about. You yourself said that Smalltalk is great. Maybe you had a few friends who were really obsessed with Smaltalk and you are upset at them?


What are the other two fantastic books of which you speak?


A Mentoring Course on Smalltalk by Andres Valloud and Smalltalk with Style by Klimas et al.

http://www.lulu.com/us/en/shop/andres-valloud/a-mentoring-co...

http://sdmeta.gforge.inria.fr/FreeBooks/WithStyle/SmalltalkW...




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: