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

Обновлено: 28.06.2024

Алгоритмический язык (Algoritmic language) - это формальный язык программирования, предназначенный для записи алгоритмов, подлежащих выполнению на ЭВМ.

Поколения языков программирования

Поколения Языки программирования Характеристика
1 Машинные Ориентированы на использование в конкретной ВМ, сложны в освоении, требуют хорошего знания архитектуры машины
2 Ассемблеры, макроассемблеры Более удобны для использования, машинно-зависимы
3 Языки высокого уровня Мобильные, проще в освоении, но ориентированы на профессионалов
4 Непроцедурные, объектно-ориентированные, параллельные, языки запросов Ориентированы на непрофессионального пользователя и на ВМ с параллельной архитектурой
5 Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки Ориентированы на повышение интеллектуального уровня ВМ

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

Степень близости к архитектуре BM

Возможность абстрагироваться от деталей алгоритма решения задачи. Алгоритмичность тем выше, чем точнее приходится планировать порядок выполняемых действий

Потенциальная или реальная область применения

Машинно-ориентированный язык (МОЯ, Computer-oriented language) - это язык программирования, позволяющий при составлении программ учитывать особенности системы команд и представления информации в объектной вычислительной машине.

Языки высокого уровня - это такие ЯП, которые не учитывают архитектуру ВМ и допускают описание задачи в наглядном, легко воспринимаемом виде.

Язык Сетл, Дж. Шварцем.

Проблемно-ориентированный язык (Problem-oriented languale) - это специализированный язык программирования задач, принадлежащих некоторому четко выделяемому классу.

Характеристики некоторых языков программирования

Алгол Ада АПЛ APS Бейсик BETA

Джовиал Java КОБОЛ КОМАЛ Корал Langin

Limbo Lingo ЛИСП ЛОГО Модула-2 Mesa

Оберон Облик Паскаль ПЛ/1 ПЕАРЛ ПЕРЛ

ПИЛОТ ПРОЛОГ СЕТЛ Си (С) СИМУЛА СНОБОЛ

Cedar CIP SAIL ScriptX SmallTalk Telescript

ФОРТ Фортран ЭЛАН Эйфель ЯСК

Элементы языков программирования

Каждый символ алфавита имеет некоторое графическое изображение и называется литерой (character).

Лексика – это совокупность правил образования минимальной единицы языка, имеющую значение и называемую лексемой(lexical unit, token).

Лексемы, изображающие числа, называются нумералами (numeral). Лексемы, изображающие тексты, называются литералами (literal). Лексемы, обозначающие различные объекты программы, определяемые в ней самой, называются идентификаторами(identifier).

Синтаксис - это система правил, определяющих допустимые конструкции из букв алфавита.

Семантика - это система правил истолкования отдельных языковых конструкций, позволяющих (при заданных исходных данных) однозначно воспроизвести процесс обработки данных по заданной программе.

Понятие- это логически оформленная о предмете идея чего-нибудь.

Способы описания синтаксиса

Металингвистические формулы Бэкуса-Наура(язык БНФ) и синтаксические диаграммы.

Символ Значение
::= по определению есть
| либо (или)
содержимое (внутри скобок заключается понятие)

Примеры описания некоторых понятий АЯ с помощью языка БНФ.

1. ::= | |

2. ::= | (язык Фортран)

3. ::= | |

Синтаксическая диаграмма графически изображает структуру конструкций языка (его предложений).

Примеры синтаксических диаграмм приведены на рис. 2.5.


n – количество символов,

n программирования

а) идентификатор


б) логическая константа (языка Фортран)


в) выражение

Рис. 2.5. Описание понятий АЯ с помощью синтаксических диаграмм

Основные понятия алгоязыка

Оператор (statement, operator) - это законченная фраза языка, разделяющая некоторый вполне законченный этап обработки.

Метка - это имя, присваиваемое оператору программы и используемое в ней для обращения к этому оператору.

Идентификатор - это любая конечная последовательность букв и цифр, начинающаяся с буквы.

Ключевое слово (keyword) – зарезервированное слово языка программирования, по которому распознается синтаксическая конструкция.

Описание (declaration, specification) определяет свойства (атрибуты) объектов, действия над которыми определяют выполняемые операторы.

Переменная (variable) - это программный объект, способный принимать значение.

Константа (constant) - это программный объект, который не меняет своего значения в течение всего времени выполнения программы.

Выражение(expression)-это языковая конструкция для вычисления значения, состоящая из операндов и операций.

Операнд (operand) - это часть машинной команды, определяющая объект в выражении, над которым выполняется операция.

Команда(instruction, command) - это значимое выражение, определяющее одну операцию и ее операнды; описание операции, которую должна выполнить ВМ.

Функция (function) - это объект программы, задающий некоторую вычислительную процедуру, выполнение которой и дает значение функции.

Программа (program)- это последовательность операторов языка программирования, описывающая алгоритм решения задачи.

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

Процедура (procedure) представляет собой некоторый вполне законченный этап решения задачи.

Класс(class)- это множество объектов, имеющих общую структуру и поведение, в частности, это абстрактный (производный) тип данных, вводимый пользователем.

Системы программирования

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

Набор исходных языков

Библиотеки подпрограмм


Рис. 2.7. Компиляция статической и динамической библиотек

Алгоритмический язык (Algoritmic language) - это формальный язык программирования, предназначенный для записи алгоритмов, подлежащих выполнению на ЭВМ.

Поколения языков программирования

Поколения Языки программирования Характеристика
1 Машинные Ориентированы на использование в конкретной ВМ, сложны в освоении, требуют хорошего знания архитектуры машины
2 Ассемблеры, макроассемблеры Более удобны для использования, машинно-зависимы
3 Языки высокого уровня Мобильные, проще в освоении, но ориентированы на профессионалов
4 Непроцедурные, объектно-ориентированные, параллельные, языки запросов Ориентированы на непрофессионального пользователя и на ВМ с параллельной архитектурой
5 Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки Ориентированы на повышение интеллектуального уровня ВМ

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

Степень близости к архитектуре BM

Возможность абстрагироваться от деталей алгоритма решения задачи. Алгоритмичность тем выше, чем точнее приходится планировать порядок выполняемых действий

Потенциальная или реальная область применения

Машинно-ориентированный язык (МОЯ, Computer-oriented language) - это язык программирования, позволяющий при составлении программ учитывать особенности системы команд и представления информации в объектной вычислительной машине.

Языки высокого уровня - это такие ЯП, которые не учитывают архитектуру ВМ и допускают описание задачи в наглядном, легко воспринимаемом виде.

Язык Сетл, Дж. Шварцем.

Проблемно-ориентированный язык (Problem-oriented languale) - это специализированный язык программирования задач, принадлежащих некоторому четко выделяемому классу.

Характеристики некоторых языков программирования

Алгол Ада АПЛ APS Бейсик BETA

Джовиал Java КОБОЛ КОМАЛ Корал Langin

Limbo Lingo ЛИСП ЛОГО Модула-2 Mesa

Оберон Облик Паскаль ПЛ/1 ПЕАРЛ ПЕРЛ

ПИЛОТ ПРОЛОГ СЕТЛ Си (С) СИМУЛА СНОБОЛ

Cedar CIP SAIL ScriptX SmallTalk Telescript

ФОРТ Фортран ЭЛАН Эйфель ЯСК

Элементы языков программирования

Каждый символ алфавита имеет некоторое графическое изображение и называется литерой (character).

Лексика – это совокупность правил образования минимальной единицы языка, имеющую значение и называемую лексемой(lexical unit, token).

Лексемы, изображающие числа, называются нумералами (numeral). Лексемы, изображающие тексты, называются литералами (literal). Лексемы, обозначающие различные объекты программы, определяемые в ней самой, называются идентификаторами(identifier).

Синтаксис - это система правил, определяющих допустимые конструкции из букв алфавита.

Семантика - это система правил истолкования отдельных языковых конструкций, позволяющих (при заданных исходных данных) однозначно воспроизвести процесс обработки данных по заданной программе.

Понятие- это логически оформленная о предмете идея чего-нибудь.

Способы описания синтаксиса

Металингвистические формулы Бэкуса-Наура(язык БНФ) и синтаксические диаграммы.

Символ Значение
::= по определению есть
| либо (или)
содержимое (внутри скобок заключается понятие)

Примеры описания некоторых понятий АЯ с помощью языка БНФ.

