Computers are the most flexible machines ever invented since what they can do is defined not only by how they are built (which we call its "hardware") but specially by the set of instructions it receives in the form of a "program". When the first computers were built all programming was done in a form that they could use directly, known as "machine language" (the term "binary code" is also used). Soon a number of "high level programming languages" were invented to make the programs easier for humans to understand.

Since computers can't deal directly with these programming languages, one solution is to have another program, called a "compiler", to translate them to the machine language. Compared to the task of translating from one human language to another, generating binary code from the source code (what the programmer actually types) of some high level language is very doable since both are so rigidly defined.

One thing that computers are particularly good at is simulation. They can show us what a camera would film if placed in an imaginary world, or they can let us fly a plane that hasn't even been built yet. Even more interesting to understand SiliconSqueak is the fact that any kind of computer can simulate another other kind (not counting limits in terms of memory or disk size). An alternative to the use of compilers is to have the computer simulate a different one that can deal directly with the high level language. This simulator is called an "interpreter".

Most computer books explain interpreters as a kind of compiler that translates one instruction at a time rather than all at once. That might make sense in terms of what interpreters and compilers are for, but leads to confusion about how they do their jobs. Interpreters are normally easier to use, while the code generated by compilers runs faster. So each has a role to play.


Alan Kay built a computer and programming language (both called Flex) as his graduate project at the University of Utah. The goal was to develop something that normal people could use, which was a radical idea in the late 1960s. He became very impressed with the work that Seymour Papert was doing with children at MIT using a programming language, called Logo, created for them. Alan saw that in the future it would be possible to build computers no larger than books that children could carry around with them no matter where they went. He decided to work on making this "Dynabook" real.

The new Palo Alto Research Center (PARC) created by Xerox gave Alan the resources he needed to continue towards his goal. On the hardware side his group created the Alto computer, which was the best approximation they could have in the early 1970s in terms of power to what the book sized computers would be like when they arrived a decade or so later. Instead of using Logo, they created their own programming language called Smalltalk.

While traditional computer languages divided the information in the machine into programs (which tell the computer what to do) and data (general information like names or pictures), Smalltalk divides everything up into "objects" which combine features of both. This idea of "object-oriented programming" had been previously used in a language called Simula, which as the name implies was specially good for simulations. Things are easier to understand when the objects inside the computer correspond to objects in the real world (or even an imaginary one).

What's new

  • Down to business
    27 December 20116:26:02 pm by admin
    I like blogging, so here is my second post.
  • Hello
    27 December 201112:00 am by admin
    Hi! This is my first post.