Re: Re[2]: RAFAL & JAVA


Subject: Re: Re[2]: RAFAL & JAVA
From: Leonid Belous (belous@ilt.kharkov.ua)
Date: Wed Jan 19 2005 - 17:26:17 MSK


Добрый вечер, всем!

> Ладно уж, выложу карты на стол... От нечего делать я попробовал заняться
Искренне завидую людям, у которых может быть такое состояние души ... :-)

> написанием такого рода интерпретатора. Результат - в присоединённом tgz-
> файле (под Linux точно собирается; под *BSD - не проверял, но причины,
> которые мешали бы сборке, мне неизвестны; про Windows(TM) ничего не могу
> сказать). Всем желающим предлагается посмотреть, что получится, если:
Антон, хочу заранее извиниться за возможную свою неумелость, но ...
провести предлагавшиеся эксперименты с Вашим хозяйством как с "черным ящиком" мне не удалось.
Напрямую (так, чтобы у Вас чего-нибудь не менять) у меня не собирается не только под FreeBSD, но и под тремя вариантами Linux (ASP, ALT, Mandrake, Debian).
С грехом пополам (убрав в makefile параметр, вызываший ругань -mtune=pentium3 ) удалось собрать под одним из Linux, но запустить zamena.ref в режиме скрипта не удается (ругань типа bad interpreter). Казалось бы, должен был проработать из командной строки эквивалентный запуск (с удалением первых трех строк в zamena.ref)
>refal zamena.ref

Но в этом случае выдается сообщение: Eraro: apliko je sendeterminita funkcio.
Пробовал давать >refal test , где файл состоит из одной строчки из 4-х единиц,
получил сообщение: Dosiero z.ref, linio 1: malbona determino de objekto.

Антон, наверное бы я разобрался и подправил кое-где, кое-что в Вашем "черном ящике" или в настройках Linux, но я быстро прекратил эти попытки по следующей причине. Нникак не умаляя возможной оригинальности Вашей разработки (содержащей сотни строк на С), хочу остановиться на одном негативном моменте.

Комментарии написаны на языке, как я понимаю, типа Esperanto.
Вот фрагмент из ваших текстов:
-----------------------------------------------------------------------
/*
* Funkcio "interp_eraro" skribas priskribon de eraro, aperanta dum
* interpretado.
*/

void interp_eraro (int ern) {

 switch (ern) {
  case 1:
   fprintf (stderr, "\n%s %s, %s %d: %s.\n",
   gettext ("Dosiero"), dosiero, gettext ("linio"), linnum,
   gettext ("tro longa linio"));
   break;
..................................................
------------------------------------------------------------------------
Мне лично трудно воспринимать такой текст. А выбор идентификаторов в стиле этого же языка
не столько повышает читаемость, сколько просто зашифровывает программу для непосвященных :(.
Единственное, о чем мне удалось легко догадаться, так это то, что работа выпоняется по GNU лицензии :-).

Ладно, бог с ними, приведенными выше замечаниями, можете на эту критику не обращать внимания.

Вопрос по сути:
Зачем Вам интерпретатор языка Рефал, а не интерпретатор, написанный на языке Рефал для Вашей конкретного класса задач?

Как мне показалось, Вам пока нужно было в диалоге воспринимать текст с учетом кодировки Юникод, а потом с ним что-то делать? Зачем в диалоге вводить и обрабатывать предложения на языке Рефал?
У меня когда-то стоял подобный вопрос, когда Рефал применялся при создании системы компьютерной алгебры "Сириус".

Вспоминая нашу с Вами переписку, относительно нехватки встроенных функций в Рефале для обработки текста в кодировке Utf-8, задаю вопрос - Вам не хватает встроенных функций в Рефале и неустраивают компилирующие реализации Рефала, поэтому Вы решились написать свой интерпретатор с языка Рефал?
Скорее всего я Вас неправильно понимаю, посему прошу разъяснений.

С уважением,
--Леонид Белоус

----- Исходное сообщение -----
От: "A.A.Vladimirov" <vladimi@mech.math.msu.su>
Кому: <refal@botik.ru>
Отправлено: 17 января 2005 г. 12:07
Тема: Re: Re[2]: RAFAL & JAVA

> Leonid Belous писал(а):
>
> > Антон, если не секрет, почему нужен именно
> > "интерпретатор"?
> > Ведь на самом деле компиляторы с языка Рефал
> > переводят исходную программу на специальный
> > промежуточный язык, который потом интерпретируется.
> > При этом соотношение между фазой компиляции и
> > интерпретации таково, что фаза компиляции не есть
> > доминирующий участок этого процесса.
>
> Хотелось бы, в первую очередь, иметь расширяемую реализацию. А то в том
> же Рефале-5 громких фраз о метасистемном переходе много, а вот
> возможностей для добавления встроенных функций (без вбивания их в
> основные исходники с последующей перекомпиляцией оных) похоже, не
> наблюдается :(
>
> Что же касается собственно интерпретатора - то ведь ясно, что Рефал, в
> силу своей структуры, заведомо способен исполнить роль скриптового языка
> ничуть не хуже тех же tcl, perl или python. Однако возможность сия,
> похоже, не используется.
>
> Sergei Romanenko писал(а):
>
> > По поводу Рефала-2 я понял пожелание насчет "интерпретатора" так: нельзя ли
> > компилировать Рефал-программу сразу в основную память, не делая генерацию
> > объектных модулей. Действительно, было бы глупо заниматься линкованием
> > объектных модулей в мобильнике... :-)
> >
>
> Ну, разумеется, под "интерпретацией" в данном случае следует понимать
> компиляцию "на лету" - иначе эффективность реализации будет мизерной.
>
>
> > Ну, а в случае Рефала-2 все обстоит наоборот! С модульностью и раздельной
> > компиляцией - все в порядке, а на режим "интерактивной" работы (когда
> > программа вводится в процессе работы) сам язык не рассчитан... В те времена
> > вычислительные мощности компьютеров были просто смехотворными (по сравнению
> > с нынешними мобилами), поэтому вопрос раздельной компиляции стоял ОЧЕНЬ
> > остро! А "интерактивность" (в смысле SML) пользователей Рефала не очень
> > волновала.
> >
> > Поэтому, для создания "интерактивной" версии Рефала, нужно как-то
> > "подкручивать" сам язык...
> >
>
> Ладно уж, выложу карты на стол... От нечего делать я попробовал заняться
> написанием такого рода интерпретатора. Результат - в присоединённом tgz-
> файле (под Linux точно собирается; под *BSD - не проверял, но причины,
> которые мешали бы сборке, мне неизвестны; про Windows(TM) ничего не могу
> сказать). Всем желающим предлагается посмотреть, что получится, если:
> 1) сделать присоединённый ref-файл исполняемым;
> 2) запустить его;
> 3) ввести с консоли несколько непустых строк;
> 4) провести "горячее" перетаскивание знака "#" на одну строку вверх,
> после чего ввести __пустую__ строку;
> 5) снова попытаться вводить с консоли непустые строки.
>
> С уважением,
> Антон Владимиров
>



This archive was generated by hypermail 2b25 : Wed Jan 19 2005 - 17:30:04 MSK