I was extremely luck to be exposed to coding at a very early age. I remember playing around with BASIC on my family's Apple II e clone. But my very first introduction was the programming language Logo.
The Logo programming language is primarily for teaching. The origin was a physical robot that could be commanded to move around, and by attaching a pen to the robot it could be used to draw pictures.
Logo was the programming language created to allow users to control the robot. The commands would mean things like "move forward 1 foot" and "turn to the right (clockwise) 120 degrees". My introduction to programming was through a computer simulation of this system.
Instead of a physical robot, we were presented with a triangle, inexplicably called the "turtle", in the center of the monitor. By typing in and executing commands like "forward 100", the turtle would move forward the given number of pixels in whatever direction it was pointing -- straight up, at first -- drawing a line as it moved.
While the actual Logo language could handle a few more tasks, I remember usually almost exclusively just a few: forward and backward (conveniently aliased as 'fd' and 'bk'), right turn and left turn ('rt' / 'lt'), and penup and pendown ('pu' / 'pd').
And, perhaps most importantly, 'repeat', which allowed you to repeat a sequence of commands a given number of times.
In my research, I found (unsurprisingly) that I wasn't the first to take an interest in recreating Logo in JavaScript. The best and fairly faithful recreation of Logo I found was this one: Logo Interpreter
However, this did not stop me from taking a stab at creating my own implementation. I made three separate re-imaginings of Logo, each (I hope) better than the one before.
My first attempt at Logo in JS
My second attempt at Logo in JS
I am now undertaking a new re-imagining. Based largely on the last incarnation ("nugo"), this version will be designed to be largely graphical and tablet friendly, as opposed to the traditional text-only programming environment.
I have two major goals for the new version. First, to be made in React. Second, to allow for the use of variables and expressions.
Stay tuned for updates.
Top comments (0)