On 13 Jul 2024 at 09:58p, Bob Worm pondered and said...
Not true! LOGO is actually a dialect of Lisp, and as such,
it's incredibly powerful.
I did not know that. My primary school had the turtle things but through my entire school career I never saw one in use. Another fine waste of
tax money :)
Yeah, this speaks to the history of the thing. I was at MIT
for a talk about the PDP-10 a few months ago, and spoke with
some of the folks who were principle's in Papert's group about
LOGO a bit. Papert was very interested in epistemology and
constructivist ideas about education. He thought computers
would be a good vehicle for students to construct knowledge
about geometry (specifically), math (generally) and computation.
LOGO was a distillation of the ideas of Lisp, where the basic
primitive is a list, in a form that he thought would be
accessible to children; the robot turtle (which was actually a
real robot, connected to the PDP-10 via a serial cable) was
part of that. He wrote about much of this in the book, "Mindstorms".
The problem was that, while the ideas are powerful, you have to
be an expert at computers to successfully transfer them to
computers, and where I think the LOGO effort failed was in
getting _teachers_ well-enoughed versed in the technology _and_
the underly pedagogical theory to be able to use it successfully.
Think of it: these computer scientists from MIT show up in a
school with a microcomputer, and they type a command that draws
a square on the screen; in the early 1980s, that must have been
mindblowing. They exalt the virtues of teaching programming in
this new-fangled language to a bunch of teachers who _probably_
grew up learning about filing cabinets and manual typewriters.
Everyone's excited about the prospects, but then the MIT people
go back to MIT, and the teachers have no idea how to even begin
to approach teaching themselves programming, let alone programming
in Lisp. Pretty much all they know is how to draw a square on the
screen. Now plop them in front of a room full of squirmy,
restless kids who _probably_ think the computer is cool, but
get bored with drawing rectangles really quick. It was almost
doomed to fail because the people charged with teaching it, by
and large didn't understand what they were teaching.
many could not wrap their heads around functional-
style programming.
Eughhh... flashbacks to university... I am not surprised people struggle with it, I still remember the horrors of trying to master depth-first and breadth-first algorithms using only statements of truth. That was in
HUGS, a variant of Haskell - not sure if LISP is easier or harder than that?
Haskell is what's called a "pure" functional language; that is,
one in which there are no side-effects (e.g., you can't change
the value of a variable). Of course, a truly pure language in
this sense isn't good for much; only making your CPU get hot.
The mantra is, "no mutable state." Of course, under the hood
the computer is mutating all kinds of state: registers are changing
values, the program counter is cycling around memory, cells in RAM
are setting and clearing bits, etc: most modern computers are
highly imperative machines (there's a reason we call the simple
operations that the processor actually traffics in "instructions",
after all!), but the language hides this from you.
But you still need to have some effect on the real-world; IO is
a good example. Printing something to a terminal window is a
side-effect. So Haskell wraps all of that up in a mathematical
construction from Category Theory called a "Monad." I won't go
into the specifics of that, but suffice it to say that it can
be very confusing if you don't have a strong background in pure
mathematics (or at least theoretical computer science). To
illustrate, I'll just mention that category theory was created
to address some deficiencies in set theory (a "set" in the
mathematical sense is not well defined, but rather, is intuitive). Specifically, category theory lets us answer the question, "does
the set of all sets contain itself?"
So while Haskell is a neat language, it's got an unofficial motto
that is, "avoid success at all costs." Most Lisp variants are far
more pragmatic, and let you have side-effects and mutable state.
LOGO definitely does. Indeed, LOGO has dynamic variable scoping,
common for Lisp variants at the time, like Maclisp.
--- Mystic BBS v1.12 A48 (Linux/64)
* Origin: Agency BBS | Dunedin, New Zealand | agency.bbs.nz (21:1/101)