Bigsley the Oaf

Logo 2.0

Posted in Uncategorized by bigsleytheoaf on April 24, 2010

As I continue working on this project I realize that my aim is to write a programming language that functions at the level of mind.

I believe that thoughts are simple. They are complicated in the sense that an executing ruby program is complicated – it relies on a history, on an interpreter, perhaps on a virtual machine, on a functioning processor of a certain type, on an environment, etc. But they are simple in the sense that a ruby program is simple – it may be only a few lines expressing a concept very purely:

10.times do



prints “hi” to your console 10 times. The fact is that this simplicity of expression is possible because the manifold details of its support are hidden.

The fact that thoughts are simple implies that they should be simply expressible, given the correct language. A language is precisely a complicated set of details hidden by a symbolic layer of abstraction.

Logo 2.0 aims to give the user the experience of writing programs at the level of mind.

Three new features (one implemented, one under construction) further this aim:

1.) Macro recording – you can type “startMacro”, execute a list of commands, then type “endMacro <variable name>” to store the list of commands in variable name. You can then replay the commands by typing <variable name>.

2.) Drawing code – you can draw on the screen and it will produce code to produce an approximation to the drawings you’ve made – this literally means that you can draw code.

3.) Macro modifiers – there are any number of modifiers that can be applied to a string of commands

– they can be reversed: r;l;f;f -> f;f;l;r
– they can be spliced with another r;l;f -> r;f;l;f;f;f
– they can be cut in half: r;l;f;f -> r;l -or- f;f
– there can be substitutions made: r;l;f;f -> r;r;f;f (r substituted for l)


Imagine this flow for a moment – you open up the system, draw some stuff which gives you some code. Then you use one of these modifiers on the code – reverse it, produce the opposite chirality (replace rot(x) with rot(-x)), splice it with f to make it longer, change the length or the color of it, etc.

I’m not sure that there is another programming language system that so closely couples signified and signifier. The possibilities are endless and exciting.

[As a side note, what we refer to as a natural language is not actually a single natural language – it is a large set of natural languages with procedures for disambiguation/clarification along the borders.]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: