Factor (язык программирования)

Factor (язык программирования)
Factor
NewFactorLogo.png
Класс языка:

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

Появился в:

2003

Автор(ы):

Слава Пестов

Релиз:

0.95 (16 августа 2012)

Типизация данных:

динамическая, статическая

Испытал влияние:

Joy, Forth, Lisp, Self

Лицензия

BSD license

Сайт:

factorcode.org

Factor — это динамически типизированный конкатенативный язык программирования, чья разработка и реализация ведётся Славой Пестовым. Основное влияние на язык Factor оказали языки программирования Joy, Forth, Lisp и Self.

Автор определяет Factor как «практический стековый язык программирования», важными факторами, определяющими направление его развития, являются производительность, богатство выразительных средств (при сохранении ясности и согласованности) и создание достаточно всеобъемлющей стандартной библиотеки.

Подобно другим конкатенативным языкам, Factor имеет постфиксный синтаксис, что означает, что аргументы функции пишут перед её именем. Например, Hello world в языке Factor это:

"Hello world" print

Фактор — язык с динамической типизацией, и уникальной объектной системой, близкой к CLOS. В Факторе есть небольшой набор базовых типов, а пользователи и стандартная библиотека могут создавать собственные классы используя кортежи и другие механизмы. Фактор поддерживает наследование. Помимо классов, являющихся кортежами имеются и другие механизмы создания классов; Factor поддерживает предикатные классы (подмножества некоего класса, для которых соблюдается условие-предикат) и классы объединения. Встроенные составные типы данных Фактора включают векторы фиксированной и переменной длины и хеш-таблицы. Подобно таким языкам, как Common Lisp и Python, Фактор поддерживает богатый набор арифметических типов данных: простые целые, целые неограниченной длины, числа с плавающей запятой. Комплексные числа, дроби (рациональные числа) реализованы в стандартной библиотеке. Также стандартная библиотека реализует связные списки, массивы статически типизированных значений[1] и другие структуры данных.

Одна из главных целей Фактора — применение в итеративной разработке через тестирование, поэтому ядро Фактора можно рассматривать как безопасный диалект Форта. Хотя Фактор — динамически типизируемый язык, компилятор имеет доступ к глубине стека слова (функции).

Содержание

Реализация

Первая публичная реализация Фактора была написана на Java, однако в целях повышения эффективности позднее она переписана на C (а затем, в мае 2009 — на C++[2]), Java-версия была заброшена. Количество Си-кода в реализации языка постепенно сокращается, а Factor-кода соответственно растёт.

Первоначально Фактор был чисто интерпретируемым языком, но теперь он полностью реализован в виде компилятора (неоптимизирующий компилятор по существу разворачивает (unrolls) цикл интерпретации[3][4]), интерпретатор сохранён только для обеспечения интерактивного режима работы). Оптимизирующий компилятор в машинный код также полностью написан на Факторе. Он не производит автономных запускаемых файлов, но генерирует машинный код, сохраняемый в файл образа. Эти образы запускаются с минимальными накладными расходами с помощью виртуальной машины. Подсистема развёртывания (deploying) позволяет сгенерировать из программы автономный запускаемый файл[5]. На реализацию Фактора большое влияние оказал Steel Bank Common Lisp[6].

Последний стабильный релиз датируется 16 августа 2012 года и имеет номер 0.95[7]. Также, пока версия 1.0 всё ещё находится в разработке, регулярно публикуются постоянно обновляющиеся сборки (Continuous Builds) для всех поддерживаемых платформ[8].

Между выходом версий 0.91[9] и последовавшей за ней версией 0.92[10] прошло около 2 лет активного развития языка (с выпуском промежуточных сборок). За это время внесены значительные изменения как в само ядро языка, так и в окружающие его библиотеки (в частности вся работа со строками была переведена на Unicode с поддержкой UTF-8 и UTF-16).[10]

Стандартная библиотека

Factor имеет развивающуюся библиотеку с поддержкой словарей, продолжений, HTTP сервера и прилагающегося веб-фреймворка, OpenGL враппер, GUI библиотеки, XML парсера, и т. д..

Примечания

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Factor (язык программирования)" в других словарях:

  • Форт (язык программирования) — У этого термина существуют и другие значения, см. Форт (значения). Forth Семантика: императивный Тип исполнения: интерпретатор/компилятор Появился в: 1971 Автор(ы): Чарльз Х. Мур Основные реализации …   Википедия

  • Язык программирования — Язык программирования  формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия,… …   Википедия

  • Конкатенативный язык программирования — Конкатенативные или стековые языки программирования основаны на том, что конкатенация двух фрагментов кода выражает их композицию. Эти языки используют стек для хранения аргументов и возвращаемых значений операций. Самый распространённый… …   Википедия

  • Cat (язык программирования) — У этого термина существуют и другие значения, см. Cat (значения). Cat Класс языка: Конкатенативный язык программирования Появился в: 2006[1] Автор(ы) …   Википедия

  • Forth (язык программирования) — Forth Семантика: императивный Тип исполнения: интерпретатор/компилятор Появился в: 1971 г. Автор(ы): Чарльз Х. Мур Основные реализации: gForth, pForth, kForth, SP Forth, win32forth …   Википедия

  • S (язык программирования) — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей. У этого термина существуют и другие значения, см. S. S  язы …   Википедия

  • Joy (язык программирования) — Joy Класс языка: мультипарадигменный: функциональный, конкатенативный, стековый Появился в: 2001 Автор(ы): Manfred von Thun Типизация данных: сильная, динамическая …   Википедия

  • Предметно-ориентированный язык программирования — (англ. domain specific programming language, domain specific language, DSL)  язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения, таких, как Си,… …   Википедия

  • S (язык программирования)/Temp — Это временная версия статьи S (язык программирования). После внесения в неё правок нужно объединить эту статью со статьёй S (язык программирования) и заменить её содержимое шаблоном {{db}}. Если статья не подходит под формат Википедии, то её… …   Википедия

  • Языки программирования — Язык программирования  формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»