Теория языков программирования и методы трансляции — это основы автоматизации написания программных продуктов.
Введение
Ещё в период, когда появились первые электронные вычислительные машины, ряд специалистов работали над автоматизацией процесса программирования. Изначально компьютерные программы формировались практически только в машинных кодах, то есть набором нулей и единиц, сообщающих компьютеру, какие команды и в какой очерёдности необходимо исполнить. Следует отметить, что такой процесс программирования был чрезвычайно медленным, очень сложным и имел большую вероятность появления ошибок.
Первой попыткой формирования более удобных языков программирования стало создание языков ассемблера в начале пятидесятых годов прошлого века. Эти языки являлись языками низкого уровня, так как их мнемоника была близка к машинным кодам, и они разрабатывались для определённого типа процессора. Первоначально ассемблерные команды были только заменой двоичных машинных кодов символьной мнемоникой. Позднее в ассемблере появились макросы, которые позволяли программисту вводить сокращённые параметры для часто применяемых наборов машинных кодов.
Важнейшим этапом в развитии языков программирования высокого уровня стало появление во второй половине пятидесятых годов прошлого века языков программирования Фортран, предназначенного для использования научными работниками, Кобол, предназначенного для работы с проектами бизнеса, и Лисп, используемого для символьных вычислительных операций.
Логика создания этих языков состояла в формировании системы обозначений высокого уровня, которая существенно облегчила программистам процесс формирования программ для числовых расчётов, приложений для бизнеса и программ в символьном виде. В дальнейшем было сконструировано очень много программных языков с широким кругом возможностей, сделавших процесс написания программ достаточно лёгким и надёжным.
Программные языки являются искусственно созданными языками и их отличие от обычных разговорных языков состоит в небольшом количестве словесных выражений, понятных транслятору, и наличии строгих правил написания командных строк. Если будет нарушен формат написания языковых построений, то это приведёт к ошибкам синтаксиса. Ошибки, которые вызваны с неверным заданием действий, называются семантическими.
Классификация языков программирования
На текущий момент насчитывается более тысячи программных языков, которые возможно классифицировать по-разному. Одним из возможных вариантов является классификация по поколениям:
- Первым поколением языков программирования являются машинные языки.
- Вторым поколением считаются языки ассемблера.
- Языками третьего поколения являются языки высокого уровня типа Фортан, Алгол и другие.
- Языками четвёртого поколения считаются программные языки, которые разработаны для отдельных специальных сфер использования, где достичь желаемых итогов можно только применением проблемно ориентированных языков, которые используют понятия конкретной узконаправленной сферы. Каждый язык этого поколения разрабатывался, чтобы снизить затраты времени на формирование программ. К четвёртому поколению относятся языки обращения к базам данных, обрабатывания данных и средства генерации программных кодов для языков третьего поколения.
- Языками пятого поколения являются языки программирования, которые базируются на логических принципах или ограничениях (Prolog и OPS5).
Существует и другой способ классификации языков программирования, который базируется на четырёх принципах, описывающих реальные способы написания программ:
- Императивный.
- Функциональный.
- Декларативный.
- Объектно-ориентированный.
Императивные программные языки дают описание вычислительного процесса в формате команд, которые меняют состояние программы. Этот тип языков был написан для компьютеров класса Фон Неймана, у которых информационные данные и управляющая программа находятся вместе в оперативной памяти. Центральный процессор выбирает из оперативной памяти текущую команду, выполняет её декодирование, считывает из памяти нужную информацию, осуществляет выполнение команды и отправляет снова в память итоги выполнения команды. Базовыми компонентами императивных языков считаются переменные, которые моделируют ячейки памяти компьютера.
При функциональном программировании вычислительные операции выполняются, главным образом, применением к выбранным данным необходимых функций. Формирование программы состоит в конструировании из набора несложных функций новых, усложнённых функций, поочерёдно применяемые к исходным данных до момента, пока не будет получен итоговый результат.
Декларативными языками называются языки, которые дают указание на то, какие вычислительные операции требуется исполнить. В качестве примера таких языков можно привести языки, базирующиеся на логическом программировании, то есть на наборе инструкций. Выполнение команд в этом логическом языке осуществляется не в очерёдности их написания, а в очерёдности, которую определяет система, реализующая правила. Самым известным языком этого типа считается язык Prolog. Языки декларативного типа используются, главным образом, в экспертных системах, системах работы с текстом на обычных языках.
Объектно-ориентированные языки являются программными языками, которые поддерживают правила объектно-ориентированного программирования. В них не выполняется деление задачи на отдельные функции, но сама задача отображается как набор объектов, которые имеют похожие параметры и выполняемые действия, выполняемые с ними. Объекты считаются причисленными к определённому классу. Класс будет форматом, который определяет причастность данных и функций к объекту класса, то есть, под классом понимается представление набора схожих по параметрам объектов.