Tuesday, September 22, 2009

How a Bet Set the Stage for Modern Computing: Smalltalk's Influence on HCI

At a Palo Alto Research Center (PARC) meeting in the early 1970’s Alan Kay exclaimed “The best way to predict the future is to invent it.” Kay was one of the inventors of the Smalltalk programming language, a language that has shaped and influenced a great deal of the computer technology we see around us today. Making and releasing Smalltalk was certainly a set of events that in Kay’s words, invented the future.

Smalltalk was one of the first Object Oriented (OO) computer programming languages. Smalltalk was first developed by a team working at the influential Xerox PARC laboratory in the 1970’s including Kay, Dan Ingalls, Dave Robson, Adele Goldberg and Peter Deutsch.

The Smalltalk programming language enabled developers to create programs with graphical user interfaces (GUI’s), and for more than 30 years Smalltalk has acted as a springboard for the creation of many other OO languages and GUI’s. Smalltalk introduced overlapping windows, which every person who uses a Mac, Windows system, or Linux GUI’s sees today. Smalltalk was also a very important tool and inspiration for acquainting children with technology.

Several versions of the Smalltalk language were developed in the 1970’s and finally Smalltalk-80 was publicly released in 1983 (Kay, Early 40). The mid-late1980’s brought commercial versions of the Smalltalk language that were released for the Apple, MS-DOS, UNIX, Windows, OS/2 (Smalltalk). Today, a commercial version of the language called ObjectStudio is available from Cincom. Cincom’s Smalltalk is available for free for non-commerial and student use. This giving mentality is in tune with the true spirit of the Smalltalk community.

Overlapping windows was not the end of Smalltalk’s influence on the personal computer revolution brewing at the time. Programs using multimedia components were now easier to create. Paint, video and music synthesizer tools were created using Smalltalk (Pohlmann). The influence did not just stop with the programs written in Smalltalk. Smalltalk’s development environment inspired creativity and has influenced development environments that are used today. Smalltalk is an Integrated Development Environment, so that code did not have to be written all out in text thus promoting a better user experience. The 1976 release of Smalltalk featured a development environment with familiar tools that we see today such as class library code browser and editor (Savona 2). The development environment’s use expressions like “print it” or “do it,” commands that make sense to people. Smalltalk programmers, known to many as “Smalltalkers” even use a jargon that more user friendly. You nicely ask objects to do something by “sending a message” as opposed to using a statement such as “invoke a method” (Black 12).

Smalltalk was and is a programming language that inspires humans to create in the technology environment. The idea of “learning a language” can be cumbersome for most people, whether it is a whether it is a written/verbal language, or a programming language. The tools to learn Smalltalk are highly accessible; there are many free programming environments available as well as tutorials and books available on the subject of learning to program in Smalltalk.

Drawing on concepts in biology, Kay believed that a computer system should act like a living organism (Gasch). In Smalltalk, everything is an Object, and these Objects communicate with each other via messages. Compare this to neurons sending messages in a brain via synapses. Even terminology from biology made its way into OO programming like polymorphism (Pohlmann). Biology is the study of living things and making Parallels between a programming language and a living thing can make the concepts of a programming language easier for humans to grasp onto.

In the real world, objects can me moved and changed via messaging (example: you ask a car to go forward by putting it into drive with the gearshift) and the same thing happens in Smalltalk (example: you ask the time to be displayed by entering in a small command and ask Smalltalk to “print it”.)

Smalltalk’s birth came at pivotal time in the twentieth century. Humans had just landed on the moon, technology was rapidly advancing. RAM, ARPANET and the mouse were other valuable inventions that came to formation around this time. It should also be noted that the spirit of creativity was abundant during this time. This could be seen all over culture; just look to the Woodstock art and music festival as one example. Creativity had not yet been taken over by productivity, and programming languages were looked at as “tools that help people think” (Pohlmann). It made perfect sense that a more usable programming language and environment be created in the midst of all this innovation and creativity.

