Forty Years of LOGO
SoyChemist writes "Forty years ago, LOGO, a derivative of LISP, was born. Several years later, it became the cornerstone of educational software that simultaneously taught geometry and how to think like a coder. With a plethora of high-end educational software packages to choose from, each with flashy multimedia and trademarked characters, parents and teachers may find the humble turtle a bit outdated. Thankfully, several LOGO programs are available for free through a variety of websites, but perhaps 3D programming environments like Alice will be the wave of the future."
I, for one, welcome our 40-year-old turtle overlords.
My introduction to programming was BASIC, back in 1980. By the time I encountered LOGO in a high school computer science class, it was a fun toy for about an hour, but then got old. Thinking back to that, I could conclude that LOGO is sort of lame, but for little kids who don't have the typing and language skills of middle school or high school students, I guess it's a better entry into programming than BASIC.
They're supposed to have LOGO on the OLPC XO laptop, and if I do that "buy one, donate one" thing, it will be interesting to see at which age my kid (who is now 2.5 years old) starts taking an interest in LOGO.
Start a happiness pandemic
I learned to program using LOGO on a Commodore Vic-20 in 1980 or 81. It was an astounding program because it enabled a very high level of functionality without needed knowledge of a lot of technical details of the machine. My school district (Portland, OR) had a Talented and Gifted program that included a computer course, and LOGO was it. We were able to draw polygons and devise simple games (somewhat more rudimentary than an Atari 2600). Based on this experience, my brother and I got a Commodore 64 a year or so later, and I was disappointed in BASIC. Sure, it was structured more like a "real" computer language, but it wasn't possible to do anything even remotely sophisticated in Commodore Basic graphics-wise without resorting to quasi-assembly PEEKs and POKEs. To get around this, my brother tried to learn 6502 assembly, and burned out on computers (he's now a lawyer.. poor man). I was lucky and discovered Pascal...
I don't think I would have a career in the technology industry if it were not for LOGO (I'm an analog IC designer). A previous comment said Python is better for his child. I would agree. In fact, I would have done pretty much anything for Python and Pygame when I was a small child. However, for the late 70s and early 80s, LOGO was the educational language to beat, and the only way for a child to really feel the machine the way a programmer does, and not as a passive game player.
My concern with teaching and using LOGO in education is that LOGO fails to provide people with a fully capable language that they can use life long. How many teens or adults program in LOGO? What type of "real" programs can be written in LOGO. Is it efficient enough for practical programs.
My first programming language was BASIC, (then 6502/Z80 assembly) then Pascal, C and APL (APL is my favorite teaching langauge - see Kxdb+ from KX Systems to see where APL is now). While LOGO is cute, in my mind it fails the long term relevance test, and also is not close to CPU's in operational methodology.
Just my 2 cents
Simbuddha
Apple II had a facility called shape tables that could do sorta what logo could do at the time. You typed in a bunch of vertices in hex, and then you could draw the shape transformed in several interesting ways.
Shapetables, I thought, were the bomb, but also, proved to be my first introduction to the lesson: there is always a better program than you.
I was in high school at the time, Firestone in Akron, and we had a teacher that fought for and got a really nice computer lab. He was great. He had a lot of prestige because a future shuttle astronaut was one of his students, and in general, the math department there was one of the best in the state.
Anyway, I spent hours hand coding my shape table for a little lunar lander video game I was writing, and I thought I was the cat's meow, and I was all about to show it to everyone, trumpeting my genius, and this other guy walks in with a pinball game written in assembly language.
All I could do was compliment the guy, because it was great. He had decent sound, fast graphics, smooth play. It was just great. Amazingly, I don't know where he went with it, because it was right up there with the commercial pinballs of the day. But still, talk about humiliation! I about died!
This is my sig.
Personally, I never learned LOGO in school, I used it at my first programming job!
I was 17 years old and already know how to program in Z80 assembler and MBasic (Ah, the heady CP/M days!).
Imagine my surprise when I got an apprenticeship at a place where they did accounting - in LOGO!
Not just any LOGO either it was M.I.T. Experimental LOGO #43 if I remember correctly, running on a microcomputer with 12 terminals connected to it! And there was NO TURTLE in this LOGO, only the list operators, logic and math primitives!
This company was doing the monthly accounting of about 40 or so client firms and the whole system was written in LOGO.
I remember thinking "Why the heck are they using a kid language to do all this" at first, but under the teaching of my mentor, I learned recursion and abstraction to a level I had never considered before.
I mean instead of tripping all over the mundane aspects of implementation that you would bump up against in assembler or BASIC, here was a language that was so high-level that you really could concentrate totally on the abstraction and algorithm of solving the problem without getting tangled in a lot of what seemed to be more real-world problems (memory allocation, variable types, string/array manipulation, etc...), this language forced you to think in really high-level ways about the problems you were trying to solve.
It was a year of epiphany-after-epiphany for me and it did more to form me than any of the other languages I've ever touched. It caused me to rethink my approach to all other languages and tools and I feel tremendously fortunate that I was in the right place, at the right time to experience it all.
Sadly, that company's history ended badly; one of the partners was billing the clients directly and ran off with the money, so the company went under and I never did find another company using LOGO again.
Too bad reality and theory almost never line up...
Squeek and Flash let kids do a lot more visual stuff and make it easy to learn how things work.
"More visual stuff", as evidenced in the brain-death that is MySpace. Is it too late to teach them away from more visual stuff? Into more like, you know, real content with some original thoughts put into it?
And "how things work"... you mean how programming works, right? To teach how things work, take them to a library or workshop or just outside the house.
Sorry if I'm coming across a bit grumpy, but I hope my kids don't learn programming; at least I'm not making any effort at guiding them to it. Well, maybe I could introduce INTERCAL as a "programming really is fun" education...
(I don't consider myself a half bad coder, I love the few languages I know and want to learn more, but I hope my kids end up doing something really useful and helpful to other people... programming for living isn't exactly that. I contribute to some open-source projects but I don't feel I'm empowering anybody. Great, let every third world child become an intarweb junkie like us. Okay, I'll stop now. Didn't mean to troll.)
I have taught an introductory cs classes in C, Java, JavaScript, and Alice. The interest level was far higher in Alice than any other language, simply put it looks cool to students. They were always far ahead in the class. They also are doing well in their subsequent CS classes in C++ so the concepts seem to have transfered. I don't think the same transfer level would occur with Logo. At least, I learned nothing in Logo after having already learned Basic.
Logo is actually a pretty powerful subset of lisp. Its missing a few crucial elements but you can do an entire computer science curriculum in logo.
First, smalltalk is very much alive. Second, learning different programming languages helps you THINK in different ways. Smalltalk is incredibly nifty and has things that C++ doesn't (for example, EVERYTHING is an object, which means you can add a method to the equivalent of the int class), it also has the idea of an image. Basically, you save a *running* program, with all its data etc), which is incredibly nifty.
I'm not a Smalltalk programmer and have just dabbled in it, but can tell you how other languages have helped my thinking. Learning Scheme made me really understand first-order functions, which made me able to efficiently use C pointers to function, and later many 'patterns' for event handling. Learning Haskell helped me really understand templates.
So, learn the languages to help you learn to think, and who knows, maybe you'll even get a job using them (I've seen postings for Haskell, Smalltalk and Scheme)