Content deleted Content added
(3 intermediate revisions by 3 users not shown) | |||
Line 1:
{{short description|Style of computer programming}}
In [[computer science]], '''extensible programming''' is a style of computer programming that focuses on mechanisms to extend the [[programming language]], [[compiler]], and [[runtime system]] (environment). Extensible programming languages, supporting this style of programming, were an active area of work in the 1960s, but the movement was marginalized in the 1970s.<ref name="Standish1975"/> Extensible programming has become a topic of renewed interest in the 21st century.<ref name="Wilson2005">Gregory V. Wilson, "[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.453.3676&rep=rep1&type=pdf Extensible Programming for the 21st Century]", ''ACM Queue'' 2 no. 9 (Dec/Jan 2004–2005).</ref>
Line 22 ⟶ 23:
Standish attributed the failure of the extensibility movement to the difficulty of programming successive extensions. A programmer might build a first shell of macros around a base language. Then, if a second shell of macros is built around that, any subsequent programmer must be intimately familiar with both the base language, and the first shell. A third shell would require familiarity with the base and both the first and second shells, and so on. Shielding a programmer from lower-level details is the intent of the [[Abstraction (computer science)|abstraction]] movement that supplanted the extensibility movement.
Despite the earlier presentation of Simula as extensible, by 1975, Standish's survey does not seem in practice to have included the newer abstraction-based technologies (though he used a very general definition of extensibility that technically could have included them). A 1978 history of programming abstraction from the invention of the computer until then, made no mention of macros, and gave no hint that the extensible languages movement had ever occurred.<ref name="Guarino1978">Guarino, L.R., "[
== Modern movement ==
Line 70 ⟶ 71:
* [[XML]]
* [[Forth (programming language)|Forth]]
* [[Factor (programming language)|Factor]]
* [[Lisp (programming language)|Lisp]]
** [[Racket (programming language)|Racket]]
Line 97 ⟶ 99:
=== Tools ===
# [http://www.meta-language.net/ MetaL] – [https://web.archive.org/web/20050220100913/http://pyre.third-bit.com/pipermail/extprog/2005-January/000019.html an extensible programming compiler engine implementation]
# [
# [http://www.jetbrains.com/mps/ MPS] – JetBrains Metaprogramming system
=== Languages with extensible syntax ===
# [
# [http://cs.nyu.edu/rgrimm/xtc/ xtc – eXTensible C]
# [https://github.com/pannous/english-script English-script]
Line 107 ⟶ 109:
# [https://web.archive.org/web/20050817205802/http://boo.codehaus.org/Syntactic+Macros Boo Syntactic Macros]
# [https://web.archive.org/web/20061022071450/http://suif.stanford.edu/ Stanford University Intermediate Format compiler]
# [
# [https://github.com/chrisseaton/katahdin Katahdin] – a language with syntax and semantics that are mutable at runtime
# [http://www.pi-programming.org/What.html π] – a language with extensible syntax, implemented using an [[Earley parser]]
|