Topic: extensible languages

topics > computer science > programming > Group: types of programming languages

goals for a programming system

compiling pseudocode designs
design for change
domain specific language
evolutionary systems
extensible systems
function syntax by pattern
grammar modification
language extension via macros
open systems
orthogonal extension and cartesian products
programming language design
programming with a database of modules
restricted and extended types
scripting language
Thesa as a database of modules
words defined by words
user-defined languages

Subtopic: user community up

Quote: since Emacs allows user customization, the whole user community becomes a source and testing ground for new ideas [»stallRM6_1981]

Subtopic: extensibility needed up

Quote: a programming language should be extendable by definition [»gallBA_1970]
Quote: can not subdivide universe of problems into fixed areas, each with its own special notation [»holtAW5_1958]
Quote: need arbitrary, new notations since no set of special notations is suitable for all problems

Subtopic: graceful enhancement of a base language up

Quote: new words and rules of meaning should look just like what was designed at the start [»steeGL10_1998]
Quote: want to grow Java with generic types and overloaded operators; just like built-in types
Quote: language extensibility is the graceful enhancement of a base language; unlike compilation's extreme transformation [»elsoM_1973]
Quote: an extensible language provided a language kernel and an extension mechanism [»maclBJ_1987]
Quote: goal of extensible languages was to extend a base language into a natural representation for data, operations, and control of an application
Quote: a programming language should have a small framework that can accommodate many powerful features as changeable parts [»backJ8_1978a]
Quote: metaphrase extensibility allows the user to define the core language that is then used to define extensions [»woolJD_1973]
QuoteRef: ironET1_1969 ;;32 extend syntax by function definition specifying syntax as well
Quote: an operating system should be a set of basic modules; application programming extends the system [»wirtN7_1988]
Quote: construct a general purpose compiler that provides naming aids and the ability to add new notations [»holtAW5_1958]
Quote: Forth was designed to replace the "vast hierarchy" of software tools with a simple, natural programmer-to-Forth interface [»rathED_1996]
Quote: despite primitive on-line computers and Forth's oddness, Forth can be more productive than fully supported mainframes [»rathED_1996]

Subtopic: object-orientation vs. polymorphism up

Quote: object-orientation overcomes the complexity of polymorphism in extensible languages [»ingaDH9_1986]
Quote: procedures in extensible languages had to be polymorphic but case selection of appropriate code caused a combinatoric explosion of complexity [»ingaDH9_1986]
Quote: a private procedure for a procedure variable may call standard procedures; used for extensions and experimentation [»sweeRE7_1985]
Quote: the program-oriented view of inheritance is based on extension and substitutability; can replace an object with an object of any subclass [»winkJF8_1992]
Quote: object-oriented inheritance is an extension mechanism, not a specialization or classification mechanism [»winkJF8_1992]

Subtopic: design extensibility up

Quote: extend UML with stereotypes (new elements), tagged values (new attributes), and constraints (new semantics) [»boocG_1999]

Subtopic: namespace extensibility up

Quote: Piccola unifies all notions of namespaces as first-class forms, e.g., records, dictionaries, objects, environments, packages; avoids meta-programming [»acheF9_2000]

Subtopic: metadata extensibility up

Quote: System.Attribute is an arbitrary type associated with an object; extends metadata, e.g., 'const' [»hamiJ2_2003]

Subtopic: programming language extension up

Quote: C++ is a superset of C

Subtopic: event-driven up

Quote: a hook is a function invoked by an event; e.g., on loading a library or modifying a variable [»stallRM6_1981]

Subtopic: late binding up

Quote: because of Java's late binding it is easy to change methods and private variables; just need to retain old methods or their type signatures [»goslJ6_1997]
Quote: Emacs is a real-time display editor which can be extended by the user while it is running [»stallRM6_1981]

Subtopic: reflection up

Quote: reflection can allow a program to examine its own structure, modify the structure, execute dynamically-generated code, and modify the language's semantics [»bracG10_2004]

Subtopic: configuration up

Quote: global variables are essential for customization; e.g., 'comment start' for recognizing the start of a comment in text [»stallRM6_1981]

Subtopic: function library up

Quote: reuse successful for system libraries, numeric libraries, and window management; fixed set of fully-specified data types and interfaces [»dehnJC4_1998]
Quote: a library should be flexible, allow polymorphic classes, efficient, and extensible without invalidating existing programs [»fricA4_2000]
Quote: an Emacs library is a publication medium for users to share their extensions without interference
Quote: an Emacs library is a coherent set of new and redefined functions that extend the basic system [»stallRM6_1981]
Quote: creating new notations for programming is practical only if it is easy to add the necessary library packages [»holtAW5_1958, OK]

Subtopic: procedural extensibility up

Quote: procedures and parameters afford all the major advantages of extensible languages, plus space efficiency
Quote: use in-line expansion to extend a machine's order code; use interpretative subroutines to reduce memory; e.g., floating point [»wilkMV_1957]

