Factor (язык программирования)
Factor | |
---|---|
![]() | |
Класс языка | Конкатенативный язык программирования |
Появился в | 2003 |
Автор |
Слава Пестов |
Разработчик | Пестов, Святослав |
Выпуск |
0.99 ( 2023 ) |
Система типов | динамическая, статическая |
Испытал влияние |
Lisp, Self |
Лицензия |
BSD license |
Сайт | factorcode.org |
Factor — динамически типизированный
Автор определяет Factor как «практический стековый язык программирования», важными факторами, определяющими направление его развития, являются производительность, богатство выразительных средств (при сохранении ясности и согласованности) и создание достаточно всеобъемлющей стандартной библиотеки.
Подобно другим
"Hello world" print
Фактор — язык с
Одна из главных целей Фактора — применение в итеративной разработке через тестирование, поэтому ядро Фактора можно рассматривать как безопасный диалект Форта. Хотя Фактор — динамически типизируемый язык, компилятор имеет доступ к глубине стека слова (функции).
Реализация
Первая публичная реализация Фактора была написана на
), Java-версия была заброшена. Количество Си-кода в реализации языка постепенно сокращается, а Factor-кода соответственно растёт.Первоначально Фактор был чисто интерпретируемым языком, но теперь он полностью реализован в виде компилятора (неоптимизирующий компилятор по существу разворачивает (unrolls) цикл интерпретации[3][4]), интерпретатор сохранён только для обеспечения интерактивного режима работы). Оптимизирующий компилятор в машинный код также полностью написан на Факторе. Он не производит автономных запускаемых файлов, но генерирует машинный код, сохраняемый в файл образа. Эти образы запускаются с минимальными накладными расходами с помощью виртуальной машины. Подсистема развёртывания (deploying) позволяет сгенерировать из программы автономный запускаемый файл[5]. На реализацию Фактора большое влияние оказал Steel Bank Common Lisp[6].
Последний стабильный релиз датируется 20 апреля 2013 года и имеет номер 0.96[7]. Также, пока версия 1.0 всё ещё находится в разработке, регулярно публикуются постоянно обновляющиеся сборки (Continuous Builds) для всех поддерживаемых платформ[8].
Между выходом версий 0.91
Стандартная библиотека
Factor имеет развивающуюся библиотеку с поддержкой
Примечания
- ↑ Arrays of unboxed primitive values, and a faster Mersenne Twister . Дата обращения: 5 марта 2009. Архивировано 6 февраля 2009 года.
- ↑ Factor VM ported to C++ . Дата обращения: 15 января 2010. Архивировано 14 мая 2009 года.
- ↑ Two-tier compilation comes to Factor . Дата обращения: 5 марта 2009. Архивировано 14 сентября 2008 года.
- ↑ Compiler overhaul . Дата обращения: 5 марта 2009. Архивировано 12 января 2008 года.
- ↑ Deploying stand-alone applications on Windows . Дата обращения: 5 марта 2009. Архивировано 9 июля 2008 года.
- ↑ Lisp на concatenative.org . Дата обращения: 5 марта 2009. Архивировано 22 февраля 2009 года.
- ↑ Factor 0.96 now available . Дата обращения: 18 мая 2013. Архивировано 26 мая 2013 года.
- ↑ Getting Factor . Дата обращения: 5 марта 2009. Архивировано 24 февраля 2009 года.
- ↑ Factor 0.91 now available . Дата обращения: 19 июля 2010. Архивировано 29 ноября 2010 года.
- ↑ 1 2 Factor 0.92 now available . Дата обращения: 23 февраля 2010. Архивировано 19 февраля 2010 года.
Литература
- Bruce Tate, Fred Daoud, Jack Moffitt, Ian Dees. Factor // Seven More Languages in Seven Weeks. Languages That Are Shaping the Future. — The Pragmatic Bookshelf, 2015. — С. 49-87. — 320 с. — ISBN 978-1941222157.
- Factor: a dynamic stack-based programming language (англ.) — Slava Pestov, Daniel Ehrenberg, Joe Groff. Dynamic Languages Symposium 2010
- Анатолий Левенчук. «Новый Forth» — язык программирования Factor (11 мая 2010). Дата обращения: 31 июля 2013. Архивировано из оригинала 20 августа 2013 года.
- Christopher Diggins. What is a Concatenative Language . Dr. Dobbs (31 декабря 2008). Архивировано из оригинала 14 мая 2012 года.
Ссылки
- factorcode.org (англ.) домашняя страница
- Factor на GitHub
- The birth of Factor (недоступная ссылка) (англ.)
- Factor: an extensible interactive language видеозапись авторской презентации языка на Google Tech Talks[англ.]