Andrei Klimov (klimov@keldysh.ru)
Thu, 2 Dec 1999 16:19:07 +0300
Андрей (С), спасибо за усилия и успехи в деле наведения порядка
в реализации Рефала Плюс и в самом языке!
Позвольте и мне сделать несколько замечаний.
-1-
> From: Andrey Slepuhin <pooh@msu.ru>
> Sent: Tuesday, 30 November, 1999 20:54
> Геморрой, собственно, уже устранен. Будет одно ограничение
> (естественное) - программа будет собираться либо только из модулей,
> откомпилированных в режиме совместимости, либо только из модулей,
> откомпилированных в стандартном режиме.
Мне кажется, что режим "совместимости" нужно сформулировать иначе,
чтобы такого рода "ограничения" вообще не возникали (ибо все равно
возникает вопрос, а что будет, если их нарушить):
<<Режим "case-insensitiveness" означает, что все буквы в идентификаторах
данного модуля переводятся в верхний регистр.>>
Поскольку понятие "верхний регистр" в этом определении "первичное",
а "case-insensitiveness" или "режим совместимости" -- "вторичные",
то лучше бы назвать ключик -u (Upper case), а не -i (Ignore case или case-Insensitiveness),
так как все равно мы не можем спрятать детали.
Из этого определения следует, что модули могут быть скомпилированы по-разному,
но "совершенно понятно" (извините, что цитирую куклу одного политика, -- прилипло;-),
что в этом случае ожидать.
-2-
Как и Аркадий я голосую за то, чтобы имена функций из старых библиотек были upper case.
Мне кажется, что в данном случае "революционное желание" сделать сразу так, чтобы
все было "красиво", не слишком перетягивает противоположные аргументы:
Во-первых, так написано в книжке.
Во-вторых, имена стандартных функций из основных библиотек, написанные большими
буквами, смотрятся не так уж и плохо.
В-третьих, все равно нам предстоит подключение к Рефалу Плюс каких-нибудь
распространенных системных библиотек типа Tcl/Tk-шной, и лучше это библиотеку
просто заморозить и не трогать -- только исправлять ошибки.
-3-
Кстати, об ошибках в библиотеке. Вот пример одной.
Как раз вчера, пиша "скриптуху" на Рефале Плюс, я вспомнил, что уже давно тихо
мечтаю об исправлении одной "мелкой" ошибки в функциях "READ-LINE" и "READ-LINE!".
(Слово "мелкая" беру в кавычки, так как в формальных системах, коими являются
программы, "мелких" ошибок не бывает -- ...как и "осетрины второй свежести".;-)
СЕЙЧАС ТАК: Если последняя строка в файле закрыта символами конца строки,
то выдается еще одна пустая строка и только после этого объявляется конец файла.
НАДО ТАК: Если последняя строка в файле оканчивается символом (-ами) конца строки,
а после них ничего нет, то конец файла объявляется после чтения этой строки.
Если же последняя (непустая) строка не закрыта символом (-ами) конца строки,
то она выдается, и после нее объявляется конец файла.
МОТИВИРОВКА: Простейший цикл чтения-записи в файл (который является основой
"мелкой скриптухи"; заметим, что за его важность он даже встроен в Perl-интерпретатор!),
должен выдавать файл без изменения -- кроме, быть может, некоторой "нормализации"
(то есть, быть "идемпотентным": после первого применения переводить данные в неподвижную точку):
---------------------------------------------------
$use StdIO;
$func Loop = ;
$func Edit? e = e;
Main = <Loop>;
Loop {
, <PRINTLN <Edit <READ-LINE>>>, <Loop>;
= ;
};
Edit {
eX = eX;
};
---------------------------------------------------
Если бы этой ошибки не было, то я бы рекомендовал этот файл как основу
использования Рефала Плюс вместо Перла:
==> Заменяйте тело функции Edit и программируйте разные построчный преобразования текстовых файлов!
Кстати, обратите внимание, что откатность функции Edit позволяет внутри нее
принимать решение о конце файла. "Мелочь, а приятно!"
Однако, "одна мелкая ошибка" портит прекрасный мир конкуренции с перловкой!
Андрей (К).
This archive was generated by hypermail 2.0b3 on Thu Dec 02 1999 - 16:21:34 MSK