Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Два нащадки мови LISP



У наш час широко використовуються два діалекти мови LISP — мова COMMON LISP і мова Scheme. Обидві коротко розглянуті в наступних підрозділах.

4.4.5.1. Мова Scheme

Мова Scheme була розроблена в інституті MIT у середині 1970-х років (Sussman and Steele, 1975). Для неї характерний невеликий розмір, використання винятково статичного огляду даних (розглянутого в главі 4), а також обробка функцій як об'єктів першого класу. Таким чином, функції мови Scheme можуть бути значеннями виразів і елементами в списках, присвоюватись змінним, передаватися як параметри і повертатися як результат застосування функції до своїх аргументів. У ранніх версіях мови LISP усіх цих можливостей не було, крім того, у них не використовувався статичний огляд даних.

Як невелика мова з простими синтаксисом і семантикою мова Scheme цілком придатна для таких навчальних додатків, як курси функціонального програмування і загальні вступні курси програмування. Докладніше мова Scheme описується в главі 14.

4.4.5.2. Мова COMMON LISP

Мова COMMON LISP (Steele, 1984) була створена у спробі об'єднати в одній мові властивості декількох діалектів мови LISP, розроблених на початку 1980-х років, у тому числі і мови Scheme. Будучи такою комбінацією, мова COMMON LISP являє собою велику і складну структуру. Проте його основою є чиста мова LISP, так що його синтаксис, основні функції і принципова природа походять від цієї мови.

Визнавши гнучкість, забезпечувану динамічним оглядом даних, і простоту, надану статичним оглядом, розробники мови COMMON LISP використовували обидва способи. За замовчуванням використовується статичний огляд змінних, але якщо оголосити змінну як special, її область видимості стає динамічною.

Мова COMMON LISP містить велику кількість типів і структур даних, серед яких записи, масиви, комплексні числа і рядки символів. Також у ній є форма пакетів, яка використовується, щоб зібрати в єдине ціле набору функцій і даних, яка забезпечує, таким чином, керування доступом.

До мови COMMON LISP ми ще повернемося в главі 14.

4.4.6. Споріднені мови

Мова ML (Metalanguage) була створена у 1980-х роках Робіном Мілнером (Robin Milner) у Единбурзькому університеті як метамова для системи верифікації програм, що називалася Logic for Computable Function (LCF) (Milner at al., 1990). Головним чином, мова ML — це мова функціонального програмування, але вона підтримує також імперативне програмування. У мові ML функції є більш загальними, ніж в імперативних мовах: вони передаються між підпрограмами як параметри, можуть бути поліморфними, що означає можливість одержання параметрів різних типів при різних викликах. На відміну від мов LISP і Scheme, тип кожної змінний і кожного виразу мови ML може визначатися в процесі компіляції. Типи зв'язуються з об'єктами, а не з іменами. Типи виразів логічно виводяться з контексту виразів, як це показано в главі 6.

На відміну від мов LISP і Scheme, мова ML не використовує функціональний синтаксис з дужками, який виник разом з лямбда-виразами. Синтаксис мови ML скоріше схожий на синтаксис таких імперативних мов, як Pascal і C.

Мова Miranda була розроблена Девідом Тернером (David Turner) в Університеті Кента в Кентербері, Великобританія (University of Kent in Canterbury), на початку 1980-x (Turner, 1986). Ця мова частково основана на мовах ML, SASL і KRC. Мова Miranda значною мірою стала базою для створення мови Haskell (Hudak and Fasel, 1992), яка подібно мові Miranda, є чисто функціональною мовою, тобто не містить ні змінних, ні операторів присвоєння. Ще однією характерною рисою мови Haskell є використання "ледачого" обчислення. Жоден вираз не обчислюється доти, поки не буде потрібно його значення, що веде до декількох несподіваних можливостей мови.

Мови ML і Haskell коротко описуються в главі 14.

4.5. Перший крок до удосконалення: мова ALGOL 60

Мова ALGOL 60 значно вплинула на наступні мови програмування і, як наслідок, займає центральне місце в будь-якому історичному огляді мов.





Дата публикования: 2015-09-18; Прочитано: 295 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...