Введение

Язык программирования со стековой организацией

Factor — это язык программирования со стековой организацией, созданный Славой Пестовым. Factor является языком с динамической типизацией и автоматическим управлением памятью, а также обладает мощными возможностями метапрограммирования. Язык имеет единственную реализацию, включающую в себя самокомпилирующийся оптимизирующий компилятор и интерактивную среду разработки. Распространение Factor включает в себя большую стандартную библиотеку.

История

Слава Пестов создал 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 значительно ускорилась.