Історія мови програмування Lisp

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Доповідь
На тему: Історія мови програмування Lisp

Зміст
1.Вступ
2.Особенности діалектів мови Лісп.
a) Маклісп
b) муЛісп.
c) Інтерлісп.
d) Франс Лісп.
e) Зеталісп Лісп-машин.
f) Коммон Лісп.
3.Заключеніе.

Мова Лісп було розроблено в Стенфорді під керівництвом Дж. Маккарті на початку 60-х років. За первинними задумам він повинен був включати поряд з усіма можливостями Фортрану засоби роботи з матрицями, покажчики та структурами з покажчиків і т. п. Але для такого проекту не вистачило коштів. Остаточно сформовані принципи, покладені в основу мови Лісп: використання єдиного спискового подання для програм і даних; застосування виразів для визначення функцій; дужкових синтаксис мови.
Абревіатура LISP розшифровується як LIST PROCCESSOR або по-російськи: обробник списків. Лісп є мовою низького рівня, його можна розглядати як асемблер, орієнтований на роботу з списковому структурами. Тому протягом всього існування мови було багато спроб його удосконалення за рахунок введення додаткових базисних примітивів і керуючих структур. Але всі ці зміни, як правило, не ставали самостійними мовами. У нових своїх редакціях Лісп швидко засвоював всі цінні винаходи своїх конкурентів.
З-за свого експериментального акценту на символьної обробки, Лісп був спочатку дуже неефективним для цифрових обчислень, принаймні, в порівнянні з Fortran. Лісп подолав свою стару репутацію як безнадійно неефективний, Лісп тепер використаний у багатьох додатках, де ефективність не є центральною дією. Наприклад, Лісп стала мовою вибору для оболонок операційної системи і для розширення мов, для редагування систем та автоматизованого проектування. Лісп, - другий старший мова в широко поширеній використання сьогодні (тільки Fortran більш старий), який безперервно пристосовується, щоб охоплювати найбільш сучасні ідеї про програмування.
Після створення на початку 70-х років потужних Лісп-систем були спроби створення мов ШІ, відмінних від Ліспу, але на тій же основі. Подальший розвиток мови йде, з одного боку, по дорозі його стандартизації (Стандарт-Лісп, Франц-Лісп, Коммон Лісп), а з іншого - у напрямку створення концептуально нових мов для представлення та маніпулювання знаннями в Лісп середовищі. В даний час Лісп реалізований на всіх класах ЕОМ, починаючи з ПЕОМ і закінчуючи високо продуктивними обчислювальними системами.
Особливості діалектів мови Лісп.
Маклісп.
Крім символьної обробки Маклісп широко використовувався в традиційних числових обчисленнях, що застосовуються, наприклад, в обробці мови та зображень. Крім дослідників ШІ і розробників алгебраїчної системи Максима на Маклісп вплинули і роботи груп в МІТ з робототехніки, обробці мови та зображень. Виходячи з вимог, що висуваються цими областями, в Маклісп були включені нові математичні типи даних, такі як матрична і бітова обробка, а також широкий набір арифметичних функцій і засобів. Бути може, найважливіша з них - можливість обчислень з довільною точністю, яка грунтується на створених Кнутом (1969) алгоритмах.
Маклісп був також першою Лісп-системою для якої створено хороший транслятор. Транслятор генерує машинну програму у формі списків. Машинний код у вигляді списку легко обробляти і результуючий код для числових завдань виходив ефективніше, ніж у кращих фортрановскіх трансляторів.
Однак більшу частину своїх властивостей Маклісп придбав під впливом стоять перед дослідниками ШІ проблем і накопиченого досвіду. Так у мову потрапили макроси читання і таблиці читання, що дозволяють легко змінювати і розширювати структуру мови. Таким же чином з вимог до програм і оточенню виникли керуючі структури, механізми обробки переривань і помилок, а також використання керуючих символів, створений і інтегрований у систему екранний редактор, з'явилися управління та взаємодія паралельних процесів.
Основну увагу розробники Макліспа зосередили на ефективності. Цьому служать вказівки, уточнюючі способи обробки аргументів функцій, а також екранування від втручання програміста внутрішніх механізмів системи. За рахунок цих заходів швидкість роботи Макліспа в 1.5-2.5 рази вище, ніж Інтерлісп.
Всього в Макліспе використовується близько 400 функцій. Найбільшим недоліком системи є те, що її ніколи не документували належним чином. Документація по цій системі розкидана по різних звітів та інструкцій. Маклісп був дослідної системою і не призначався для навчання та промислового використання.
муЛісп.
Інтерпретатор Мулісп-85, розроблений для ПЕОМ серії IBM PC - вдалий варіант реалізації діалекту мови, що включає порівняно обмежений набір базових функцій (близько 260) і опинився внаслідок цього більш простим для вивчення.
У порівнянні з Коммон Лісп діалект муЛісп не має такого широкого спектру доступних типів даних. У ньому забезпечується робота тільки з двома типами числової інформації: цілими числами з будь-якою основою і раціональними. У діалекті відсутні засоби роботи зі структурами, масивами, потоками та іншими типами даних, зазначена реалізація мови Лісп має одну суттєву перевагу - можливість поповнення базового набору функцій шляхом підключення підпрограм, написаних на мові асемблера, що дозволило підвищити гнучкість використання інтерпретатора і ефективність прикладного програмного забезпечення , створюваного на його основі. Можливість такого поповнення відсутній у більшості інших Лісп-систем, які є в цьому сенсі замкнутими програмними продуктами.
Серед інших, ймовірно, менш суттєвих, особливостей системи можна вказати на реалізацію спеціального механізму, що дозволяє не піклуватися про присвоєнні початкових значень літеральние атомам, які отримують початкове значення, рівне «друкованому» імені самого атома. Ще однією особливістю діалекту є можливість використання нової синтаксичної конструкції «вбудований COND», істотно скорочує тексти описів функцій користувача і застосовуваної при записі тел функцій і лямбда-виразів.
Набір базових функцій муЛісп-інтерпретатора включає ряд функцій, які забезпечують доступ практично до всіх функцій ОС ЕОМ через відповідні переривання. Нарешті, зазначена Лісп-система забезпечується бібліотеками Лісп-функцій, які доповнюють базовий набір функціями, наявними у діалектах Коммон Лісп і Інтерлісп, що полегшує вирішення проблеми переносимості вихідних текстів програмних модулів, а також бібліотеками, що дозволяють виконувати маніпулювання вікнами на екрані дисплея і обробляти управляючі дії через пристрій типу «миша». У комплект додаткового програмного забезпечення до інтерпретатору входять інтерактивний редактор текстів і проста навчальна система, написані на діалекті мови муЛісп.
Інтерлісп.
Інтерлісп з'явився в 1972 році з ББН-Ліспу. До 1978 року, коли вийшло опис Інтерліспа, мова та система вже достатньо стабілізувалися. Інтерлісп вже не була мовою в тому ж сенсі, що і Маклісп або інші Лісп - системи або звичайні традиційні системи програмування. Він представляв собою інтегроване середовище програмування, до якої увійшло безліч різних допоміжних засобів. Інтерлісп став класичним прикладом добре розвинених програмних засобів і засобів у системах поділу часу.
Цей діалект поряд з Коммон Лісп один з найбільш поширених, має досить розвинений апарат представлення і маніпулювання різними структурами даних, включаючи масиви. Серед загальних особливостей даного варіанту мови слід відзначити використання для позначення вбудованих функцій нетрадиційних імен, що часом утрудняє перенесення готових програмних продуктів на інші діалекти та інші ЕОМ.
У 1974 році Xerox почала розробку для Інтерліспа персональної лісповской робочої станції під назвою Alto. У реалізації Ліспу для Alto вперше застосували спроектовану спеціально для мови Лісп мікропрограмміруемую систему команд і міні-ЕОМ, здатну з більш високою продуктивністю, ніж універсальні ЕОМ, інтерпретувати лісповскіе програми. З цієї машини Alto згодом розвинулися Лісп-машини серії 1100 фірми Xerox.
На основі версії Інтерліспа, що працювала в системі поділу часу, була створена сумісна знизу вгору версія Ліспу Інтерлісп-де, використовувана на Лісп-машинах серії 1100. У її користувальницький інтерфейс входили багатовіконне взаємодія, графіка з високою роздільною здатністю, засоби вибору з меню і миша, а також орієнтований на використання екрану інспектор структур даних. Ідея поділу екрана на багато незалежних вікна народилася в XLG. Алан Кей вже наприкінці 60-х років запропонував таку ідею підходу до комп'ютерів майбутнього і інтерфейсу між людиною і машиною. Робота XLG призвела до створення в 70-х роках до розробки мови програмування Smolltalk та об'єктного програмування.
При створенні Інтерліспа робота велася дуже ретельно. Система добре документована і новіші версії сумісні з більш ранніми. Так перевагою системи стало безперервно поповнюється великою кількістю переносимого програмного забезпечення. З іншого боку, обмеження системи старим, зафіксованим вже наприкінці 70-х років діалектом зробило систему почасти застарілою і важко розширюваною. У Інтерліспе серед іншого відсутні ієрархічні типи даних, об'єкти і замикання. До того ж він базується на динамічному зв'язуванні, тоді як нові версії Ліспу - статичні. Однак з Інтерліспа бере початок нова версія - Коммон Лісп (1986). Для програмування на більш високому рівні в Інтерлісп розроблені такі засоби, в яких вже були присутні об'єкти.
Інтерлісп - настільки замкнута система, що доступна тільки її відтранслювати версія в машинних кодах. У деяких інших системах, таких як, наприклад Зеталісп, підтримується версія Ліспу мовою оригіналу, що доступна користувачеві і може модифікуватися ім. Розвиток закритих систем, схожих на Інтерлісп, пов'язане з ресурсами, наявними у створили їх лабораторій.
Інтерлісп використовує понад 500 функцій і велику кількість системних імен і прапорців, за допомогою яких можна налаштувати і підігнати систему. Інтерлісп реалізований в системі поділу часу на багатьох великих ЕОМ.
У Інтерліспе основна увага була приділена зручності системи для користувача. Головний принцип розробників цього діалекту: все, що може мати місце в системі, має природно виражатися в термінах її вхідного мови. Тому в Інтерлісп програмісту є все. Він може перевизначати будь-які, в тому числі і вбудовані, функції; задавати і перевизначати реакції на помилки; працювати безпосередньо з рівня вхідної мови з внутрішніми структурами інтерпретатора і т. д. При цьому система підтримує свою цілісність і працездатність.
Франс Лісп.
Маклісп став основою для багатьох нових діалектів мови Лісп, першим з яких був Франс Лісп. Ця версія Ліспу названа на честь відомого угорського композитора. Головним мотивом розробки Франс Лісп було бажання отримати сучасну Лісп-систему для нових машин VAX, щоб на них можна було використовувати систему Максима та інше лісповское програмне забезпечення. Франс Лісп в досить великій мірі нагадує Маклісп, на якому спочатку була реалізована Максима. Проте в діалекті відсутні деякі застарілі особливості Макліспа і містяться більш нові системні ідеї, запозичені в той час в MIT Лісп-машин для Зеталіспа.
Новий діалект був реалізований в університеті в Берклі на ЕОМ VAX 780/11 на мові Сі під управлінням системи UNIX. Франс Лісп досить широко використовується як під управлінням UNIX, так і під управлінням VAX / VMS і в даний час є найбільш часто використовуваної версією Ліспу для систем поділу часу. Крім того, він широко використовується і на 32-бітових мікро-ЕОМ і робочих станціях, що працюють під управлінням UNIX.
Завдяки своїй хорошій переносимості Франс Лісп набув поширення у багатьох університетах та дослідних установах. Супровід системи також розійшлося в різних виправлення системних помилок, реалізаціях найбільш ефективних алгоритмів, а також у розширення мови.
Зеталісп Лісп-машин.
Зеталісп також спирається на Маклісп. Він створений в 70-і роки в MIT в рамках проекту Лісп-машини, фінансованого оборонним агентством. З самого початку його метою було виготовлення комерційного продукту. У 1979 році у зв'язку з проектом народилися два підприємства виготовляють Лісп-машини: Symbolic Inc. і Lisp Machine Inc. (LMI). Після цього в 80-ті роки робота з розвитку Зета Ліспу тривала в них незалежно один від одного на комерційній основі. У якійсь мірі системи відрізняються один від одного, але в частині Зета Ліспу машини майже сумісні. [2]
Зета Лісп містить наступні розвинені механізми і риси:
- Широкий вибір типів даних;
- Можливість об'єктно-орієнтованого програмування в системі Flavor;
- Сучасні керуючі структури, динамічні механізми передачі керування співпрограми і процеси;
- Гнучкий механізм ключових слів в лямбда-списку і багатозначні функції;
- Введення і виведення, що грунтується на потоках;
- Простору імен;
- Вже готові функції, в тому числі для сортування, роботи з лінійними управліннями та матричні обчислення.
Вибір використовуваних в середовищі Зеталіспа інструментів і мов програмування залежить від постачальника, причому пропонований набір засобів весь час розширюється. Серед інших мов пропонуються Фортран, Паскаль, Ада і Пролог. Для цих мов у середовищі Зеталіспа існують особливо розвинені програмні оточення, і розроблені в них програми можна виконувати разом із програмами на Ліспі.
Готові інструменти та прикладні розробки у великій кількості є для роботи з ЕС, з природною мовою і мовою, з реляційними базами даних, машинної графіки і машинного проектування.

Коммон Лісп.
Цей діалект відрізняється найбільш широким представленням різних структур даних і включає близько 800 вбудованих функцій. У цьому діалекті забезпечуються засоби обробки основних класів числової інформації: цілих, дійсних і комплексних. Символьні дані (літери, літеральние атоми, рядки) в Коммон Ліспі відповідають основним можливостей інших Лісп-систем. Додатково є засоби обробки недрукованих літер в символьних іменах.
Одним з істотних переваг діалекту Коммон Лісп є наявність засобів обробки масивів і структур, за своїми можливостями не поступаються відповідним засобам традиційних мов програмування (Фортран, Паскаль). Масиви в Коммон Ліспі можуть мати будь-яке невід'ємне число вимірювань і індексуються послідовністю цілих чисел. Тип компонентів масиву може бути довільним. Виділяється підклас векторів - одновимірних масивів, серед яких окремо розглядаються рядки і бітові масиви.
Структури Коммон Ліспу є типом багатокомпонентних записів, визначених користувачем і мають іменовані компоненти. Вбудоване макроозначень DEFSTRUCT використовується для визначення структур нових типів. Для створення даних нового типу у вигляді структури передбачені засоби автоматичної генерації набору функцій, що забезпечують засоби маніпулювання об'єктами цього класу.
Зручним засобом контролю доступу до різних змінним і функцій Лісп-програм в Коммон-Ліспі є пакети. Пакет - безліч імен об'єктів, визначених і доступних у ньому. Всередині пакету імена об'єктів поділяються на внутрішні і зовнішні. Перші призначені для використання тільки всередині даного пакету, а другі - для забезпечення зв'язку з іншими пакетами. Лісп-інтерпретатор представляє широкий спектр засобів маніпулювання з пакетами. Як правило, Лісп-система має у своєму складі чотири стандартних пакету: lisp (що містить примітиви системи), user (замовчуваний пакет прикладних програм і даних користувача), keyword (що містить ключові слова всіх вбудованих функцій і функцій, визначених користувачем), system (зарезервований для системних цілей).
Значною переробці і розширенню в Коммон Ліспі піддалися засоби введення-виведення і передачі інформації. Для ефективної організації різних обмінів із зовнішнім середовищем введена концепція потоків, що дозволяють здійснювати одно-і (або) двосторонню передачу інформації. Для потоків передбачений набір базових функцій. У діалекті розрізняють символьні і виконавчі потоки. У першому випадку передача здійснюється по байтах, а в другому - цілими числами. Крім стандартних потоків користувач має можливість створювати і використовувати власні потоки.
На додаток до вказаних типів даних Коммон Лісп має ряд специфічних класів об'єктів: хеш-таблиці, що забезпечують ефективний спосіб доступу до даних по ключу; READ-таблиці, щоб забезпечити управління обробкою інформації надходить із вхідного потоку Лісп-системи, і деякі інші. Таке безліч наявних в діалекті різних типів даних, з одного боку, розвіює існуюче помилкове уявлення про мову Лісп як про засіб обробки тільки символьної інформації, а з іншого - наявність потужних засобів маніпулювання типами даних істотно ускладнює його.
Цей діалект на відкритий: принциповим є те, що залишилася можливість у майбутньому, коли підійде час і буде досягнуто згоди, додати нові засоби і методи. Ця ідея якраз відповідає духу Ліспу.
Коммон Лісп не є готовою програмною системою в тому ж сенсі, що і Інтерлісп, оскільки питання середовища в основному залишені відкритими. У стандарті не визначено, яким повинен бути редактор або інші допоміжні засоби. Сказано лише в самому загальному вигляді, яким чином вони викликаються. Для того щоб забезпечити швидкий розвиток, середа та інструментальні засоби ще не порушені стандартизацією, і тому є можливість створювати різні середовища для різних цілей. Коммон Лісп не визначає також і інтерфейс користувача.
У Коммон Лісп на сучасному етапі не включені навіть кошти об'єктного програмування, хоча і визначені необхідні для цього базові механізми (замикання та ін.) Таким чином, об'єкти можна реалізувати на Ліспі. Але вже ведеться робота зі стандартизації засобів і форм об'єктного програмування.
У Коммон Ліспі багато уваги приділено практичним вимогам, і, ймовірно, тому не всі його риси естетичні й чисті. Безсумнівно, що й інші Лісп-системи будуть використовуватися в подальшому, і їх також необхідно розвивати.
Коммон Лісп призначений не тільки для роботи зі списками або для символьної обробки, він є універсальною мовою програмування, що включає в себе особливо хороші засоби для чисельних обчислень, управління даними та зв'язку. На Коммон Ліспі можна з однаковим успіхом писати програми в традиційних операторному, процедурному, фразовой стилі, а також і у властивих Ліспу стилях. У мові містяться передумови для використання різних способів і стилів програмування, таких як операторний, функціональне, макропрограмування, програмування, кероване даними, і продукційне програмування, а також кошти, необхідні для логічного та об'єктного програмування та реалізації інших засобів більш високого рівня.
Можна сміливо сказати, що Коммон Лісп містить майже всі, що на сьогоднішній день можуть дати інші відомі мови програмування, і, крім того, він передбачає кошти для розширення мови.

