Языки программирования

Языки программирования можно подразделить на языки низкого уровня и языки высокого уровня. Язык низкого уровня – это язык, близкий к машинным кодам. Программа, составленная на таком языке, это последовательность кодов операций и адресов ячеек памяти, в которых находятся операнды и куда следует записать результат операции.

Самым «низкоуровневым» языком является совокупность команд процессора. Близким к командам процессора является язык Ассемблер. Применение ассемблера позволяет учесть при написании программы все аппаратные возможности компьютера. Когда-то первые программы писали именно так. Чем ближе язык программирования к машинному коду, тем удобнее он для процессора, - программа выполняется быстрее, места в памяти требуется меньше. Составление программ на Ассемблере отличается исключительно большой трудоемкостью и поэтому сейчас применяется редко, однако по-прежнему широко распространен среди профессиональных программистов.

Язык высокого уровня – язык программирования, удобный для человека, состоящий из слов и символов понятных человеку.

Языки высокого уровня начали использоваться для создания программ в 60-х годах. К настоящему времени создано и используется множество языков программирования. Их можно классифицировать по четырём основным группам: процедурные, объектно-ориентированные, функциональные и логические.

Процедурные языки (С, BASIC, FORTRAN, PASCAL и др.)

Программа на таком языке состоит из последовательности команд, обрабатывающих данные. Данные, как правило, хранятся в виде переменных. Весь процесс вычисления сводится к изменению их содержимого.

Объектно-ориентированные языки (С++, Java,Visual Basic)

Переменные и функции в такой программе группируются в так называемые классы. Благодаря этому достигается более высокий уровень структуризации программы. Работа программы рассматривается как последовательность событий и соответствующих реакций объектов на эти события. В принципе объектно-ориентированный язык базируется на процедурной модели программирования.

Функциональные языки

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

Логические языки (ЛИСП, ПРОЛОГ)

Основываются на формальной логике и Булевой алгебре, иногда и средствах нечёткой логики. Программа, записанная на логическом языке программирования, не содержит в себе конкретных алгоритмов (заданной последовательности действий). Задаётся описание условий задачи и логических отношений, по которым программа сама рассчитывает возможные следствия и взаимосвязи введённых данных и формул.

Большинство используемых сегодня языков программирования, были созданы на рубеже 60-х и 70-х годов. При этом новые языки не переставали регулярно появляться, однако ни один из них (кроме Java) не задержался в практике программирования.

По существу прекращены попытки создания “универсального” языка программирования, призванного объединить в себе все последние достижения в области разработки языков (из попыток 60-х – 70-х годов можно вспомнить Алгол, PL/1, Аду). Крупные "языковые” проекты безвозвратно ушли в прошлое вместе с порожденными ими языками.

Наконец, появление персонального компьютера и ОС с графическим интерфейсом (прежде всего Mac OS и Windows) переместило внимание разработчиков программного обеспечения из сферы языков программирования в другие области средств разработки ПО, такие, как визуальное или объектно-ориентированное программирование или модели баз данных. Программист все чаще использует в качестве инструмента не столько язык, сколько конкретную систему программирования (например, Delphi), а какой язык является для нее базовым, не так уж важно.

Трансляторы

Программу на языке программирования записывают в обычном текстовом редакторе. В таком виде программу называют исходным модулем (кодом, текстом).

Исходный программный модуль – исходный текст программы, как правило, на языке высокого уровня.

Процессор не может исполнить такую программу, пока ее операторы не будут представлены в виде инструкций процессору. Для этого существуют специальные программы – трансляторы.

Транслятор – программа, преобразующая операторы исходного программного модуля в машинный код.

Существуют два вида трансляторов: компиляторы и интерпретаторы.

Компилятор – программа-транслятор, преобразующая исходный программный модуль в объектный модуль.

Объектный модуль – преобразованный в машинный код исходный программный модуль.

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

Исполняемый модуль – это объектный модуль с подключенными библиотечными программами.

Интерпретатор – программа-транслятор, преобразующая операторы исходного модуля в машинные коды непосредственно перед их исполнением. То есть в этом случае исполнение программы идет в виде чередования процессов преобразования очередного оператора в машинный код и исполнения этого кода. В результате интерпретируемая программы исполняется значительно медленнее в сравнении с исполняемым модулем.

Кроме того, обычно используют оптимизирующие компиляторы. Такой компилятор найдет все повторяющиеся места программы и сделает длину объектного модуля минимальной. В результате дополнительно сокращается время исполнения программы, уменьшается потребность в оперативной памяти.

Все языки программирования можно условно разделить на компилируемые и интерпретируемые. Поскольку откомпилированные программы выполняются в 20-50 раз быстрее, практически все прикладные и служебные программы поставляются в откомпилированном виде. Файлы таких программ имеют расширение .EXE или .COM.

Некоторые интерпретируемые языки программирования могут иметь также и компиляторы.

Интерпретируемые языки проще в изучении.

Лекция 15

Наши рекомендации