Лісп-машина є комп'ютером загального призначення, розробленим для ефективного запуску програмного забезпечення на мові програмування Lisp, зазвичай за допомогою апаратної підтримки. Вони є прикладом комп'ютерної архітектури мови високого рівня, і в певному сенсі вони були першими комерційними однокористувальницькими робочими станціями. Попри те, що їх кількість була невеликою (близько 7000 одиниць у 1988 роціNewquist, HP. Brain Makers , Sams Publishing, 1994. ISBN 0-672-30412-0 .), машини Lisp стали піонерами комерційного впровадження багатьох сучасних технологій, включаючи такі як ефективне збирання сміття, лазерний друк, віконні інтерфейси, комп'ютерні миші, растрова графіка з високою роздільною здатністю, рендеринг комп'ютерної графіки та мережеві інновації, такі як . Декілька фірм будували і продавали Лісп-машини у 80-х роках: (3600 3640, XL1200, MacIvory та інші моделі), Lisp Machines Incorporated (LMI Lambda), Texas Instruments () і Xerox (робочі станції ). Операційні системи були створені за допомогою мов програмування , Interlisp (Xerox), а пізніше частково на Common Lisp.
Історія
Історичний контекст
Комп'ютерні програми зі штучного інтелекту (ШІ) 1960-х і 1970-х років неминуче вимагали, як вважалося на той час, величезної кількості пам'яті та потужності процесорів. Вимоги до обчислюваної потужності у дослідженнях штучного інтелекту були посилені через використання високорівневої мови програмування Lisp, на відміну від комерційного обладнання, яке було розроблено та оптимізовано для мов програмування, подібних до асемблеру та Fortran. Спершу вартість такої комп'ютерної техніки означала, що її будуть використовувати багато користувачів. Оскільки технологія інтегральних схем скоротила розмір і вартість комп'ютерів у 1960-х і на початку 1970-х років, а потреби в пам'яті програм ШІ стали перевищувати адресний простір найпоширенішого дослідницького комп'ютера, DEC PDP-10, дослідники розглянули новий підхід: комп'ютер, створений спеціально для розробки й запуску великих програм штучного інтелекту, пристосованих до семантики мови Lisp. Планувалось, що для збереження операційної системи (відносно) простою, ці машини не будуть розраховані на використання багатьма користувачами, але будуть пристосовані для персонального використання.
Початковий розвиток У 1973 році , та програмісти лабораторії штучного інтелекту (AI Lab) в Массачусетському технологічному інституті (MIT), розпочали те, що стане проектом MIT Lisp Machine, коли вони вперше почали будувати комп'ютер, комплектуючи якого спеціалізовані для запуску та роботи з деякими базовими операціями Lisp замість того, щоб запускати їх у програмному забезпеченні, у 24-бітній архітектурі з . Машина також зробила інкрементальну (або Arena) збірку сміття. Більш конкретно, оскільки змінні у мові програмування Lisp типізуються під час виконання, а не під час компіляції, просте додавання двох змінних може тривати у п'ять разів довше на звичайних апаратних засобах того часу, через інструкції тестування та розгалуження. Машини Lisp запускали тести в декілька потоків, використовуючи більш простий спосіб додання за допомогою однієї інструкції. Якщо тести після виконання паралельно провалювались, тоді результат відкидався і перераховувався; це в багатьох випадках означало збільшення швидкості на декілька порядків. Цей підхід синхронної перевірки був використаний також для тестування меж масивів, на які посилаються, та інших потреб управління пам'яттю (а не просто збору сміття або масивів).
Перевірка типу була додатково вдосконалена й автоматизована, коли звичайне байтове слово у 32-біт було подовжено до 36-бітних для машин Lisp 3600-modelМісяць, Девід А. "Архітектура символіки 3600" . Portal.acm.org. doi : 10.1145 / 327070.327133 . Отримано 12 листопада 2011 року . і, зрештою, до 40-бітних або більше (зазвичай, для кодів, що виправляють помилки використовувалися надлишкові біти). Першу групу додаткових бітів використовували для зберігання даних типу, роблячи пам'ять машини , а інші біти використовували для реалізації (в якому звичайні елементи зв'язаного списку стискаються, щоб зайняти приблизно половину простору), допомагаючи у збиранні сміття повідомленням величин. Подальшим поліпшенням були дві інструкції мікрокоду, які спеціально підтримували функції Lisp, зменшуючи вартість виклику функції до 20 тактових циклів, в деяких реалізаціях Symbolics.
Першу машину називали машиною CONS (названу на честь оператора конструктора списку cons в Lisp). Часто його називають машиною Найта, можливо, з того моменту, як написав дисертацію на цю тему; вона була надзвичайно добре прийнята. Надалі вона була вдосконалена у версію, яка називається , яка була заснована на по суті тій самий архітектурі. Близько 25 прототипів CADR, було продано в межах і поза MIT за ~ 50 000 $; вона швидко стала улюбленою машиною для гакінгу — багато з найбільш відомих програмних засобів були швидко перенесені на нього (наприклад, Emacs був перенесений з ITS в 1975 році). Це було добре сприйнято на конференції ШІ, яка відбулася в МІТ в 1978 році, і «Агентство оборонних наукових проектів» (DARPA) почало фінансувати цю розробку.
Комерціалізація технології MIT Lisp У 1979 році , переконаний, що машини Lisp мають яскраве комерційне майбутнє завдяки силі мови Lisp і апаратного прискорення, запропонував Грінблатту комерціалізували технологію. Несподівано для хакера AI Lab, Грінблатт погодився, сподіваючись, що він зможе відтворити неформальну і продуктивну атмосферу лабораторії в реальному бізнесі. Ці ідеї та цілі значно відрізнялися від ідей Нофцкера. Обидві вони довго обговорювати умови, але ніхто не йшов на компроміс. Оскільки новий бізнес міг досягти успіху лише за допомогою повної і неподільної допомоги хакерів AI Lab як команди, Нофцкер і Грінблатт вирішили, що доля підприємства залежить від них, і тому вибір повинен бути залишений хакерам.
Наступні обговорення поділили лабораторію на дві фракції. У лютому 1979 року настав момент, коли щось потрібно було вирішувати. Хакери встали на бік Нофцкера, вважаючи, що комерційна фірма, що підтримує комерційні фонди, має більше шансів вижити й комерціалізувати машини Lisp, ніж запропонований Грінблаттом самостійний стартап. Грінблатт програв битву.
Саме на цьому етапі , підприємство Нофцкера, повільно формувалося. Хоча Нофцкер платив своїм співробітникам заробітну плату, в нього не було будівлі або будь-якого обладнання для роботи хакерів. Він торгувався з Патріком Вінстоном, що, в обмін на те, щоб дозволити працівникам Symbolics продовжувати працювати у MIT, Symbolics дозволить MIT використовувати внутрішньо і вільно всі розроблені Symbolics програми. Консультант з CDC, який намагався розробити комп'ютерну програму для природної мови з групою програмістів із Західного узбережжя, прийшов до Грінблатту, шукаючи машину Lisp, з якою працювала його група, приблизно через вісім місяців після катастрофічної наради з Нофцкером. Грінблатт вирішив заснувати власну фірму конкурента Lisp, але нічого не вийшло. Консультант, Олександр Джейкобсон, вирішив, що єдиний спосіб, яким Грінблатт запустить фірму і побудує машину Lisp, яку Джейкобсон відчайдушно потребував — це, якщо Якобсон підштовхне і допоможе Грінблатту запустити фірму. Якобсон розробив бізнес-плани, знайшов фінансування та партнера для Грінблатта (один Ф. Стівен Вайл). Нова фірма отримала назву LISP Machine, Inc. (LMI) і фінансувалася за допомогою замовлень CDC через Джейкобсона.
Приблизно в цей час почала діяти Symbolics (фірма Нофцкера). Це заважало обіцянню Нофцкера дати Грінблатту фору у розмірі одного року, а також серйозними затримками у залученні венчурного капіталу. Symbolics все ще мала головну перевагу, коли 3 або 4 хакери AI Lab перейшли на роботу до Грінблатта, 14 інших хакерів підписали контракт з Symbolics. Два працівники лабораторії ШІ не були найняті ніким: Річард Столмен і Марвін Мінскі. Столмен, однак, звинувачував Symbolics в занепаді хакерської спільноти, яка була зосереджена навколо лабораторії ШІ. Протягом двох років, з 1982 по кінець 1983 року, Столмен сам працював, щоб скопіювати дії програмістів Symbolics, з метою запобігти їхній монополії на комп'ютери для лабораторій.Леві, S: Хакери . Пінгвін США, 1984
Всупереч цьому, після серії внутрішніх битв, Symbolics стартувало у 1980/1981, продаючи CADR як LM-2, в той час як , Inc. продала його як LMI-CADR. Symbolics не мала наміру виробляти багато LM-2, оскільки 3600 серія машин Lisp повинна була продаватися швидко, але 3600 серія неодноразово затримувалася, і Symbolics закінчило виробництво ~ 100 LM-2, кожен з яких продавався за $ 70,000. Обидві фірми розробили продукти другого покоління на основі CADR: Symbolics 3600 і LMI-LAMBDA (з яких LMI вдалося продати ~ 200). 3600, що поставляється через рік пізніше, з розширеним CADR, розширюючи машинне слово до 36-біт та адресний простір до 28-біт,Місяць 1985 і додавання апаратних засобів для прискорення деяких загальних функцій, які були реалізовані в мікрокоді на CADR. LMI-LAMBDA, який вийшов через рік після 3600 у 1983 році, був сумісний з CADR (він міг працювати з мікрокодом CADR), але існували відмінності в обладнанні. Texas Instruments (TI) приєднався до боротьби, коли він ліцензував дизайн LMI-LAMBDA і виготовив свій власний варіант . Деякі LMI-LAMBDA та TI Explorer були подвійними системами як з процесором Lisp, так і з Unix. TI також розробив 32-бітну мікропроцесорну версію свого процесора Lisp для TI Explorer. Цей чип Lisp також був використаний для MicroExplorer — плати NuBus для Apple (NuBus спочатку розроблявся в MIT для використання в машинах Lisp).
Symbolics продовжувала розвивати сімейство 3600 і її операційну систему, , і виробляла Ivory, VLSI реалізацію архітектури Symbolics. З 1987 року було розроблено декілька машин на основі процесора Ivory: плати для Suns і Mac, автономні робочі станції й навіть вбудовані системи (I-Machine Custom LSI, 32-розрядна адреса, Symbolics XL-400, UX-400, MacIvory II). у 1989 році доступними були платформи Symbolics XL-1200, MacIvory III, UX-1200, Zora, NXP1000 «Коробка для піци»). Texas Instruments воплотив Explorer в кремній, як MicroExplorer, який був запропонований як картка для Apple . LMI відмовився від архітектури CADR і розробив власний K-Machine,K-машина але LMI збанкрутувала до того, як машина була виведена на ринок. Перед його загибеллю LMI працювала над розподіленою системою для LAMBDA, використовуючи простір Moby.Заявка на патент Мобі 4779191
Ці машини мали апаратну підтримку для різних примітивних операцій Lisp (тестування типів даних, ), а також апаратну підтримку інкрементного збору сміття. Вони дуже ефективно керували великими програмами Lisp. Машина Symbolics була конкурентоспроможна проти багатьох комерційних супер мінікомп'ютерів, але ніколи не була адаптована для звичайних цілей. Машини Symbolics Lisp також продавалися на деяких ринках, які не належать до ШІ, таких як комп'ютерна графіка, моделювання та анімація.
Лісп-машини, отримані від MIT, керувалися діалектом Lisp з іменем , що походить від MIT. Операційні системи були написані з нуля в Lisp, часто використовуючи об'єктно-орієнтовані розширення. Пізніше ці машини Lisp також підтримували різні версії Common Lisp (зі , та Common Lisp Object System(CLOS)).
Interlisp, BBN і Xerox