Smalltalk and Kay also fueled a revolution to teach children about the new literature of computer program languages. In Kay’s video titled Doing with Images Makes Symbols and in his article The Early History of Smalltalk, one learns that children make numerous impressive accomplishments using Smalltalk. In the early and mid-1970’s, the team at PARC working with Smalltalk sought out to educate children in computer literacy. Kay strongly believed that it was just not enough to read and write (language and code), but a critical part of literacy is the ability to create (Kay, Early 27).

Children from the Palo Alto area spent some time at the research center, and were able to make functioning programs. In some instances, children even taught using Smalltalk (Kay, Doing). In 1975 a 15-year-old named Steve Putz created a circuit design system that was made of about 80 lines of code (Kay, Doing). Incredibly, Kay mentions in his video that less than a decade earlier a student earned a Ph.D. for making a “system that wasn’t as good” (Kay, Doing). Some Children at PARC could also understand code and made changes to it. This was demonstrated by a 12-year old girl making changes to SHAZAM program to animate two separate objects, a horse and jockey (Kay, Early 28). Following the youth-based experiments at PARC computers became an increasingly important tool in education. Many children who came of age in the 1980’s saw first-hand many of Smalltalk’s influences such as the GUI’s on Macintosh computers and HyperCard. The movement to empower children and to teach them a deeper level of computer literacy was very present among Kay and his team at PARC.

Alan Kay went on to develop Etoys which was program influenced by Smalltalk. Etoys is a free programming environment for children. One of the fundamental ideas of Etoys is that computer literacy should not end with surfing the web and word processing. Etoys embraces the idea of “computer fluency,” where students should be able to read, write and understand code (Computer Fluency).


What we have today because of Smalltalk:

It may be impossible to imagine what modern computing would like without the conception of the Smalltalk language. Smalltalk’s early development is said to have happened due to an informal PARC “bullsession” in which Kaeher and Ingalls were discussing that a large language would be very powerful, and Kay believed “the most powerful language in the world” could be defined “in a page of code.” Kay was challenged by his two colleagues to “put up or shut up,” and that is exactly what Kay did (Kay, Early 18). Kay would go into the PARC labs four hours before the work day started to work on what became Smalltalk. It is rather astonishing to think that one the 20th century’s greatest innovations came out of a bet.


Some monumental things we have today because of Smalltalk are:

1. Sophisticated GUI’s including overlapping windows
2. More OO languages
3. Numerous free modern Smalltalk programming environments with free community support
4. A sub-culture that is devoted to making programming accessible to more people, and encourages the full range of computer literacy in students

The first Macintosh desktop featured overlapping windows, and Steve Jobs acknowledged that Smalltalk was the inspiration (Programming). Because the first Macintosh had a GUI, more people cold learn to use it with greater success because the desktop was a popular metaphor that people were comfortable with. Humans no longer had to use just command lines and code to communicate with computers; Computers became accessible to more people. According to Wikipedia the first Macintosh retailed for just under $2,500 (Macintosh) and considering value of the dollar in 1984 that was significant investment for a household to make. Price was still a barrier for many people, but the future brought with it price drops and personal computers did become a reality not too long after the first Macintosh’s

The first Macintosh Operating System (which was of course directly inspired by Smalltalk) was a paradigm for future Operating Systems (OS.) The years following the first Macintosh more computers with more sophisticated and useful GUI’s were introduced. One might say “it’s all in the name” since Microsoft’s Windows OS uses the word “window” right in its brand name. Overlapping windows (and the availability of more advanced system resources) allow users to work on a project that requires having more than one window open at time. This innovation has been extremely valuable in industry since it has aided in increased productivity. The modern computer desktop still features overlapping windows with several more modern advances such as tabbed windows in web browsers and transparency.

