Файл: Классификация языков программирования высокого уровня (Отличия языков программирования высокого уровня).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 19.06.2023

Просмотров: 57

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Классификации языков программирования

Прежде всего, языки программирования нужно классифицировать по уровням. Разные авторы разбивают языки либо на три уровня (машинные, машинно-ориентированные и машинно-независимые языки), либо на два уровня (языки программирования низкого уровня, языки программирования высокого уровня).

В случае деления языков программирования на три уровня, низшим уровнем будет являться машинный код – набор команд, выполняемых конкретным процессором и разработанных специально для него. Обычно является последовательностью шестнадцатеричных символов. Вывод строки «Hello, World!» для процессора архитектуры x86 выглядит так: BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21. Средним уровнем будут являться машинно-ориентированные языки, то есть языки, призванные управлять непосредственно командами процессора, но более доступным для человеческого восприятия языком. Примером являются языки ассемблера. Язык ассемблера, по сути, представляет каждую команду машинного кода с помощью удобных для восприятия человеком символических команд – мнемокодов. Как правило, язык ассемблера использует особенности конкретного семейства процессоров. Высшим же уровнем будут считаться машинно-независимые языки. Они разработаны для удобства восприятия, быстроты понимания и работы с ними. Характерная черта этих языков программирования – абстракция, то есть введение смысловых конструкций, кратко описывающих данные и операции над ними, описания которых в машинно-ориентированных языках очень длинны и сложны для понимания. Также они были призваны обеспечить платформенную независимость сути алгоритмов. С их появлением зависимость от платформы перекладывается на трансляторы, «переводящие» текст, написанный на языке высокого уровня, в элементарные машинные команды. Примерами языков программирования высокого уровня являются C++, C#, PHP, Perl, Java и многие другие.

В современной классификации языков программирования по уровням всё чаще используют деление на два уровня: языки высокого и низкого уровней. Языками низкого уровня считаются языки, близкие к машинному коду и ориентированные на конкретные команды процессора, то есть машинно-ориентированные языки, а языками высокого уровня в современной классификации считаются машинно-независимые языки, разработанные для удобства использования. Таким образом, на данный момент авторы чаще не учитывают машинный код в своих классификациях. Это может быть связано с тем, что в настоящее время машинный код может понадобиться специалистам узкого профиля, например, системного программирования, защиты информации или программирования устройств напрямую. Прикладному же программисту иметь представление о машинном коде может быть необходимо для понимания того, как его программа хранится и выполняется, и в некоторых случаях для отладки и оптимизации своих программ.


Следующая классификация, которую необходимо рассмотреть, — классификация языков программирования по поколениям. Общепринято делить языки на пять поколений, но разные авторы опять же по-своему разделяют поколения. Некоторые варианты классификации перекликаются с классификацией по уровням, некоторые указывают, что языков программирования пятого поколения пока не существует.

Подавляющее большинство авторов называет языками программирования первого поколения машинные коды, то есть языки низкого уровня, языками второго поколения – языки ассемблера, уже рассмотренные нами, и, соответственно, языками третьего поколения – языки высокого уровня. Эта классификация по эволюционному признаку вполне логична: понятно, что языки низкого уровня появлялись на заре программирования, а языки среднего и высокого уровней разрабатывались и улучшались в связи с растущими возможностями компьютерных технологий. А вот с классификацией языков четвёртого и пятого поколений ситуация не так проста. К языкам программирования четвёртого поколения чаще всего относят языки объектно-ориентированные, декларативные (непроцедурные) и визуальные. Но эти языки с уверенностью можно отнести и к языкам третьего поколения. Также очень часто сюда относят языки запросов, например, SQL, который, по своей сути, вовсе не является языком программирования. Вообще, часто можно прочитать о том, что языки программирования четвёртого поколения – это языки, встроенные в определённую программную оболочку и используемые для узкоспециализированных задач, например, для создания баз данных и управления ими (встроенные языки систем управления базами данных). Получается, вернее всего сказать, что языки программирования четвёртого поколения – логичное развитие языков третьего поколения, упрощающее работу программистов ввиду того, что в основе своей эти языки встроены в собственную программную оболочку с функциями, помогающими разработчикам. Также к языкам четвёртого поколения нужно отнести языки параллельного программирования, ориентированные на создание программных средств многопроцессорной архитектуры.

Языки пятого поколения, теоретически, должны ещё больше упростить и ускорить работу программистов: целью этих языков является переложить значительную часть работы с человека на компьютер. Чаще всего сюда относят языки экспертных систем, баз знаний. В настоящее время, действительно, нет решений, которые могут выдавать полноценный продукт, получая при этом лишь задачу. Некоторые авторы говорят о системе MathCAD, она действительна заметно облегчает работу пользователей, беря на себя огромную долю вычислительной работы. Но всё же, на данный момент нет чёткого определения, по каким критериям определить языки пятого поколения. Одно ясно: с их использованием компьютер должен будет решить поставленную задачу без необходимости пользователю вручную реализовывать алгоритм.


