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