4 ms·
Someone explain what's smalltalk?
by narutowindy 4y ago
Someone explain what's smalltalk?
- johndoe0815 4y agoSmalltalk is a programming language (+runtime, GUI, development environment) that originated at the Xerox PARC research center in the early 1970s on the Alto computer. Smalltalk was one of the first object-oriented systems (along with the Norwegian Simula system), it differs from Simula/C++-style OO due to using dynamic dispatch (late binding), i.e., selecting which implementation of a polymorphic operation (method or function) to call at run time instead of at compile time. It had significant influence on the development of the personal computer. Projects at Apple (Lisa/Mac) and Microsoft (Windows) were influenced by the Smalltalk GUI and Smalltalk was also the basis for Objective C, the language behind the NeXT/MacOS/iOS UI frameworks - now on the way to be supplanted by Swift. More details, as usual, on Wikipedia: https://en.wikipedia.org/wiki/Smalltalk https://en.wikipedia.org/wiki/Smalltalk
- JKCalhoun 4y agoI knew of Smalltalk but was unaware it was 1) byte code rather than compiled and 2) it influences Objective C. Very cool. Seeing also Pascal, Modula, Forth, Prolog... The 70's were an innovative era for programming languages. https://en.wikipedia.org/wiki/Timeline_of_programming_languages#1970s https://en.wikipedia.org/wiki/Timeline_of_programming_langua...
- pinewurst 4y agoIt also introduced (in its later ParcPlace form) the idea of JITing interpretive languages.
- pjmlp 4y agoAll Xerox PARC environments (Interlisp, Smalltalk, Mesa, Cedar) were bytecode based, because their CISC CPUs were microcoded. So the first thing a machine would do on boot would be to load the right microcode into the CPU, and then those bytecodes were effectively the Assembly language for the CPU. They were also the genesis of the first JIT compilers, and the OpenJDK Hotspot traces back its heritage to StrongTalk JIT compiler.
- infinite8s 4y agoOne slight difference from current microcoded CPUs is that the end user could implement their own microcode. So each of the systems you mention above implemented their VMs directly in microcode, and as a result tye bytecode became the instruction set for this 'virtual' machine.
- bogomipz 4y ago>"Smalltalk is a programming language (+runtime, GUI, development environment) that originated at the Xerox PARC research center in the early 1970s ..." I'm curious was it used as a standalone OO language outside of GUI development as well or was its primary focus for building graphical UIs?
- johndoe0815 4y agoThere are definitely applications of Smalltalk outside of GUI development, e.g. in robotics: http://www.esug.org/wiki/pier/Robotics http://www.esug.org/wiki/pier/Robotics One example is NXTalk, a Smalltalk system (with its own VM implementation that differs from Smalltalk-80) developed in Robert Hirschfeld's research group (hi Michael! :)) at HPI. NXTalk runs on second generation (ARM7-based) Lego Mindstorms robots in 64kB RAM and 256kB Flash: https://www.hpi.uni-potsdam.de/hirschfeld/projects/nxtalk/index.html https://www.hpi.uni-potsdam.de/hirschfeld/projects/nxtalk/in... There's also a related discussion about Smalltalk use cases at c2.com: https://wiki.c2.com/?WhatsBeenDoneInSmalltalk https://wiki.c2.com/?WhatsBeenDoneInSmalltalk
- marvel_boy 4y agoReally it is a shame that lots of people on tech have never hear of Smalltak. It is in my humble opinion the most influential language ever created. Ask anyone who played with Smalltak in the 80's and they will say the same: "I never ever will have the sensation of power and confidence that Smalltak provided".
- layer8 4y agoI think “most influential” is debatable. In the space of OO languages that found widespread adoption, more seem to be influenced by the Simula-C++ lineage (notwithstanding counterexamples like Objective-C and Ruby).
- glacials 4y agoI find an sample of Smalltalk is one of the most interesting ways to see how it flows as a language, as its grammar almost reads like English. From Wikipedia [1], this is a piece of Smalltalk code: > 3 factorial + 4 factorial > between: 10 and: 100 which means: > 3 receives the message "factorial" and answers 6 > 4 receives the message "factorial" and answers 24 > 6 receives the message "+" with 24 as the argument and answers 30 > 30 receives the message "between:and:" with 10 and 100 as arguments and answers true [1]: https://en.wikipedia.org/wiki/Smalltalk https://en.wikipedia.org/wiki/Smalltalk
- worik 4y ago> as its grammar almost reads like English. Really? How different our interpretations can be, that is incredibly opaque too me. Even reading your explanation I do not understand it. Horses for courses, I guess
- tinco 4y agoglacials made a typo that makes their explanation harder to folow. The correct smalltalk is: 3 factorial + 4 factorial between: 10 and: 100 And the point about it reading like English is that because the syntax relies heavily on their fancy precedence rules you can make complex expressions without needing parentheses I think. It looks like the compiler magically knows what is meant by the expression, but the reality is that you need to be very aware of the grammar to be able to write it. It does look pretty in my opinion, but definitely opaque to someone not aware of the rules. Is 3 factorial plus 4 factorial between 10 and 100?
- tragomaskhalos 4y agoThe precedence rules are: unary > binary > keyword. That's it. Various criticisms have been levelled at Smalltalk, but it's a very long stretch to claim that it is difficult for humans to learn.
- tinco 4y ago