Эволюция и классификация языков программирования
Программа — это логически упорядоченная последовательность команд, необходимых для управления компьютером (выполнения им конкретных операций), поэтому программирование сводится к созданию последовательности команд, необходимой для решения определенной задачи. Программа представляет собой формализованное описание последовательности действий определенных устройств ЭВМ в зависимости от конкретного характера задачи. Процессор компьютера — это большая интегральная микросхема. Алгоритм — это точно определенное описание способа решения задачи в виде конечной (по времени) последовательности действий. Такое описание еще называется формальным. Для представления алгоритма в виде, понятном компьютеру, служат языки программирования. Текст программы — полное, законченное и детальное описание алгоритма на языке программирования. Языки программирования — искусственные языки. Язык программирования — формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования. Создатели языков по-разному толкуют понятие язык программирования. Среди общих мест, признаваемых большинством разработчиков, находятся следующие: Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами. Задача: язык программирования отличается от естественных языков, тем, что предназначен для передачи команд и данных от человека компьютеру, в то время, как естественные языки используются лишь для общения людей между собой. Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений. Языки программирования, или алгоритмические языки, классифицируются: по степени их зависимости от вычислительной машины; по ориентации на сферу применения; по специфике организационной структуры языковых конструкций и т.д. и т. п. Каждый язык программирования может быть представлен в виде набора формальных спецификаций, определяющих его синтаксис и семантику. Ограниченное число «слов», значение которые понятны транслятору, и очень строгие правила записи команд (операторов), образуют синтаксис языка программирования, а смысл каждой команды и других конструкций языка — его семантику. Строго говоря, синтаксис и семантика языка включают в себя: Ø типы и структуру данных; Ø операционную семантику (алгоритм вычисления конструкций языка); Ø семантические конструкции языка; Ø библиотеки примитивов (например, инструкции ввода-вывода); Ø философии, назначения и возможностей языка. Нарушение формы записи программы приводит к тому, что транслятор выдает сообщение о синтаксической ошибке. Правильно написанное, но не отвечающее алгоритму использование команд языка приводит к семантическим ошибкам Процесс поиска ошибок в программе называется тестированием, процесс устранения ошибок — отладка. С помощью языка программирования создается не готовая программа, а только ее текст, описывающий ранее разработанный алгоритм. Чтобы получить работающую программу, надо этот текст либо автоматически перевести в машинный код (для этого служат программы-компиляторы) и затем использовать отдельно от исходного текста, либо сразу выполнять команды языка, указанные в тексте программы (этим занимаются программы-интерпретаторы). Интерпретатор берет очередной оператор языка из текста программы, анализирует его структуру и затем сразу исполняет. Только после того как текущий оператор успешно выполнен, интерпретатор перейдет к следующему. Компиляторы полностью обрабатывают весь текст программы в поисках синтаксических ошибок, выполняют определенный смысловой анализ и затем автоматически переводят (транслируют) на машинный язык — генерируют машинный код. В результате законченная программа получается компактной и эффективной, работает в сотни раз быстрее программы, выполняемой с помощью интерпретатора, и может быть перенесена на другие компьютеры с процессором, поддерживающим соответствующий машинный код. Классификация ЯП: Исходя из вышесказанного, ЯП можно классифицировать по следующим признакам. 1. По степени ориентации на специфические возможности ЭВМ ЯП делятся на: машинно-зависимые; машинно-независимые. К машинно-зависимым ЯП относятся машинные языки, ассемблеры и автокоды, которые используются в системном программировании. Программа на машинно-зависимом ЯП может выполняться только на ЭВМ данного типа. Программа на машинно-независимом ЯП после трансляции на машинный язык становится машинно-зависимой. Этот признак ЯП определяет мобильность получаемых программ (возможность переноса на ЭВМ другого типа). 2. По степени детализации алгоритма получения результата ЯП делятся на: ü языки низкого уровня; ü языки высокого уровня; ü языки сверхвысокого уровня. 3. По степени ориентации на решение определенного класса задач: ü проблемно-ориентированные; ü универсальные. 4. По возможности дополнения новыми типами данных и операциями: ü расширяемые; ü нерасширяемые. 5. По возможности управления реальными объектами и процессами: ü языки систем реального времени; ü языки систем условного времени. 6. По способу получения результата: ü процедурные; ü непроцедурные. 7. По типу решаемых задач: ü языки системного программирования; ü языки прикладного программирования. 8. Непроцедурные языки по типу встроенной процедуры поиска решений делятся на: ü реляционные; ü функциональные; ü логические.
|