1. ::= | |

2. ::= | (язык Фортран)

3. ::= | |

Синтаксическая диаграмма графически изображает структуру конструкций языка (его предложений).

Примеры синтаксических диаграмм приведены на рис. 2.5.


n – количество символов,

n программирования

а) идентификатор


б) логическая константа (языка Фортран)


в) выражение

Рис. 2.5. Описание понятий АЯ с помощью синтаксических диаграмм

Основные понятия алгоязыка

Оператор (statement, operator) - это законченная фраза языка, разделяющая некоторый вполне законченный этап обработки.

Метка - это имя, присваиваемое оператору программы и используемое в ней для обращения к этому оператору.

Идентификатор - это любая конечная последовательность букв и цифр, начинающаяся с буквы.

Ключевое слово (keyword) – зарезервированное слово языка программирования, по которому распознается синтаксическая конструкция.

Описание (declaration, specification) определяет свойства (атрибуты) объектов, действия над которыми определяют выполняемые операторы.

Переменная (variable) - это программный объект, способный принимать значение.

Константа (constant) - это программный объект, который не меняет своего значения в течение всего времени выполнения программы.

Выражение(expression)-это языковая конструкция для вычисления значения, состоящая из операндов и операций.

Операнд (operand) - это часть машинной команды, определяющая объект в выражении, над которым выполняется операция.

Команда(instruction, command) - это значимое выражение, определяющее одну операцию и ее операнды; описание операции, которую должна выполнить ВМ.

Функция (function) - это объект программы, задающий некоторую вычислительную процедуру, выполнение которой и дает значение функции.

Программа (program)- это последовательность операторов языка программирования, описывающая алгоритм решения задачи.

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

Процедура (procedure) представляет собой некоторый вполне законченный этап решения задачи.

Класс(class)- это множество объектов, имеющих общую структуру и поведение, в частности, это абстрактный (производный) тип данных, вводимый пользователем.

Системы программирования

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

Набор исходных языков

Библиотеки подпрограмм


Рис. 2.7. Компиляция статической и динамической библиотек

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.


Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Существуют различные классификации языков программирования.

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

Если язык близок к естественному языку программирования, то он называется языком высокого уровня, если ближе к машинным командам, – языком низкого уровня.

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

Машинно–ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

К языкам программирования высокого уровня относят Фортран (переводчик формул – был разработан в середине 50–х годов программистами фирмы IBM и в основном используется для программ, выполняющих естественно – научные и математические расчеты), Алгол, Кобол (коммерческий язык – используется, в первую очередь, для программирования экономических задач), Паскаль, Бейсик (был разработан профессорами Дармутского колледжа Джоном Кемени и Томасом Курцом.), Си (Деннис Ритч – 1972 году), Пролог (в основе языка лежит аппарат математической логики) и т.д.

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

Программу, написанную на языке программирования высокого уровня, ЭВМ не понимает, поскольку ей доступен только машинный язык. Поэтому для перевода программы с языка программирования на язык машинных кодов используют специальные программы – трансляторы.

Существует три вида транслятора: интерпретаторы (это транслятор, который производит пооператорную обработку и выполнение исходного кода программы), компиляторы (преобразует всю программу в модуль на машинном языке, после чего программа записывается в память компьютера и лишь потом исполняется) иассемблеры (переводят программу, записанную на языке ассемблера, в программу на машинном языке).

Языки программирования также можно разделять на поколения:

– языки первого поколения: машинно–ориентированные с ручным управлением памяти на компьютерах первого поколения.

– языки второго поколения: с мнемоническим представлением команд, так называемые автокоды.

– языки третьего поколения: общего назначения, используемые для создания прикладных программ любого типа. Например, Бейсик, Кобол, Си и Паскаль.

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

– языки программирования пятого поколения: языки декларативные, объектно–ориентированные и визуальные. Например, Пролог, ЛИСП (используется для построения программ с использованием методов искусственного интеллекта), Си++, Visual Basic, Delphi.

Языки программирования также можно классифицировать на процедурные и непроцедурные.

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

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, К непроцедурному программированию относятся функциональные и логические языки.




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

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

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

Первый объектно-ориентированный язык программирования Simula был создан в 1960-х годах Нигаардом и Далом.

