Extension programming Languages

Introduction to Extension programming Languages

As typically envisioned, an extensible programming language consisted of a base language providing elementary computing facilities, and a meta-language capable of modifying the base language. A program then consisted of meta-language modifications and code in the modified base language. The most prominent language-extension technique used in the movement was macro definition. Grammar modification was also closely associated with the movement, resulting in the eventual development of adaptive grammar formalisms. The Lisp language community remained separate from the extensible language community, apparently because, as one researcher observed, any programming language in which programs and data are essentially interchangeable can be regarded as an extendible [sic] language. ... this can be seen very easily from the fact that Lisp has been used as an extendible language for years

This simply means that the source language(s) to be compiled must not be closed, fixed, or static. It must be possible to add new keywords, concepts, and structures to the source language(s). Languages which allow the addition of constructs with user defined syntax include Camlp4, OpenC++, Seed7.

Extension compiler

For just the task of translating source code into something that can be executed on a computer, an extensible compiler should:

  • Use a plug-in or component architecture for nearly every aspect of its function.
  • Determine which language or language variant is being compiled and locate the appropriate plug-in to recognize and validate that language.
  • Use formal language specifications to syntactically and structurally validate arbitrary source languages.
  • assist with the semantic validation of arbitrary source languages by invoking an appropriate validation plug-in.
  • Allow users to select from different kinds of code generators so that the resulting executable can be targeted for different processors, operating systems, virtual machines, or other execution environment.

Extensible programming systems should regard programs as data to be processed. Those programs should be completely devoid of any kind of formatting information. The visual display and editing of programs to users should be a translation function, supported by the extensible compiler, that translates the program data into forms more suitable for viewing or editing.

List of Extension programming Languages

Extension programming Languages

An esoteric programming language (sometimes shortened to esolang) is a programming language designed to test the boundaries of computer programming language design, as a proof of concept, or as a joke. The use of esoteric distinguishes these languages from programming languages that working developers use to write software. Usually, an esolang&apso;s creators do not intend the language to be used for mainstream programming, although some esoteric features, such as visuospatial syntax, have inspired practical applications in the arts. Such languages are often popular among hackers and hobbyists.

  • AutoLISP
  • CAL
  • Python
  • Ruby
  • SQL
  • Squirrel
  • Tcl
  • Vim script