Heading:
PE report (section 3)
Page Numbers: No
Catalog of Programming Environment Capabilities
We have divided the capabilities of a programming environment into four categories. "Virtual machine / programming language" refers to those capabilities that are primitive concepts in the programming language or in the virtual machine on which the programming language runs. "Tools" refers to capabilities for operating on programs. "Packages" refers to readily available programs that implement particular clearly defined higher-level concepts. "Other" includes documentation and non-technical considerations.
It is important to note that the division between tools and packages is a somewhat arbitrary one: in a good environment, there is little distinction between the two in that all the capability provided by the tools is available to the programmer in the form of packages, and all the capability of the language (including the packages, of course) is available to the terminal user to extend the functions of the tools.
VIRTUAL MACHINE / PROGRAMMING LANGUAGE
(L1)Large virtual address space (> 24 bits)
(L2)Direct addressing for files
(L2a)Segmenting
(L2b)An enormous virtual address space (> 48 bits)
(L3)Well-integrated access to large, robust data bases
(L4)Memory management -- object/page swapping
(L5)Object management -- garbage collection/reference counting
(L6)Some support for interrupts
(L7)Adequate exceptional condition handling
(L8)User access to the machine’s capability for packed data
(L9)Program-manipulable representation of programs
(L10)Run-time availability of all information derivable from source program (e.g. names, types, scopes)
(L11)Statically checked type system
(L12)Self-typing data (a la Lisp and Smalltalk), run-time type system
(L13)Encapsulation/protection mechanisms (scopes, classes, import/export rules)
(L14)Abstraction mechanisms; explicit notion of "interface"
(L15)Non-hierarchical control (coroutines, backtracking)
(L16)Adequate runtime efficiency
(L17)Inter-language communication
(L18)Uniform screen management
(L19)Inheritance/defaulting (Smalltalk subclassing) (difficulty depends a lot on how much it has to do)
(L20)Ability to extend language (e.g. operator overloading)
(L21)Ability to create fully integrated local sublanguages
(L22)User access to the machine’s capability for multi-precision arithmetic
(L23)Good facilities for processes, monitors, interrupts
(L24)Simple, unambiguous syntax (including infix notation)
(L25)Control over importation of names
(L26)User packages as "first-class citizens"
(L27)Closures
(L28)Full-scale inter-language communication
(L29)User microprogramming
(L30)Clean data and control trapping mechanisms
(L31)"Good" exceptional condition handling
TOOLS
(T1)Fast turnaround for minor program changes (<5 sec)
(T2)Compiler/interpreter available with low overhead at run time
(T3)Cross-reference/annotation capability
(T4)Prettyprinter
(T5)Consistent compilation
(T6)Version control
(T7)Librarian, program-oriented filing system (including Browser)
(T8)Source-language debugger
(T9)Dynamic measurement facilities
(T10)Checkpoint, establishing a protected environment
(T11)History and undoing
(T12)Editor integrated with language system
(T13)More optimizing compiler if user willing to bind more tightly -- with full compatibility
(T14)Aids for incremental development (stubs, outstanding task list)
(T15)Regression testing system
(T16)Random testing aids
(T17)(high capability) Masterscope
(T18)Access to on-line documentation (Helpsys)
(T19)Static analyzers: verifier, performance predictor
PACKAGES
(P1)Text objects and images
(P2)Line objects and images
(P3)Scanned (bitmap) objects and images
(P4)Press files
(P5)More elaborate screen management
(P6)Remote file storage
(P7)Small data base manager
(P8)Message transmission system
(P9)Remote procedure call
(P10)Event logging
(P11)Background processing
(P12)Generalized cache
(P13)Document editing
(P14)Forms
(P15)Menus & other standard user interfaces
(P16)History lists
(P17)User access to full bandwidth of disk
(P18)(English) dictionary service
(P19)Teleconferencing
(P20)Audio
(P21)User access to full bandwidth of networks
OTHER
(X1)Adequate reference documentation
(X2)CSL control over the system’s future
(X3)"Efficient" interface for experts
(X4)Uniformity in command interface
(X5)"Self-teaching" interface for beginners
(X6)Good introductory documentation