Ява – язык для программирования Internet, позволяющий создавать безопасные, переносимые, надежные, объектно–ориентированные интерактивные программы. Язык Ява жестко связан с Internet, потому, что первой серьезной программой, написанной на этом языке, был браузер Всемирной паутины.

В последнее время, говоря о программировании в Internet, часто имеют в виду создание публикаций с использованием языка разметки гипертекстовых документов HTML. Применение специальных средств (HTML–редакторов) позволяет не только создавать отдельные динамически изменяющиеся интерактивные HTML–документы, используя при этом данные мультимедиа, но и редактировать целые сайты.

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

Существуют различные классификации языков программирования.

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

Если язык близок к естественному языку программирования, то он называется языком высокого уровня, если ближе к машинным командам, – языком низкого уровня.

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

Машинно–ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

К языкам программирования высокого уровня относят Фортран (переводчик формул – был разработан в середине 50–х годов программистами фирмы IBM и в основном используется для программ, выполняющих естественно – научные и математические расчеты), Алгол, Кобол (коммерческий язык – используется, в первую очередь, для программирования экономических задач), Паскаль, Бейсик (был разработан профессорами Дармутского колледжа Джоном Кемени и Томасом Курцом.), Си (Деннис Ритч – 1972 году), Пролог (в основе языка лежит аппарат математической логики) и т.д.

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

Программу, написанную на языке программирования высокого уровня, ЭВМ не понимает, поскольку ей доступен только машинный язык. Поэтому для перевода программы с языка программирования на язык машинных кодов используют специальные программы – трансляторы.

Существует три вида транслятора: интерпретаторы (это транслятор, который производит пооператорную обработку и выполнение исходного кода программы), компиляторы (преобразует всю программу в модуль на машинном языке, после чего программа записывается в память компьютера и лишь потом исполняется) иассемблеры (переводят программу, записанную на языке ассемблера, в программу на машинном языке).

Языки программирования также можно разделять на поколения:

– языки первого поколения: машинно–ориентированные с ручным управлением памяти на компьютерах первого поколения.

– языки второго поколения: с мнемоническим представлением команд, так называемые автокоды.

– языки третьего поколения: общего назначения, используемые для создания прикладных программ любого типа. Например, Бейсик, Кобол, Си и Паскаль.

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

– языки программирования пятого поколения: языки декларативные, объектно–ориентированные и визуальные. Например, Пролог, ЛИСП (используется для построения программ с использованием методов искусственного интеллекта), Си++, Visual Basic, Delphi.

Языки программирования также можно классифицировать на процедурные и непроцедурные.

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

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, К непроцедурному программированию относятся функциональные и логические языки.

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

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

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

Первый объектно-ориентированный язык программирования Simula был создан в 1960-х годах Нигаардом и Далом.

Ява – язык для программирования Internet, позволяющий создавать безопасные, переносимые, надежные, объектно–ориентированные интерактивные программы. Язык Ява жестко связан с Internet, потому, что первой серьезной программой, написанной на этом языке, был браузер Всемирной паутины.

В последнее время, говоря о программировании в Internet, часто имеют в виду создание публикаций с использованием языка разметки гипертекстовых документов HTML. Применение специальных средств (HTML–редакторов) позволяет не только создавать отдельные динамически изменяющиеся интерактивные HTML–документы, используя при этом данные мультимедиа, но и редактировать целые сайты.

Первые несколько поколений ЭВМ строились на классических принципах, сформулированных американским математиком Джоном фон Нейманом в 1946 г., когда начались разработки цифровых ЭВМ с программным управлением. Одним из основных принципов Д. фон Неймана является принцип хранимой программы. Под программой вычислительной машины понимается описание алгоритма решения задачи, заданное на языке вычислительной машины. Таким образом, языки программирования – это формальные языки общения человека с ЭВМ, предназначенные для описания совокупности инструкций, выполнение которых обеспечивает правильное решение требуемой задачи, т.е. для описания подлежащих обработке данных (информации) и алгоритмов (программ). Основная роль языков программирования заключается в планировании действий по обработке информации. Любой язык программирования основан на системе понятий, на основе которой человек может выражать свои соображения.

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


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

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

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

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

К классу машинно-ориентированных языков можно отнести язык Си. Этот язык является результатом попытки объединить достоинства низкоуровневых возможностей алгоритмических языков высокого уровня. Язык Си часто называют языком ассемблера со встроенными структурами данных. Использование структур данных позволяет более систематически подходить к реализации задачи на языке Си и сокращает объем текстов разрабатываемых программ. Особенностью данного языка является максимальное использование возможностей конкретной вычислительной архитектуры на основе битовых операций, функций и назначений. Благодаря этому программы на языке Си компактны и работают очень быстро. Однако синтаксис языка достаточно сложен, поэтому чтение текстов программ на нем требует определенного навыка. Язык Си первоначально был ориентирован на разработку системных программ. Он, в частности, послужил главным инструментом для создания операционных систем MS DOS и UNIX. В настоящее время язык применяется главным образом для создания системных и прикладных программ, в которых скорость работы и объем памяти являются основными параметрами.

Большинство современных языков программирования ориентировано на тот или иной круг задач. Языки программирования, используемые в мировой практике:

– Кобол и PL/1 – для обработки экономической информации;

– Фортран – для решения инженерных и научных задач;

– Бейсик, Паскаль – для обучения программированию;

– Пролог, Лисп – для задач искусственного интеллекта;

– Симула – для описания задач моделирования дискретных событий;

– Модула-2, Ада для управления реальными объектами;

– Снобол – для манипуляции с текстами и др.

Наиболее широко представлен класс универсальных языков программирования. Среди них можно выделить такие популярные языки высокого уровня, как Бейсик, Паскаль, Фортран, Кобол, Модула-2, PL/1 и ряд других.

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

Для различных типов ПК, которые существенно отличаются друг от друга, были разработаны соответствующие версии языка. Для ПК типа IBM PC и совместимых с ними ПК наиболее удачной считается версия фирмы Microsoft. Она обеспечивает использование Бейсика для решения задач обработки больших массивов данных (работа с файлами), инженерно-технических и научных расчетов (с помощью большого набора математических функций), обработки текстов (за счет эффективной работы со знаковыми последовательностями), а также решения комплексных задач (за счет отдания оверлейных программных структур). Появление мощных компиляторов, таких, например, как Quick Basic и Visual Basic фирмы Microsoft, поставило этот язык в ряд с другими языками высокого уровня и придает ему дополнительную популярность.

Язык Паскаль считается одним из самых распространенных языков программирования. Со временем Паскаль зарекомендовал себя как инструмент для решения сложных задач, так как его разработчик специально конструировал язык, позволяющий создавать хорошо структурированные программы. Причиной популярности этого языка у пользователей IBM PC и совместимых с ними ПК стало появление версии языка Паскаль – Турбо Паскаль фирмы Borland International. Турбо Паскаль характеризуется такими важными особенностями, как полноэкранное редактирование, графика, звуковое сопровождение. Система программирования на Турбо-Паскале сама является резидентной программой. Она позволяет пользователю вводить его программы и выполнять их немедленно, не тратя время на компилирование. Турбо-Паскаль создан как инструмент быстрой разработки не очень больших программ (с числом строк до 500). Более длинные программы приходится сегментировать и использовать оверлейные структуры.

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

В язык Модула-2 целиком вошли все удачные средства и конструкции языка Паскаль, высокоуровневое представление низкоуровневых возможностей (можно оперировать машинно-независимыми регистрами и отдельными командами).

Язык Фортран – первый язык программирования высокого уровня, активно используется и на современных персональных компьютерах. Близость его конструкции к традиционной архитектуре ЭВМ (фон-неймановская архитектура) сделала Фортран очень популярным. Применяется Фортран главным образом при разработке прикладных систем, ориентированных на научные исследования, инженерные задачи, автоматизацию проектирования и другие области, где накоплены обширные библиотеки стандартных программ.

Язык Кобол был разработан специально для решения экономических задач. В отличие от Фортрана Кобол дает возможность составлять более удобочитаемые программы, понятные даже непрограммисту. В программах на Коболе особенно проявляется самодокументируемость, что облегчает их исправление и усовершенствование, а при обработке данных сложной структуры он бывает эффективнее Паскаля. Кобол, будучи широко распространенным на больших и средних машинах, на ПК используется мало, хотя фирмой Microsoft разработано несколько версий языка для операционных систем MS DOS и UNIX.

Наиболее удачной версией языка Кобол на сегодняшний день является Кобол/U, в который встроены средства генерации отчетов с использованием языка RPG. Фирмой IBM в развитие идей Фортрана, Алгола и Кобола был предложен язык PL/1, который получил наибольшее расспространение на больших машинах. PL/1 разрабатывался как универсальный язык программирования, поэтому располагает большим набором средств обработки цифровой и текстовой информации. Однако эти достоинства делают его сложным для изучения и использования.

Класс проблемно-ориентированных языков представлен гораздо скромнее, чем класс универсальных языков программирования. К этому классу можно отнести языки Лого, RPG и систему программирования GPSS.

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

RPG, или генератор отчетов, представляет собой язык, включающий многие понятия и выражения, которые связаны с машинными методами составления отчетов и проектирования форм выходных документов. Язык имеет ограниченную область применения и используется главным образом для печати отчетов, записанных в одном или нескольких файлах базы данных. Многие системы, реализованные на ПК типа IBM PC и располагающие языком RPG, имеют также другой язык высокого уровня, применимый для вычислительных процедур, для которых RPG не подходит. Это относится, прежде всего, к реализации языка Кобол.

Система программирования GPSS ориентирована на моделирование систем с помощью событий. В терминах этого языка легко описывается и исследуется класс моделей массового обслуживания, а также другие системы, работающие в реальном масштабе времени.

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

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

К функциональным языкам программирования можно отнести языки Лисп, Пролог и Снобол. Язык Лисп является прекрасным инструментальным средством для построения программ с использованием методов искусственного интеллекта. Имеется несколько реализаций лисп-трансляторов для ПК различных классов. Особенность этого языка заключается в удобстве динамического создания новых объектов. В качестве порождаемых программой объектов могут фигурировать и сами программы, которые внешне ничем не отличаются от данных. Это обусловливает возможность построения адаптирующихся и самоизменяющихся программ. Память в языке Лисп используется динамически; когда создается новый объект, то для него из незанятой памяти берется столько ячеек, сколько нужно для хранения всех элементов. При этом не требуется никакого заблаговременного резервирования памяти, как в других языках (например, в Паскале). При уничтожении объекта занятая им память автоматически освобождается. Если язык Лисп известен давно, то язык Пролог получил широкую известность в связи с японским проектом создания вычислительных систем пятого поколения. Одной из первых реализаций был интерпретатор микроПролог фирмы Programming Logic Associates для машин фирмы IBM. Затем появилась мощная система программирования Турбо Пролог, разработанная фирмой Borland International для этих же машин. Она предназначалась для создания широкого класса систем искусственного интеллекта, в том числе персональных экспертных систем. Версия Турбо Пролог значительно отличается от стандартного Пролога. Отличия, прежде всего, касаются наличия в нем встроенных средств типизации данных и большей структурированности исходных текстов программ.

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

– назначение разрабатываемой программы (будет ли она использоваться временно или постоянно, будет ли она модернизироваться и развиваться);

– время выполнения программы (имеется в виду соотношение вычислительных процедур и процедур ввода-вывода);

– ожидаемый размер программы (хватит ли памяти для реализации целиком всей программы или следует ее разделить на отдельные взаимодействующие модули);

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

– предусматривается ли возможность переноса программы на другие типы ЭВМ;

– основные типы данных, с которыми будет работать программа (целые и вещественные числа, строки, списки и другие типы структур);

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

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

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

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

Алгоритмические языки высокого уровня в силу своей лаконичности и строгости правил построения предложений дисциплинируют мышление. Логическое несовершенство метода, скрытые изъяны сравнительно легко обнаруживаются при попытке его описания на алгоритмическом языке. [1]

Алгоритмические языки высокого уровня ( такие, например, как алгол или фортран), конечно, более удобны для человека, так что появление этих языков и соответствующих трансляторов существенно сократило сферу применения машинных языков, однако не ликвидировало ее полностью. Необходимость ( или целесообразность) использования в ряде случаев машинного языка обусловливается двумя основными факторами. [3]

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

С помощью алгоритмических языков высокого уровня существует возможность выполнять обмены информацией с ВЗУ, не прерывая выполнения вычислительных операций в ОП. Для этого обмен с некоторым блоком в буфере ОП начинается заблаговременно, чтобы завершиться к моменту, когда записанная в него новая информация окажется необходимой для продолжения вычислительного процесса. Такой подход, хотя и сложен, иногда помогает решать вопрос о минимизации фактического времени для задач, в которых последовательность обменов с ВЗУ может быть определена заранее. Существует ряд операционных систем, которые на ЭВМ серии ЕС реализуют виртуальную память. Так называют системное объединение ОП и ВЗУ типа МД, в котором распределение памяти, необходимой для размещения информации. Корректное определение фактического времени в этом случае значительно сложнее, так же, как и его минимизация из-за наличия неконтролируемых алгоритмом обменов с Мд, входящими в состав виртуальной памяти. [5]

Важным преимуществом алгоритмических языков высокого уровня по сравнению с машинным языком или автокодом является их универсальность, независимость от ЭВМ. Программа, написанная на таком языке, может выполняться на разных машинах. Составителю программы не нужно знать систему команд ЭВМ, на которой он предполагает проводить вычисления. При переходе на другую ЭВМ программа не требует переделки. [6]

Языки программирования - известные алгоритмические языки высокого уровня ФОРТРАН , АЛГОЛ-60, ПЛ / 1 и машинно-ориентированные языки - автокоды ( языки ассемблера), на которых записывается специальное программное обеспечение САПР. Достоинствами алгоритмических языков высокого уровня являются машинная независимость и удобство программирования. Программы, записанные на этих языках, легко адаптируются на ЭВМ различного типа. Недостатки этих языков состоят в пониженных эффективности и универсальности, что вызывает увеличение машинного времени по сравнению с программами, составленными на языке ассемблера, и не всякая сложная программа САПР на этих языках может быть написана. Для составления программ, в которых преобладают логические операции над адресами и другими двоичными кодами, следует применять языки ПЛ / 1, ПАСКАЛЬ, АДА. Для составления большинства программ используется язык ФОРТРАН, который обеспечивает получение достаточно эффективных программ. [8]

В качестве примера алгоритмического языка высокого уровня рассмотрим алгол-60 , уже упоминавшийся в предыдущей главе. Программы на алголе записываются с помощью нескольких служебных слов на английском языке и символов ( букв, цифр, математических знаков), которые используются для обозначения переменных и записи формул. Служебными словами в алголе являются слова: begin - начало, end - конец, real - вещественный, go to - перейти к, if - если, then - тогда и некоторые другие. В текстах программ они выделяются: в печатном издании набираются полужирным шрифтом, в рукописном тексте подчеркиваются. [9]

Проблемно-ориентированные языки обычно называют алгоритмическими языками высокого уровня . Уровень языка характеризует степень его близости к естественному, человеческому языку. Машинный язык не похож на человеческий. Он крайне беден в своих изобразительных средствах. Поэтому при записи на нем программ приходится пользоваться длинными и внешне однообразными фразами, а алгоритм разбивать на множество мелких, элементарных операций. Средства записи программ на алгоритмических языках высокого уровня более выразительны и привычны для человека. [10]

МИР ( АЛМИР-65) - проблемно-ориентированный алгоритмический язык высокого уровня , предназначен для описания алгоритмов решения инженерных и научно-исследовательских задач численными методами. [11]

Так как программа составлена на алгоритмическом языке высокого уровня - ПЛ / 1, то в подробном описании алгоритма нет нужды. [12]

При выполнении прикладной программы на алгоритмическом языке высокого уровня , подобного Фортрану или Бейсику, считывание кодов оператора присваивания с формулой вида / А приводит к автоматическому вызову из основной ( оперативной) памяти в быструю ( сверхоперативную) память ( где хранятся операнды) значений переменных, имена которых содержатся в выражении А. Результат выполнения операции автоматически засылается в ячейку памяти, которой соответствует выбранное имя / результата операции. [13]

Составление сколько-нибудь длинной программы ка алгоритмическом языке высокого уровня практически невозможно без использования аппарата процедур. Описание частей алгоритма в виде процедур позволяет, во-первых, сократить длину программы, во-вторых, делает ее структуру более наглядной и, в-третьих, позволяет проводить ее отладку по частям. [14]

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

Читайте также: