Введение
Теория языков программирования (PLT) — это область компьютерных наук, занимающаяся проектированием, реализацией, анализом, характеризацией и классификацией формальных языков, известных как языки программирования. Теория языков программирования тесно связана с другими областями, включая математику, разработку программного обеспечения и лингвистику. В этой области проводится ряд научных конференций и издаются журналы.
Programming language theory (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages. Programming language theory is closely related to other fields including mathematics, software engineering, and linguistics. There are a number of academic conferences and journals in the area.
История
В некотором смысле, история теории языков программирования предшествует даже развитию самих языков программирования. Ламбда-исчисление, разработанное Алонзо Черчем и Стивеном Коулом Клине в 1930-х годах, некоторыми считается первым в мире языком программирования, хотя оно было предназначено для моделирования вычислений, а не как средство для программистов описывать алгоритмы компьютерной системе. Многие современные функциональные языки программирования описываются как предоставляющие «тонкую обертку» над ламбда-исчислением, и многие из них легко описываются в терминах этого исчисления. Первым изобретенным языком программирования был Plankalkül, разработанный Конрадом Цузе в 1940-х годах, но ставший общеизвестным лишь в 1972 году (и реализованным только в 1998 году). Первым широко известным и успешным языком программирования высокого уровня был Fortran, разработанный с 1954 по 1957 год командой исследователей IBM под руководством Джона Бэкуса. Успех FORTRAN привел к формированию комитета ученых для разработки «универсального» компьютерного языка; результатом их работы стал ALGOL 58. Независимо от этого, Джон Маккарти из MIT разработал Lisp, первый язык, имеющий академическое происхождение и добившийся успеха. С успехом этих первых попыток языки программирования стали активно изучаться в 1960-х годах и позднее.
Поддисциплины и смежные области
Существует несколько областей изучения, которые либо входят в теорию языков программирования, либо оказывают на неё существенное влияние; многие из них тесно связаны между собой. Кроме того, теория языков программирования опирается на множество других областей математики, включая теорию вычислимости, теорию категорий и теорию множеств.
Формальная семантика
Формальная семантика — это формальное описание поведения компьютерных программ и языков программирования. Три основных подхода к описанию семантики, или "значения" компьютерной программы, — это денотационная семантика, операциональная семантика и аксиоматическая семантика.
Теория типов
Теория типов – это изучение систем типов, которые представляют собой "управляемый синтаксический метод доказательства отсутствия определенных видов поведения программы путем классификации выражений в соответствии с типами вычисляемых ими значений". Многие языки программирования различаются характеристиками своих систем типов.
Анализ и трансформация программ
Анализ программы — это общая задача изучения программы и определения её ключевых характеристик (например, отсутствия классов ошибок). Трансформация программы — это процесс преобразования программы из одного вида (языка) в другой.
Сравнительный анализ языков программирования
Сравнительный анализ языков программирования направлен на классификацию языков программирования по типам, основываясь на их характеристиках; широкие категории языков программирования обычно называют парадигмами программирования.
Общее и метапрограммирование
Метапрограммирование — это создание программ более высокого порядка, которые при выполнении генерируют другие программы (возможно, на другом языке или являющиеся подмножеством исходного).
Языки, специфичные для конкретной области
Специализированные языки предметной области — это языки, разработанные для эффективного решения задач в конкретной области применения.
Конструкция компилятора
Теория компиляторов — это теория создания компиляторов (или, в более общем смысле, трансляторов); программ, которые преобразуют программу, написанную на одном языке, в другую форму. Работа компилятора традиционно разделяется на синтаксический анализ (сканирование и разбор), семантический анализ (определение смысла программы), оптимизацию (улучшение производительности программы на основе определенных метрик; как правило, скорости выполнения) и генерацию кода (создание и вывод эквивалентной программы на целевом языке; часто — машинных инструкций процессора).
Системы времени выполнения
Системы времени выполнения относятся к разработке сред выполнения языков программирования и их компонентов, таких как виртуальные машины, сборщики мусора и интерфейсы для взаимодействия с кодом, написанным на других языках.
Журналы, публикации и конференции
Конференции являются основным местом для представления исследований в области языков программирования. Наиболее известные конференции включают Симпозиум по принципам языков программирования (POPL), конференцию по проектированию и реализации языков программирования (PLDI), Международную конференцию по функциональному программированию (ICFP), Международную конференцию по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA) и Международную конференцию по архитектурной поддержке языков программирования и операционных систем (ASPLOS). Заслуживающие внимания журналы, публикующие исследования в области языков программирования, включают ACM Transactions on Programming Languages and Systems (TOPLAS), Journal of Functional Programming (JFP), Journal of Functional and Logic Programming, и Higher Order and Symbolic Computation.