Subj : Re: Is BASIC to be regarded as less than reputable prog lang? To : Bob Worm From : tenser Date : Mon Jul 15 2024 00:40:12 On 13 Jul 2024 at 09:58p, Bob Worm pondered and said... BW> > Not true! LOGO is actually a dialect of Lisp, and as such, BW> > it's incredibly powerful. BW> BW> I did not know that. My primary school had the turtle things but through BW> my entire school career I never saw one in use. Another fine waste of BW> 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. BW> > many could not wrap their heads around functional- BW> > style programming. BW> BW> Eughhh... flashbacks to university... I am not surprised people struggle BW> with it, I still remember the horrors of trying to master depth-first and BW> breadth-first algorithms using only statements of truth. That was in BW> HUGS, a variant of Haskell - not sure if LISP is easier or harder than BW> 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) .