As noted a number of Smalltalk programming environments are available today at no cost to the public. Cincom’s Object Studio is not the only Smalltalk programming environment available. If one spends a few moments looking in a search engine, they’ll find that there are many others such as Squeek, Pharo and Seaside to name a few. These resources are valuable because they encourage people to learn this more user-friendly language without having to make a financial commitment to the software or the education, since there are active online communities and a vast library of tutorials available online. The Squeek cohort even has free downloadable books available. This “open source” mentality futher promotes and encourages creativity in software development.

Smalltalk and its predecessor Simula came to fruition in the 1960’s and 1970’s and since then many other OO languages have been developed and OO programming increased in popularity. A long list of languages that Smalltalk has influenced is available at freebase.com. Popular industry-standard languages such as AppleScript and Java can be traced back to the innovation of Smalltalk in the 1970’s.

The Ruby language was developed in the 1990’s is also an OO language. Matt Savona demonstrates some similarities that Ruby and Smalltalk share in his paper. The basic principal of printing to the screen is fairly similar in both syntaxes. It should also be noted that if one enters Ruby and Smalltalk into an internet search engine, you will most likely find more programmers who speak of the similarities the languages share. These folks even get creative with their statements, saying things such as “Smalltalking about Ruby.”

The influence that Smalltalk had directly on programming, other languages and GUI’s is monumentally important, but Smalltalk should also be given the credit it is due for the influence it has had on society and culture. Much of this can be attributed to Alan Kay’s philosophical beliefs. In his video Doing with Images Makes Symbols Kay draws on of theories of philosopher/psychologist Jean Piaget demonstrating about children’s learning. The concept of the Object once again surfaces; the object is a powerful learning tool because you can actually do something to or with an object. Spending ten minutes with the Squeek programming tool and the book Squeek by Example one can make the present time appear, create a visible morphing blob and say “hello world.” The constructionist learning theory revolves around the idea that people learn best when they’re relating information to other relevant knowledge (Payne 63). This is theory is evident in people’s relationship with Smalltalk since people can successfully form mental models; when you are using Smalltalk to solve problems there is visual evidence of what one is creating because development takes place in a graphical space.

Simply put, Smalltalk was built for humans to learn with a degree of ease since it uses many metaphors and parallels ideas that people are already familiar with. The GUI’s written in Smalltalk made computer technology more usable for the growing group of human users. Smalltalk and its visual programming environment still promotes creativity in folks of all ages many years after it was first made available.


Works Cited

Black, Andrew P., Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet. Squeek by Example. Squeekbyexample.org. 2008.

“Computer Fluency.” Internet.

Available:

http://www.squeakland.org/about/intro/article.jsp?id=2318. Sept. 2009

Gasch, Scott. “Alan Kay.” Internet. (2003)

Available:

http://ei.cs.vt.edu/~history/GASCH.KAY.HTML. Sept. 2009.

Kay, A. “Doing with Images Makes Symbols.” University Video Communications. (1987).

Kay, Alan C. “The Early History of Smalltalk.” ACM SIGPLAN Notices, Volume 28, No. 3, (1993): 1-54

“Macintosh.” Internet.

Available:

http://en.wikipedia.org/wiki/Macintosh. Sept. 2009.

Payne, Stephen J. “Mental Models in Human-Computer Interaction.” The Human-Computer Interaction Handbook. Andrew Sears and Julie A. Jacko, Ed. New York. Lawrence Erlbaum Associates, 2008, 69.

“Programming Milestones: Smalltalk.” Internet.

Available:

http://www.bitwisemag.com/copy/programming/milestones/pm_smalltalk.html. Sept. 2009

Savona, Matt. “Smalltalk’s Influence on Modern Programming.” Internet. (2008).

Available:

http://3nfconsulting.com/students/tpl/past-smalltalk-savona.pdf. Sept. 2009.

“The History of Smalltalk.” Internet.

Available:

http://www.smalltalk.org/smalltalk/history.html. Sept. 2009.

“The Smalltalk programming language.” Internet.

Available:

http://www.outbacksoftware.com/smalltalk/smalltalk.html. Sept. 2009.

No comments: