Язык программирования
Язы́к программи́рования, формализованный искусственный язык для записи программ – последовательностей действий на каком-либо устройстве-исполнителе (без вмешательства внешнего естественного или искусственного интеллекта в процесс исполнения), например язык программирования станков с числовым программным управлением или язык программирования электронно-вычислительной машины (ЭВМ, компьютера). В частности, первым языком программирования принято считать двоичные машинные коды, алфавит которых состоит из символов 0 и 1, а первой машиной, управляемой такими кодами (нанесёнными на перфокарты), – ткацкий станок, который создал в 1804–1808 гг. Ж. М. Жаккар. Часто языки программирования смешивают с компьютерными языками вообще или компьютерными языками программирования в частности, а противопоставляют естественным языкам.
Синтаксис, семантика и прагматика языков программирования
Как и всякий язык, язык программирования характеризуется своими синтаксисом, семантикой и прагматикой.
Синтаксис языка программирования – это его правописание, синтаксис почти всегда задаётся строгими формальными правилами; чисто с синтаксической стороны язык программирования является формальным языком (т. е. множеством правильно написанных программ). Поэтому, когда идёт речь, например, о компьютерных языках программирования, используют иерархию Хомского и говорят о контекстно-свободных или контекстно-зависимых языках программирования.
Семантика языка программирования задаёт правила придания смысла (семантики) правильно написанным конструкциям языка программирования (частям программ и самим программам); чаще всего семантика языка программирования бывает задана полуформально, не всегда однозначно, что может приводить к неоднозначному исполнению программ. Самые распространённые формальные методы задания семантики компьютерных языков программирования – операционный, денотационный и аксиоматический.
Прагматика языка программирования это как цели создания языка (например, программирование станков с числовым программным управлением), так и сложившаяся практика его использования (например, программирование конкретной модели станков с числовым программным управлением), рекомендуемые стили программирования на этом языке и примеры программ с хорошим стилем. Ныне существуют тысячи компьютерных языков программирования, как универсальных по своему назначению и практике применения, так и предметно ориентированных (для научно-технических вычислений, веб-разработки и др.).
Устройства – исполнители языков программирования
Устройство-исполнитель может иметь разную природу: физическую (например, станок с числовым программным управлением, ЭВМ, квантовый компьютер), химическую (например, реакционно-диффузионный компьютер Белоусова – Жаботинского), биологическую (например, ДНК-компьютер), а также социальную (например, аккуратный бухгалтер) или формально-математическую (различные виртуальные машины, например, виртуальная Java-машина).
Компьютерные языки программирования
Компьютерный язык программирования – это язык программирования алгоритмов для ЭВМ. Среди широко известных, популярных (в образовании или индустрии), значимых с исторической или научной точки зрения выделяются следующие компьютерные языки: Ada, Algol, BASIC, C, C++, C#, COBOL, Eiffel, Fortran, Go, Haskell, Java, JavaScript, Kotlin, Lisp, Oberon, Ocaml, Pascal, PHP, Prolog, Python, Rust, Scheme, Self, Simula 67, Smalltalk, Swift, РЕФАЛ, Альфа-язык, АЛГЭМ и разные ассемблеры (языки программирования низкого уровня для конкретных ЭВМ).
Важная характеристика компьютерного языка программирования – уровень языка. Компьютерный язык программирования низкого уровня – это язык, близкий к командам компьютера-исполнителя. Компьютерный язык программирования высокого уровня – это язык, позволяющий человеку-программисту легко создавать и использовать сложные структуры данных (например, список для хранения и обработки персональных данных работников предприятия с поддержкой навигации как по алфавиту, так и по адресу проживания, как по возрасту, так и по специальности и т. п.). Компьютерные языки программирования высокого уровня для исполнения на ЭВМ (имеющих в основе т. н. архитектуру фон Неймана) требуют перевода в соответствующие машинные коды с помощью специальных программ-трансляторов (компиляторов).
Другая важная характеристика компьютерного языка программирования – лежащая в его основе парадигма программирования (характеристика идеализированной машины-исполнителя, предназначенной для выполнения программ на этом языке). Самые известные парадигмы программирования – императивная, функциональная, логическая и объектно ориентированная.
Первым компьютерным языком программирования высокого уровня считается Plankalkül, созданный К. Цузе в 1945 г. Знаковыми событиями стали создание в 1957 г. компьютерного языка программирования Fortran и его компилятора (Дж. Бэкус, компания IBM, США), а в 1964 г. – языка программирования Альфа и первого оптимизирующего компилятора [А. П. Ершов, Вычислительный центр Сибирского отделения академии наук СССР (ныне Институт систем информатики имени А. П. Ершова СО РАН]. В конце 1950-х – начале 1960-х гг. были созданы первые функциональные компьютерные языки программирования Lisp и РЕФАЛ, в 1970-х – начале 1980-х гг. – первый логический компьютерный язык программирования Prolog и объектный язык Smalltalk.