Factor (programming language): Difference between revisions

Content deleted Content added
m Programming paradigm: <source lang="factor">
m History: clean up, fix grammar/shorter using AWB
Line 31:
 
==History==
Slava Pestov created Factor in 2003 as a [[scripting language]] for a [[video game]].<ref>{{citation | url = http://factorcode.org/slava/ | first = Slava | last = Pestov | contribution = Slava Pestov's corner of the web}}</ref> The initial implementation, now referred to as JFactor, was implemented in [[Java (programming language)|Java]] and ran on the [[Java Virtual Machine]]. Though the early language resembled modern Factor superficially in terms of [[syntax (programming languages)|syntax]], the modern language is very different in practical terms and the current implementation is much faster.
 
The language has changed significantly over time. Originally, Factor programs centered aroundon manipulating Java objects with Java's [[reflection (computer science)|reflection]] capabilities. From the beginning, the design philosophy has been to modify the language to suit programs written in it. As the Factor implementation and standard libraries grew more detailed, the need for certain language features became clear, and they were added. JFactor did not have an [[object system]] where you could define your own [[class (computer science)|class]]es, and early versions of native Factor were the same; the language was similar to [[Scheme (programming language)|Scheme]] in this way. Today, the object system is a central part of Factor. Other important language features such as [[tuple]] classes, combinator inlining, [[macro (computer science)|macro]]s, user-defined [[parsing]] words and the modern vocabulary system were only added in a piecemeal fashion as their utility became clear.
 
The [[foreign function interface]] was present from very early versions to Factor, and an analogous system existed in JFactor. This was chosen over creating a plugin to the [[C (programming language)|C]] part of the implementation for each external [[library (computing)|library]] that Factor should communicate with, and has the benefit of being more [[declarative programming|declarative]], faster to compile and easier to write.