Сучасні діалекти мови Лісп можна розглядати як потужні інтерактивні системи програмування. Це пояснюється двома причинами. По-перше, сама мова Лісп зазнає серйозних змін - розвиваються засоби мови, призначені для обробки нетрадиційних для Ліспу типів даних: масивів, векторів, матриць; з'являються деякі засоби управління пам'яттю (пакети), відсутні в Ліспі. Серйозні зміни зазнають і керуючі структури. З'явилися невластиві природі мови Лісп функції, запозичені з Фортрану, Алгол, Паскаля, Сі: Do, Loop, Goto, Case та інші, що дозволяють користувачеві, незнайомому з принципами функціональних мов, легко переходити на Лісп. Якість програм знижується, зате зростає популярність мови. По-друге, якщо на першому етапі розвитку Лісп-систем була притаманна невелика швидкість обробки даних і серйозні обмеження на ємність використовуваної оперативної пам'яті, то сучасні Лісп-системи вже можуть змагатися за цими параметрами з такими мовами, як Сі, Паскаль і ін Використання Лісп-машин взагалі практично знімає обмеження пам'яті і швидкодії.
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Доповідь
39.6кб. | скачати


Схожі роботи:
Мови програмування 2
Мови програмування
Операції мови програмування С
Мови та системи програмування
Мови та технологія програмування
Мови та технологія програмування 2
Алгоритмічні мови програмування
Основи програмування та алгоритмічні мови
Основи мови програмування Лісп
© Усі права захищені
написати до нас