Код
#подборки

Рефал, Эль и Рапира. Куда пропали советские языки программирования?

Если Рапира для вас — оружие, Эль — крепкое пиво, а Рефал — когда кто-то шепелявит, вам срочно надо узнать о советских языках программирования.

Оля Ежак для Skillbox

О советских языках программирования сегодня говорят редко. Машины, которые их понимают, стали экспонатами технических музеев или решают секретные задачи для оборонки и в закрытых НИИ. А ведь некоторые из них не уступали по мощности более популярным аналогам и содержали очень смелые идеи. Посмотрим на самые знаменитые языки программирования Made in USSR.

Рефал

В шестидесятые годы в промышленности и науке уже активно применяли высокоуровневые языки. Учёные в США и Канаде писали программы на Fortran, в Европе и СССР — на Algol. Даже у бизнеса был свой язык программирования — COBOL. Все они поддерживали императивную парадигму: программист подробно описывал каждый этап вычислений с помощью переменных и операторов. Императивная парадигма считалась перспективной и единственно верной.

На этом фоне декларативный Рефал казался львом Бонифацием в Сибири. Его создал в 1966 году Валентин Турчин — математик, кибернетик, философ, правозащитник и поэт (Тони Старк, ты ли это?).

Валентин Турчин. Фото: Public Domain

Идеи Турчина были как будто из далёкого будущего — он опередил своё время на десятилетия и даже предсказал цифровое бессмертие в своём «Кибернетическом манифесте». Он любил мечтать и размышлять о высоком — даже язык программирования писал для потомков.

Турчин считал, что человек — это кибернетическая система, а сознание — управляющая программа. Наши кожа, кости и другие ткани постоянно обновляются. А значит, когда-нибудь люди заменят этот материал на кремний или металл, а сознание будет жить неограниченно долго.

Чтобы понять концепцию Рефала, необходимо понять философские воззрения его создателя. Для него эволюция — это череда переходов от мелких систем к более сложным, высокоуровневым. Они воспроизводят системы предыдущего уровня, а потом, в свою очередь, объединяются в системы более высокого порядка. Турчин назвал эти превращения «метасистемными переходами».

Пример из промышленности: раньше у нас были строительные инструменты, потом появились станки для производства инструментов, а потом сделали ПО для проектирования таких станков.

Пример из ИТ: раньше сайты писали на чистом HTML и CSS, потом появились конструкторы сайтов, а затем — no-code-платформы вроде Bubble, на которых можно создавать сами конструкторы сайтов.

В программировании Турчин видел ту же тенденцию. Он создавал Рефал как язык для описания языков — надстройку над всеми языками вроде Fortran, Algol и BASIC. На Рефале можно было создавать новые языки для решения узких задач. Например, Турчин написал транслятор с Algol 60 на язык ассемблера.

Турчин заложил в Рефал прорывные идеи: функциональное программирование, рекурсия и перехват исключений — позже они разошлись по другим языкам. Но советские инженеры не особо задумывались о миссии языка и метасистемных переходах, поэтому писали на Рефале преобразования алгебраических выражений и переводчики для естественных языков.

Приятно, что Рефал до сих пор жив и развивается. Он стал тем самым метаязыком, на котором учёные создают новые языки программирования. Но не удивляйтесь, если не знаете ни одного из них: эти языки создают специально для военных компьютеров, а не для «Hello, World!». Только вот зачем военным ещё одна армия — армия языков программирования, — известно только самим военным. Гостайна :)

Информацию о Рефале можно найти в русскоязычном комьюнити.

Эль-76

В семидесятые-восьмидесятые годы группа советских инженеров разработала серию суперкомпьютеров «Эльбрус». Они параллельно обрабатывали несколько инструкций и даже обзавелись встроенными типами данных. В то время у операционных систем и языков программирования не было типов — и из-за этого постоянно возникали ошибки вроде деления символа на число. Но главной фишкой «Эльбруса» стала работа с высокоуровневыми языками.

