Svoboda | Graniru | BBC Russia | Golosameriki | Facebook

Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

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

Из Википедии — свободной энциклопедии

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].

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

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

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

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

Примечания

  1. Arrays of unboxed primitive values, and a faster Mersenne Twister. Дата обращения: 5 марта 2009. Архивировано 6 февраля 2009 года.
  2. Factor VM ported to C++. Дата обращения: 15 января 2010. Архивировано 14 мая 2009 года.
  3. Two-tier compilation comes to Factor. Дата обращения: 5 марта 2009. Архивировано 14 сентября 2008 года.
  4. Compiler overhaul. Дата обращения: 5 марта 2009. Архивировано 12 января 2008 года.
  5. Deploying stand-alone applications on Windows. Дата обращения: 5 марта 2009. Архивировано 9 июля 2008 года.
  6. Lisp на concatenative.org. Дата обращения: 5 марта 2009. Архивировано 22 февраля 2009 года.
  7. Factor 0.96 now available. Дата обращения: 18 мая 2013. Архивировано 26 мая 2013 года.
  8. Getting Factor. Дата обращения: 5 марта 2009. Архивировано 24 февраля 2009 года.
  9. Factor 0.91 now available. Дата обращения: 19 июля 2010. Архивировано 29 ноября 2010 года.
  10. 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 года.

Ссылки

Эта страница в последний раз была отредактирована 30 января 2024 в 14:19.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).