Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Category:

"Новый Forth" -- язык программирования Factor

Я понял, почему Forth мне кажется таким привлекательным (ага, я когда-то даже на нем программировал, так что "нравится" относится не только к "нравится о нем читать"): он из породы concatenative languages (http://concatenative.org) и тем самым сразу функциональный, а также языкоориентированный (language-oriented, т.е. предназначенный для построения DSL как основной на нем способ программирования!). То бишь Forth -- это язык, современней не бывает, с одним только недостатком: он слишком низкоуровневый, а для подъема его уровня на нем самом еще нужно существенно потрудиться, и этот подъем нестандартизован и происходит в каждой отдельной программистской команде по-своему.

Все, что мне было нужно, это найти "современный Forth" -- таковых оказалось несколько, и лидером тут является Factor (изобретение Славы Пестова, который родом из Томска, где Forth традиционно популярен вплоть до сегодняшнего дня) -- http://factorcode.org/

Основные отличия от forth у factor: функциональность, динамическая типизация с самого начала, хорошая интеграция в любую среду программирования (то есть очень удобно для функционального языка присоединяются сишные библиотеки), сборка мусора и прочие современные прелести.

Размышления вузовского преподавателя по поводу использования Factor в учебном процессе: http://denkspuren.blogspot.com/2010/01/factor-heilbronn-university.html

Небезынтересна история, как я нашел этот язык: в последнюю пару-тройку дней в список рассылки FONC/STEPS пришел лично Alan Kay и рассказал о том, что там творится:
1. Проект STEPS ищет новые идеи, а не создает какую-то "систему программирования". Поэтому идеи парсера OMeta (а также многие другие идеи) могут быть (и должны быть) попробованы на десятке-другом разных языков, вопрос не в языке, а в архитектуре того, что на них пишется.
2. Вполне можно рассматривать весь проект STEPS, как предложение нескольких DSL, которые можно особенно просто реализовать на "базовых" языках, удобно поддерживающих реализацию DSL. В качестве одного из таких языков и был предолжен Factor.
3. В конце 2010г. проект STEPS выдаст на гора пробную реализацию какой-то системы (Франкенштейна), составленной из многих таких кусочков-DSL, чтобы можно было поглядеть на способ совместного употребления всех разрабатываемых подходов к программированию. А пока опубликован некий обзор работ прошлого года, который дает идею о том, как сочетать все мелькавшие в других работах STEPS наработки: http://www.vpri.org/pdf/tr2009016_steps09.pdf

Теперь в моем личном рейтинге интересов Factor поднялся до уровня выше, чем Squeak/Smalltalk.

Кстати, по поводу Smalltalk: Алан Кей грязно ругается по поводу нынешних версий этого языка, говоря, что первоначальную идею объектов современные (начиная с 1980г.) версии Smalltalk испортили и исказили в угоду производительности на текущих архитектурах железа. А поначалу в Smalltalk объекты были не пассивными, а вполне активными и автономными, то бишь не столько "объектами", сколько акторами (http://en.wikipedia.org/wiki/Actor_model). Это было в том числе в Smalltalk-71. Следующая версия языка работала в 180 раз быстрее, но вся красота из нее ушла -- и дальше неожиданные рассуждения о том, что в те акторские поры родственником Smalltalk был PLANNER и General Problem Solver, т.е. логическая парадигма программирования. В FONC эту идею "объектов-акторов" поднимают на щит в виде двух идей: логического языка и парадигмы "программирования как планирования" (ага, это от PLANNER, оказывается), а также идеи выдать каждому объекту собственный IP-адрес в интернете (ибо этот объект вполне автономен и мало ли где может находиться -- тут и до SOA недалеко).

Опять же, акторские языки продолжают цвести и пахнуть до сих пор -- хотя так же нишево, как и стековые (concatenative languages). Вот пример: ABE (Actor-Based Environment) и его язык Humus -- http://dalnefre.net/drupal/node/2. Автор этого проекта Dale Shumacher говорит, что идеи FONC/STEP уже были учтены в этом проекте.

Век живи, век учись. Назад в будущее!
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 9 comments