Лісп-машина ред.

 
Лісп-машина в музеї MIT

Лісп-машина - універсальна обчислювальна машина , архітектура якої оптимізована для ефективного виконання програм на мові Лісп. Еквівалентна (абстрактної) машині Тьюринга (і звичайному персонального комп'ютера ) за критерієм поліномінальної сводимости . Незважаючи на те, що Лісп-машини ніколи не були широко поширені (близько 7 000 штук у всьому світі на 1988 ), багато поширених нині ідеї та програмні технології були вперше розроблені за допомогою Лісп-машин, наприклад на тих, що використовувалися в дослідному центрі Xerox PARC :

  • Прибирання сміття
  • Лазерний друк
  • Багатовіконний графічний інтерфейс користувача
  • Растрова графіка високого дозволу
  • Рендеринг
  • Безліч мережевих інновацій.

Лісп-машини надавали широкі можливості з проведення експериментальних розробок у галузі комп'ютерних наук . На базі розробок Лісп-машин було створено нове покоління інженерних робочих станцій .

Історія ред.

У 1973 Річард Грінблетт і Томас Найт , програмісти лабораторії штучного інтелекту при Массачусетському технологічному інституті , почали роботу над тим, що згодом стало «проектом Лісп-машини MIT». Спочатку це був комп'ютер, апаратно пристосований для виконання деяких основних операцій Ліспу в 24-бітової тегів архітектурі. Обробляти Лісп-програми програмно було накладно, так як змінні в Ліспі типізуються при виконанні, а не компіляції, і через перевірки і розгалуження звичайне додавання двох змінних могло тривати до п'яти хвилин на звичайних комп'ютерах. Машина також виконувала послідовну (звану «Arena») збірку сміття . При тестуванні в Лісп-машинах також паралельно використовувалися більш традиційні методи - якщо одночасні тести провалювалися, то результат скидався і обчислювався заново; в багатьох випадках це означало прискорення. Таке наближення також використовувалося при тестуванні кордонів масивів та інших операціях, пов'язаних з управлінням пам'яттю (не обов'язково пов'язаних із збіркою сміття або масивами).

Перевірка типів згодом була поліпшена і автоматизована, коли традиційний розмір машинного слова в 32 бита був збільшений до 36 біт у Лісп-машин моделі Symbolics 3600, і навіть до 40 біт або більше (зазвичай надлишкові біти використовувалися для кодів корекції помилок). У першому блоці додаткових бітів зберігався тип даних (що й робило архітектуру тегів), а решта використовувалися для CDR-кодування (коли звичайні елементи в зв'язковому списку стискалися приблизно удвічі), спрощуючи збірку сміття на порядок. Подальшим удосконаленням стали дві інструкції, які спеціальним чином підтримували функції Ліспу, зменшуючи вартість виконання функцій до 20 тактів (у деяких реалізаціях Symbolics).

Перша машина на честь оператора конструювання списків у Ліспі була названа CONS. Часто її неправильно називають «машиною Найта», можливо через те, що Найт захистив дисертацію по ній. Її поліпшена версія - CADR - заснована на приблизно тій же архітектурі. Було продано близько 25 прототипів CADR за ціною приблизно $ 50 тис. Вона стала популярною в середовищі захоплених розробників, і на неї були швидко портіровани багато популярних програми (наприклад, Emacs в 1975 ). На конференції з проблем штучного інтелекту , яку проводив Массачусетський технологічний інститут у 1978 , вона була так добре сприйнята, що DARPA стала фінансувати її розробку.

На певному етапі експоненціального зростання обчислювальної потужності ( закон Мура ) апаратна підтримка лямбда-числення втратила економічний сенс для комп'ютерів широкого вжитку, і виробники Лісп-машин пішли з ринку.

Ссылки ред.