Skip to content

Latest commit

 

History

History
57 lines (37 loc) · 2.27 KB

DesignRubrics.md

File metadata and controls

57 lines (37 loc) · 2.27 KB

Dan Ingalls' Design Principles Behind Smalltalk

Personal Mastery:

If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual.

Good Design:

A system should be built with a minimum set of unchangeable parts; those parts should be as general as possible; and all parts of the system should be held in a uniform framework.

Purpose of Language:

To provide a framework for communication.

Scope:

The design of a language for using computers must deal with internal models, external media, and the interaction between these in both the human and the computer.

Objects:

A computer language should support the concept of "object" and provide a uniform means for referring to the objects in its universe.

Storage Management:

To be truly "object-oriented", a computer system must provide automatic storage management.

Messages:

Computing should be viewed as an intrinsic capability of objects that can be uniformly invoked by sending messages.

Uniform Metaphor:

A language should be designed around a powerful metaphor that can be uniformly applied in all areas.

Modularity:

No component in a complex system should depend on the internal details of any other component.

Classification:

A language must provide a means for classifying similar objects, and for adding new classes of objects on equal footing with the kernel classes of the system.

Polymorphism:

A program should specify only the behavior of objects, not their representation.

Factoring:

Each independent component in a system would appear in only one place.

Leverage:

When a system is well factored, great leverage is available to users and implementers alike.

Virtual Machine:

A virtual machine specification establishes a framework for the application of technology.

Reactive Principle:

Every component accessible to the user should be able to present itself in a meaningful way for observation and manipulation.

Operating System:

An operating system is a collection of things that don't fit into a language. There shouldn't be one.

Natural Selection:

Languages and systems that are of sound design will persist, to be supplanted only by better ones.

		--- E O F ---