5 ms·
Articles about how great Smalltalk is usually remind me of articles about how great the Lisp Machine was. And there is a lot of merit to an entire system, hard
by gamache 13y ago
Articles about how great Smalltalk is usually remind me of articles about how great the Lisp Machine was. And there is a lot of merit to an entire system, hardware and software, designed to operate in a high-level language.
My complaint is that neither of these things is coming back in a relevant way.
Perhaps the biggest shift in software engineering in the last decade or two is the fact that no one writes entire systems anymore. We've moved to a system of (somewhat!) interchangeable parts. If your thoughtfully constructed, delicately handcrafted utopia doesn't play well with tools the user is used to and libraries the user needs, no one will use it in the real world.
Smalltalk, though a wonderful entire system in the 80's, hasn't kept up with computing progress. Most of its best features made it into other languages (Ruby and Obj-C are the premier examples), languages which aren't so opinionated about what OS you run, what IDE you're using, what language adjacent programs are written in, etc.
Much like Lisp Machines, the rest is left to rot, and incite wistful blog posts by old hands. And pretty much everyone else ships code in other languages.
- loup-vaillant 13y ago> Perhaps the biggest shift in software engineering in the last decade or two is the fact that no one writes entire systems anymore. That's unfortunate. If we kept at it, we could have discovered much simpler ways of doing things than the current accumulation of leaky abstractions over leaky abstractions in a rather disintegrated environment. We can do better: http://www.vpri.org/pdf/tr2011004_steps11.pdf http://www.vpri.org/pdf/tr2011004_steps11.pdf
- pjmlp 13y agoYes they are gone. However, the main point is that back then you haven't got HN, Reddit and the blogs of today. As such not many geeks were fortunate enough to know and understand those systems, as consequence you have a legion of developers that cannot understand the beauty of those systems.
- roarroar 13y ago>My complaint is that neither of these things is coming back in a relevant way. Where is this directed? It sounds like a criticism of Lisp, Forth, Self, etc, but please correct. The fact that the ignorant masses flocked to C and Unix doesn't grant them one _iota_ of merit. C isn't even a good low-level language. And look at the most popular platform of them all - the web browser, if you want a good laugh.
- solarexplorer 13y agoThis is true of any new system. There is a huge complexity in supporting even the standards that most people would consider basic. Just to surf the web you need TCP/IP, HTTP(S), HTML, JavaScript, JPEG, etc. Implementing all of these from scratch is a huge pain.
- roarroar 13y agoWhat is true of any new system? I don't know what point you're trying to make.
- rbanffy 13y agoThere is great danger in learning OOP with Smalltalk. Everything fits together so elegantly, the first time I opened a book about C++, I closed it in disgust (after seeing the bit-shift operator being used for console output, wtf?!), only to give the language a second chance 8 years later. I even learned Java before giving C++ a try. When a young programmer asks me for advice about the next language to learn is, my advice is to go for the language that feels most alien. C++ won't enlighten a Java programmer significantly. Forth will.
- rimantas 13y ago> I even learned Java before giving C++ a try I must admin from all the stuff I saw on the internet I am now scared even try to learn C++. I think it is the looks as a least desireable language to learn for me. Which sucks a bit because there is position at a company I wouldn't mind work for.
- nnq 13y agoLearn C first! You'll understand why C++ is what it is and you'll also get the skills needed to contribute in a lot of open-source projects.
- pjmlp 13y agoPlease don't! Learn Modern C++ instead, otherwise you will be damaged with Cisms in C++ land.
- rbanffy 13y agoWould you like to elaborate on that?
- pjmlp 13y agoThere are lots of C constructs that are considered bad practice in C++ - null terminated strings - plain vectors - manual management of resources (memory, files, db connections, locks...) - C style casts - pre-processor instead of using inline/const/templates - the C subset of C++ it is also not 100% compatible with C, there are a few cases with different semantics - since C99, new language constructs are added via macros, instead of keywords - no use of namespaces - lack of safety of parameters that can be changed (pointer vs reference parameters) The best way to learn C++ is to read books like "Modern C++ Design", "Programming -- Principles and Practice Using C++" and the recently published "Tour of C++".
- silentbicycle 13y agoAt the same time, so much recent tool development has focused on virtualization. Vagrant, chef, puppet, packer, ... and yet, Smalltalk has decades of experience with whole virtualized machines to we can study. Perhaps systems like Smalltalk still have something to teach us?
- cabalamat 13y ago> My complaint is that neither of these things is coming back in a relevant way. Isn't Light Table essentially an effort to re-create the Smalltalk environment for modern languages?
- aaronem 13y agoFrom its documentation, it looks more like an attempt to expose the kind of REPL/runtime integration Emacs offers, through an interface which won't scare people off the way Emacs tends to do.
- bromagosa 13y agoYes. And seriously, when I saw the first Light Table demo and everyone was so amazed with it I thought "man, that's how we code every day in Smalltalk... what's so new about it?"
- e12e 13y ago> My complaint is that neither of these things is coming back in a relevant way. I think one could make the case that Android shares many design decisions with a "Smalltalk machine". And the same actually goes for iOS, as objective-c is basically Smalltalk bolted on to c. And then there is javascript that's modelled after Self -- so by extention chrome OS is also similar to a "Smalltalk machine". Now why all these systems end up with some bastardized crappy programming languages rather than just using Smalltalk -- that I don't know. The exception might be the one-laptop-per-child project. So, I think it's wrong to say "it's not coming back" -- even java (for set-top boxes and smart devices) was an attempt at "bringing it back". If anything, it seems these systems keep being reinvented.
- Ygg2 13y ago> Now why all these systems end up with some bastardized crappy programming languages rather than just using Smalltalk -- that I don't know. Because Worse is Better[1]. For example Internet and the Web is a bastardized version of Xanadu Project[2]. HTML is a bastardized version of XML or XHTML. Worse is here now, when Better gets here, it's not Better anymore, only marginally more useful. That or it turns out the benefits Better has aren't that important or are highly impractical. [1]http://en.wikipedia.org/wiki/Worse_is_better http://en.wikipedia.org/wiki/Worse_is_better [2]http://en.wikipedia.org/wiki/Xanadu_Project http://en.wikipedia.org/wiki/Xanadu_Project
- loup-vaillant 13y agoNo. Worse is Better would explain why browsers would use Smaltalk (or Self) directly, instead of inventing a new programming language. Javascript was probably born out of Not Invented Here. Worse Is Better only contributed the curly braces from C, and the continued use of the first widely known scripting engine. If The Right Thing is already there, Worse Is Better simply doesn't win without exterior help. Worse is better only because it's first. And even so… > when Better gets here, it's not Better anymore, only marginally more useful. I would say perceived as marginally more useful in the short term. This is a point where Worse easily looks Better, but whether it is is more debatable.
- bromagosa 13y agoI've worked with Smalltalk for four years now, and for what you write, I guess you haven't been keeping up with our progresses. Take a look at: http://amber-lang.net http://amber-lang.net http://www.redline.st/ http://www.redline.st/ http://pharo-project.org http://pharo-project.org Saying Smalltalk hasn't kept up with computing progress is an old argument that doesn't make sense anymore.
- masklinn 13y ago> Most of its best features made it into other languages No. A few of them have, usually in needlessly restricted and nigh-broken forms (Ruby's blocks are a pale and pitiful shadow of Smalltalk's). I've yet to see message cascading or conditions outside of lisps and smalltalk.