вторник, 19 октября 2010 г.

Документация к Модульному Рефалу

Начал писать документацию к Модульному и Простому Рефалам. Для этой цели завёл новый блог: http://mrefal.blogspot.com/. Пока там написано только введение.

воскресенье, 17 октября 2010 г.

Модульный Рефал: история и мотивация

Данный пост является репостом постов #829362#844329 и #858270 моего микроблога на Жуйке. Текст не является точным репостом, т.к. немного подправлен.

Введение

Есть такой функциональный язык программирования — Рефал (рекурсивные фукции, алгоритмический язык, Refal — recursive functions, algorithmic language). Придуман в СССР кибернетиком Турчиным где-то в 60-70 годы прошлого века. Как любят писать во введении в мануалах ко всяким диалектам (см. ниже) Рефала, «сначала Рефал создавался как метаалгоритмический язык для описания семантики других языков программирования, но с появлением эффективных реализаций на ЭВМ он стал применяться как обычный язык программирования». Применяли его преимущественно для преобразований сложных алгебраических выкладок, написания трансляторов (на Рефале 2 был написан компилятор Фортрана) и других задач символьных вычислений.

За время долгой истории Рефала было разработано несколько различных малосовместимых между собой диалектов: первая реализация, позже названная базисным Рефалом (с очень странным синтаксисом), Рефал 2 с не странным, но тем не менее, очень неудобным синтаксисом, ориентированном на перфокарты, Рефал 5 с условиями и блоками, Рефал Плюс с «многоаргументными» функциями, блоками и хитрой системой неуспехов и откатов, Рефал 6 — тот же Рефал 5, но тоже с хитрой системой неуспехов и откатов, но с более согласованным синтаксисом, по сравнению с Рефалом Плюс.

У нас в универе (МГТУ имени Н. Э. Баумана) на кафедре ИУ9 разрабатывают Рефал 7. В УдГУ ведётся разработка Динамического Рефала (Dynamic Refal, D-Refal). Я сам разработал два диалекта: Модульный Рефал (основной проект) и Простой Рефал (своего рода черновик).