Как стать автором
Обновить

Тернистая история Лисп-машин: первый бум AI, война Столлмана и удивительный интерфейс

Время на прочтение11 мин
Количество просмотров15K
Всего голосов 57: ↑57 и ↓0+57
Комментарии41

Комментарии 41

Оо да, я помню PDP 10, мой дед на таком работал. Скупую мужскую слезу уронил. Спасибо автору.

Может быть, раз вы музей, вы разрешите свободно использовать ваши фотографии при помощи лицензии Creative Commons Share-Alike?

Спасибо.

Весьма интересная тема, а не подскажете, есть ли толковые материалы по архитектуре "символьных" процессоров?

На Bitsavers есть некоторое количество документов. Например, процессор Ivory, как на нашей плате, описан в поддиректории I_Machine. И про софт там много интересного.

Есть ли эмуляторы, чтобы попробовать Ivory самостоятельно?

Я вскользь упоминал это в статье: да, эмулятор существует. Больше того, он написан в самом Symbolics, когда там поняли, что совсем не успевают за commodity-железом. Изначально он был написан под DEC Alpha, но впоследствии его удалось запустить и на x86-64. Эмулятор назывался VLM (Virtual Lisp Machine), вся конструкция вместе - OpenGenera.

Но никто сейчас по-настоящему не понимает, что с правами на всю эту интеллектуальную собственность.

Черт с ними с правами, эти идеи не должны быть забыты :)

Пожалуйста расскажите про свой путь в изучении (желательно со ссылками): что и в каком порядке стоит просмотреть, чтобы быть способным написать подобные команды для Ivory или OpenGenera. Начальный уровень - лисп знаю, емаксом пользуюсь.

У Symbolics превосходная документация, как в виде книг, на сканы которых я ссылался выше, так и гипертекстовая встроенная в систему (Show Documentation). В основном я все почерпнул оттуда.

Но самым полезным было смотреть в исходники, которые поставляются вместе с системой. Какая-то команда реализует интересное поведение, и я не знаю, как его воспроизвести? Перейдем к ее определению и посмотрим там. После этого обычно ясно, что искать в документации.

Для перехода к определению нужно сделать Meta-. на команде, как в emacs?

Внутри Zmacs - да, Meta-.

В Listener текстовый курсор нельзя поставить в произвольное место окна, там Meta+левая кнопка мыши на представлении функции. Команда Find Command Symbol находит функцию по имени команды.

«Никто сейчас по-настоящему не понимает, что с правами на всю эту интеллектуальную собственность».

То есть никто не продаёт этих прав, да?

Там все сложно. Есть фирма, которой достались контракты Symbolics на поддержку.

Есть человек, которому вроде как достались права, и он вроде как работает над тем, чтобы сделать все это доступным.

Последние несколько лет ни от одних, ни от других ничего не слышно.

А если он просто выложит всё под свободной лицензией, кто ему хоть слово скажет? Кому вообще какое дело до этих программ?!
Мой опыт подсказывает, что люди, у которых есть огромная интеллектуальная собственность, не хотят ей делиться.

Нет, они не продают. Нет, рынка не существует. Нет, никто не предлагает им сделку. Нет, они никогда не встречали клиентов на такой ресурс.

Они просто не понимают, как можно отдать бесплатно ресурс, в который были вложены деньги.

Спасибо! Надо непременно почитать

В видео показано написание команд для объектного интерфейса, а как я могу создать команду которая выведет графическое представление, например, конечного автомата?

Извините, промахнулся и ответил ниже.

Хочу дополнить, что это, на самом деле, не взаимоисключающие вещи. Представлениями объектов вполне могут быть не текстовые строки, а графические элементы. Грубо говоря, когда вы заводите тип-представление и определяете, как его показывать пользователю, вместо вывода строки вы можете отрисовать что-то. С точки зрения среды это почти ничем не будет отличаться. Почти - потому что местами есть парсинг из текстового представления.

В Dynamic Windows есть некоторое количество функций для рисования графических примитивов. Подробно об этом (как и о системе представлений, которую я описывал) можно прочитать в документе Programming the User Interface на Bitsavers.

Можно как завести свое окно и делать в нем что угодно, так и, действительно, написать команду для Listener и рисовать прямо в его окне. Пример вывода графики есть в видео на 6:45.

Для будущих читателей этих комментариев оставлю прямую ссылку на файл: http://bitsavers.org/pdf/symbolics/software/genera_8/Programming_the_User_Interface.pdf

Может быть существует развивающийся opensource-проект по "переизобретению" Genera?

Вообще утверждается, что CLIM вобрал в себя некоторые идеи DW, но я всерьез не разбирался. Есть CLIM-LISTENER, но он был очень сырой, когда я смотрел на него несколько лет назад.

НЛО прилетело и опубликовало эту надпись здесь

