Уровни языков программирования
Одним из важнейших классификационных признаков процедурного, логического и объектно-ориентированного языка является его уровень. Уровень языка программирования определяется семантической (смысловой) емкостью его конструкций и степенью его ориентации на программиста. Чем более язык ориентирован на человека, тем выше его уровень.
Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности,то он называется языком программирования низкого уровня (операторы языка близки к машинному коду и ориентированы на конкретные команды процессора).
Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода, но не в виде кода, а с помощью символьных условных обозначений, называемых мнемониками.
С помощью языка низкого уровня создаются очень эффективные и компактные программы. С другой стороны, при этом требуется очень хорошо понимать устройство компьютера, затрудняется отладка больших приложений, а результирующая программа не может быть перенесена на компьютер с другим типом процессора. Подобные языки обычно применяют для написания небольших системных приложений, например, драйверов устройств и утилит. В машинной графике на языке ассемблера пишутся библиотеки.
Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Языки программирования высокого уровня (ЯПВУ) являются машинно-независимыми языками.
Особенности компьютерных архитектур не учитываются, поэтому программы, написанные на языках высокого уровня легко переносятся на другие платформы, для которых создан транслятор этого языка.
Поколения языков программирования
1-поколение: языки, созданные в нач. 50-х годов (первый язык ассемблера: одна инструкция – одна строка)
2-е поколение: кон.50-нач 60-х гг. – разработан символический ассемблер, появилось понятие переменной (полноценный язык программирования).
3-е поколение: 60-е гг. – появились универсальные языки высокого уровня, которые применяются и по сей день. (Фортран, Алгол, COBOL).
4-е поколение: с нач.70-х гг. – по сей день: языки высокого уровня, ориентированные на специализированные области применения и предназначенные для реализации крупных проектов (Pascal, C++, Perl)
5-е поколение: сер. 90-х гг.: системы автоматич. создания прикладных программ с помощью визуальных средств разработки, без знания программирования. (Си Шарп, XML)
Что такое уровень языка программирования?
В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.
Любой алгоритм, как мы знаем, есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования — чем меньше детализация, тем выше уровень языка.
По этому критерию можно выделить следующие уровни языков программирования:
- машинные;
- машинно-оpиентиpованные (ассемблеры);
- машинно-независимые (языки высокого уровня).
- процедурные (алгоритмические) (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов; для решения задачи процедурные языки требуют в той или иной форме явно записать процедуру ее решения;
- логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания;
- объектно-ориентированные (Object Pascal, C++, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.
Высокоуровневый язык программирования
Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания. Высокоуровневые языки программирования были разработаны для платформенной независимости алгоритмов. Зависимость от платформы перекладывается на инструментальные программы — трансляторы, компилирующие текст, написанный на языке высокого уровня, в элементарные машинные команды (инструкции). Поэтому, для каждой платформы разрабатывается платформенно — уникальный транслятор для каждого высокоуровневого языка, например, переводящий текст, написанный на Delphi в элементарные команды микропроцессоров семейства x86. Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами программируемыми устройствами и оборудованием, и, в идеале, не требует модификации исходного кода (текста, написанного на высокоуровневом языке) для любой платформы. Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования. Примеры: C++, C#, Java, JavaScript, Python, PHP, Ruby, Perl, Паскаль, Delphi, Лисп. Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинстве из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п. Первым языком программирования высокого уровня считается компьютерный язык Plankalkül, разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 годах. Однако транслятора для него не существовало до 2000 года. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 году. Транслятор ПП-2 (1955 год, 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957)
Уровни языков программирования и эволюция языков
Машинные языки и машинно-ориентированные языки — это языки низкого уровня или языки первого поколения — 1GL, требующие указания мелких деталей процесса обработки данных.
С появлением ЭВМ 2-го поколения (транзисторных) появились языки второго поколения (2GL), в которых степень интеграции действий была на порядок выше. Это такие языки, как макроассемблер и автокод.
Языки высокого уровня или языки третьего поколения — 3GL имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.
Языки высокого уровня (3GL) делятся на:
- процедурные (алгоритмические) (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов; для решения задачи процедурные языки требуют в той или иной форме явно записать процедуру ее решения;
- логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания;
- объектно-ориентированные (Object Pascal, C++, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами.Программа на объектно-ориентированном языке, решая некоторую задачу, по сути описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.
эволюция языков программирования
История программирования показывает стремление, с одной стороны приблизится к этому идеалу, а, с другой стороны как можно больше автоматизировать процесс решения задач, чтобы программист не описывал во всех подробностях алгоритмы и действия. Идеальным случаем такой автоматизации будет полное отсутствие каких либо последовательностей действий — оператор будет вводить только условия задачи — все остальное, включая выбор метода решения, построение структур данных, создание алгоритмов будет выполнять сама система программирования. Попробуем представить наши рассуждения в виде диаграммы.
Рисунок 1 — Диаграмма уровня языков математической записи.
Как видно из диаграммы, языки программирования подчинены некоторой общей закономерности. Их уровень и степень декларативности плавно и взаимосвязано растет. Наиболее прогрессивными для прикладного высокоуровневого программирования являются, по-видимому языки, основывающиеся на функциональном и логическом подходах. (Не следует забывать, что в мире разработано много так называемых систем искусственного интеллекта — ИИ, которые не входят в рамки конкретной группы, но тоже оказывают несомненное влияние на эволюцию языков.)
Если я не полностью рассказал про уровни языков программирования? Напиши в комментариях Надеюсь, что теперь ты понял что такое уровни языков программирования, эволюция языков и для чего все это нужно, а если не понял, или есть замечания, то нестесняся пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Языки и методы программирования. Теория трансляции
Из статьи мы узнали кратко, но емко про уровни языков программирования