background preloader

Worry Dream - Bret Victor

Facebook Twitter

Mindstorms: Children, Computers, and Powerful Ideas - Seymour A. Papert. What is Logo? "Logo is the name for a philosophy of education and a continually evolving family of programming languages that aid in its realization.

What is Logo?

" - Harold Abelson Apple Logo, 1982 This statement sums up two fundamental aspects of Logo and puts them in the proper order. The Logo programming environments that have been developed over the past 28 years are rooted in constructivist educational philosophy, and are designed to support constructive learning. Constructivism views knowledge as being created by learners in their own minds through interaction with other people and the world around them. This theory is most closely associated with Jean Piaget, the Swiss psychologist, who spent decades studying and documenting the learning processes of young children. In the Beginning In the mid 1960s Seymour Papert, a mathematician who had been working with Piaget in Geneva, came to the United States where he co-founded the MIT Artificial Intelligence Laboratory with Marvin Minsky. Out Into the World Innovation. The Logo Programming Language. The Logo Programming Language, a dialect of Lisp, was designed as a tool for learning.

The Logo Programming Language

Its features - interactivity, modularity, extensibility, flexibility of data types - follow from this goal. Interactivity Although there are some versions of Logo that compile, it is generally implemented as an interpreted language. The interactivity of this approach provides the user with immediate feedback on individual instructions, thus aiding in the debugging and learning process. Error messages are descriptive.

Fowad I don't know how to fowad (The word fowad is not a primitive - one of Logo's built in words - nor a procedure that you've defined.) forward Not enough inputs to forward (Now that you've spelled it correctly, Logo knows the word forward, but can't run your instruction because forward requires additional information. forward 100 (Logo is happy. Modularity and Extensibility Logo programs are usually collections of small procedures. To square repeat 4 [forward 50 right 90] end Flexibility. Learnable Programming. Here's a trick question: How do we get people to understand programming?

Learnable Programming

Khan Academy recently launched an online environment for learning to program. It offers a set of tutorials based on the JavaScript and Processing languages, and features a "live coding" environment, where the program's output updates as the programmer types. Because my work was cited as an inspiration for the Khan system, I felt I should respond with two thoughts about learning: Bret Victor: Learnable Programming. I think this article raises some brilliant points, and is very well written, but I also feel that it falls short of the mark Bret was aiming for.

Bret Victor: Learnable Programming

As he himself alludes to, most of what he is teach is not programming - it is individual actions. Just as being taught the meaning of individual words does not teach you to write, being taught what certain functions or statements do does not teach you to program. What is important is not spelling, but grammar - the shape of a program. His parts on Loops and Functions are better on this - the timeline showing loop instruction order is pretty awesome. However, it's still not perfect. In fact, my strongest criticism is in regards to his rebuttal to Alan Perlis: > Alan Perlis wrote, "To understand a program, you must become both the machine and the program.

" I'm sorry Bret, but Alan is right. In all his examples, very simple things happen, and never go wrong more than drawing in the wrong place. A Brief Rant on the Future of Interaction Design. So, here's a Vision Of The Future that's popular right now.

A Brief Rant on the Future of Interaction Design

It's a lot of this sort of thing. As it happens, designing Future Interfaces For The Future used to be my line of work. I had the opportunity to design with real working prototypes, not green screens and After Effects, so there certainly are some interactions in the video which I'm a little skeptical of, given that I've actually tried them and the animators presumably haven't. But that's not my problem with the video. My problem is the opposite, really — this vision, from an interaction perspective, is not visionary. This matters, because visions matter. This little rant isn't going to lay out any grand vision or anything. Before we think about how we should interact with our Tools Of The Future, let's consider what a tool is in the first place. I like this definition: A tool addresses human needs by amplifying human capabilities. That is, a tool converts what we can do into what we want to do.

Bret Victor - Inventing on Principle.