Subtopic: components up

Quote: a software components industry will offer families of high quality routines, tuned to specific needs; treated as black boxes [»mcilMD10_1968]

Subtopic: downward extension, devices and instructions up

QuoteRef: dubyJJ12_1971 ;;137 extensible languages should be extendable downwards-- eg to support new physical devices or instructions

Subtopic: extended data types up

Quote: Oberon is extensible; e.g., any application can read text from the screen by importing the type Text [»wirtN9_1989]
Quote: self-describing data may be completely determined only at the time of actual processing; needs an extensible language [»parnDL3_1976]
Quote: can extend imported Oberon data types without losing compatibility with the base type; motivation for the Oberon language [»wirtN9_1989]
Quote: extended, Oberon objects are byte compatible with their base type; can be integrated into existing structures [»wirtN9_1989]
Quote: in FQL, can incrementally define data; no pre-defined schema [»buneP1_1981]
Quote: extensible records using a simple, perfect-hash coding; rapid access, efficient creation, one extra field [»remyD6_1992]

Subtopic: expression extensibility up

Quote: to prevent ambiguities, C++ operator overloading can not change precedence, change expression syntax, or define operator tokens [»stroB_1991]

Subtopic: macros up

Quote: use macrogeneration for semantic extension of a language [»straC8_1967]

Subtopic: premature specialization up

Quote: programming language designers have made unnecessary, pre-emptive decisions about the nature of various features; e.g., array implementation [»shawM3_1980]
Quote: most compilers are designed for a special range of problems; better to have ability to add arbitrary, new notations [»holtAW5_1958]

Subtopic: examples up

Quote: meta-level compilation through extensible compiler with high-level state machines applied down every path; transitions triggered by patterns [»chouA11_2000]
Quote: Fleximatic provides a set of services for any problem instead of special features for an area of computation [»holtAW5_1958]
QuoteRef: thomK_1976 ;;379 "Since these operations can be user-supplied, it is easily extensible ([the Unix command line interpreter)
Quote: in Flex can define new binary and unary operations [»kayAC6_1968, OK]
QuoteRef: molnG8_1971 ;;Title: SEL a self-extensible programming language
QuoteRef: wulfWA12_1971 ;;786 in Bliss, can change a structure when its use changes
Quote: users extend EMACS by writing functions in the same language used to write EMACS [»stalRM6_1981]
QuoteRef: kiebRB9_1973 ;;4.3 extend syntax eg expression ::= identifier of expression for access
Quote: for future applications, a message interface includes messages for all relevant information; currently unused messages are ignored [»katzL_1981]

Subtopic: extensibility is difficult up

Quote: full extensibility is impossible because there is nothing to build on [»browPJ_1974]
Quote: users need a large amount of effort and knowledge to extend a language significantly [»stanTA12_1971]
Quote: an orthogonal extension to a language normally requires surgery on its underlying guts [»stanTA6_1975]
Quote: lesson of extensible languages: no simple statement to an unknowledgeable computer can alter its behavior in major ways [»stanTA12_1971]
Quote: the difficulty of modifying a language's compiler can prevent extending the language [»halpMI1_1968]
QuoteRef: cbb_1973 ;; expansion capabilities of PL/1 and Algol very seldom used, i.e. power v. access
QuoteRef: dod12_1977 ;;42 "The user shall not be able to modify the source language syntax

Subtopic: problems with extensibility -- inefficient, poor diagnostics, base language up

Quote: difficult to learn Smalltalk because of its size, diffuse nature, and generalist design [»nielJ5_1989]
Quote: extensible languages are inefficient because compilers must be large and inefficiencies in the kernel were amplified in the extensions [»maclBJ_1987]
Quote: extensible languages had poor diagnostics since error checking happened at the kernel level [»maclBJ_1987]
Quote: PPL failed as an extensible language because the base language was preserved in the extensions [»stanTA12_1971]
Quote: with an entirely extensible language, great language designers make bad design decisions and unreadable code [»bergT9_1997]
Quote: Smalltalk dropt syntax extensions so that programs can be read

Related Topics up

Group: goals for a programming system   (21 topics, 983 quotes)

Topic: compiling pseudocode designs (8 items)
Topic: design for change (76 items)
Topic: domain specific language (8 items)
Topic: evolutionary systems (47 items)
Topic: extensible systems (22 items)
Topic: function syntax by pattern (15 items)
Topic: grammar modification (10 items)
Topic: language extension via macros (23 items)
Topic: open systems (33 items)
Topic: orthogonal extension and cartesian products (11 items)
Topic: programming language design (53 items)
Topic: programming with a database of modules (94 items)
Topic: restricted and extended types (35 items)
Topic: scripting language (27 items)
Topic: Thesa as a database of modules (23 items)
Topic: words defined by words (25 items)
Topic: user-defined languages
(42 items)

Updated barberCB 3/06
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.