Hacker News new | past | comments | ask | show | jobs | submit login
History of Logo (2020) [pdf] (escholarship.org)
70 points by lelf 30 days ago | hide | past | favorite | 13 comments



People interested in this will probably enjoy NetLogo and NetLogo3D. It's pretty much the Logo you know and love, but you can have many more than one "turtle" which then allows you to program complex things such as flocking algorithms.

Here's an example of it in action: https://www.youtube.com/watch?v=NdpTVAx6AU0

You can even move the box around to see things from any arbitrary direction and distance.

It's mentioned in the document, but it doesn't get into what makes NetLogo as interesting as it is.

Also, I love this story:

"A story Paul Goldenberg recounts from the early days of Logo is that one day a child typed the command love and got the response

love has no meaning.

The child tearfully reported this to Paul. The next day that error message was changed to

I don’t know how to love"


Shameless plug here for our 3D Logo implementation turtleSpaces https://turtlespaces.org -- Linux / Windows / macOS and now also a WebAssembly version!


Just came across TurtleSpaces the other day. Very impressed.


This is one of 19 papers submitted to HOPL (History of Programming Languages) IV if anybody is interested [1].

1: https://dl.acm.org/toc/pacmpl/2020/4/HOPL


https://docs.python.org/3/library/turtle.html

    $ python
    from turtle import *
    color('red', 'yellow')
    begin_fill()
    while True:
        forward(200)
        left(170)
        if abs(pos()) < 1:
            break
    end_fill()
    done()
In case, like me for years, you didn't know it was there...


This is not really LOGO though, it's just turtle graphics which is discussed in the paper as merely one possible "microworld" for programming.

LOGO itself makes a lot more sense than Python as an introduction to computer programming. (It has some real misfeatures, but the paper discusses at least one of them at length - namely dynamic scope, which basically endows each program binding with its own independent "stack", instead of featuring a single stack of activation records as in most programming languages - and concludes that it may make the language somewhat friendlier to newcomers.)


I used Python's turtle module to show my nephew the basics of programming. I even got to show him what "refactoring" was, by having the turtle draw a part of the picture and then abstracting that into a function that got called when drawing the whole picture.


this is a brilliant example how awful ugly python with its loops is (also compared to logo)


Much of Logo's history took place at MIT, and the Incompatible Timesharing System was a workhorse for Logo development. Many historical Logo implementations are available for running on ITS on a PDP-10 emulator:

- BBN's PDP-10 Logo

- CLOGO

- PDP-11 Logo

- Lisp Logo

- Apple II Logo (cross assembled on ITS)

http://github.com/PDP-10/its


Later Logo development took place at several firms, including LCSI in Montreal (I worked there for ten years). Later versions were cross-assembled on Lisp Machines, and later on on Apple IIGS with 4 MB of ram (custom lisp version).


This is the first programming language I touched. Still missing REPEAT 5[FD 80 RT 144]


I tried to figure this out with Python on https://colab.research.google.com/#create=true

Here's the closest I got, but it's not pretty

    !pip install ColabTurtle
    from functools import partial as f
    from ColabTurtle.Turtle import *
    initializeTurtle()

    def repeat(n, *commands):
        for _ in range(n):
            for command in commands:
                command()

    repeat(5, f(fd, 80), f(rt, 144))


Actually this is better

  !pip install ColabTurtle
  from ColabTurtle.Turtle import *
  initializeTurtle()

  def repeat(n, *commands):
      for _ in range(n):
          for command in commands:
                fn, *args = command
                fn(*args)

  repeat(5, (fd, 80), (rt, 144))




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: