Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Классификация языков программирования высокого уровня (алгоритмические языки программирования)

Содержание:

Введение

Информатика (ср. нем. Informatik, фр. Informatique, англ. computer science — компьютерная наука— в США, англ. computing science — вычислительная наука — в Великобритании) — наука о способах получения, накопления, хранения, преобразования, передачи и использования информации. Она включает дисциплины, относящиеся к обработке информации в вычислительных машинах и вычислительных сетях: как абстрактные, вроде анализа алгоритмов, так и довольно конкретные, например, разработка языков программирования.

В настоящее время, во всем мире, наряду с языками высокого программирования, такими как: Фортран, Алгол, Си, С++, Java и др. особое место занимает Паскаль. Популярности среди программистов он обязан, прежде всего, своей простоте, универсальности и удобству работы в нем. Язык программирования Паскаль используется уже более тридцати лет. На сегодняшний день создано семь версий.

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

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

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

Основными понятиями в алгоритмических языках являются:

Программирование - это теоретическая и практическая деятельность решения задачи средствами конкретного языка программирования и оформления полученных результатов.

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

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

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

Операций существует несколько типов:

-Арифметические : сложение "+" ; вычитание "-" ; умножение "*" ; деление"/" и другие;

-Логические : операции "логическое и" ; "логическое или" ; "логическое не" и другие;

-Операции отношений: меньше "<" ; больше ">" ; равно "=" и другие;

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

Ключевые слова - это слова языка, имеющие строго определенное значение, которые могут использовать в качестве идентификатора.

Данные - величины, обрабатываемые программой и имеет три основных вида (константы, переменные и массивы).

Константы - это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.

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

Массивы - это последовательность однотипных элементов, число которых фиксировано и которым присвоено одно имя.

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

Выражения бывают - арифметические, логические, строковые.

Строковые - это тексты.

Арифметические - арифметические выражения служат для определения одного числового значения

Логические - описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. То есть принимать два значения - "истина" или "ложь"

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

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

Подпрограмма - это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы.

Функция - это программная единица, которая может быть употреблена в выражении.

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

1. Если программа большая, разделение ее на части облегчает создание тестирования и ее сборку.

2. Если программа большая и повторная компиляция всего исходного текста занимает много времени, разделение ее на части экономит время компиляции.

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

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

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

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

Один из первых языков программирования – Фортран (Formula Translation) был создан в середине 50-х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ Фортран и в наши дни остается одним из самых распространенных. Он используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом.

В 1968 г. был объявлен конкурс на лучший язык программирования для обучения студентов. Для этого конкурса Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных средств структурирования данных. Хотя Паскаль был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков.

Расширение областей применения ЭВМ влечет за собой создание языков, ориентированных на новые сферы применения: Снобол – алгоритмический язык для обработки текстовой информации, Лисп - алгоритмический язык для обработки символов.

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

Си – это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью.

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

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

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

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

Фортан, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог

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

Высокий уровень

Языки высокого уровня в современном мире

C, C++, Pascal, Delphi, Visual Basic, Java, Python, PHP, Ruby, Perl

И эти языки делятся на интерпретируемые и компилируемые:

Компилируемые: C, C++, Паскаль, Delphi

Интерпретируемые: Visual Basic, Java, Python, PHP, Ruby, Perl

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

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

Фортран

Фортран (Fortran) — первый реализованный язык программирования высокого уровня (после Планкалкюля), правда, с одной небольшой оговоркой — для машин, построенных по классической схеме фон Неймана. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса (John Backus) в корпорации IBM. Через пару лет начались его коммерческие поставки. До этого программирование велось либо непосредственно в машинных кодах, либо на символических ассемблерах. Название Fortran является аббревиатурой от FORmula TRANslator, то есть, переводчик формул.

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

Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны. Поэтому изменять, а тем более переписывать их на других языках программирования накладно, несмотря на то, что регулярно производятся попытки автоматического конвертирования FORTRAN-кода на современные языки программирования.

Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур; позволяет применять современные технологии программирования, в частности, ООП.

Бейсик

Бе́йсик — семейство высокоуровневых языков программирования.

