Представьте, что вы программист 1950-х годов. Вы набираете код на перфокартах, отдаёте их оператору и ждёте результатов часами или даже днями. Одна ошибка — и целый день пропал. Но в 1960 году в MIT появился компьютер PDP-1, который изменил всё. Вместе с языком Lisp он принёс интерактивность в программирование. Сегодня мы рассмотрим, как это произошло.

Введение: На заре интерактивной эры

Сегодня мы привыкли к мгновенной обратной связи от наших компьютеров. Мы пишем код в интерактивных блокнотах, запускаем REPL (Read-Eval-Print Loop) в терминале и ожидаем, что интерпретатор ответит нам за доли секунды. Однако в конце 1950-х годов программирование выглядело совершенно иначе. Это была эпоха пакетной обработки данных (batch processing). Программист набивал код на перфокартах, отдавал колоду оператору огромного мейнфрейма и ждал результатов часами, а иногда и днями. Одна синтаксическая ошибка означала потерю целого дня.

Всё изменилось в 1960 году, когда в стенах Массачусетского технологического института (MIT) пересеклись две революционные концепции: элегантный, математически чистый язык программирования Lisp, созданный Джоном Маккарти, и первый коммерческий интерактивный компьютер компании DEC — PDP-1 (Programmed Data Processor-1). Портирование Lisp на PDP-1, осуществленное группой энтузиастов под руководством Стива Рассела (будущего создателя легендарной игры Spacewar!), не просто дало жизнь новой реализации языка. Оно заложило фундамент для хакерской культуры, интерактивной отладки и искусственного интеллекта в том виде, в каком мы их знаем сегодня.

Технические детали: Архитектура PDP-1 Lisp

От перфокарт к терминалу: Философский сдвиг Lisp

Изначально Lisp (LISP I / LISP 1.5) разрабатывался для IBM 704 — массивного лампового мейнфрейма. IBM 704 был классической «машиной в белом халате»: доступ к ней имели только избранные операторы, а программисты общались с ней исключительно через колоды перфокарт. Джон Маккарти, создатель Lisp, быстро понял, что пакетная обработка душит потенциал его языка. Lisp, основанный на лямбда-исчислении и динамическом управлении памятью, требовал интерактивности. Он создавался для символьных вычислений, искусственного интеллекта и быстрых экспериментов.

Появление PDP-1 в MIT в 1960 году произвело эффект разорвавшейся бомбы. Этот компьютер, подаренный институту компанией Digital Equipment Corporation, был относительно небольшим (размером с несколько домашних холодильников) и, главное, предназначался для индивидуального использования. У него не было перфокарт в качестве основного интерфейса. Вместо них использовались:

  • Консольная пишущая машинка Friden Flexowriter для ввода команд и вывода текста;
  • Высокоскоростной считыватель и перфоратор бумажной ленты;
  • Круглый электронно-лучевой дисплей (Type 30 CRT), способный отображать точки.

Компромиссы и ограничения

Разработчики Lisp для PDP-1 столкнулись с серьезными ограничениями по памяти. PDP-1 имел всего 4096 18-битных слов памяти, что было крайне мало для современных языков программирования. Чтобы уместить среду исполнения Lisp, разработчикам пришлось пойти на ряд технических компромиссов:

Заключение

Портирование Lisp на PDP-1 стало вехой в истории компьютерных наук. Этот проект показал, что интерактивное программирование может быть эффективным и удобным. Разработчики Lisp для PDP-1 смогли создать среду исполнения, которая была не только интерактивной, но и гибкой, и масштабируемой.

Сегодня мы можем только удивляться тем о