Представьте, что вы программист 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 смогли создать среду исполнения, которая была не только интерактивной, но и гибкой, и масштабируемой.
Сегодня мы можем только удивляться тем о