The early history of Smalltalk

  title={The early history of Smalltalk},
  author={Alan C. Kay},
  • A. Kay
  • Published in HOPL-II 1 March 1993
  • Computer Science
Most ideas come from previous ideas. The sixties, particularly in the ARPA community, gave rise to a host of notions about “human-computer symbiosis” through interactive time-shared computers, graphics screens and pointing devices. Advanced computer languages were invented to simulate complex systems such as oil refineries and semi-intelligent behavior. The soon to follow paradigm shift of modern personal computing, overlapping window interfaces, and object-oriented design came from seeing the… 

Unix, Plan 9 and the Lurking Smalltalk

The ambitions and trajectories of Smalltalk are contrasted with those of Unix and its descendents, exploring why Dan Ingalls’s vision appears not (yet) to have materialised, and how these two directions of change may yet be convergent within future Unix-derived systems.

Personal programming and the object computer

  • T. Reenskaug
  • Computer Science
    Software and Systems Modeling
  • 2019
My objective is to create an intuitive computer for laypeople who want to go beyond ready-made apps and create programs to control their electronic environment. I submit Loke, a new kind of computer


Although the Self project ended in 1995, its implementation, animation, user interface toolkit architecture, and even its prototype object model impact computer science today (2006).

The evolution of Smalltalk: from Smalltalk-72 through Squeak

  • D. Ingalls
  • Computer Science
    Proc. ACM Program. Lang.
  • 2020
The forces that brought each generation of Smalltalk into existence are described, the technical innovations that characterized it, and the growth in understanding of object-orientation and personal computing that emerged.

A Modular Language for Concurrent Programming

A modern programming language based on message passing is proposed, to provide the flexibility and expressiveness of concurrent programming while limiting, as much as possible, the complexity caused by nondeterminism.

Mapping the Landscape of Literate Computing

It is argued that computational notebooks are just a special case of literate computing tools and that there is an uncharted design space for computing tools that dissolves the traditional distinction between programming and using computers, but also between using and developing software tools.

Proposal to NSF - Granted on August 31st 2006 Steps Toward The Reinvention of Programming A Compact And Practical Model of Personal Computing As A Self-Exploratorium

It is thought that making a well designed system that is also instrumented to be learned, understood and changed could have a large positive impact on many areas of computing.

The histories of computing(s)

Abstract The first electronic digital computers were variations on the protean design of a limited Turing machine, which described not a single device but a schema, and which could assume many forms

One Point of View: The Power Of the Context

I have long been an enthusiastic appreciator of great ideas in many genres-ranging from graphic, musical, and theatrical arts to mathematics, science, and engineering. I got a lot of early

Should LOGO Keep Going FORWARD 1?

  • Ken Kahn
  • Computer Science
    Informatics Educ.
  • 2007
The goal of this paper is to spur a discussion of issues of LOGO and to present my personal opinions based upon 30 years of research experience in this field.



Smalltalk-80: The Language and Its Implementation

This book is the first detailed account of the Smalltalk-80 system and is divided into four major parts: an overview of the concepts and syntax of the programming language, a specification of the system's functionality, and an example of the design and implementation of a moderate-size application.

The next 700 programming languages

A family of unimplemented computing languages is described that is intended to span differences of application area by a unified framework. This framework dictates the rules about the uses of

Form and Content in Computer Science (1970 ACM turing lecture)

This essay suggests form-content confusion in theory of computation, in programming languages, and in education, and argues that an excessive preoccupation with formalism is impeding the authors' development.

An overview of the programming language Smalltalk-72

Language development is one tool utilized in the construction of an interactive computer system, used by both children and adults for problem solving, simulation, drawing and painting, real time generation of music, information retrieval, and other tasks.

Personal Dynamic Media

The Learning Research Group at Xerox Palo Alto Research Center is concerned with all aspects of the communication and manipulation of knowledge and has designed and built a communications system: the Smalltalk language, implemented on small computers they refer to as "interim Dynabooks".

Correspondence between ALGOL 60 and Church's Lambda-notation

A model for computer languages and computer behavior is described, based on the notions of functional application and functional abstraction, but also having analogues for imperative language features.

Structured Programming with go to Statements

For serious students of structured programming, and also for language designers, Knuth's "Structured Programming with go to Statements" is probably the paper to read. It is by far the most complete

Recursive functions of symbolic expressions and their computation by machine, Part I

A programming system called LISP (for LISt Processor) has been developed for the IBM 704 computer by the Artificial Intelligence group at M.I.T. The system was designed to facilitate experiments with

A user machine in a time-sharing system

This paper describes the design of the computer seen by a machine-language programmer in a time-sharing system developed at the University of California at Berkeley, with the main emphasis on the appearance of the user's machine.

FLEX - A Flexible Extendable Language

The FLEX system consists of merged 'hardware' and 'software' that is optimized towards handling algorithmic operations in an interactive, man-machine dialog that is well-suited for semantically describing and pragmatically executing a large class of languages.