Рефал, Эль и Рапира. Куда пропали советские языки программирования?
Если Рапира для вас — оружие, Эль — крепкое пиво, а Рефал — когда кто-то шепелявит, вам срочно надо узнать о советских языках программирования.
Оля Ежак для Skillbox
О советских языках программирования сегодня говорят редко. Машины, которые их понимают, стали экспонатами технических музеев или решают секретные задачи для оборонки и в закрытых НИИ. А ведь некоторые из них не уступали по мощности более популярным аналогам и содержали очень смелые идеи. Посмотрим на самые знаменитые языки программирования Made in USSR.
Рефал
В шестидесятые годы в промышленности и науке уже активно применяли высокоуровневые языки. Учёные в США и Канаде писали программы на Fortran, в Европе и СССР — на Algol. Даже у бизнеса был свой язык программирования — COBOL. Все они поддерживали императивную парадигму: программист подробно описывал каждый этап вычислений с помощью переменных и операторов. Императивная парадигма считалась перспективной и единственно верной.
На этом фоне декларативный Рефал казался львом Бонифацием в Сибири. Его создал в 1966 году Валентин Турчин — математик, кибернетик, философ, правозащитник и поэт (Тони Старк, ты ли это?).
Идеи Турчина были как будто из далёкого будущего — он опередил своё время на десятилетия и даже предсказал цифровое бессмертие в своём «Кибернетическом манифесте». Он любил мечтать и размышлять о высоком — даже язык программирования писал для потомков.
Турчин считал, что человек — это кибернетическая система, а сознание — управляющая программа. Наши кожа, кости и другие ткани постоянно обновляются. А значит, когда-нибудь люди заменят этот материал на кремний или металл, а сознание будет жить неограниченно долго.
Чтобы понять концепцию Рефала, необходимо понять философские воззрения его создателя. Для него эволюция — это череда переходов от мелких систем к более сложным, высокоуровневым. Они воспроизводят системы предыдущего уровня, а потом, в свою очередь, объединяются в системы более высокого порядка. Турчин назвал эти превращения «метасистемными переходами».
Пример из промышленности: раньше у нас были строительные инструменты, потом появились станки для производства инструментов, а потом сделали ПО для проектирования таких станков.
Пример из ИТ: раньше сайты писали на чистом HTML и CSS, потом появились конструкторы сайтов, а затем — no-code-платформы вроде Bubble, на которых можно создавать сами конструкторы сайтов.
В программировании Турчин видел ту же тенденцию. Он создавал Рефал как язык для описания языков — надстройку над всеми языками вроде Fortran, Algol и BASIC. На Рефале можно было создавать новые языки для решения узких задач. Например, Турчин написал транслятор с Algol 60 на язык ассемблера.
Турчин заложил в Рефал прорывные идеи: функциональное программирование, рекурсия и перехват исключений — позже они разошлись по другим языкам. Но советские инженеры не особо задумывались о миссии языка и метасистемных переходах, поэтому писали на Рефале преобразования алгебраических выражений и переводчики для естественных языков.
Приятно, что Рефал до сих пор жив и развивается. Он стал тем самым метаязыком, на котором учёные создают новые языки программирования. Но не удивляйтесь, если не знаете ни одного из них: эти языки создают специально для военных компьютеров, а не для «Hello, World!». Только вот зачем военным ещё одна армия — армия языков программирования, — известно только самим военным. Гостайна :)
Информацию о Рефале можно найти в русскоязычном комьюнити.
Эль-76
В семидесятые-восьмидесятые годы группа советских инженеров разработала серию суперкомпьютеров «Эльбрус». Они параллельно обрабатывали несколько инструкций и даже обзавелись встроенными типами данных. В то время у операционных систем и языков программирования не было типов — и из-за этого постоянно возникали ошибки вроде деления символа на число. Но главной фишкой «Эльбруса» стала работа с высокоуровневыми языками.
Специально для него учёный Владимир Пентковский с командой Института точной механики и вычислительной техники разработал язык Эль-76. Он был высокоуровневым, но его часто называли автокодом, потому что языка более низкого уровня в «Эльбрусе» не было. Программы на всех остальных языках транслировались в Эль.
Эль был полноценным языком программирования с джентльменским набором возможностей и операторами на русском языке (привет 1С-программистам и импортозамещению). Что в нём было:
- структурное программирование;
- циклы;
- условные операторы;
- оператор case;
- обработка исключений.
Инженеры любили Эль за встроенные типы данных. Сейчас трудно понять, насколько это было круто, — типы есть уже во всех языках. А вот раньше программист заботился о том, чтобы машина чётко поняла, с чем имеет дело: целым числом, символом или логическим выражением. И если вдруг машина начинала перемешивать типы как ей вздумается и без предупреждений выдавать непредсказуемый результат, найти источник таких ошибок было очень трудно.
Идея русскоязычного программирования была заманчивой и идеально встраивалась в политический курс СССР, но история и экономика распорядились иначе. Сегодня не осталось ни одной машины, которая «разговаривает» на Эль-76. «Эльбрусы» производились для внутреннего рынка, а IBM, Microsoft и Apple продавали компьютеры по всему миру. Под их «железо» писали программы на Fortran, BASIC и C. Поэтому Эль, как и многие другие кириллические языки программирования, умер.
Документацию и эмулятор Эль-76 можно найти на странице со статьёй Евгения Степанищева.
Учебный язык Рапира
В 1985 году предмет «Основы информатики и вычислительной техники» вошёл в основную школьную программу, а в советских школах и институтах начали обучаться программированию на Рапире (расширенный адаптированный поплан-интерпретатор, редактор, архив). До этого о языке знала только элита — читатели научного журнала «Квант» и его «Заочной школы программирования», а создали его в начале восьмидесятых выпускники Новосибирского государственного университета под руководством Геннадия Звенигородского.
Как и в Эль-76, операторы в Рапире — слова русского языка. При этом у Рапиры были и «локализации» — версии на английском, эстонском и грузинском. Школьники и студенты первых курсов писали на ней прикладные программы:
- калькуляторы;
- алгоритмы поиска и сортировки файлов;
- простые игры вроде костей;
- алгоритмы решения математических задач с помощью рекурсии.
К преподаванию Рапиры подошли серьёзно: детей учили не только составлять инструкции, но и искать ошибки. У Рапиры даже была трассировка вызова процедур — разработчик мог посмотреть состояние переменных на каждом шаге программы.
Но и Рапира безвременно почила. Московская школа программирования продвигала европейский Algol, а пару лет спустя его заменил BASIC, который в итоге уступил место Pascal. Так что, несмотря на современность и мощность, у Рапиры просто не было шансов остаться даже на школьных компьютерах.
Подробнее узнать об устройстве Рапиры можно в спецификации.
Почему советские языки программирования проиграли буржуазным
СССР не экспортировал вычислительную технику за границу, а ведь именно через неё распространялись языки программирования. Поэтому советские языки проиграли западным. Кодеры до сих пор пишут программы на Lisp и Erlang, а о более мощном Рефале вспоминают только наши учёные.
Конечно, в СССР были и другие языки программирования — те же Сигма, Алмо или Бета. Но для чего их использовали, помнят только стены исследовательских институтов. Если вы любитель компьютерной экзотики или интересуетесь ламповой историей программирования, обязательно познакомьтесь с ними — заложенные в этих языках идеи нередко опережали своё время.