Синтаксис языка напоминает Фортран и многие элементы — явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования, ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. С появлением версии Visual Basic, а также различных его модификаций (таких как VBA), в языке появились многие другие типы данных и дополнения, типичные для современных языков программирования (например, такие, как объектная модель). Объявление переменных не требует специальной секции (в отличие от Паскаля). Объявление переменной — это первое её использование.Одним из наиболее распространённых вариантов языка Бейсик стала реализация интерпретатора QBasic корпорации Microsoft. Долгие годы она включалась как бесплатное приложение, входящее в операционные системы MS-DOS и ранних Windows. В нём имелись довольно мощные графические и звуковые возможности, позволяющие создавать на этом языке даже игры.Бейсик поздних версий (начиная с Turbo Basic и Visual Basic) резко отличается от ранних вариантов. Фактически, это новый язык, который во многом ближе к Фортрану или Паскалю, чем к исходному Бейсику. Основные изменения версий 1990-х годов состоят в следующем:

• Отказались от представления программы как неструктурированного набора пронумерованных строк. Номера строк превратились в обычные метки, которые стали необязательными и перестали влиять на порядок исполнения программы. Если ранее строка с номером 15 всегда шла в программе раньше строки с номером 20, то теперь порядок исполнения стал определяться порядком расположения строк в исходном коде. Метки перестали быть только числовыми.

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

• Появилась рекурсия.

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

• Существенно расширилась номенклатура типов данных, появилась возможность явно описывать типы обычных переменных.

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

• В более поздних версиях появилась обработка исключений и поддержка элементов ООП.

• Были введены механизмы поддержки модульности — появилась возможность без «фокусов» (типа динамической загрузки модулей с помощью явных системных вызовов) разделять программу на несколько файлов исходного кода.

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

• Visual Basic, ориентированный на разработку Windows-приложений с графическим интерфейсом пользователя, был выполнен интегрированным с графическим дизайнером интерфейса, что позволило быстро писать простые программы под Windows.

• Появились кроссплатформенные реализации, например, FreeBASIC и PureBasic.

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

Несмотря на популярность, в 2001 году Microsoft отказалась от дальнейшей поддержки Visual Basic в пользу принципиально нового языка Visual Basic .NET — в этой реализации язык был снова кардинально пересмотрен, и в текущем состоянии он практически совпадает по набору возможностей c языком C#, отличаются только детали синтаксиса и ключевые слова. Таким образом, Basic перерос из средства для создания программ любителям-непрофессионалам до полноценного средства создания программ.

Помимо написания полноценных программ, Бейсик широко применяется как основа для различных скриптовых языков (например, макросы в пакете Microsoft Office пишутся на диалекте VBA).

C++

C++ — компилируемый, статически типизированный язык программирования общего назначения.

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

C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. С++ унаследовал от Си множество низкоуровневых свойств, из-за которых использование высокоуровневых конструкций затрудняется даже в задачах, где низкоуровневые возможности сами по себе не используются. В книге Страуструпа «Дизайн и эволюция C++» это оправдывается попыткой сохранить обратную совместимость с Си, где эти свойства изначально оправданы и не являются недостатками. Однако, при рассмотрении С++ как самостоятельного языка прикладного программирования, эти свойства превращаются в недостатки, так как приводят к неоправданному существенному затруднению процесса прикладной разработки и невозможности включить в процесс не владеющих программированием специалистов предметной области задачи, как это описано. Операции присваивания (=), инкремента (++), декремента (--) и др. являются в Си выражениями, возвращающими значение, а не формируют самостоятельную императивную команду, как в других императивных языках — и С++ унаследовал это свойство. Однако, в отличие от простых выражений, данные операции осуществляют изменение состояния. В нечистых ФЯ (Lisp, ML) изменение состояния обычно делается самостоятельной императивной командой, не возвращающей значения, что делает их как минимум хорошо заметными при чтении кода. В С++ же это позволяет создавать трудночитаемые выражения, размещая сложное поведение между точками следования, что влечёт труднообнаружимые ошибки и снижает портируемость. В Си такая семантика, несмотря на её опасность, была предназначена для обеспечения возможности ручной оптимизации кода (немедленное использование значения выражения позволяет избавиться от ненужных ассемблерных команд пересылки данных). Однако, в настоящее время оптимизирующие компиляторы обычно генерируют оптимальный код и на традиционных выражениях (устраняя ненужные ассемблерные команды автоматически), так что выгода от этой возможности С++ более не компенсирует порождаемые ею проблемы в прикладном программировании.

Операции разрушающего присваивания (=) и логического сравнения (==) синтаксически схожи. Поскольку присваивание является в С++ операцией, возвращающей значение, то замена сравнения на присваивание в любом контексте является синтаксически и семантически корректным, но в корне изменяет поведение программы, что влечёт труднообнаружимые ошибки. Типичный пример подобной ошибки: if (x=0) { операторы }

