Теорія мов програмування: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
SOMBot (обговорення | внесок)
м більше не розпізнається як ізольована
мНемає опису редагування
Рядок 1:
[[Файл:Lambda_lc.svg|міні|250x250пкс|Маленька грецька  буква λ (лямбда) це неофіційний символ області теорії мови програмування. Використання походить від лямбда-числення, моделі обчислень, введеної Алонзо Черчем у 1930-х роках і широко використовується дослідниками мов програмування. Вона прикрашає обкладинку класичної книги "«Структура та інтерпретація комп'ютерних програм"», а також назва так званих "«лямбда матеріалів"», які написані Джеральдом Джей Зуссманом і Гай Стілом, розробників мови програмування Scheme.]]
'''Теорія мови програмування''' ('''[[:en:Programming_language_theory|PLT]]-Programming language theory''') -це розділ комп'ютерних наук, який займається проектуванням, аналізом, визначенням характеристик і класифікацією мов програмування, їх індивідуальних особливостей. Він торкається математики, програмування і лінгвістики. Це добре відома галузь інформатики, а також активна область досліджень, результати яких опубліковані в численних журналах, присвячених PLT, а також в загальних інформатичних і інженерних публікаціях.
 
== Історія ==
У деякому сенсі, історія теорії мови програмування передує навіть розвитку самих мов програмування. [[Лямбда-числення]], розвинене [[Алонзо Черч|Алонзо Черчем]]ем і [[Стівен Коул Кліні|Стівеном Коулом Кліні]] в 1930-х, на думку деяких, є першою в світі мовою програмування, навіть при тому, що воно було призначене більше для обчислювальних розрахунків, ніж засіб для програмістів, яке описує алгоритми комп'ютерної системи, Багато сучасних функціональних мов програмування легко описуються з точки зору лямбда-числення.
 
Першою мовою програмування, яка була винайдена,була була Планкалкюль (нім.- обчислення планів), який була розроблена [[Конрад Цузе|Конрадом Цузе]] в 1940-х, але не була відома суспільству до 1972 (і не була здійснена до 1998). Перша широко відома і успішна мова програмування - — [[Fortran|Фортран]] (1954-19571954—1957), яка розроблена командою дослідників IBM на чолі з Джоном Бекусом. Успіх Фортрану привів до формування комітету вчених, які намагалися розробити "«універсальну"» комп'ютерну мову. Результатом їх зусиль був [[ALGOL|АЛГОЛ 58]]. В той же час, [[Джон Маккарті]] із [[Массачусетський технологічний інститут|MIT]] розробив мову програмування [[LISP|Лісп]] (засновану на лямбда-численні), яка є першою успішною мовою з науковим походженням. З успіхом цих початкових зусиль мови програмування стали активної темою дослідження в 1960-х і після.
Деякі інші ключові події в історії теорії мови програмування з тих пір:
 
=== 1950-ті ===
* [[Ноам Чомскі|Ноам Хомський]] розробив ієрархію Хомського в галузі лінгвістики. Це відкриття безпосередньо вплинуло на теорію мови програмування та інші галузі інформатики.<br/>
 
=== 1960-ті ===
* Мова [[Simula|Симула]] була розроблена Оле-Йоном Далем і Нігаард Крістен. Вважають, що це перший приклад об'єктно-орієнтованої мови програмування. Симула також ввела поняття співпрограми.<br/>
* У 1964 [[Пітер Ландін]] вперше реалізував лямбда-числення Черча, що може бути використаним для моделювання мов програмування. Він представляє машину Secd, яка "«інтерпретує"» лямбда-вирази.<br/>
* У 1965 році Ландін вводить оператор J, який є формою продовження.<br/>
*  У 1966 році Ландін у своїй статті "«Наступні 700 мов програмування"» презентував [[ISWIM]], абстрактну комп'ютерну мову програмування. Це мало великий вплив в подальшій розробці мов програмування, що ведуть до Haskell.<br/>
* У 1966 році Коррадо Бем представив мову програмування [[Coach]]<br/>
* У 1967 році Крістофер Стрейчі опублікував свій важливий набір конспекта лекцій щодо основних понять мов програмування, введення R-значення термінології, L-значення, параметричний поліморфізм, а також спеціальний поліморфізм.<br/>
* У 1969 році Дж Роджер Хиндли публікує основную тип-схему об'єкта у комбінаторної логіці, пізніше узагальнена у алгоритм виведення типів Хіндлі-Мілнера.<br/>
* У 1969 році Тоні Хоар вводить логіку Хоара, форму аксіоматичної семантики.<br/>
* У 1969 році Вільям Елвін Говард помітив, що система доказу "«високого рівня"», іменована природного виведенням, може бути безпосередньо інтерпретована в надрукований варіант моделі обчислень, відомої як лямбда-числення. Пізніше це стало називатися як відповідність Каррі-Говарда. <br/>
 
=== 1970-ті ===
* У 1970 році [[Дана Скотт]] вперше опублікувала свою роботу по денотаціонной семантиці.<br/>
* У 1972 році було розроблені логічне програмування і пролог. Це дало можливість комп'ютерним програмам виражатися через математичку логіку.<br/>
* У 1974 році Джон С. Рейнольдс виявляє систему F. Це було уже винайдено математичним логіком Жан-Ів Жираром ще в 1971 році.<br/>
* З 1975 року, Сассмен і Стіл розробляю мову програмування [[Scheme]] і мову Лісп, яка включає лексичну зону видимості, єдиний простір імен і елементи з моделі Actor, включаючи продовження першого класу.
* Бакус, в 1977 році лекції [[Премія Тюрінга|премії Тюрінга]], розкритикував поточний стан індустріальних мов і запропонував новий клас мов програмування. В даний час відомі як функціонально-рівневі мови програмування.
* In 1977, Гордон Плоткін презентував програмування обчислювальних функцій, абстрактно набрана мова
* У 1978 році [[Робін Мілнер]] вводить алгоритм виведення типів Хіндлі-Мілнера для мови програмування [[ML]]. Теорія типу стала застосовуватися як дисципліна мов програмування, цей додаток привів до величезних досягнень в області теорії типу протягом багатьох років.
 
Рядок 34:
* У 1981, Гордон Плоткін опублікував свій документ на структурованій операційній семантиці.
* У 1988 році Жиль Кан опублікував свою статтю про нормальну семантику.
* Команда вчених  [[PARC|Xerox PARC]] під керівництвом Алана Кея розробили [[Smalltalk]], об'єктно-орієнтована мову, яка широко відома своїм інноваційним розробницьким середовищем .
* Там з'явилися обробки обчислень: обрахунок взаємодіючих систем Робіна Мілнера, модель комунікативних послідовних процесів Тоні Хоара, а також аналогічні моделі паралелізму(наприклад, модель Actor Карла Хьюітта.
* У 1985, випуск Miranda запалює навчальний інтерес до раніше відкладених чистих функціональних мов програмування. Був створений комітет для визначення відкритого стандарту, що призвів до випуску [[Haskell]] 1.0 в 1990 році.
* Бертран Мейер створив методологію проектування (за договором) та включив її в мову програмування [[Eiffel]].<br/>
 
=== 1990-ті ===
* Грегор Кізалес, Джим Де Рів'єр і Даніель Г. Бобров опублікували книгу [[Мистецтво протоколу метаоб'екта|"«Мистецтво протоколу метаоб'екта"»]].<br/>
* Євгеніо Моджі і Філіп Вадлер ввели використання монад для структурування програм, написаних на функціональних мовах програмування.<br/>
 
== Субдисципліни і суміжні області ==
Рядок 47:
 
=== Формальна семантика ===
Формальна семантика це формальний опис поведінки комп'ютерних програм і мов програмування. Три загальних підходи до опису семантики або «сенс» комп'ютерної програми -&nbsp;— [[денотаційна семантика]], [[операційна семантика]] і [[аксіоматична семантика]].
 
=== Теорія типів ===
Теорія типів це вивчення типових системі; яка є "«слухняним синтаксичним методом доказу недостатності поведінки конкретної програми шляхом класифікації фраз за видами значень, які вони обчислюють"». Багато мов програмування відрізняються характеристиками їх систем типів.
 
=== Аналіз програми та трансформація ===
Аналіз програми це загальна проблема вивчення програми і визначення ключових характеристик (наприклад, відсутність помилок у програмі). Перетворення програми це процес перетворення програми з однієї форми (мови) в іншу форму.
 
=== Порівняльний аналіз мови програмування ===
Рядок 59:
 
=== Загальне і метапрограмування ===
[[Метапрограмування]] -&nbsp;— генерація програм вищого порядку, які, коли виконуються, породжують програми (можливо на іншій мові або в підмножині початкового мови) як результат своєї роботи.
 
=== Предметно-орієнтовані мови ===
Рядок 65:
 
=== Тлумачення компілятора ===
Теорія компілятора це теорія написання компіляторів (або в більш загальному плані, трансляторів). Це програми, які переводять програму , написану на одній мові, в іншу форму. Дії компілятора традиційно розбиті на синтаксичний аналіз (сканування і синтаксичний аналіз), семантичний аналіз (визначення того, що програма повинна робити), оптимізацію (підвищення продуктивності програми, що зазначено в деякій метриці; як правило, швидкість виконання) і генерації коду (генерація і висновок еквівалентної програми в тій чи іншій мові перекладу, часто набір інструкцій процесора).
 
=== Системи виконання ===
Системи виконання відносяться до розробки середовищ виконання мови програмування та їх компонентів, включаючи віртуальні машини, збірку "«сміття"» і зовнішні функціональні інтерфейси.
 
== Журнали, публікації та конференції ==
Конференції є основним місцем для презентування досліджень в мовах програмування. Найбільш відомі конференції включають це Симпозиум про принципи мов програмування (POPL-Symposium on Principles of Programming Languages), Конференція про проектування та впровадження мов програмування(PLDI-Conference on Programming Language Design and Implementation), міжнародна конференція функціонального програмування(ICFP-International Conference on Functional Programming ), та міжнародна конференція обєктно-орієнтованого програмування, систем, мов та додатків ([[OOPSLA]]-the International Conference on Object Oriented Programming, Systems, Languages and Applications).
 
Відомі журнали, які публікують PLT: the ''ACM Transactions on Programming Languages and Systems'' (TOPLAS), ''Journal of Functional Programming'' (JFP), ''Journal of Functional and Logic Programming'', and ''Higher-Order and Symbolic Computation''.
 
== Посилання ==