If you like turtles and programming, you might enjoy hearing about LOGO.
Back in the day, that was the first programming language I was taught. Years and years before I’d learn C or ASM.
You’d give instructions to a “turtle”, moving it about the screen, drawing as it did so. It was a magical experience for 9yo me.
Thank you! I had been picking my memory for this for so long. We too were taught LOGO in school in the early 2000s. I had forgotten the name, I found kturtle after searching about but couldn’t recall what the original program was called.
I was taught it around 1988, most likely on a Thomson MO5 ? Or maybe it was a TO9. It was a while ago :,) I just remember the fascination watching the little pixels color themselves and experimenting with the instructions to see what we could come up with.
Well aren’t the requests to backend by definition slow? Actually TCP protocol is pretty much turtle as opposed to UDP’s hare: slow, but it gets you there.
Clearly, the superiour mode is to just use keyword based scoping (à la Ruby do … end). When I was a kid I read an OBSCENE MAGAZINE where I saw a Forth program go dup dup dup and I was like “ok so what’s the problem here? Things happen and everything is just keywords?” and my young mind was corrupted forever I guess
I don’t get why people hate semantic whitespace. The whitespace would be there anyway, and if anything it’s easier to read as long as you avoid 15 nested if statements, and you’re not using a dynamically typed abomination like python.
S-expressions are a hack because the Lisp devs didn’t know how to make an actual compiler, and instead had the users write the syntax tree for them. (For legal reasons I am being facetious).
In all honesty, I can understand the reason people love s-expressions, but to me they’re just unreadable at a glance.
Semantic whitespace is awful because whitespace (something that you can’t actually see) has meaning in how the program runs. Braces {} for scopes gives you the ability to easily tell at a glance where a scope ends. Whitespace doesn’t allow for that. Especially, especially when you can accidentally exit a scope (two new lines in a row with Python) and it’s not actually an error (Pythons global scope). Yeah formatters and linters make this less of an issue but it sucks… Languages with legible symbols for scoping are significantly easier to reason about, see end symbols in Lua.
S-expressions are a hack because the Lisp devs didn’t know how to make an actual compiler, and instead had the users write the syntax tree for them. (For legal reasons I am being facetious).
McCarthy had planned to develop an automatic Lisp compiler (LISP 2) using M-expressions as the language syntax and S-expressions to describe the compiler’s internal processes. Stephen B. Russell read the paper and suggested to him that S-expressions were a more convenient syntax. Although McCarthy disapproved of the idea, Russell and colleague Daniel J. Edwards hand-coded an interpreter program that could execute S-expressions.[2] This program was adopted by McCarthy’s research group, establishing S-expressions as the dominant form of Lisp.
And for anybody thinking of implementing M-expressions, look at Wolfram Mathematica, which is the only popular M-expression-oriented language. It turns out that high-level graph-rewriting semantics are difficult to make efficient! (If you want to try, you might also want to look at GHC or other efficient graph-rewriters to see what the state of the art is like outside Planet Wolfram.)
It’s fascinating how s-expressions are both data type and language syntax. Such power. Only other time I saw something remotely like this was XSLT & XML, which I admittedly do not miss one bit.
programmer_humor
Hot
This magazine is from a federated server and may be incomplete. Browse more on the original instance.