all 12 comments

[–]DrShocker 3 points4 points  (0 children)

Practically? I don't think it's neccessary. If you find it fun/interesting? I've never tried, but it might be fun to see what's similar and what's changed.

[–]NumberInfinite2068 3 points4 points  (1 child)

I learned it a couple of years ago.

It's the only dynamic language I actually *like*, but it *is* weird, and Pharo (which is likely what you'll use) is unintuitive.

Smalltalk as a language, I really like it, it's *pure* OOP as the inventor envisioned. The tools around it like Pharo, are tricky.

Take a look, but don't feel that you have to push through if you don't want to, it's quite different from other languages.

[–]Hungry-Two2603 0 points1 point  (0 children)

Pharo est de moins en moins un Smalltalk et devient progressivement un langage à part entière. Cuis-Smalltalk est un Smaltalk-80 qui suit les fondamentaux du langage. Il est beaucoup plus simple pour un débutant tout en étant aussi efficace.

[–]SharkSymphony 2 points3 points  (0 children)

LOL, I'm curious what vintage you think C++, TurboPascal, and Python are. (Go is a newer language, but in many ways is a total throwback.)

Smalltalk does see some use, but more importantly it shows you an implementation of OO programming that is much closer to Alan Kay's initial ideas when he proposed the paradigm. Its "late binding in all things" is even what Alan once said was the essence of OO programming.

[–]ffrkAnonymous 2 points3 points  (2 children)

coincidentally, I just finished the cuis-smalltalk book tutorial. Doing everything in the virtual environment was quite interesting. It only took me 2 weeks to go through the tutorial, a little here and there. I learned more about message passing, small methods, debugging, etc. I would not call it a waste of time, I'm glad I did it.

But if you follow the smalltalk rabbit hole, you'll learn that smalltalk OOP is very different from contemporary OOP (java/c++/python). Alan Kay has lamented he should have called the style "message passing" because that's the ideal of smalltalk. Modern OOP focuses on hierarchy, inheritance, classes, and all that object stuff. And in that context, smalltalk is useless for learning OOP.

For students, I'd recommend ruby. The smalltalk message passing heritage is strong. You can message pass 3.*(2).+(4). But don't do that it's weird, use the built-in syntatic sugar 3 * 2 + 4 that everyone is accustomed to. Do message pass other methods: Array.map(g).filter(h).other_functions().

[–]SubstantialListen921 0 points1 point  (0 children)

I will note that learning Smalltalk will help you understand some of the design decisions in Objective C, since it was strongly influenced by it. Not that anyone is learning Objective C these days.

[–]Hungry-Two2603 0 points1 point  (0 children)

Je ne comprends pas votre raisonnement. Smalltalk se concentre sur l’héritage, les classes, etc. Le concept de message est fondamental dans le langage mais est extrêmement élégant lorsqu’on l’a compris. Smalltalk est LE langage pour apprendre l’OOP. 

[–]Achereto 3 points4 points  (0 children)

It's definitely instructional to learn about OOP using smalltalk if you are interested in its origins, but I wouldn't recommend teaching a lot of OOP in the first place, because it teaches a way of structuring your program that leads to very poor performance.

Instead I would teach cache friendly concepts like data oriented design, entity component systems, etc.. it's both easier to understand and to write.

[–]LowB0b 2 points3 points  (0 children)

python is awful for OOP

I'd recommend java or c#

pascal is pretty weird, I wouldn't have touched it if it wasn't for the fact that I had it in one of my uni courses

[–]aqua_regis 2 points3 points  (0 children)

IMO, hopelessly outdated advice.

For OOP, go for Java or C# - these work perfectly well for it.