Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Свой язык

Ребята, которые знают о моём увлечении языками программирования, спрашивают почему я до сих пор свой язык не придумал. Ну, почему же не придумал? Можно вспомнить, например, Price Contertor Small Talk (восьмой язык снизу), язык полный по Тьюрингу, был придуман в 1998 году, интерпретатор, кажется, был на Перле.

Не увидел свет интерпретируемый язык, основная идея которого была в том, что по pipe (как в PowerShell) идут объекты, а, кроме этого, поток можно было направлять в любую сторону (как в Befunge, только у меня поток данных, а не выполнения) и ветвить (как в команде tee, в Linux).

Было ещё несколько подобных вещей, сейчас уже их не найти.

А недавно, листая свои дневники жизни, я обнаружил следующую запись:

18/X — 1991 год

Стал кое-что понимать в Рапире, Алг. языке, Ф<неразборчиво, возможно «Фокале»>, скоро и с Ассемблером разберусь. Написал небольшую брошюру — проект своего языка «BASISE» («Базис»).

Что это был за язык я совершенно не помню, но, кажется, это был мой первый эксперимент на эту тему.

14 комментариев
Евгений Степанищев (bolknote.ru) 2011

Не говоря уже о DSL. Например, когда я работал в «Казанском портале», придумал DSL (ребята его потом ещё допилили) для описание ограничений форм, правила проверялись сразу на сервере и клиенте. Вот на что это было похоже:

user !{$#} Логин не задан
user !userExists({$#}) Пользователь не существует

pass !{$#} Пароль не задан
pass is_null({{{_USER}}} = userLogon($user, {$#})) Пароль задан неверно

Применялось тогда это очень широко.

Дмитрий 2011

Жень, помня тебя в этом лохматом году я вспоминаю твое увлечение достаточно самобытным языком программирования на «Ф»- это был конечно же ФОРТ (язык программирования, в котором программы записываются в постфиксной записи и в стековой нотации). А вот ФОКАЛ наврят ли ты изучал, да и начал что-то понимать в нем- смешно. ФОКАЛ применялся на БК 0010. Это был, кажется, бейсикоподобный язык. Понимать там был нечего. А вот необычность ФОРТа, я помню мы с тобой обсуждали.

Евгений Степанищев (bolknote.ru) 2011

Комментарий для Дмитрий:

Жень, помня тебя в этом лохматом году я вспоминаю твое увлечение достаточно самобытным языком программирования на «Ф»- это был конечно же ФОРТ (язык программирования, в котором программы записываются в постфиксной записи и в стековой нотации).

Про ФОРТ я помню :) Но на этой странице точно не ФОРТ написан, кроме того, на следующей всё-таки упоминается Фокал. По Фокалу у меня брошюрка была, купленная в нашем книжном, ещё несколько лет назад она лежала дома у родителей.

А вот ФОКАЛ наврят ли ты изучал, да и начал что-то понимать в нем- смешно. ФОКАЛ применялся на БК 0010. Это был, кажется, бейсикоподобный язык. Понимать там был нечего.

Ну и, соответственно, Фокал я учил по той брошюрке. Там были свои интересные вещи, в «99» ( http://bolknote.ru/99.html ) у меня он есть, 41-й язык снизу.

Дмитрий 2011

И еще, чуть позже, ты стал увлекаться Си. Собственно, на сколько помню, твои изыскания по собственному языку были во многом из него и заимствованы. Помниться, тогда еще мулька такая ходила, де Терминатора-2, который Т-1000 нарисовали на Си. Так что Си звучало круто и даже хотелось верить, что стоит освоить Си и сможешь и сам рисовать терминаров не хуже :)

Дмитрий 2011

эээ... справедливости ради, скажу, что терминатора на Си ты не собирался рисовать. Изучал так, ради интереса- была у тебя такая синенькая книжка отпечатанная на принтере матричном — небольшая для учебного пособия по Си.

Евгений Степанищев (bolknote.ru) 2011

Комментарий для Дмитрий:

В 1991-м про Си я ещё не знал :) Си в поле моего зрения появился гораздо позднее, когда у меня уже 286 был, тогда папа принёс с работы пару учебников по этому языку. Надо сказать, что язык мне тогда не понравился своим синтаксисом, гораздо сильнее мне нравился Паскаль :)

Вот, кстати, страница из дневника, где упоминается неразборчивый язык на «Ф»:

http://img-fotki.yandex.ru/get/5807/bolknote.4d/0_4f4f3_73f7c300_L#basise1.jpg%7Chttp%3A%2F%2Ffotki.yandex.ru%2Fusers%2Fbolknote%2Fview%2F324851%2F%3Fpage%3D0#

Евгений Степанищев (bolknote.ru) 2011

Комментарий для Дмитрий:

А вот как выглядела брошюрка по ФОКАЛУ: http://www.libex.ru/detail/book91959.html

Евгений Степанищев (bolknote.ru) 2011

Комментарий для Дмитрий:

O!

bolk$ wget http://ftp://www.cozx.com/pub/langs/focal.tar.gz
bolk$ tar xvfz focal.tar.gz
bolk$ cd focal-1.0.2
bolk$ sed -ie ’s!^INSTDIR.*!INSTDIR = /usr/local/Cellar/focal/1.0.2/!’ Makefile
bolk$ make gnukfreebsd
bolk$ make install
bolk$ brew link focal
bolk$ focal

FOCAL-1.0.2 execution begins
*ASK «HOW ARE YOU?»
HOW ARE YOU?*

Евгений Степанищев (bolknote.ru) 2011

И моя «Песня про пиво» на ФОКАЛе не работает, оказывается :(

Евгений Степанищев (bolknote.ru) 2011

Почему-то эта версия интерпретатора не понимает отрицательный шаг.

Евгений Степанищев (bolknote.ru) 2011

Так и есть, вот реализация цикла (команда FOR):

if (!err_flag && (p->for_limit >= v1))
{
  /* Set up FOR stack */
  p->for_ptr = for_top;
  for_top = p;
  /* Set up PC stack */
  pcpush();
  pc_top->pc_flags = FOR_FLG;
  /* Execute loop */
  execline();
}

Евгений Степанищев (bolknote.ru) 2011

Если изменить счётчик цикла с 99…1 на 1…99, то всё работает. Значит реализация просто неполная.

mr-simm (mr-simm.livejournal.com) 2011

Комментарий для Евгения Степанищева:

Судя по «сколо» вполне возможен и «Фокал» :)

Евгений Степанищев (bolknote.ru) 2011

Комментарий для mr-simm.livejournal.com:

Дневник был для себя, я там ещё меньше заморачивался с поиском ошибок, чем сейчас :)