Далее, рассмотрим классификацию языки программирования по функциональному признаку, или парадигме программирования. Парадигма – совокупность идей и понятий, определяющих подход к программированию. Большинство авторов даёт чёткое разделение языков программирования на процедурные (императивные) и непроцедурные (декларативные). Класс непроцедурных языков содержит в себе два подкласса: функциональные и логические языки. Часто отдельным классом выделяют объектно-ориентированные языки программирования, хотя они содержат элементы процедурного программирования. Остановимся на каждом классе поподробнее.

В процедурных языках программа явно описывает необходимые к выполнению действия, то есть она является чёткой последовательностью команд, которые необходимо выполнить компьютеру. Можно сказать, что, программируя на этих языках, программист говорит компьютеру, не что делать, а как. К этому классу можно отнести большинство языков программирования: Pascal, Basic, C и другие.

Непроцедурные языки можно запросто назвать противоположностью языкам процедурным. Декларативное программирование – парадигма программирования, в которой описывается, что необходимо сделать компьютеру. Хорошим примером служит язык разметки HTML, возьмём тег <img>: необходимо просто заключить в него ссылку на изображение, а каким образом оно отобразится на странице – это задача компьютера.

В функциональном программировании процесс вычисления можно описать как вычисление значений функций в математическом понимании. На практике, отличие математической функции от понятия «функция» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, таким образом, получая в разных местах программы разные выходные данные. А в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим один и тот же результат – выходные данные зависят только от входных. Это позволяет средам функционального программирования кэшировать результаты выполнения функций и вызывать их в нужный момент. Примерами можно привести LISP – первый функциональный язык, Haskell и другие.

В программах, написанных на языках логического программирования, вообще не описывается действий. Программист задаёт данные и отношения между ними, после этого программе можно задать вопрос, компьютер перебирает заданные данные и находит ответ. Классический пример языка логического программирования – Prolog.


В языках объектно-ориентированного программирования переменные и функции группируются в классы, благодаря чему достигается высокий уровень структуризации программы. Объекты, порождённые от классов, вызывают методы (функции) друг друга и, таким образом, меняют состояние свойств (переменных). С формальной стороны объектно-ориентированное программирование базируется на процедурной модели, но с содержательной – оно базируется не на функции, а на объекте, как на целостной системе.

В статье рассмотрены три основные и самые популярные классификации языков программирования. На данный момент, действительно, нет более-менее чёткой классификации языков программирования, охватывающей все признаки и рассказывающей о «переплетениях» различных классификаций между собой. Естественно, эту тему возможно раскрыть намного шире, чем в данной статье, этим автор и собирается заняться в ближайшее время.

Классификация языков программирования высокого уровня

Особенности языков программирования высокого уровня

Языки программирования высокого уровня - языки, которые используют различные абстрактные смысловые конструкции, которые просто невозможно сообщать машине на низкоуровневых языках в силу их большого объема и сложности.

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

Первые языки программирования появились достаточно давно, еще примерно в середине 20-го века. Конечно, они были достаточно примитивны по современным меркам, но вполне справлялись с поставленными на них задачами. Сейчас существуют разные виды языков программирования, к примеру, языки низкого и высокого уровня. Каждый из них необходим для решения определенного спектра задач. Помимо указанных вариантов, есть еще алгоритмические, формальные, машинные, символические, императивные и многие другие типы языков программирования, но наибольшее распространение и актуальность сейчас имеют именно языки низкого и высокого уровня. Даже указанной информации достаточно, чтобы понять: классификация языков программирования – это очень объемное и сложное занятие, которое может растянуться на многие часы.


Отличия языков программирования высокого уровня

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

К примеру, если подключенное к ПК устройство (например, кулер) может работать на максимальных оборотах 1000 об/мин, то когда программист, используя низкоуровневый язык, пишет на него драйвера, он должен это знать и учитывать, так как если он поставить большее количество оборотов, то устройство испортится. Программисты же, которые используют языки программирования высокого уровня даже не задумываются об этом – они просто задают, к примеру, запуск кулера в определенный момент времени и его остановку. Но стоит помнить, что это довольно упрощенные определения.

Достоинства программирования на языках высокого уровня заключаются в том, что разрабатывать программы проще и быстрее, а сами программы становятся транспортабельными, т.е. их можно почти без изменений переносить на другие компьютеры. Кроме того, программисту не нужно знать особенности работы ЭВМ. Он просто следует несложным правилам записи операторов программы применяемого языка высокого уровня.

В языках программирования высокого уровня нет точного соответствия между языковыми конструкциями и машинными командами. Преобразование строк исходного кода в последовательности двоичных команд осуществляется транслятором. К таким языкам относятся PL /1, Pascal, C, C++, Java. Все они менее эффективно используют аппаратуру по сравнению с языками Ассемблера, но позволяют быстрее создавать приложения. В результате им удалось практически полностью вытеснить языки Ассемблера при создании крупных приложений.

Языки программирования высокого уровня отличаются от Ассемблеров, во-первых, тем, что они являются более высокоуровневыми, и, во-вторых, используют более строгий контроль типов данных. Термин “высокоуровневый” означает следующее: многие детали обрабатываются автоматически, а программисту для создания своего приложения приходится писать меньшее количество строк. В частности: