Теория языка программирования - Википедия - Programming language theory

Строчные Греческий буква λ (лямбда ) является неофициальным символом теории языков программирования.[нужна цитата ] Это использование происходит от лямбда-исчисление, а модель вычисления представлен Церковь Алонсо в 1930-х годах и широко использовался исследователями языков программирования. Он украшает обложку[нужна цитата ] классического текста Структура и интерпретация компьютерных программ, и название так называемого Лямбда-документы 1975-1980, автор: Джеральд Джей Сассман и Гай Стил, разработчики Язык программирования схем.[жаргон ]

Теория языка программирования (PLT) является ветвью Информатика который имеет дело с дизайном, реализацией, анализом, характеристикой и классификацией языки программирования и их отдельных Особенности. Это относится к дисциплине информатики, как в зависимости от, так и влияя на математика, программная инженерия, лингвистика и даже наука о мышлении. Это стало общепризнанной отраслью компьютерных наук и областью активных исследований, результаты которых опубликованы в многочисленных журналы посвященный PLT, а также публикациям по информатике и инженерии.

История

В некотором смысле история теории языков программирования предшествует даже развитию самих языков программирования. В лямбда-исчисление, разработан Церковь Алонсо и Стивен Коул Клини в 1930-х годах считается некоторыми первым в мире языком программирования, хотя он был предназначен для модель вычисление, а не средство для программистов описывать алгоритмы в компьютерную систему. Многие современные функциональные языки программирования были описаны как обеспечивающие «тонкую облицовку» лямбда-исчисления,[1] и многие из них легко описываются с его помощью.

Первым изобретенным языком программирования был Plankalkül, который был разработан Конрад Зузе в 1940-х годах, но не было публично известно до 1972 года (и не реализовано до 1998 года). Первый широко известный и успешный язык программирования высокого уровня был Фортран, разработанная с 1954 по 1957 год коллективом IBM исследователи во главе с Джон Бэкус. Успех FORTRAN привел к формированию комитета ученых для разработки «универсального» компьютерного языка; результат их усилий был АЛГОЛ 58. Раздельно, Джон Маккарти из Массачусетский технологический институт разработал Язык программирования Лисп (на основе лямбда-исчисления), первый язык с академическими корнями, который стал успешным. Благодаря успеху этих первоначальных усилий языки программирования стали активной темой исследований в 1960-х годах и позже.

Некоторые другие ключевые события в истории теории языков программирования с тех пор:

1950-е годы

1960-е

1970-е годы

1980-е

1990-е

Поддисциплины и смежные области

Есть несколько областей исследования, которые либо лежат в рамках теории языков программирования, либо имеют на нее глубокое влияние; многие из них в значительной степени пересекаются. Кроме того, PLT использует многие другие ветви математика, включая теория вычислимости, теория категорий, и теория множеств.

Формальная семантика

Формальная семантика - это формальная спецификация поведения компьютерных программ и языков программирования. Три общих подхода к описанию семантики или «значения» компьютерной программы: денотационная семантика, операционная семантика и аксиоматическая семантика.

Теория типов

Теория типов - это изучение системы типов; которые представляют собой «управляемый синтаксический метод для доказательства отсутствия определенного поведения программы путем классификации фраз по типам вычисляемых ими значений».[3] Многие языки программирования различаются по характеристикам систем типов.

Анализ и преобразование программ

Анализ программы - это общая проблема изучения программы и определения ключевых характеристик (например, отсутствия классов программные ошибки ). Преобразование программы - это процесс преобразования программы из одной формы (языка) в другую.

Сравнительный анализ языков программирования

Сравнительный анализ языков программирования стремится классифицировать языки программирования на различные типы на основе их характеристик; широкие категории языков программирования часто называют парадигмы программирования.

Генерик и метапрограммирование

Метапрограммирование - это генерация программ более высокого порядка, которые при выполнении в результате создают программы (возможно, на другом языке или на подмножестве исходного языка).

Доменные языки

Доменные языки это языки, созданные для эффективного решения проблем в определенной части предметной области.

Конструкция компилятора

Компилятор теория - это теория письма компиляторы (или, в более общем смысле, переводчики); программы, которые переводят программу, написанную на одном языке, в другую форму. Действия компилятора традиционно разбиваются на синтаксический анализ (сканирование и разбор ), семантический анализ (определение того, что программа должна делать), оптимизация (повышение производительности программы, на что указывает некоторая метрика; обычно скорость выполнения) и генерация кода (создание и вывод эквивалентной программы на некотором целевом языке; часто Набор инструкций процессора).

Системы поддержки

Системы исполнения относится к развитию языка программирования среды выполнения и их компоненты, включая виртуальные машины, вывоз мусора, и интерфейсы внешних функций.

Журналы, публикации и конференции

Конференции - это основная площадка для представления исследований в области языков программирования. Наиболее известные конференции включают Симпозиум по принципам языков программирования (POPL), Разработка и реализация языков программирования (PLDI), Международная конференция по функциональному программированию (ICFP), то Международная конференция по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA) и то Международная конференция по архитектурной поддержке языков программирования и операционных систем (АСПЛОС).

Известные журналы, публикующие исследования PLT, включают Транзакции ACM по языкам и системам программирования (ТОПЛАС), Журнал функционального программирования (JFP), Журнал функционального и логического программирования, и Вычисление высшего порядка и символическое вычисление.

Смотрите также

Рекомендации

  1. ^ http://www.c2.com/cgi/wiki?ModelsOfComputation
  2. ^ К. Бём и В. Гросс (1996). Введение в CUCH. В Э. Р. Каяниелло (ред.), Теория автоматов, п. 35-64 /
  3. ^ Бенджамин С. Пирс. 2002 г. Типы и языки программирования. MIT Press, Кембридж, Массачусетс, США.

дальнейшее чтение

внешняя ссылка