Factor (язык программирования)
Factor — это динамически типизированный конкатенативный язык программирования чья разработка и реализация ведётся Славой Пестовым. Основное влияние на язык Factor оказали языки программирования Joy, Forth, Lisp и Self. Текущая версия Фактора существует в качестве постоянно обновляющихся сборок (Continuous Builds) для поддерживаемых платформ, пока версия 1.0 находится в разработке[1]. Автор определяет Factor как «практический стековый язык программирования», важными факторами, определяющими направление его развития, являются производительность, богатство выразительных средств (при сохранении ясности и согласованности) и создание достаточно всеобъемлющей стандартной библиотеки.
Подобно другим конкатенативным языкам, Factor имеет постфиксный синтаксис, что означает, что аргументы функции пишут перед её именем. Например, Hello world в языке Factor это:
"Hello world" print
Фактор — язык с динамической типизацией, и уникальной объектной системой, близкой к CLOS. В Факторе есть небольшой набор базовых типов, а пользователи и стандартная библиотека могут создавать собственные классы используя кортежи и другие механизмы. Фактор поддерживает наследование. Помимо классов, являющихся кортежами имеются и другие механизмы создания классов; Factor поддерживает предикатные классы (подмножества некоего класса, для которых соблюдается условие-предикат) и классы объединения. Встроенные составные типы данных Фактора включают векторы фиксированной и переменной длины и хеш-таблицы. Подобно таким языкам, как Common Lisp и Python, Фактор поддерживает богатый набор арифметических типов данных: простые целые, целые неограниченной длины, числа с плавающей запятой. Комплексные числа, дроби (рациональные числа) реализованы в стандартной библиотеке. Также стандартная библиотека реализует связные списки, массивы статически типизированных значений[2] и другие структуры данных.
Одна из главных целей Фактора — применение в итеративной разработке через тестирование, поэтому ядро Фактора можно рассматривать как безопасный диалект Форта. Хотя Фактор — динамически типизируемый язык, компилятор имеет доступ к глубине стека слова (функции).
Реализация
Первая публичная реализация Фактора была написана на Java, однако в целях повышения эффективности позднее она переписана на C (а затем, в мае 2009 — на C++[3]), Java-версия была заброшена. Количество Си-кода в реализации языка постепенно сокращается, а Factor-кода соответственно растёт.
Первоначально Фактор был чисто интерпретируемым языком, но теперь он полностью реализован в виде компилятора (неоптимизирующий компилятор по существу разворачивает (unrolls) цикл интерпретации[4][5]), интерпретатор сохранён только для обеспечения интерактивного режима работы). Оптимизирующий компилятор в машинный код также полностью написан Факторе. Он не производит автономных запускаемых файлов, но генерирует машинный код, сохраняемый в файл образа . Эти образы могут быть запущены с помощью соответствующего инструмента с минимальными накладными расходами с помощью виртуальной машины. С помощью подсистемы развёртывания (deploying) можно также получить вашу программу в виде автономного запускаемого файла[6]. На реализацию Фактора большое влияние оказал Steel Bank Common Lisp[7].
Стандартная библиотека
Factor имеет развивающуюся библиотеку с поддержкой словарей, предложений, HTTP сервера и прилагающегося веб-фреймворка, OpenGL враппер, GUI библиотеки, XML парсера, и т. д..
Внешние ссылки
- factorcode.org(англ.) домашняя страница
- The birth of Factor(англ.)
- ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокgetting_factor
не указан текст - ↑ Arrays of unboxed primitive values, and a faster Mersenne Twister
- ↑ Factor VM ported to C++
- ↑ Two-tier compilation comes to Factor
- ↑ Compiler overhaul
- ↑ Deploying stand-alone applications on Windows
- ↑ Lisp на concatenative.org
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....