Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Язык программирования со стековой организацией
Stack oriented programming language
Factor — это язык программирования со стековой организацией, созданный Славой Пестовым. Factor является языком с динамической типизацией и автоматическим управлением памятью, а также обладает мощными возможностями метапрограммирования. Язык имеет единственную реализацию, включающую в себя самокомпилирующийся оптимизирующий компилятор и интерактивную среду разработки. Распространение Factor включает в себя большую стандартную библиотеку.
Factor is a stack oriented programming language created by Slava Pestov. Factor is dynamically typed and has automatic memory management, as well as powerful metaprogramming features. The language has a single implementation featuring a self hosted optimizing compiler and an interactive development environment. The Factor distribution includes a large standard library.
История
Слава Пестов создал Factor в 2003 году как язык сценариев для видеоигры. Первоначальная реализация, теперь называемая JFactor, была написана на Java и работала на виртуальной машине Java. Хотя ранний язык поверхностно напоминал современный Factor с точки зрения синтаксиса, современный язык значительно отличается в практическом плане, а текущая реализация намного быстрее. Язык значительно изменился с течением времени. Изначально программы на Factor были сосредоточены на манипулировании Java-объектами с использованием возможностей рефлексии Java. С самого начала философия разработки заключалась в модификации языка под программы, написанные на нём. По мере развития реализации Factor и стандартных библиотек становилась очевидной необходимость в определенных языковых средствах, и они добавлялись. JFactor не имел объектной системы, позволяющей программисту определять собственные классы, и ранние версии нативного Factor были такими же; в этом отношении язык был похож на Scheme. Сегодня объектная система является центральной частью Factor. Другие важные языковые средства, такие как классы-кортежи, инлайнинг комбинаторов, макросы, пользовательские слова разбора и современная система словарей добавлялись постепенно, по мере осознания их полезности. Интерфейс для работы с функциями из других языков присутствовал с самых ранних версий Factor, а аналогичная система существовала и в JFactor. Это было предпочтено созданию плагина к C-части реализации для каждой внешней библиотеки, с которой должен взаимодействовать Factor, и имеет преимущества в виде большей декларативности, более быстрой компиляции и простоты написания. Изначально Java-реализация состояла только из интерпретатора, но позже был добавлен компилятор в Java-байткод. Этот компилятор работал только с определенными процедурами. Java-версия Factor была заменена версией, написанной на C и Factor. Изначально она также состояла только из интерпретатора, но интерпретатор был заменен двумя компиляторами, используемыми в различных ситуациях. Со временем реализация Factor значительно ускорилась.
Slava Pestov created Factor in 2003 as a scripting language for a video game. The initial implementation, now referred to as JFactor, was implemented in Java and ran on the Java Virtual Machine. Though the early language resembled modern Factor superficially in terms of 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 on manipulating Java objects with Java's 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 the programmer could define their own classes, and early versions of native Factor were the same; the language was similar to Scheme in this way. Today, the object system is a central part of Factor. Other important language features such as tuple classes, combinator inlining, macros, 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 part of the implementation for each external library that Factor should communicate with, and has the benefit of being more declarative, faster to compile and easier to write. The Java implementation initially consisted of just an interpreter, but a compiler to Java bytecode was later added. This compiler only worked on certain procedures. The Java version of Factor was replaced by a version written in C and Factor. Initially, this consisted of just an interpreter, but the interpreter was replaced by two compilers, used in different situations. Over time, the Factor implementation has grown significantly faster.