Re: Ядро Рефал


Subject: Re: Ядро Рефал
From: Arkady Klimov (klark@bagirra.net)
Date: Fri Nov 02 2001 - 13:14:37 MSK


Простота рефала обманчива: в его реализации приходится опираться
на совершенно специфичиский "рантайм", включающий особую модель
данных со своими механизмами сборки мусора и т.п. Понятия рефала уж
очень оторваны от понятий архитектуры компьютера. Идея массивного
представления выражений - важный шаг на пути сближения этих двух
миров.

Аккуратный перехват ошибок и весьма осмысленная диагностика всегда
считались ценнейшим качеством рефала, за которое, не в последнюю
очередь, его и любили программисты. Типизации же в рефале просто нет,
что тоже в некотором смысле ценность, и потому на run-time диагностику
возлагаются задачи, обычно решаемые компиляторами при проверке типов.
А программирование на рефале в стиле "не порождающих ошибки функций"
будет только затруднять отладку.

То, о чем пишет Кондратьев - возможность возбудить перехват
с осмысленным дампом при зацикливании программы - тоже ценнейшая
штука, к большому сожалению отстутвующая в большинстве реализаций
рефала (о других языках и не говорю). А в нынешнем рефале-6 это не
только диагностика, но и возможность вмешаться в процесс, продолжить
его по тому или иному пути и т.п. И совсем это не дорого: при опросе
"датчика" раз на 50-100 шагов замедление не превышает и 1%.

Ящики? Да без них рефал никто не станет использовать, хотя это и внешняя
по отношению к языку сущность. В рефале-6, на мой взгляд, они доведены до
некоторой завершенности. Суперкомпилятору они, конечно, мешают, но
объектно-ориентированная парадигма "мешает" куда больше, тем не менее
отбрасывать ее - значит уклоняться от решения проблем, которые ставит
сама жизнь.

Согласен, что ввод-вывод и прочие внешние операции спорно встраивать в сам язык.
Но возможность вызывать рефал из чего-то другого здесь не лекарство, так как
оставляет неудовлетворенной потребность вызывать ИЗ РЕФАЛА что-то другое.
Наверно, правильнее был бы грамотный интерфейс по вызову из рефала функций
написанных на других языках (Яве, например), и наоборот.

Аркадий.

----- Original Message -----
From: Mike Potanin <potanin@mccme.ru>
To: refal <refal@botik.ru>
Sent: Friday, November 02, 2001 12:03 PM
Subject: Ядро Рефала

|
| Рефал по сути язык очень просто, но конкретные реализации навешивают на
| него столько, что возникают проблемы, например с переносимостью.
| По моему стоит обсудить ядро языка, которое по первых легко
| реализовывалось (с точностью до представления строк), во вторых
| поддерживалось бы суперкомпилятором. Остальное попытаться вынести в
| библиотеки или вообще выкинуть.
| Например нужен ли перехват ошибок? Написать программу не порождающюю
| ошибок можно добавив в каждую функцию по строчке. Правильно типизированные
| программы ошибки порождать почти не должны. Перехват ошибки операция
| дорогая и использовать их как способ ветвления не эффективно.
| Особых приимуществ в надежности они не дают.
| Суперкомпилятор их тоже врядли съест.
| Возникает вопрос - нужны ли они вообще?
| Второй пример странной конструкции это ящики вообще и ссылки на ящики в
| особенности. Они не доставляют радости ни суперкомпилятору ни сборщику
| мусора.
| Еще с моей точки зрения "лишней деталью" в Рефале является ввод-вывод.
| Программировать его на Рефале не большое удовольствие, приятней было бы
| вызывать Рефал из программы скажем на TCL. Каждый бы занимался своим
| делом.



This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:24:59 MSD