Lynn Bradshaw via plug on 6 Jan 2022 16:50:58 -0800 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: [PLUG] sage |
I am but a rank neophyte though I hope that changes soon. If you wanted a historical discussion of Smalltalk, its influence, and some of its nifty technical attributes, that is something I could do. Here's a good example, the famous Smalltalk postcard: https://miro.medium.com/max/2000/1*Aa0AEoUgjZov8yrgdplsIg.png The entire syntax of the language is on display here. There are only four rules of precedence: * Unary messages are sent first * Binary messages are sent next * Keyword messages are sent last * Use parentheses to interrupt said order If what I said sounds alien, it probably should, but here's a more detailed explanation: https://wiki.c2.com/?SmalltalkMessageRules I really like keyword messages. That page gives an example: 12 > 7 ifTrue: ['yes'] ifFalse: ['no']. If I had to do something sort of like that in Python, it might look like: def ifTrueIfFalse(condition, first, second): if condition: return first else: return second print(ifTrueIfFalse(12 > 7, 'yes', 'no')) That is very clunky for two reasons. The first and most fundamental is that there is really no way to do in Python what you just saw above. There aren't any reserved control flow structures in Smalltalk like there are in other languages. "true" and "false" (singleton instances of their respective classes) are reserved words but that keyword message ifTrue:ifFalse: is not. How it works is, if sent to an instance of True, it will return the result of the first block, and, if sent to an instance of false, it will return the result of the second block. If statements are simply emergent from the object system, as is everything else in the entire language except for several hundred primitive operations to prevent it from being turtles all the way down. (Some discussion of that here: https://stackoverflow.com/questions/39321776/smalltalk-how-primitives-are-implemented) The other reason what I wrote was clunky is because the Smalltalk version seems to be closer, at least in my own mind, to what natural English would look like. Python is very readable, but it certainly doesn't have keyword messages. So that's the sort of thing I know enough about to talk about but not about Pharo specifically. On Thu, Jan 6, 2022 at 7:16 PM Walt Mankowski via plug <plug@lists.phillylinux.org> wrote: > > Pharo sounds great. And PLUG's upcoming schedule is pretty thin. Do > you know enough about it to be able to talk about it at an upcoming > meeting? :) > > On Thu, Jan 06, 2022 at 07:05:27PM -0500, Lynn Bradshaw via plug wrote: > > Both computing history and nuclear strategy are wild. > > > > If I had to guess, most people here have already heard of what > > happened with Xerox PARC and Smalltalk and their ideas being stolen, > > but many might not know that you can have a fully modernized, open > > source variation of what they did in the 80s: > > > > https://pharo.org/ > > > > It can work with Git and GitHub; the community has a very active > > Discord; it's all really great. > > > > Another system that is lesser-known today but certainly not > > insignificant is the early computerized learning system PLATO: > > > > https://distributedmuseum.illinois.edu/exhibit/plato/ > > > > Originally intended for networked, interactive education, it later > > became a means of other forms of communication and even very early > > online multiplayer gaming. > > > > On Tue, Jan 4, 2022 at 11:06 AM jeffv via plug > > <plug@lists.phillylinux.org> wrote: > > > > > > > > > The most important computer you’ve never heard of > > > > > > https://arstechnica.com/science/2022/01/the-most-important-computer-youve-never-heard-of/ > > > > > > SAGE, the Semi-Automatic Ground Environment, was the solution to the > > > problem of defending North America from Soviet bombers during the Cold War. > > > > > > > > > Did not run Windows. > > > ___________________________________________________________________________ > > > Philadelphia Linux Users Group -- http://www.phillylinux.org > > > Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce > > > General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug > > ___________________________________________________________________________ > > Philadelphia Linux Users Group -- http://www.phillylinux.org > > Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce > > General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug > ___________________________________________________________________________ > Philadelphia Linux Users Group -- http://www.phillylinux.org > Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce > General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug ___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug