Джон Бэкус: опубликован черновик истории его функционального проекта

Пол Макджонс опубликовал помеченный как черновик обзор проекта Джона Бэкуса по функциональному программированию. Его цель, сохранить уцелевшие документы и поместить в контекст исследования Бэкуса, который разрабатывал последовательность аппликативных, функциональных и функционально-уровневых языков с периода до 1969 года до своего ухода на пенсию в 1991-м.

Отправной точкой стала обсуждавшаяся в конце 1960-х «кризис программного обеспечения»: компьютеры становились быстрее, память, больше, а цены снижались, однако амбициозные проекты сталкивались с перерасходом средств, срывами сроков и низкой надёжностью. После успеха Speedcoding и FORTRAN, участия в проекте Algol и получения статуса IBM Fellow в 1963 году Бэкус примерно в 1967, 1969 годах вновь взялся за проблему упрощения программирования.

В конце 1969 года к работе присоединился Динес Бьёрнер. Он объяснял Бэкусу детали лямбда-исчисления и комбинаторной логики Карри, а затем написал на PL/I интерпретатор для языка Бэкуса, тогда называвшегося RedSys. В докладе 1972 года «Языки редукции и программирование без переменных» Бэкус представил язык Red: функции собирались из базовых функций с помощью композиции и «комбинирующих форм», а каждая функция получала один неявный аргумент, которым могла быть последовательность. В 1972 году Фил Саммерс сделал экспериментальную реализацию Red на Lisp; в 1973-м Бэкус уточнил систему языков и представил Red на первой конференции ACM Principles of Programming Languages.

В годовом отчёте IBM Fellow за 1973 год Бэкус утверждал, что простые языки, работающие с целыми сущностями, могут радикально снизить стоимость программирования, тогда как развитие традиционных языков лишь наращивает сложность. Он связывал это с «узким местом фон Неймана», поэлементной, «слово за раз», природой обычных компьютеров и унаследованных от них языков. Патриция Голдберг согласилась с важностью снижения стоимости программирования и с необходимостью выйти за рамки языков типа PL/I, но не была убеждена, что следует полностью отказаться от явного хранилища и оператора присваивания.

В Тьюринговской лекции 1977 года Бэкус предложил альтернативу: неформальный функциональный язык FP, связанный с ним формальный FFP, алгебру функциональных программ и основу для аппликативных переходов состояния (AST), описывающих системы, зависящие от истории. FP строился из примитивных функций для чисел, атомов и последовательностей и из форм, позволяющих составлять более сложные функции; в тексте разобран пример умножения матриц через композицию функций. История также отмечает эксперименты других исследователей, включая машину редукции в GMD в Германии и проект FFPM в Университете Северной Каролины.

Ключевые факты

  • Черновик охватывает исследования Джона Бэкуса по функциональным языкам от периода до 1969 года до его ухода на пенсию в 1991-м.
  • В 1969, 1972 годах Динес Бьёрнер помогал Бэкусу с лямбда-исчислением, комбинаторной логикой Карри и интерпретатором RedSys на PL/I.
  • Доклад Бэкуса 1972 года представил Red, язык, где функции строятся из базовых функций через композицию и комбинирующие формы; экспериментальную реализацию на Lisp сделал Фил Саммерс.
  • Бэкус противопоставлял простые языки для целых сущностей традиционному «слово за раз» подходу и называл его следствием узкого места фон Неймана.
  • В лекции Тьюринговской премии 1977 года он предложил языки FP и FFP, алгебру функциональных программ и основу AST для систем, зависящих от истории.

Почему это важно

Это первичный исторический материал о длительном исследовательском проекте одного из создателей FORTRAN. Он показывает, что критика Бэкуса традиционных языков была связана не только с синтаксисом, но и с попыткой получить простую математическую основу для построения и анализа программ.

Кому это важно

Материал будет полезен тем, кто изучает историю языков программирования, функциональное программирование и происхождение идей о композиции функций. Для разработчиков он даёт контекст, в котором появились FP и FFP, а также аргументы Бэкуса против чрезмерной сложности языков.

Как это применить

Практической инструкции или готового современного инструмента в черновике нет. Его можно использовать как навигатор по исходным докладам, экспериментам с Red, лекции 1977 года и связанным проектам машин редукции, перечисленным в тексте.

Можно ли доверять

Автор прямо помечает страницу как черновик и просит присылать комментарии, исправления и дополнительные материалы. При этом обзор опирается на названные исследовательские отчёты, публикации и воспоминания участников; спорные интерпретации стоит сверять с указанными первоисточниками.

Риски и подводные камни

Это не завершённая академическая история и не описание готовой промышленной технологии. Часть формулировок в тексте осторожна: например, о реализации Red Саммерсом сказано как об эксперименте, а о некоторых проектах приведены ссылки на вторичные источники. Нельзя переносить идеи FP и FFP на современные языки без учёта их исторического контекста.

«Обычные языки программирования становятся всё более огромными, но не более сильными.»

— Джон Бэкус, Тьюринговская лекция 1977 года