Специально для него учёный Владимир Пентковский с командой Института точной механики и вычислительной техники разработал язык Эль-76. Он был высокоуровневым, но его часто называли автокодом, потому что языка более низкого уровня в «Эльбрусе» не было. Программы на всех остальных языках транслировались в Эль.

Владимир Пентковский. Фото: «Википедия»

Эль был полноценным языком программирования с джентльменским набором возможностей и операторами на русском языке (привет 1С-программистам и импортозамещению). Что в нём было:

  • структурное программирование;
  • циклы;
  • условные операторы;
  • оператор case;
  • обработка исключений.
Пример кода на Эль-76. Фото: Public Domain

Инженеры любили Эль за встроенные типы данных. Сейчас трудно понять, насколько это было круто, — типы есть уже во всех языках. А вот раньше программист заботился о том, чтобы машина чётко поняла, с чем имеет дело: целым числом, символом или логическим выражением. И если вдруг машина начинала перемешивать типы как ей вздумается и без предупреждений выдавать непредсказуемый результат, найти источник таких ошибок было очень трудно.

Идея русскоязычного программирования была заманчивой и идеально встраивалась в политический курс СССР, но история и экономика распорядились иначе. Сегодня не осталось ни одной машины, которая «разговаривает» на Эль-76. «Эльбрусы» производились для внутреннего рынка, а IBM, Microsoft и Apple продавали компьютеры по всему миру. Под их «железо» писали программы на Fortran, BASIC и C. Поэтому Эль, как и многие другие кириллические языки программирования, умер.

Документацию и эмулятор Эль-76 можно найти на странице со статьёй Евгения Степанищева.

Учебный язык Рапира

В 1985 году предмет «Основы информатики и вычислительной техники» вошёл в основную школьную программу, а в советских школах и институтах начали обучаться программированию на Рапире (расширенный адаптированный поплан-интерпретатор, редактор, архив). До этого о языке знала только элита — читатели научного журнала «Квант» и его «Заочной школы программирования», а создали его в начале восьмидесятых выпускники Новосибирского государственного университета под руководством Геннадия Звенигородского.

Геннадий Звенигородский, один из создателей Рапиры. Фото: архив академика А. П. Ершова

Как и в Эль-76, операторы в Рапире — слова русского языка. При этом у Рапиры были и «локализации» — версии на английском, эстонском и грузинском. Школьники и студенты первых курсов писали на ней прикладные программы:

  • калькуляторы;
  • алгоритмы поиска и сортировки файлов;
  • простые игры вроде костей;
  • алгоритмы решения математических задач с помощью рекурсии.
Пример кода на Рапире. Фото: Public Domain

К преподаванию Рапиры подошли серьёзно: детей учили не только составлять инструкции, но и искать ошибки. У Рапиры даже была трассировка вызова процедур — разработчик мог посмотреть состояние переменных на каждом шаге программы.

Но и Рапира безвременно почила. Московская школа программирования продвигала европейский Algol, а пару лет спустя его заменил BASIC, который в итоге уступил место Pascal. Так что, несмотря на современность и мощность, у Рапиры просто не было шансов остаться даже на школьных компьютерах.

Подробнее узнать об устройстве Рапиры можно в спецификации.

Почему советские языки программирования проиграли буржуазным

СССР не экспортировал вычислительную технику за границу, а ведь именно через неё распространялись языки программирования. Поэтому советские языки проиграли западным. Кодеры до сих пор пишут программы на Lisp и Erlang, а о более мощном Рефале вспоминают только наши учёные.

Конечно, в СССР были и другие языки программирования — те же Сигма, Алмо или Бета. Но для чего их использовали, помнят только стены исследовательских институтов. Если вы любитель компьютерной экзотики или интересуетесь ламповой историей программирования, обязательно познакомьтесь с ними — заложенные в этих языках идеи нередко опережали своё время.


Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована