Heading:
PE report (section 4)
Page Numbers: No
Priority ranking and interrelation of capabilities
We arrived at a priority ranking for capabilities by giving each member of the working group 100 votes to be divided among the capabilities on the list. The vote total below is simply the sum of the votes of the 5 members who actually voted, identified by their initials: D(eutsch), H(orning), L(ampson), M(orris), and S(atterthwaite). (As a check, we also ranked the capabilities according to the median rather than the total, and the results were essentially the same.) We found that a natural division into 5 priority groups emerged from the ranking. The reader should be aware that we were ranking capabilities on their utility if present in some reasonable form, not on the value of doing research into how to improve what we now know about providing them.
We were able to reach a consensus about how fundamental each capability was, in the sense of how difficult it would be to add that capability if it was not allowed for in the initial system design. In doing this we drew heavily on the experience gained from the three existing language systems. This consensus is expressed below according to the following code:
F - Fundamental, much harder if not allowed for originally
I - Intermediate, somewhat harder if not allowed for
A - Add-on, difficulty does not depend significantly on pre-planning (although it may be intrinsically hard anyway)
We identified an "enabling" relation between certain pairs of capabilities, in the sense that capability X is almost certainly required to provide capability Y. This relation is expressed below by an arrow "<-" meaning "is enabled by". So many things depend on item (L1) that we have omitted mention of this.
Finally, we estimated the difficulty of providing each capability in each of the three presently existing environments (Lisp, Mesa, and Smalltalk). Each capability has a 3-digit difficulty code referring to the effort required to provide the capability in Lisp, Mesa, and Smalltalk in that order. The difficulty codes have the following meanings:
0 - available
1 - easy
2 - straightforward but takes time
3 - hard
4 - impossible (we found we didn’t need to use this)
PRIORITY RANKING
In the tabulation of votes, "x" means zero votes, while "*" means that the person gave no votes to this item because he assumed it would be provided anyway. Votes of the form "3/4" mean 3 votes if we are primarily interested in E(PE), i.e. investigation of programming environments per se, but 4 votes if we are concentrating on (EP)E, i.e. production of experimental programs.
Priority A
DHLMSTotal
(L5)F0306x1020440Object management -- garbage collection/reference counting
(L11)F2033697530Statically checked type system
(L4)I00067*10427Memory management -- object/page swapping
(L14)F30224510425Abstraction mechanisms; explicit notion of "interface"
(T1)I0203x85420Fast turnaround for minor program changes (<5 sec)
(L16)F?0?3/4624318/19Adequate runtime efficiency
<- (L17) Inter-language communication
(L1)F00267*x518Large virtual address space (> 24 bits)
Priority B
(L13)F3023524317Encapsulation/protection mechanisms (scopes, classes, import/export rules)
(L3)F333348xx15Well-integrated access to large, robust data bases
(L12)I020433x515Self-typing data (a la Lisp and Smalltalk), run-time type system
(T5)A2033235215Consistent compilation
(T6)I3232x83215Version control
(T8)F00041*5515Source-language debugger
<- (L9) Program-manipulable representation of programs
<- (L10) Run-time availability of source program information
(P1)A1212334315Text objects and images
(L18)I0212424315Uniform screen management
(L8)A2022/4324314/16User access to the machine’s capability for packed data
(L10)F1113/234x414/13Run-time availability of all information derivable from source program (e.g. names, types, scopes)
(X2)F222355xx13CSL control over the system’s future
Priority C
(L2)A102x 6xx410Direct addressing for files (segmenting)
(L6)I00025x2110Some support for interrupts
(T2)I0213/211229/8Compiler/interpreter available with low overhead at run time
(X1)I01224xx39Adequate reference documentation
(T7)A222211228Librarian, program-oriented filing system (incl. Browser)
(L9)I0123/13xx28/6Program-manipulable representation of programs
(T9)I0112/31x227/8Dynamic measurement facilities
(P3)A2222212x7Scanned (bitmap) objects and images
(P4)A120121x37Press files
(X3)F010?213x17"Efficient" interface for experts
(P2)A222122x16Line objects and images
(P6)A0011x3x26Remote file storage
Priority D
(L17)I20214xxx5Inter-language communication
(T11)F122x23xx5History and undoing
(L15)F0002xxx24Non-hierarchical control (coroutines, backtracking)
(L20)F220xx4xx4Ability to extend language (e.g. operator overloading)
(L21)I3332/1xxx24/3Ability to create fully integrated local sublanguages
<- (L9) Program-manipulable representation of programs
<- (L10) Run-time availability of source program information
<- (L12) Self-typing data
(L27)F1211xx3x4Closures
(T10)I0001x2x14Checkpoint, establishing a protected environment
(L19)F321xx3xx3Inheritance/defaulting (Smalltalk subclassing) (difficulty depends a lot on how much it has to do)
<- (L13) Encapsulation/protection mechanisms
(T3)A1112xxx13Cross-reference/annotation capability
(T4)A0111x2xx3Prettyprinter
<- (L9) Program-manipulable representation of programs
(P15)A1112xxx13Menus & other standard user interfaces
(P13)A0202xxx13Document editing
(L7)F112xxxx22Adequate exceptional condition handling
(T12)I0212xxxx2Editor integrated with language system
(P9)I2221xxx12Remote procedure call
(T13)F003xxxx11More optimizing compiler if user willing to bind more tightly -- with full compatibility
(T18)A0111xxxx1Access to on-line documentation (Helpsys)
(P8)A212xxxx11Message transmission system
(P10)I111xxxx11Event logging
(P12)A222xxxx11Generalized cache
(P14)A2221xxxx1Forms
(X4)F2221xxxx1Uniformity in command interface
Priority E (no votes at all)
VIRTUAL MACHINE / PROGRAMMING LANGUAGE
(L2b)?222An enormous virtual address space (> 48 bits)
(L22)A100User access to the machine’s capability for multi-precision arithmetic
(L23)I202Good facilities for processes, monitors, interrupts
<- (L6) Some support for interrupts
<- (A15) Abstraction mechanisms
(L24)F120Simple, unambiguous syntax (including infix notation)
(L25)F302Control over importation of names
<- (A15) Abstraction mechanisms
(L26)F331User packages as "first-class citizens"
(L28)F333Full-scale inter-language communication
<- (L17) Inter-language communication
(L29)A222User microprogramming
(L30)?333Clean data and control trapping mechanisms
<- (L6) Some support for interrupts
<- (L23) Good facilities for processes, monitors, interrupts
<- (L31) "Good" exceptional condition handling
(L31)?333"Good" exceptional condition handling
<- (L7) Adequate exceptional condition handling
<- (L13) Encapsulation/protection mechanisms
<- (L14) Abstraction mechanisms
<- (L15) Non-hierarchical control structures
TOOLS
(T14)A222Aids for incremental development (stubs, outstanding task list)
<- (L9) Program-manipulable representation of programs
(T15)A222?Regression testing system
<- (L9) Program-manipulable representation of programs
(T16)A333?Random testing aids
(T17)F022(High capability) Masterscope
(T19)A333Static analyzers: verifier, performance predictor
<- (L9) Program-manipulable representation of programs
PACKAGES
(P5)A022More elaborate screen management
(P7)A221Small data base manager
(P11)F323Background processing
(P16)A011History lists
(P17)I111User access to full bandwidth of disk
(P18)A222(English) dictionary service
(P19)A222Teleconferencing
(P20)A222Audio
(P21)A111User access to full bandwidth of networks
OTHER
(X5)F222"Self-teaching" interface for beginners
(X6)I222"Good introductory documentation