5 ms·
Logo 15-word challenge (1997)
- wintorez 7y agoYehuda Katz's name is in there somewhere.
- code_duck 7y agoI like how it links to his Geocities page.
- hackyhacky 7y agoThese programs rely on Logo's turtle interface, which is a convenient and intuitive way to describe graphics imperatively. It's great for kids. These days, Python also has a turtle library (edit: built-in! part of the standard library, for some reason), heavily inspired by Logo, which means that the code on this page can be easily translated into Python. Here are some example that you can run at home (since I assume more people have access to Python these days than likely have a Logo interpreter installed). Edit: these are Python translations (by me) of the top three entries on the linked page. import turtle import math turtle.tracer(0,0) # remove this line to watch the drawing def spirals(): # repeat 1800 [fd 10 rt repcount + .1] for repcount in range(1800): turtle.fd(10) turtle.rt(repcount+.1) turtle.update() def snowflakes(variant=6): # repeat 8 [rt 45 repeat 6 [repeat 90 [fd 2 rt 2] rt 90]] for _ in range(8): turtle.right(45) for _ in range(variant): for _ in range(90): turtle.forward(2) turtle.right(2) turtle.right(90) turtle.update() def orb(): # for [i 0 420] [seth :i repeat :i [fd 2 rt 1] pu home pd] for i in range(0,420): turtle.seth(i) for _ in range(i): turtle.forward(2) turtle.right(1) turtle.penup() turtle.home() turtle.pendown() turtle.update()
- misterdoubt 7y ago> built-in! part of the standard library, for some reason Well, as far as I can tell, the reason is that > Logo's turtle interface [...] is a convenient and intuitive way to describe graphics imperatively. It's great for kids. :)
- vkaku 7y agoWho'd have thought this was a built in.
- SamBam 7y agoI'm a Python newbie, running on macOS 10.13 with Python 2.7.10. When I save the above as turtle.py, and run with `python turtle.py` in the Terminal, I see an almost instantaneous flash of a tiny window, which then disappears. When I remove the tracer line to "watch the drawing," I don't even get that. The Terminal just returns instantly. Looking at tracer documentation, it's supposed to be `(which-frames-to-render, delay)`. If I set it to `turtle.tracer(1, 10000)` I get exactly the same flashing window as (0,0). How can I see the result?
- hackyhacky 7y agoDon't save the file to turtle.py, because then the "import turtle" line might try to import itself. Call it turtlestuff.py. Then do this in terminal: python -i turtlestuff.py Then you'll get an interactive Python prompt and you can call the functions directoy, e.g. spirals() Hope this helps you!
- SamBam 7y agoAh, thank you.
- DonHopkins 7y ago>because then the "import turtle" line might try to import itself Then you get turtles all the way down!
- hackyhacky 7y agoAlternatively, if you save the file as turtlestuff.py, you can run this: python -c 'from turtlestuff import *; snowflakes(); turtle.mainloop()' or python -c 'from turtlestuff import *; snowflakes(3); turtle.mainloop()' or python -c 'from turtlestuff import *; orb(); turtle.mainloop()'
- Tade0 7y agoLogo was my first programming experience - my older sister(who had Logo in school) introduced me to a few basic commands. These quickly turned out to be insufficient, so I reverse-engineered the examples shipped with the platform. We didn't have internet access, so that was the only viable option. When that turned out to be insufficient I noticed that many Logo commands were three characters long and highlighted, so I generated all the three-character combinations and checked them out one by one. Turns out you can make games in Logo, but sounds and keyboard interactions introduce pauses in the main loop. Eventually this new browser named Internet Explorer 6, which shipped with a language called JScript, proved to be more interesting, even though I didn't understand what a "<div>" was and how to write a for loop properly.
- vkaku 7y agoMine too.
- Paperweight 7y agoI wonder what would happen if you combined this with a Game of Life type algorithm?
- icedata 7y agoMy boss at Logo Computer Systems, Brian Silverman, produced a custom version of Logo with Life Game instructions included (implemented in 6502 asm for //e). This was never marketed.
- Paperweight 7y agoWhat was it like? I see on his Wikipedia page that he's made a lot of discrete cellular automata over the years, but Logo seems more...analog and continuous?
- icedata 7y agoIt was basically a specialised version of Apple Logo // (which we produced) adding primitives for constructing cellular automata. You would basically define rules, which would be executed and displayed. It was very fast as the execution engine was written in 6502 asm.
- kleer001 7y agoLikely a funny looking mess.
- maxhallinan 7y agoYou might be interested in StarLogo. [1] It's a Logo dialect designed for simulating decentralized systems and emergent behavior. 1. https://en.wikipedia.org/wiki/StarLogo https://en.wikipedia.org/wiki/StarLogo
- quickthrower2 7y agoHow cute, each name links to their email address. Very 1997!
- susam 7y agoAs a result of a recent thread[1] on HN regarding Logo, we now have a Slack workspace[2] and Freenode IRC channel[3] for Logo fans. Please do join them even if you don't remember Logo anymore. The intention here is not to discuss Logo but to share the joy of computing that we discovered through Logo and has remained in our lives. [1]: https://news.ycombinator.com/item?id=21374341 https://news.ycombinator.com/item?id=21374341 [2]: https://bit.ly/fd100slackinvite https://bit.ly/fd100slackinvite [3]: #fd100 at chat.freenode.net
- 9214 7y agoForth version: https://forthsalon.appspot.com/ https://forthsalon.appspot.com/
- carapace 7y agoReminds me of Algorithmic Information Theory: > Algorithmic information theory principally studies measures of irreducible information content of strings (or other data structures). Because most mathematical objects can be described in terms of strings, or as the limit of a sequence of strings, it can be used to study a wide variety of mathematical objects, including integers. https://en.wikipedia.org/wiki/Algorithmic_information_theory https://en.wikipedia.org/wiki/Algorithmic_information_theory Cf. Chaitan, Kolmogorov, and Solomonoff. Or Schmidhuber's "THEORY OF BEAUTY & LOW-COMPLEXITY ART" http://people.idsia.ch/~juergen/beauty.html http://people.idsia.ch/~juergen/beauty.html
- pgtan 7y agoEven simple thing like drawing the Euler spiral has much more effect, if you visualize the turtle motion, so you can see how the motion turns at some point and the turtle starts going back on the same way down. cs repeat 360 [fd 10 lt product 2 repcount wait 5] or a variant of David Eisenstat's code: cs pu setpos [-100 -100] pd repeat 8 [rt 45 repeat 4 [repeat 45 [fd 5 rt 2 wait 1] rt 135]] of course Logo is LISP, so you can do stuff like ? show map [[x] se sum # x ?REST] [1 2 3] [[2 2 3] [4 3] [6]]
- cr0sh 7y agoWhile this challenge does show off the complexity and beauty of Logo's "turtle graphics", it has often struck me as a tragedy of the language that, for most people who have encountered Logo, they are led to believe that graphics is all it can do (or its only purpose).
- jhbadger 7y agoIndeed. I've recently discovered NetLogo, which is a variant designed for making simulations, and it is amazing how you can get a sophisticated simulation in about a page of code. https://ccl.northwestern.edu/netlogo/index.shtml https://ccl.northwestern.edu/netlogo/index.shtml
- DonHopkins 7y agoThat's actually why Terrapin published my "Logo Adventure" on the C64 utilities disk as a non-graphical example of list processing with Logo. https://medium.com/@donhopkins/logo-adventure-for-c64-terrapin-logo-4c684a240b53 https://medium.com/@donhopkins/logo-adventure-for-c64-terrap... >Logo Adventure for C64 Terrapin Logo >When I was 17, Terrapin published my first commercial code on their C64 Logo utilities disk: a Logo Adventure program, a simple non-graphical game that showed off Logo’s list processing and functional programming capabilities.
- brownbat 7y agoFrom one entry: > The really interesting part is that the effect is entirely destroyed if you replace "fd 40 fd 40" by "fd 80". Fascinating...