Мета Код

Sep 07, 2012 09:06

sbobrovsky создал комьюнити metacode_ru, которое описал как "программируем in small в сто раз быстрее и in large в десять тысяч раз эффективнее". Я заинтригован. Первый же содержательный пост http://metacode-ru.livejournal.com/362.html объясняет, почему именно "в сто раз" и "в десять тысяч раз", а второй формулирует (http://metacode-ru.livejournal.com/687.html): 10-е правило Гринспена (предыдущих девяти, естественно, не было)

"Любая достаточно сложная программа на Си или Фортране содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp".
Потом последовали уточнения и обобщения этого правила:
…в том числе и сам Common Lisp.
Любая достаточно сложная программа на Лиспе наверняка содержит медленную реализацию половины языка Пролог.
Любая достаточно сложная распределённая программа содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Erlang [подставить по вкусу Haskell, Scheme, ...].
Любая достаточно сложная платформа содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины функционального языка.
Интересно.

В нашей маленькой программистской команде середины 80-х годов мы самостоятельно (а не из литературы) обраружили, что в любой выпускаемой нами программе на Паскале мы по факту реализуем какой-то ad hoc спроектированный, глючный, плохоспецифицированный и медленный язык, и этот язык упорно хочет быть полнотьюринговым.

С тех пор я постоянно приглядываю за тем, чтобы в интерфейсе программы была консоль для пользовательского скриптования. Одной из мечт в этом направлении была попытка разобраться в language workbench, в которые меня когда-то ткнул как раз sbobrovsky (http://ailev.livejournal.com/474169.html). Логическим завершением этих попыток стало выведение на переднюю панель онтологического редактора dot15926 питоновской консоли с доступом к DSL онтологического программирования (для онтологии ISO 15926). Спасибо justy_tylor, он не просто реализовал этот DSL, а вписал его в Питон, и идея "каждая программа содержит заново написанную, неспецифицированную, глючную и медленную реализацию крутого языка" для меня успокоилась тем, что этим "крутым языком" оказался выведенный на морду интерфейса REPL полноценного Питона, расширенного специализированным онтологическим языком (internal DSL).

Когда я писал в http://ailev.livejournal.com/976768.html, что летом выпустим версию 1.0 и затем приступим к реализации language workbench, я чуть чуть-ошибся: версию мы выпускаем не летом, а в сентябре, но это и есть language workbench (с точностью до синтаксических ограничений на DSL-языки, возможные в Питоне). Панель онтологического программирования красуется прямо на морде лица софтины, и в этой панели пользователю доступен полноценный язык, в том числе "немножко функциональный" (как это принято говорить о Питоне).

Так что я вписался в metacode_ru, и мне очень интересно, что ещё там появится.
Previous post Next post
Up