54 подписчика
Привет, эксперты!
Неделю, следующую за днем программиста, хочется посвятить импортозамещению, которое мы потеряли (но, надеемся, со временем восстановим) — советским языкам программирования и их авторам. Сегодня — про один из самых оригинальных (и популярных) советских языков программирования.
В 60-е годы, на фоне всеобщего увлечения Фортраном, советский физик и кибернетик Валентин Турчин создал Рефал (акроним от «рекурсивных функций алгоритмический») — язык программирования, который представлял из себя целую философию программирования:
«Язык программирования не должен быть инструментом для написания программ. Он должен быть средством для выражения алгоритмов»
Рефал был ориентирован на обработку символов, что позволяло решать задачи перевода, создавать нейронные сети и системы искусственного интеллекта — сферы, которые тогда только начинали развиваться.
Программа на Рефале похожа на набор модулей (файлов), каждый из которых состоит из функций. Самое интересное тут — «рефал-функция»: набор предложений, каждое из которых состояло из образца и шаблона. На вход функции подавалось выражение, а вычисление представляло собой последовательное сопоставление этого выражения с образцами из первого, второго и следующих предложений. Если сопоставление удавалось, функция формировала результат — новое рефал-выражение, используя шаблон из найденного предложения.
Представьте, что у нас есть «рефал-функция» с одним правилом:
Образец: add(X, Y)
Шаблон: X + Y
Если мы подадим на вход этой функции add(2, 3), то:
1. Образец add(X, Y) совпадает с выражением add(2, 3).
2. Переменной X присваивается значение 2, а Y — значение 3.
3. В шаблоне X + Y происходит замена переменных, и получается 2 + 3.
4. В «поле зрения» Рефал-автомата вместо add(2, 3) появляется 2 + 3.
В этом и заключается красота Рефала: он позволяет писать программы не с помощью последовательных инструкций, а с помощью правил, которые описывают структуру выражений и их преобразование. Это делает программы на Рефале очень компактными и легкочитаемыми.
В классическом Рефале, если сопоставление не происходило, программа аварийно завершалась. В более поздних версиях языка эту особенность заменили на постоянное порождение неуспеха функции.
* * *
Турчин был известен своей критикой советской действительности, в свободное время был соавтором и редактором знаменитых сборников «Физики шутят» и «Физики продолжают шутить», где сатирически высмеивались реалии большой страны. Со временем «неудобного» ученого выдавили в США, где он продолжил развивать свой язык и философию программирования. После эмиграции Турчина советские ученые зафорсили анекдот:
— Слышали, вышла новая книга Турчина?
— Какая?
— «Физик дошутился».
Фигуре Валентина Фёдоровича Турчина мы посвятим отдельный пост.
#мертвые_языки
2 минуты
14 сентября 2024