Loading AI tools
З Вікіпедії, вільної енциклопедії
Лісп-машина є комп'ютером загального призначення, розробленим для ефективного запуску програмного забезпечення на мові програмування Lisp, зазвичай за допомогою апаратної підтримки. Вони є прикладом комп'ютерної архітектури мови високого рівня, і в певному сенсі вони були першими комерційними однокористувальницькими робочими станціями. Попри те, що їх кількість була невеликою (близько 7000 одиниць у 1988 році[1]), машини Lisp стали піонерами комерційного впровадження багатьох сучасних технологій, включаючи такі як ефективне збирання сміття, лазерний друк, віконні інтерфейси, комп'ютерні миші, растрова графіка з високою роздільною здатністю, рендеринг комп'ютерної графіки та мережеві інновації, такі як Chaosnet[en]. Декілька фірм будували і продавали Лісп-машини у 80-х роках: Symbolics[en] (3600 3640, XL1200, MacIvory та інші моделі), Lisp Machines Incorporated (LMI Lambda), Texas Instruments (TI провідник і MicroExplorer[en]) і Xerox (робочі станції Interlisp-D[en]). Операційні системи були створені за допомогою мов програмування Lisp Machine Lisp[en], Interlisp (Xerox), а пізніше частково на Common Lisp.
Комп'ютерні програми зі штучного інтелекту (ШІ) 1960-х і 1970-х років неминуче вимагали, як вважалося на той час, величезної кількості пам'яті та потужності процесорів. Вимоги до обчислюваної потужності у дослідженнях штучного інтелекту були посилені через використання високорівневої мови програмування Lisp, на відміну від комерційного обладнання, яке було розроблено та оптимізовано для мов програмування, подібних до асемблеру та Fortran. Спершу вартість такої комп'ютерної техніки означала, що її будуть використовувати багато користувачів. Оскільки технологія інтегральних схем скоротила розмір і вартість комп'ютерів у 1960-х і на початку 1970-х років, а потреби в пам'яті програм ШІ стали перевищувати адресний простір найпоширенішого дослідницького комп'ютера, DEC PDP-10, дослідники розглянули новий підхід: комп'ютер, створений спеціально для розробки й запуску великих програм штучного інтелекту, пристосованих до семантики мови Lisp. Планувалось, що для збереження операційної системи (відносно) простою, ці машини не будуть розраховані на використання багатьма користувачами, але будуть пристосовані для персонального використання.
У 1973 році Річард Грінблатт[en], Томас Найт[en] та програмісти лабораторії штучного інтелекту (AI Lab) в Массачусетському технологічному інституті (MIT), розпочали те, що стане проектом MIT Lisp Machine, коли вони вперше почали будувати комп'ютер, комплектуючи якого спеціалізовані для запуску та роботи з деякими базовими операціями Lisp замість того, щоб запускати їх у програмному забезпеченні, у 24-бітній архітектурі з тегованою пам'яттю[en]. Машина також зробила інкрементальну (або Arena) збірку сміття. Більш конкретно, оскільки змінні у мові програмування Lisp типізуються під час виконання, а не під час компіляції, просте додавання двох змінних може тривати у п'ять разів довше на звичайних апаратних засобах того часу, через інструкції тестування та розгалуження. Машини Lisp запускали тести в декілька потоків, використовуючи більш простий спосіб додання за допомогою однієї інструкції. Якщо тести після виконання паралельно провалювались, тоді результат відкидався і перераховувався; це в багатьох випадках означало збільшення швидкості на декілька порядків. Цей підхід синхронної перевірки був використаний також для тестування меж масивів, на які посилаються, та інших потреб управління пам'яттю (а не просто збору сміття або масивів).
Перевірка типу була додатково вдосконалена й автоматизована, коли звичайне байтове слово у 32-біт було подовжено до 36-бітних для машин Lisp Symbolics[en] 3600-model[2] і, зрештою, до 40-бітних або більше (зазвичай, для кодів, що виправляють помилки використовувалися надлишкові біти). Першу групу додаткових бітів використовували для зберігання даних типу, роблячи пам'ять машини тегованою[en], а інші біти використовували для реалізації CDR кодування[en] (в якому звичайні елементи зв'язаного списку стискаються, щоб зайняти приблизно половину простору), допомагаючи у збиранні сміття повідомленням величин. Подальшим поліпшенням були дві інструкції мікрокоду, які спеціально підтримували функції Lisp, зменшуючи вартість виклику функції до 20 тактових циклів, в деяких реалізаціях Symbolics.
Першу машину називали машиною CONS (названу на честь оператора конструктора списку cons
в Lisp). Часто його називають машиною Найта, можливо, з того моменту, як Найт[en] написав дисертацію на цю тему; вона була надзвичайно добре прийнята. Надалі вона була вдосконалена у версію, яка називається CADR[en], яка була заснована на по суті тій самий архітектурі. Близько 25 прототипів CADR, було продано в межах і поза MIT за ~ 50 000 $; вона швидко стала улюбленою машиною для гакінгу — багато з найбільш відомих програмних засобів були швидко перенесені на нього (наприклад, Emacs був перенесений з ITS в 1975 році). Це було добре сприйнято на конференції ШІ, яка відбулася в МІТ в 1978 році, і «Агентство оборонних наукових проектів» (DARPA) почало фінансувати цю розробку.
У 1979 році Рассел Нофцкер[en], переконаний, що машини Lisp мають яскраве комерційне майбутнє завдяки силі мови Lisp і апаратного прискорення, запропонував Грінблатту комерціалізували технологію. Несподівано для хакера AI Lab, Грінблатт погодився, сподіваючись, що він зможе відтворити неформальну і продуктивну атмосферу лабораторії в реальному бізнесі. Ці ідеї та цілі значно відрізнялися від ідей Нофцкера. Обидві вони довго обговорювати умови, але ніхто не йшов на компроміс. Оскільки новий бізнес міг досягти успіху лише за допомогою повної і неподільної допомоги хакерів AI Lab як команди, Нофцкер і Грінблатт вирішили, що доля підприємства залежить від них, і тому вибір повинен бути залишений хакерам.
Наступні обговорення поділили лабораторію на дві фракції. У лютому 1979 року настав момент, коли щось потрібно було вирішувати. Хакери встали на бік Нофцкера, вважаючи, що комерційна фірма, що підтримує комерційні фонди, має більше шансів вижити й комерціалізувати машини Lisp, ніж запропонований Грінблаттом самостійний стартап. Грінблатт програв битву.
Саме на цьому етапі Symbolics[en], підприємство Нофцкера, повільно формувалося. Хоча Нофцкер платив своїм співробітникам заробітну плату, в нього не було будівлі або будь-якого обладнання для роботи хакерів. Він торгувався з Патріком Вінстоном, що, в обмін на те, щоб дозволити працівникам 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, з метою запобігти їхній монополії на комп'ютери для лабораторій.[3]
Всупереч цьому, після серії внутрішніх битв, Symbolics стартувало у 1980/1981, продаючи CADR як LM-2, в той час як Lisp Machines[en], 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-біт,[4] і додавання апаратних засобів для прискорення деяких загальних функцій, які були реалізовані в мікрокоді на CADR. LMI-LAMBDA, який вийшов через рік після 3600 у 1983 році, був сумісний з CADR (він міг працювати з мікрокодом CADR), але існували відмінності в обладнанні. Texas Instruments (TI) приєднався до боротьби, коли він ліцензував дизайн LMI-LAMBDA і виготовив свій власний варіант TI Explorer[en]. Деякі LMI-LAMBDA та TI Explorer були подвійними системами як з процесором Lisp, так і з Unix. TI також розробив 32-бітну мікропроцесорну версію свого процесора Lisp для TI Explorer. Цей чип Lisp також був використаний для MicroExplorer — плати NuBus для Apple Macintosh II[en] (NuBus спочатку розроблявся в MIT для використання в машинах Lisp).
Symbolics продовжувала розвивати сімейство 3600 і її операційну систему, Genera[en], і виробляла 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 Macintosh II[en]. LMI відмовився від архітектури CADR і розробив власний K-Machine,[5] але LMI збанкрутувала до того, як машина була виведена на ринок. Перед його загибеллю LMI працювала над розподіленою системою для LAMBDA, використовуючи простір Moby.[6]
Ці машини мали апаратну підтримку для різних примітивних операцій Lisp (тестування типів даних, CDR кодування[en]), а також апаратну підтримку інкрементного збору сміття. Вони дуже ефективно керували великими програмами Lisp. Машина Symbolics була конкурентоспроможна проти багатьох комерційних супер мінікомп'ютерів, але ніколи не була адаптована для звичайних цілей. Машини Symbolics Lisp також продавалися на деяких ринках, які не належать до ШІ, таких як комп'ютерна графіка, моделювання та анімація.
Лісп-машини, отримані від MIT, керувалися діалектом Lisp з іменем Lisp Machine Lisp[en], що походить від Maclisp[en] MIT. Операційні системи були написані з нуля в Lisp, часто використовуючи об'єктно-орієнтовані розширення. Пізніше ці машини Lisp також підтримували різні версії Common Lisp (зі Flavors[en], New Flavors[en] та Common Lisp Object System(CLOS)).
Bolt, Beranek and Newman[en] (BBN) розробили власну машину Lisp, названу Jericho,[7] яка керувала однією з версій Interlisp[en]. Машина ніколи не продавалася. Розчарована група ШІ пішла у відставку, і була найнята здебільшого Xerox. Таким чином, Xerox Palo Alto Research Center, одночасно з власними розробками Грінблатта в MIT, розробив власні машини Lisp, які були використані для роботи InterLisp (і пізніше Common Lisp). Таке ж саме обладнання використовувалося з різним програмним забезпеченням, також як машини Smalltalk та офісної системи Xerox Star. Вони включали Xerox 1100, Dolphin (1979); Xerox 1132, Dorado ; Xerox 1108, Dandelion (1981); Xerox 1109, Dandetiger; і Xerox 1186/6085[en], Daybreak. Операційна система машин Xerox Lisp також перенесена на віртуальну машину і доступна для декількох платформ як продукт Medley. Машина Xerox була добре відома своїм передовим середовищем розробки (InterLisp-D), менеджером вікон ROOMS, її раннім графічним інтерфейсом та новими додатками, наприклад, NoteCards[en] (одним з перших гіпертекстових додатків).
Xerox також працював на машині Lisp, заснованої на обчисленнях зі скороченим набором команд (RISC), використовуючи процесор Xerox Common Lisp Processor і планував вивести його на ринок у 1987 році,[8] але ці плани не здійснились.
У середині 1980-х років компанія Integrated Inference Machines (IIM) побудували прототипи машин Lisp під назвою Inferstar.[9]
У 1984—1985 роках британська фірма «Racal-Norsk», спільна дочірня компанія Racal[en] і Norsk Data[en], спробувала перепрофілювати ND-500[en] виробництва Norsk Data як мікрокодовану Lisp-машину, що використовує програмне забезпечення CADR: Система обробки знань (KPS).[10]
Було кілька спроб японських виробників вийти на ринок машин Lisp: Fujitsu розробила мейнфреймний сопроцесор Facom-alpha[11], NTT процесор Elis,[12][13] Toshiba процесор AI (AIP)[14] і NEC — LIME.[15] Кілька наукових досліджень в університетах дозволили створити робочі прототипи, серед яких TAKITAC-7 в університеті Кобе,[16] FLATS RIKEN,[17] і EVLIS в університеті у Осаці.[18]
У Франції було два проекти по створенню Лісп-машин: машина M3L[19] в Тулузькому університеті Пола Сабатьє, а потім MAIA.[20]
У Німеччині Siemens розробив RISC-сумісний процесор COLIBRI.[21][22][23][24]
З настанням зими ШІ і на початку революції мікрокомп'ютерів[en], які замінили б міні-комп'ютери і виробників робочих станцій, дешевші настільні ПК невдовзі змогли запускати Lisp-програми ще швидше, ніж Lisp-машини, без використання спеціального обладнання. Таким чином, їх велика прибутковість за рахунок апаратного бізнесу, була ліквідована. Більшість виробників машин Lisp вийшли з бізнесу на початку 90-х, залишивши лише фірми на основі програмного забезпечення, такі як Lucid Inc.[en] або виробників обладнання, які перейшли на програмне забезпечення та послуги, щоб уникнути банкрутства. Станом на січень 2015 року, крім Xerox, Symbolics[en] — це єдина фірма Lisp, яка все ще працює, продаючи програмне середовище Open Genera[en] для Лісп-машин і систему комп'ютерної алгебри Macsyma[en].[25][26]
Було зроблено кілька спроб написання емуляторів з відкритим кодом для різних машин Lisp: Емуляція CADR,[27] Symbolics L Емуляція машини Lisp,[28] Проект E3 (Емуляція TI Explorer II),[29] Meroko (TI Explorer I),[30] і Невермор (ТІ Експлорер I).[31] На 3 жовтня 2005 року MIT випустила вихідний код CADR Lisp Machine, як відкритий вихідний код.[32]
У вересні 2014 року Олександр Бургер, розробник PicoLisp[en], оголосив PilMCU, як реалізацію PicoLisp в апаратному забезпеченні.[33]
Архів документів PDF у Бітвери[34] містить PDF-версії великої документації для машин Symbolics Lisp,[35] TI Explorer[36] та MicroExplorer[37] Машини Lisp і машини Xerox Interlisp-D Lisp.[38]
Галузі, що використовують машини Lisp, були в основному програми з використанням штучного інтелекту, проти їх також використовували у комп'ютерній графіці, обробці медичних зображень та багатьох інших.
Основні комерційні експертні системи 80-х років, які були доступні: середовище інженерних знань Intellicorp (KEE), знання Craft, від Carnegie Group Inc., та ART (Automated Reasoning Tool) від корпорації Inference.[39]
Спочатку машини Lisp були розроблені як особисті робочі станції для розробки програмного забезпечення в Lisp. Вони використовувалися однією людиною і не пропонували багатокористувальницького режиму. Машини мали великий чорно-білий растровий дисплей, клавіатуру і мишу, мережевий адаптер, локальні жорсткі диски, більше ніж 1 Мб оперативної пам'яті, послідовний інтерфейс і локальну шину для плат розширення. Кольорові відеокарти, стрічкові накопичувачі та лазерні принтери були додатковими.
Процесор не запускав Lisp безпосередньо, а був стек машиною[en] з інструкціями, оптимізованими для компіляції Lisp. Перші машини Lisp використовували мікрокод для забезпечення набору команд. Для декількох операцій перевірка типів і диспетчеризація виконувалася в апаратному режимі під час виконання. Наприклад, можна використовувати тільки одну операцію додавання з різними числовими типами (цілочисельні, рухомі, раціональні та комплексні числа). Результатом було дуже компактне складання представлення коду Lisp.
Наступний приклад використовує функцію, яка підраховує кількість елементів списку, для яких повертається предикат true
.
(defun example-count (predicate list)
(let ((count 0))
(dolist (i list count)
(when (funcall predicate i)
(incf count)))))
Розібраний машинний код для вищезгаданої функції (для мікропроцесора Ivory від Symbolics):
Command: (disassemble (compile #'example-count))
0 ENTRY: 2 REQUIRED, 0 OPTIONAL ;Створення PREDICATE and LIST
2 PUSH 0 ;Створення COUNT
3 PUSH FP|3 ;LIST
4 PUSH NIL ;Створення I
5 BRANCH 15
6 SET-TO-CDR-PUSH-CAR FP|5
7 SET-SP-TO-ADDRESS-SAVE-TOS SP|-1
10 START-CALL FP|2 ;PREDICATE
11 PUSH FP|6 ;I
12 FINISH-CALL-1-VALUE
13 BRANCH-FALSE 15
14 INCREMENT FP|4 ;COUNT
15 ENDP FP|5
16 BRANCH-FALSE 6
17 SET-SP-TO-ADDRESS SP|-2
20 RETURN-SINGLE-STACK
Операційна система використовувала віртуальну пам'ять для забезпечення великого адресного простору. Керування пам'яттю здійснювалося зі збором сміття. Весь код має спільний простір адрес. Всі об'єкти даних зберігалися з тегом в пам'яті, так що тип може бути визначений під час виконання. Підтримували й називали процесами декілька потоків виконання. Всі процеси проходили в одному адресному просторі.
Все програмне забезпечення операційної системи було написано в Lisp. Xerox використовував Interlisp. Symbolics, LMI й TI використовували Lisp Machine Lisp (нащадок MacLisp). З появою Common Lisp, Common Lisp підтримувався на машинах Lisp, а деякі системні програми були перенесені на Common Lisp або пізніше написані в Common Lisp.
Деякі пізніші машини Lisp (такі як TI MicroExplorer, Symbolics MacIvory або Symbolics UX400 / 1200) тепер були не робочі станції, а плати, призначені для вбудовування в комп'ютери: Apple Macintosh II і SUN 3 або 4.
Деякі машини Lisp, такі як Symbolics XL1200, мали широкі графічні можливості з використанням спеціальних графічних плат. Ці машини використовувалися в таких областях, як обробка медичних зображень, 3D-анімація та CAD.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.