Leonid F. Belous (BELOUS@ilt.kharkov.ua)
Wed, 23 Dec 1998 21:19:59 -0200
Андрей, Аркадий, привет!
Привет также всем рефалописателям, рефалочитателям и
рефалопочитателям :) ! Примите мои поздравления с вроде бы
надвигающимся Новым Годом!
Андрей, прошу прощения, что отвечаю с задержкой. Сие вовсе не
означает, что мне не интересны твои вопросы. Как всегда перед
новым годом совершенный цейтнот, думаю как и у всех нас.
Если сказать коротко, то я бы хотел, чтобы Рефал+ сначала был
доведен в том виде как он есть "AS IS" без попыток расширений куда
бы то ни было. Доведен до такого уровня, чтобы был на всех
платформах, имел единую документацию и БЫЛ БЫ СОПРОВОЖДАЕМЫМ!
Что касается вопросов об интерфейсах с COM-CORBA, то я не пытаюсь
на них ответить, поскольку не являюсь пока большим специалистом в
этих вопросах. Хотя, чуть было с Андреем Тереховым, не
организовали совместный проект (Украина-Россия) по использованию
CORBA технологии для управленния технологическими процессами через
Интернет. Однако, потенциальные спонсоры вероятно не дооценили
масштабность проекта :=), и финансирование не состоялось.
Заранее прошу прощения за возможный оффтопик, но мне хотелось бы
все-таки рассказать о том, как я познакомился с языком Рефал, и
зачем он мне нужен при таком разнообразии богатейших
инструментальных средств, которое наблюдается сегодня.
Первое знакомство состоялось в 1966 году. В Киевском журнале
Кибернетика была опубликована моя (совместно с И.Р.Аксельродом)
статья "О переработке буквенно-аналитической информации на ЦВМ"
и, по моему, в этом же номере (если не ошибаюсь) было сообщение
Валентина Федоровича Турчина о языке Рефал. Тогда, откровенно
говоря, мне было совершенно непонятно зачем такой язык нужен.
Второе знакомство состоялось гораздо позже. Через Сашу Красовского
я получил реализацию Рефал системы для машин типа М-20. К тому
времени была реализована на М-222 система Сириус (если еще помнишь
такую). Для тех кто об этом не знает, проще всего сказать, что из
современных систем по идеологии система Сириус была ближе всего к
Maple.
Мне понравилось высказывание одного моего университетского
коллеги, который сказал, что "мы пытались сделать ракету в век
Леонардо-да-Винчи". Тем не менее эта "ракета" была доведена до
уровня, когда она сопровождалась примерно пять лет на машинах типа
М-222 через комиссию КЭВМ (молодежь о такой уже и не знает). Это
были 70-е годы. Система, например, позволяла выполнять
аналитические выкладки в комбинации с компилятивными вычислениями
(автоматически подключались численные методы решения
диф.уравнений, численного интегрирования, нахождения корней). Был
сделан даже графический вывод на дисплей (через СМ-4,
состыкованную с М-222) и графопостроитель.
А теперь, собственно говоря, о том, причем здесь Рефал?
Система Сириус разрабатывалась не один год, кроме ее авторов
в этом деле активно участвовали студенты. Технология ее построения
начиналась с ассемблера (а точнее, прямо с кодов на М-20, ассемблер
появился у нас только на м-222), затем, в преддверии перехода
на ЕС ЭВМ, была создана система построения трансляторов - Спутник,
в которой, собственно были сформулированы требования к языку,
который был бы удобен для переноса системы Сириус на другие
машины, прежде всего на ЕС ЭВМ. Собственно говоря, Спутник -
достаточно простой, специализированный язык операторного типа,
в котором была реализована машинная независимость (сам он был
реализован методом раскрутки) и эффективно реализованы операции
арифметики произвольно-точной арифметики и подсистема рациональных
функций.
К сожалению, слишком поздно, я узнал Рефал достаточно близко.
После знакомства с Андреем Климовым и покойным Сашей Романенко
я открыл для себя, что одна из основных операций в языке Сириус -
"восстановление цепочки", или попросту говоря операция суперпозиции
функций, (например, программа на языке Сириус для вычисления
f(x) = a * x + b;
b = c + 3;
g(y) = sin(y+3.5);
f(f(g(b+c))) //
производила нужные буквенные вычисления)
с точки зрения реализации сильно напоминала реализацию
Рефал-машины. После этого я стал применять Рефал уже как
инструментальное средство. Пока мои коллеги усиленно использовали
Спутник при переходе на ЕС-ЭВМ, я переписал на Рефале практически
все интерфейсные вещи. Например, система Сириус тогда была
состыкована со специализированной системой для работы с
рациональными функциями Горьковского НИИПМК Алгебра-0, написанной
на Фортране. Алгоритм восстановления цепочки просто выродился, как
таковой. Рефал оказался для этих задач просто незаменимым
инструментом. Не хочу сказать, что все было безоблачным в
использовании Рефала. Однако,.. не будем о плохом.
Примерно в тоже время я познакомился с языком REXX под VM/SP.
Конкретная задача, которая была сделана с его помощью - сетевой
шлюз СМ-1420 <--> ЕС-1045 через устройство связи УСВМ (это было до
эпохи победного шествия Ethernet). Я обеспечивал сторону ЕС под
VM/SP (REXX+assembler), мой коллега работал на СМ под RSX-11m
(Assembler + C). Так что степень удобства REXX я оценил сполна,
особенно при отладке.
Однако, REXX мне явно не подходил как замена Рефалу в предыдущей
задаче.
Сегодня мне приходится заниматься совсем другими проблемами,
но ностальгия по Рефал системе, как основном инструментальном
средстве - осталась.
Например, прямо сейчас, мне хотелось бы использовать Рефал вместо
Perl при построении скриптов CGI,
Хотелось бы иметь такой же дружественный интерфейс и on-line
help, как в системе Maple.
Прошу прощения за .... (как говориться Остапа понесло ... :=)).
С наступающим Новым Годом!
--Леонид Белоус
------------------------------------------------------------------
From: "Klimov, Arkady" <klimov@paragraph.ru>
To: "'Andrei Klimov'" <klimov@spp.keldysh.ru>,
Refal Plus mailing list
<refal-plus@botik.ru>
Cc: Sergei Romanenko <roman@spp.keldysh.ru>,
"Klimov, Arkady"
<klimov@paragraph.ru>
Subject: RE: about books
Date: Mon, 21 Dec 1998 18:39:18 +0300
X-Mailer: Internet Mail Service (5.5.1960.3)
Status: RO
> -----Original Message-----
> From: Andrei Klimov [SMTP:klimov@spp.keldysh.ru]
> Sent: Saturday, December 19, 1998 11:13 PM
> To: Refal Plus mailing list
> Cc: Sergei Romanenko; Arkady Klimov
> Subject: Re: about books
>
> Леня, добрый день!
>
> >Андрей, если помнишь, моя голубая мечта состояла в том, чтобы Рефал
> >был доведен до того уровня удобства, как в свое время был REXX под
> VM/SP.
>
> Очень хорошо помню! Сам о том мечтал!
>
> Хорошую тему ты поднял. Столь важную, что это письмо стоило сразу в
> mailling list направить. Чтобы привлечь к ней внимание остального
> сообщества и спровоцировать обсуждение, отвечаю через refal-лист.
>
> >Хотя REXX и сейчас под ОS/2 не в загоне, но моя неприязнь к этой
> >системе тебе тоже известна.
> >Но REXX это не то, также как и Perl. Вполне солидарен с точкой зрения
> >Дмитрия на Perl.
>
> Тогда возникает такой вопрос:
>
> А какие нужны средства в Рефале и в Рефал-системе, чтобы его
> использование в качестве scripting language -- как в классическом
> стиле, продемонстрированном REXX-ом, так и в современном стиле в духе
> Visual Basic-а и JavaScript-а -- было реальным и удобным?
>
> Ведь перекрыть удобство REXX-а не так просто! А может вообще для
> данной роли лучше подходят императивные языки (REXX, Perl, Visual
> Basic, Java...) и функциональный язык Рефал мало подходит?
>
> Для затравки обсуждения вот мой список требований и вопросов по
> отношению к Рефалу как scripting language:
>
> 1) нужен внятный и хорошо документированный интерфейс в
> широко-распространенным языком, по-видимому, в первую очередь с С, а
> потом, может и с Java;
[Klimov, Arkady] Здесь, видимо, имеется в виду собственный
внутренний интерфейс Рефал-С, который предназначен прежде всего для
повышения эффективности. Он, конечно, нужен, но не имеет, по-моему,
отношения к "Рефалу как scripting language", так же как не имеет отношения к
интерфейсам Рефал-Corba и Рефал-COM, о которых говорится ниже, и которые,
наоборот, имеют к "Рефалу как scripting language" самое непосредственное
отношение.
> 2) более того, наверное, нужен не просто кабы какой интерфейс с С, но
> возможность определять подсистему, запрограммированную на Рефале, как
> CORBA-объект и/или DCOM-объект, чтобы к ней можно было обращаться как
> локально, так и удаленно, по единообразным правилам;
>
> 3) при этом, и из Рефал-программы надо вызывать CORBA- и DCOM-объекты,
> созданные на других языках;
>
> 4) нужны ли и какие средства автоматической перекодировки данных?
> язык описания интерфейса рефал-объектов с CORBA-объектами, Рефал-IDL?
[Klimov, Arkady] Был бы весьма полезен некий Рефал-IDL, покрывающий
все вышеназванные интерфейсы. Он должен содержать какие-то средства описания
отображения данных и отображения вызовов.
> 5) будет ли этого достаточно, чтобы управлять системными объектами так
> же легко как и из REXX-а? (вспомним, что управляемые из REXX-а
> подсистемы имели специально отработанный интерфейс с REXX-ом в
> терминах строчный команд, которые мог посылать как user с терминала,
> так и REXX-программа) [Klimov, Arkady] Это-то не проблема. Проблема
> только в синтаксисе. В рефале команда - это вызов функции. Если писать
> честно, то надо начинать и кончать угловой скобкой, а между ними - имя
> команды-функции и операнды. Среди операндов могут встречаться другие
> вызовы функций. Вопрос я вижу в том, согласиться ли юзер писать всегда
> внешние угловые скобки. Или нужно дать облегченный формат, где они
> навешиваются автоматически (в Рефале-6 так и сделано в командной моде).
>
> 6) насколько важна динамическая компиляция и загрузка программ для
> роли scripting language? [Klimov, Arkady] Конечно, важна. Более того,
> надо постараться сделать так, чтобы она была вообще незаметна для
> пользователя. Как будто загружаюся и выполняются исходные тексты прямо на
> Рефале, разумеется, динамически. Может, нужна также подсистема управления
> версиями: если исходный файл изменился - он автоматически должен быть
> перезагружен. (Интересно, а в обычных скриптовых языках такое есть?).
> Кроме того, в командном режиме должна быть команда "определить функцию".
>
> И как сделать все это красиво, удобно, с достаточной полнотой.
>
> Какие еще требования к Рефал-системе надо предъявить, какие вопросы
> решить, чтобы Рефал мог конкурировать с REXX-ом, Perl-ом, и т.д.?
[Klimov, Arkady] Думаю, будет достаточно названного, то есть
автоматическая загрузка из исходников и COM-CORBA интерфейсы. Последнее,
естественно, потребует тщательной програботки модели ООП для Рефала. К
счастью, можно обойтись без наследования классов (реализаций), поскольку ни
COM, ни CORBA их не предоставляют.
This archive was generated by hypermail 2.0b3 on Tue Dec 29 1998 - 11:29:21 MSK