MI in SELF
chambers at cs.washington.edu
Mon Sep 7 00:56:30 UTC 1992
> There can be a continum between prototyping languages and systems engineering
> languages. A programmer could begin by writing a prototype in Self. If the
> user liked it but needed something more solid the programmer could start
> turning on the checks, eventually producing a fully type checked program
> where all messages were guaranteed a good destination. I find type checking a
> good debugging tool.
> Again I propose completely dividing inheritance into two notions. Genetic
> inheritance which has to do with construction and message passing. And
> logical inheritance which has to do with type checking and has no relation to
> internal structure or message passing.
> cef at mwc.com Spelling errors in this document are
> 708-291-6700 x119 caused by uucp compression algorithims
I've been working on a language named Cecil descended partially from Self which
may answer both these points. Cecil supports static type checking, but type
declarations are optional. Where omitted, dynamic typing is used. This enables
a program to be born in a dynamically-typed prototyping mode, but gradually
evolved into a mature production program in part by adding type declarations.
Like a few other languages, Cecil distinguishes between subtyping (what you
call logical inheritance) and code inheritance (what you call genetic
inheritance). Other aspects of Cecil, such as its multiple dispatching base,
are described in a paper in ECOOP'92.
Cecil is not now a working product. We have an interpreter running for the
dynamically-typed core of the language, but the type checking is still being
implemented. An efficient, usable implementation is still far in the future.
-- Craig Chambers
More information about the Self-interest