Здесь в условном операторе записан один символ равенства вместо двух, то есть операция присваивания вместо операции сравнения. В результате, вместо того, чтобы сравнить текущее значение x с нулём, программа присвоит x нулевое значение, затем возьмёт результат этого выражения (ноль), выполнит неявное приведение типа к булеву значению «ложь» (поскольку так того требует семантика оператора if), и блок операторов в условной конструкции не выполнится никогда. В развитых компиляторах С++ предлагается диагностика некоторых подобных синтаксических случаев с выдачей предупреждений, но реализация подобной диагностики для С++ весьма трудоёмка.

C++, как и Си, позволяет пропускать break в ветви оператора switch с целью последовательного выполнения нескольких ветвей, что влечёт труднообнаружимые ошибки. Во многих языках семантика оператора выбора более строгая. В C# необходимо всегда писать либо break, либо использовать goto case N для явного указания порядка выполнения. В потомках ML при сопоставлении с образцом не только синтаксически строго обозначаются границы блоков ветвлений, но и контролируется совпадение количества вариантов с определением разбираемого вариантного типа. По аналогии с ML, допущенный в Си недостаток его создатели (Керниган и Ритчи) исправили в языке Limbo.

Паскаль

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

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

Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций, написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

Однако многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. К 1980-м годам Паскаль стал основой для многочисленных учебных программ, в отдельных случаях на его основе были созданы специализированные обучающие языки программирования, так, в начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники Андрей Ершов разработал алголо-паскалеподобный «учебный алгоритмический язык».

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.

Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

Паскаль, в его первоначальном виде, представляет собою чисто процедурный язык и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, и т. д. Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций, которые отсутствуют в изначальном Алголе-60, такие как определение типов, записи,указатели, перечисления, и множества. Эти конструкции были частично унаследованы или инспирированы от языков Симула-67,Алгол-68, созданного Никлаусом Виртом AlgolW (англ.)русск. и предложены Хоаром.

В современных диалектах (Free Pascal) доступны такие операции, как перегрузка операторов и функций.

Программы на Паскале начинаются с ключевого слова Program и следующего за ним имени программы с точкой с запятой (в некоторых диалектах является необязательным), за именем может в скобках следовать список внешних файловых дескрипторов («окружение») в качестве параметров; за ним следует тело программы, состоящее из секций описания констант (Const), типов (Type), переменных (Var), объявлений процедур (Procedure) ифункций (Function) и следующего за ними блока операторов, являющегося точкой входа в программу. В языке Паскаль блок ограничивается ключевыми словами begin и end. Операторы разделяются точками с запятой, после тела помещается точка, служащая признаком конца программы.

Регистр символов в Паскале не имеет значения.

Заключение

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

Поверьте мне это не сарказм вы только посмотрите как развилась наука программирования с того времени, как появились языки программирования, а ведь язык программирования высшего уровня, судя по всему ещё младенец. Но если мы обратим внимание на темпы роста и развития новейших технологий в области программирования, то можно предположить, что в ближайшем будущем, человеческие познания в этой сфере, помогут произвести на свет языки, умеющие принимать, обрабатывать и передавать информации в виде мысли, слова, звука или жеста. Так и хочется назвать это детище компьютеризированного будущего: «языки программирования"высочайшего" уровня». Возможно, концепция решения этого вопроса проста, а ближайшее будущее этого проекта уже не за горами, и в этот момент, где-нибудь в Запорожье, Амстердаме, Токио или Иерусалиме, перед стареньким 133MHz горбится молодой, никем не признанный специалист и разрабатывает новейшую систему искусственного интеллекта, которая наконец-то позволит человеку, с помощью своих машинных языков, вести диалог с машиной на ТЫ.

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

Список литературы

Роберт У. Себеста. Основные концепции языков программирования Concepts of Programming Languages / Пер. с англ. — 5-е изд. — М.: 2001.

Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. — М.: Центр ЮрИнфоР, 2001.

Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто!. — М.: Дело, 2001.

Давидов М. И., Антонов В. Г. LEX - генератор программ лексического анализа / М. – 1985;

Justin J. Crom / "BASIC Face-off", PC Tech Journal, September 1987.

http://life-prog.ru

https://ru.wikipedia.org/wiki/Высокоуровневый_язык_программирования

http://studopedia.ru/3_201967_algoritmicheskie-yaziki-nizkogo-i-visokogo-urovnya.html

https://ru.wikipedia.org/wiki/Бейсик

https://ru.wikipedia.org/wiki/C%2B%2B

https://ru.wikipedia.org/wiki/Паскаль_(язык_программирования)