Вот это как раз CADR, общий предок машин и LMI, и Symbolics.

Для нее тоже существует эмулятор и ее софт легально доступен, но представляет собой намного более ранние этапы развития.

исходники хранились не в файлах, а прямо внутри образа системы, который целиком сохранялся и загружался вместе со всем состоянием

Как минимум в Смоллтоке идея такая же - поскольку язык предназначался для симуляции (моделирования) процессов, вместо классического императивного подхода вам предлагается насоздавать сущностей, определить их реакции на разные события (в том числе неизвестные в момент создания) - и дать им взаимодействовать, наблюдая за состоянием. Именно поэтому "методы" обьектов и классов - это не процедуры, а на самом деле обработчики сообщений (оттуда эта идеология и перекочевала в Objective C).

Вы совершенно правы. И это не совпадение. Над Smalltalk работали в том же Xerox, что и над InterLisp. А в 80-е Lisp-машины Xerox могли быть переконфигурированы в Smalltalk-машины.

Так что стало с платой? Удастся ли её починить?

Мы еще не поняли. Она перестала нормально инициализироваться.

Поскольку у Лисп-процессора в этой системе нет своей периферии, для его первоначальной загрузки используется специальная программа под Мак, которая загружает все, что нужно для функционирования Лисп-системы с диска и скармливает это в память Лисп-процессора, сидящую на шине NuBus. И вот эта программа стала падать (и вешать сам Мак, кстати). Причин может быть много, локализовать пока не удалось.

Удастся ли починить? Я пока не теряю надежду.

А саму программу вы уже проверили? Вдруг на диске погибла парочка байт, и теперь вся программа работает неправильно? Есть ли резервная копия?

Разумеется! Вообще, чтобы было легче обращаться с резервными копиями, эта машина загружается со SCSI2SD, так что проверка с чистой инсталляцией - вопрос десяти минут.

А есть ли спецификация на интерфейсы, эмулятор платы и исходники программы загрузчика и прочее? Если да, можно попробовать написать программу, которая посылает запросы плате и слушает ответы, после чего опробовать её на плате и на эмуляторе (если эмулятор позволяет) и сравнить ответы с ожидаемыми (их полагаю можно глянуть в спецификации).

На другом маке не пробовали загрузить плату
, или на том же маке, но чистой системе, отключив все расширения?

Чистую наливку пробовали, конечно, это проще всего. Не помогло, так что дело где-то в железе.

А на другом маке — еще нет. У нас есть некоторое количество 68k-маков, но все это добро совместимо только с одним из имеющихся.

А каков критерий совместимости? Может, если есть подходящий разъем можно спаять аппаратный переходник, такой, чтобы подсоединить плату к современному компьютеру?

Вот эти вот своеобразные кликабельные интерфейсы прям очень сильно (до начертаний шрифтов) напоминают более поздние проекты -- среды программирования Никлауса Вирта -- BlackBox и другие, даже полностью нативные загружаемые макеты ОС. Только не на LISP, а на Oberon. https://oberon.org/ru

И не случайно -- маэстро в упомянутых в статье конторах не чужой человек, достаточно много там работал и перенял многие полезные идеи. К сожалению, планета где-то "наскочила где-то на земную ось" и уковыляла в направлении усложнения и запутывания всего и вся в IT.

А мне такой кликообразный интерфейс сразу напомнил редактор acme из Plan9

https://habr.com/ru/post/208482/

Возможно Роб Пайк тоже работал с подобными лисп машинами.

Я в нем как раз впервые увидел подобный подход. Кстати этот редактор можно скачать и запустить под современными системами.

<a href="https://sillyhatsonly0.livejournal.com/3754.html">Еще интересное о Lisp-машинах</a>

Каждый раз, встречая упоминания языка Lisp, вспоминаю курсач, для которого я "написал чертёж редуктора" на AutoLISP, т.к. чертить в AutoCAD не умел, а кульманом было пользоваться сильно менее интересно, чем кодить.

Зря я пошёл на "механическую" специальность - была бы возможность пойти на АСУ (не прошёл по зрению), образование больше бы пригодилось.

АСУ — автоматическая система управления? Как на неё не пройти по зрению? Или я неправильно расшифровал?

Вот такой был парадокс в предэкзаменационной медкомиссии - с диагнозом "цветоаномалия" на "автоматизированные системы управления" не допускали - возможно, считая, что я не смогу расшить на лабораторке кабель с цветной маркировкой жил. Именно из-за этой злосчастной "цветоаномалии" (неспособность различать некоторые оттенки, в моём случае, в зеленовато-голубоватой части) я стал "айтишником" с дипломом инженера-эколога (по специальности работал только год, пока писал диплом, всё остальное время, и до, и после - ИТ и "околоИТ").

Зарегистрируйтесь на Хабре, чтобы оставить комментарий