Язык программирования высокого уровня
Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным.
Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования.
Примеры: C++, Visual Basic, Python, Perl, Delphi (Pascal), строковых типов, объектов, операций файлового ввода-вывода и т. п.
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 гг. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957).
Содержание
Переносимость программ
Распространено мнение, что программы на языках высокого уровня можно написать один раз и потом использовать на компьютере любого типа. В действительности же это верно только для тех программ, которые мало взаимодействуют с операционной системой, например, выполняют какие-либо вычисления или обработку данных. Большинство же интерактивных (а тем более мультимедийных) программ обращаются к системным вызовам, которые сильно различаются в зависимости от операционной системы. Например, для отображения графики на экране компьютера программы под Microsoft Windows используют функции Windows API, которые недоступны в системах, поддерживающих стандарт программный интерфейс X-сервера.
К настоящему времени создан целый ряд программных библиотек (например, библиотека wxWidgets), скрывающих несоответствия системных вызовов различных операционных систем от прикладных программ. Однако такие библиотеки, как правило, не позволяют полностью использовать все возможности конкретных операционных систем.
Новые тенденции
Новой тенденцией является появление языков программирования еще более высокого уровня (ультра-высокоуровневых). Такого рода языки характеризуются наличием дополнительных структур и объектов, ориентированных на прикладное использование. Прикладные объекты, в свою очередь, требуют минимальной настройки в виде параметров и моментально готовы к использованию. Использование ультра-высокоуровневых языков программирования снижает временные затраты на разработку программного обеспечения и повышает качество конечного продукта за счет, опять таки, уменьшения объема исходных кодов.
См. также
Ссылки
Полезное
Смотреть что такое «Язык программирования высокого уровня» в других словарях:
язык программирования высокого уровня — — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN data retrieval languageDRL … Справочник технического переводчика
машинно-ориентированный язык программирования высокого уровня — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN machine oriented high level languageMOHLL … Справочник технического переводчика
ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ — ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ, ЯЗЫКИ ПРОГРАММИРОВАНИЯ, приемлемо близкие к разговорному языку. Высокоуровневый язык программирования преобразуется КОМПИЛЯТОРОМ в машинные коды, используемые непосредственно компьютером. Большинство… … Научно-технический энциклопедический словарь
Язык программирования Паскаль — процедурно ориентированный язык программирования высокого уровня, предназначенный для широкого класса задач. Язык Паскаль считается языком структурного программирования. По английски: Pascal language См. также: Процедурно ориентированные языки… … Финансовый словарь
Язык программирования Лисп — универсальный язык программирования высокого уровня. Язык Лисп: относится к декларативным языкам функционального типа; предназначен для обработки символьных данных, представленных в виде списков. Основой языка являются функции и рекурсивные… … Финансовый словарь
Язык программирования Си — Си Семантика: процедурный Тип исполнения: компилируемый Появился в: 1969 73 г. Автор(ы): Кен Томпсон, Денис Ритчи Типизация данных: статическая Основные реализации … Википедия
Язык программирования C — Си Семантика: процедурный Тип исполнения: компилируемый Появился в: 1969 73 г. Автор(ы): Кен Томпсон, Денис Ритчи Типизация данных: статическая Основные реализации … Википедия
Язык программирования — Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия,… … Википедия
Язык высокого уровня — согласно ГОСТ 19781 90 язык программирования, понятия и структура которого удобны для восприятия человеком. Языки высокого уровня отражают потребности программиста, но не возможности системы обработки данных. См. также: Алгоритмические языки… … Финансовый словарь
Высокоуровневый язык программирования
Из Википедии — свободной энциклопедии
Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
Высокоуровневые языки программирования были разработаны для платформенной независимости сути алгоритмов. Зависимость от платформы перекладывается на инструментальные программы — трансляторы, компилирующие текст, написанный на языке высокого уровня, в элементарные машинные команды (инструкции). Поэтому, для каждой платформы разрабатывается платформенно-уникальный транслятор для каждого высокоуровневого языка, например, переводящий текст, написанный на Delphi в элементарные команды микропроцессоров семейства x86.
Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами программируемыми устройствами и оборудованием, и, в идеале, не требует модификации исходного кода (текста, написанного на высокоуровневом языке) для любой платформы.
Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования.
Примеры: C++, C#, Delphi, Fortran, Java, JavaScript, Лисп, Паскаль, PHP, также Ruby, Python, Perl, которые иногда называют сверхвысокоуровневыми. Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинстве из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül, разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 годах. Однако транслятора для него не существовало до 2000 года. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 году. [ источник не указан 672 дня ] Транслятор ПП-2 (1955 год, 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957).
На 2018 год по версии компании TIOBE Software лидирует язык программирования Java.
Что такое программа написанная на языке высокого уровня
Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным.
Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования.
Примеры: C++, Visual Basic, Python, Perl, Delphi (Pascal), строковых типов, объектов, операций файлового ввода-вывода и т. п.
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 гг. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957).
Содержание
Переносимость программ
Распространено мнение, что программы на языках высокого уровня можно написать один раз и потом использовать на компьютере любого типа. В действительности же это верно только для тех программ, которые мало взаимодействуют с операционной системой, например, выполняют какие-либо вычисления или обработку данных. Большинство же интерактивных (а тем более мультимедийных) программ обращаются к системным вызовам, которые сильно различаются в зависимости от операционной системы. Например, для отображения графики на экране компьютера программы под Microsoft Windows используют функции Windows API, которые недоступны в системах, поддерживающих стандарт программный интерфейс X-сервера.
К настоящему времени создан целый ряд программных библиотек (например, библиотека wxWidgets), скрывающих несоответствия системных вызовов различных операционных систем от прикладных программ. Однако такие библиотеки, как правило, не позволяют полностью использовать все возможности конкретных операционных систем.
Новые тенденции
Новой тенденцией является появление языков программирования еще более высокого уровня (ультра-высокоуровневых). Такого рода языки характеризуются наличием дополнительных структур и объектов, ориентированных на прикладное использование. Прикладные объекты, в свою очередь, требуют минимальной настройки в виде параметров и моментально готовы к использованию. Использование ультра-высокоуровневых языков программирования снижает временные затраты на разработку программного обеспечения и повышает качество конечного продукта за счет, опять таки, уменьшения объема исходных кодов.
Языки высокого уровня — основные понятия и основы применения
Причины использования языков высокого уровня
Помимо ассемблеров для программирования приложений используются различные языки высокого уровня, что обусловлено следующими причинами:
● существует множество алгоритмов и готовых программ на языках высокого уровня, которые можно непосредственно вставить в разрабатываемую прикладную программу. Если возникает необходимость переноса программ на другие микроконтроллеры, то такой перенос выполняется намного проще, чем перенос программ на ассемблере;
● при программировании на языках высокого уровня имеется ряд возможностей, которыми не располагают ассемблеры. Например, разработчик может автоматически вводить в программу коды сложных операций, производить эффективный контроль синтаксических ошибок и др. Поэтому составление программ на языках высокого уровня требует меньших затрат;
● при разработке программ на языке высокого уровня значительно упрощается поддержка приложения, связанная с модификацией и отладкой программного кода.
Языки высокого уровня характеризуются рядом показателей, реализация которых во встраиваемых микроконтроллерах может оказаться проблематичной, что обусловлено:
● ограниченным объемом памяти программ ( ROM ) и данных ( RAM );
● отсутствием BIOS или операционной системы;
● наличием переопределяемых выводов контроллеров (когда вывод может использоваться как цифровой/аналоговый/последовательный вход–выход).
Рассмотрим основные особенности и показатели языков высокого уровня применительно к микроконтроллерам.
Библиотеки и функции.
Функция — это подпрограмма, при выполнении которой определенные параметры вызываются из исходной программы, а после завершения возвращаются обратно. Библиотека содержит набор функций (для математических операций, преобразования и пересылки данных, консольного ввода–вывода и др.), скомпонованных в виде объектного файла. Встроенные (в стандартные подключаемые библиотеки) функции, необходимые для некоторых приложений, могут оказаться невостребованными для других. Вряд ли найдется приложение, использующее одновременно все функции стандартной библиотеки. Поэтому в микроконтроллерах, имеющих ограниченный объем памяти, использование стандартных библиотек может привести к неоправданным затратам памяти.
Функция стандартной библиотеки предварительно проверяет наличие оборудования (и его характеристики) и только после этого выполняет заданные действия.
Из–за схемных особенностей различных микроконтроллеров (например, контроллер может содержать или не содержать некоторый функциональный узел) необходимость такой проверки приводит к увеличению времени исполнения программы и объема памяти конкретного контроллера.
Указанные проблемы можно решить путем компоновки в программный код (объектный файл, или библиотеку) только тех функций, которые необходимы для конкретного применения с учетом специфики используемого микроконтроллера. Другой подход состоит в том, что включение в объектный код требуемых фрагментов реализуется с помощью условной компиляции. В этом случае объектным файлом является вся программа, т. е. отдельный объектный файл с набором функций не создается.
Типы данных и операции над данными.
Тип данных — это форма представления данных для компьютерной обработки. Важную роль играют типы данных, которые поддерживаются аппаратным обеспечением и для которых требуются специальные форматы.
Типы данных можно разделить на две категории: числовые и нечисловые. Числовые типы данных. Среди них главными являются целые двоичные числа со знаком и без знака. Для их представления обычно используется 8, 16, 32 и 64 бита. В целых числах со знаком старший разряд отводится под знак, поэтому значения N–разрядного числа лежат в пределах от –(2 N–1 – 1) до +(2 N–1 – 1), диапазон значений чисел без знака составляет 0…2 N – 1.
Для представления нецелых чисел (например, 4.5) используется две формы: с плавающей и фиксированной точкой. Их длина может составлять 32,64 и 80 бит.
В компьютерах имеются отдельные регистры для целочисленных операндов и для операндов с плавающей точкой.
В микроконтроллерах широкое распространение получил целочисленный тип данных длиной 8 и 16 бит. Операции над числами, имеющими разрядность больше базовой (8 бит), часто реализуются с помощью библиотечных функций, которые увеличивают время выполнения и объем требуемой памяти. Обработка 16–разрядных данных реализуется с помощью небольшого увеличения объема программного кода и памяти данных. В тоже время 16–разрядные данные обеспечивают достаточно большой диапазон представления обрабатываемых данных. При правильной организации вычислений обработка данных практически для всех встроенных приложений, использующих 8–разрядные микроконтроллеры, может быть выполнена с использованием 8–и и 16–и разрядных целых чисел. Обработка целочисленных данных. При обработке данных с разрядностью более 8 бит необходимо вводить дополнительные команды.
Для некоторых компиляторов, процедура, описанная строкой, например: FirstVar = SecondVar + ( ThirdVar * Fourth Var ) более эффективно реализуется в виде следующей последовательности операций: Temp = ThirdVar * FourthVar; FirstVar = SecondVar + Temp; Еще одно возможное представление приведенного выше примера касается того, как компилятор преобразует числа и обрабатывает промежуточные переменные. Если переменная « FirstVar » не определена как порт ввода–вывода, то программный код можно представить в следующем виде: FirstVar = ThirdVar * Fourth Var; FirstVar = FirstVar + SecondVar; При таком представлении компилятор учитывает, что переменная FirstVar не используется при выполнении операции, и ее можно использовать для хранения промежуточных результатов.
Глобальные и локальные переменные.
Во многих языках высокого уровня существует два типа переменных:
● глобальные переменные, которые заданы для всей программы. Их значения не могут переопределяться. Они обычно используются в основном теле программы и при выполнении многих подпрограмм, когда передача значения переменной в качестве параметра подпрограммы не эффективна;
● локальные переменные используются при выполнении конкретной подпрограммы и создаются при обращении к ней. Обычно локальные переменные загружаются в стек при вызове подпрограммы и извлекаются из него при возвращении управления вызывающей программе. Значение локальной переменной теряется после выхода из подпрограммы. Параметры, передаваемые подпрограмме, в большинстве случаев становятся локальными переменными. При этом первоначальные значения параметров сохраняются, а текущие значения при выполнении подпрограммы могут изменяться.
Указатели и структуры данных.
Эти средства служат для повышения эффективности программирования при больших объемах памяти. Указатели предназначены для управления ресурсами памяти. При программировании микроконтроллеров с малым объемом памяти указатели обычно не используются. В таких контроллерах вместо указателей в начале раздела памяти создается массив, который путем индексирования используется для обращения к любому элементу в этой памяти. Чтобы выбрать необходимый элемент в массиве данных, следует к значению индекса, задающего адрес начального элемента массива, прибавить смещение, указывающее позицию выбираемого элемента.
Структурой данных называется блок памяти, который используется для определения стандартной записи данных. Организация структур данных очень полезна при многих применениях микроконтроллеров.
Например, структуру процессорной команды на языке С можно определить следующим образом: struct instruct < // Формат команды int address; // Адрес команды char instruct ; // Команда int value ; //16–битные данные >: Обычно на структуру ссылаются с помощью указателя, но те же данные можно поместить в массив 16 разрядных слов (целочисленные данные типа int на языке С) и ссылаться на него при помощи индекса.
Чтобы выбрать необходимый элемент в массиве данных, следует к значению индекса, задающего адрес начального элемента массива, прибавить смещение, указывающее позицию выбираемого элемента.
Проиллюстрируем использование указателей и структур данных на конкретном примере. При использовании указателя для выбора некоторой величины из области данных необходимый программный код имеет следующий вид: struct inst ruct * Ptr ; //Определение указателя на структуру.
; i = Ptr —> value ; / / Прочесть » value » из текущего элемента При организации массива эта процедура выглядит следующим образом: struct inst ruct Array[100]; //Определение массива структур.
; i = = Array [ Index ]. value ; Этот код немного сложнее кода с указателем, но в нем не используется указатель, за которым необходимо следить, чтобы он всегда корректно обращался к требуемому элементу структуры.
Другой распространенной структурой данных является таблица, которую можно представить как одномерный массив неизменяемых строк данных. В строке содержится информация о состоянии системы или сообщение для пользователя, например: char Greeting [13] = «Hello there I»; Компилятор языка размещает таблицы в памяти программ. Информация в таблице выбирается как массив, идентичный массивам, считываемым из оперативной памяти.
Доступ к аппаратным средствам.
Прикладная программа на языках высокого уровня должна обеспечить доступ к таким аппаратным средствам как регистры микроконтроллера. Для обращения к регистрам используется вставка в тело программы ассемблерных инструкций и некоторых позиций адресного пространства данных, используемых в качестве указателей регистров.
Оба способа поддерживаются языками высокого уровня.
Символическая информация.
Для упрощения отладки компиляторы выдают символическую информацию, представляющую собой ссылки на используемые строки, метки, переменные и указание на их размещение в памяти. Эта информация используется симуляторами и эмуляторами, чтобы отображать выполнение программы на уровне исходного текста, а не на уровне машинного кода (ассемблера). Следует иметь в виду, что не все компиляторы выдают одинаковую символическую информацию. Это обстоятельство необходимо учитывать при выборе компилятора.
Из материала по языкам программирования следует, что:
● при программировании управляющих систем чаще всего используются машинно–ориентированный язык ассемблера или языки С / С++. Язык ассемблера применяется при жестких ограничениях на объем требуемой памяти или на время выполнения программных модулей. Такие случаи являются достаточно типичными при решении задач управления, поэтому ассемблеры являются одним из основных средств создания программного обеспечения для микроконтроллерных систем. В тех случаях, когда указанные ограничения не очень жесткие, для создания программного обеспечения используются языки высокого уровня (обычно С / С++);
Программа на языке высокого уровня.
Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
Высокоуровневые языки программирования были разработаны для платформенной независимости сути алгоритмов. Зависимость от платформы перекладывается на инструментальные программы — трансляторы, компилирующие текст, написанный на языке высокого уровня, в элементарные машинные команды (инструкции). Поэтому, для каждой платформы разрабатывается платформенно-уникальный транслятор для каждого высокоуровневого языка, например, переводящий текст, написанный на Delphi в элементарные команды микропроцессоров семейства x86.
Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами программируемыми устройствами и оборудованием, и, в идеале, не требует модификации исходного кода (текста, написанного на высокоуровневом языке) для любой платформы.
Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования.
Примеры: C++, C#, Java, JavaScript, Python, PHP, Ruby, Perl, Паскаль, Delphi, Лисп. Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинстве из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül, разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 годах. Однако транслятора для него не существовало до 2000 года. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 году. Транслятор ПП-2 (1955 год, 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957).
Распространено мнение, что программы на языках высокого уровня можно написать один раз и потом использовать на компьютере любого типа. В действительности же это верно только для тех программ, которые мало взаимодействуют с операционной системой, например, выполняют какие-либо вычисления или обработку данных. Большинство же интерактивных (а тем более мультимедийных) программ обращаются к системным вызовам, которые сильно различаются в зависимости от операционной системы. Например, для отображения графики на экране компьютера программы под Microsoft Windows используют функции Windows API, которые отличаются от используемых в системах, поддерживающих стандарт POSIX. Чаще всего для этих целей в них используется программный интерфейс X-сервера.
К настоящему времени создан целый ряд программных библиотек (например, библиотека Qt или wxWidgets), скрывающих несоответствия системных вызовов различных операционных систем от прикладных программ. Однако такие библиотеки, как правило, не позволяют полностью использовать все возможности конкретных операционных систем.
Новой тенденцией является появление языков программирования немного более высокого уровня (ультра-высокоуровневых, не путать с сверхвысокоуровневыми). Такого рода языки характеризуются наличием дополнительных структур и объектов, ориентированных на прикладное использование. Прикладные объекты, в свою очередь, требуют минимальной настройки в виде параметров и моментально готовы к использованию. Использование ультра-высокоуровневых языков программирования снижает временные затраты на разработку программного обеспечения и повышает качество конечного продукта за счет, опять-таки, уменьшения объёма исходных кодов.

Причины использования языков высокого уровня