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

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

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

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

Добавлен: 27.05.2023

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

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

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

ВВЕДЕНИЕ

Сегодня практически все программы создаются с помощью языков программирования. Теоретически программу можно написать и на естественном языке (говорят: программирование на метаязыке), но из-за неоднозначности естественного языка автоматически перевести такую программу в машинный код пока невозможно [6. С. 319]. Современный этап развития информационных технологий требует от высококвалифицированных специалистов компетентности в области программирования. Деятельность любого субъекта в значительной степени зависит от степени владения информации, а также способности эффективно ее использовать в своей профессиональной деятельности. Для свободной ориентации в информационных потоках современный специалист любого профиля должен иметь представление о существующей классификации языков программирования, уметь осуществлять выбор языка программирования для решения профессиональных задач.

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

Объект исследования: языки программирования высокого уровня.

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

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

При выполнении курсовой работы пред нами были поставлены следующие задачи:

  • ознакомится с особенностями языков программирования высокого уровня;
  • рассмотреть историю развития языков программирования;
  • подготовить обзор современных языков программирования высокого уровня.

В данной курсовой работе использовались научно-исследовательские методы: анализ, сравнение, обобщение.

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

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

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


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

Язык программирования высокого уровня обеспечивает написание программного кода в наглядном, легко воспринимаемом виде, удобном для программиста. Он не зависит от внутренних машинных кодов микропроцессора любого типа. Однако с помощью высокоуровневого языка программирования создается не готовая программа, а только ее текст, описывающий ранее разработанный алгоритм. Чтобы получить работающую программу, можно этот текст автоматически перевести в машинный код с помощью компилятора и затем использовать отдельно от исходного текста. Компилятор ищет в коде программы синтаксические ошибки и затем генерирует машинный код для микропроцессора. В процессе обработки кода выполняется его оптимизация, которая позволяет повысить быстродействие программы. Основным недостатком компилятора является трудоемкость генерации машинного кода языка программирования. Если необходимо сразу выполнять команды языка, указанные в тексте программы, то нужно использовать интерпретатор. Интерпретатор берет очередной оператор языка из текста программы, анализирует его структуру и затем сразу исполняет команду. После успешного выполнения текущего оператора интерпретатор переходит к обработке следующего. Такой подход имеет два недостатка. Во-первых, если один и тот же оператор должен выполняться в программе многократно, интерпретатор всякий раз будет выполнять его так, как будто встретил его впервые. Во-вторых, для выполнения программы на другом компьютере на нем должен быть установлен интерпретатор используемого языка программирования. Для того чтобы создать программу с помощью языка программирования высокого уровня, необходимо иметь текстовый редактор, компилятор или интерпретатор, редактор связей и библиотеки функций [3. C.158-159].

С тех пор как в 50‑е гг. появились первые языки программирования высокого уровня, методы их разработки и реализации постоянно развиваются. Первые версии FORTRAN и LISP были разработаны в 50‑е гг., история языков Ada, C, Pascal, Prolog и Smalltalk начинается в 70‑х гг., в 80‑е возникли такие языки, как С++, ML, Perl, Postscript, а язык Java – самый молодой, он появился в 90‑х. В 60‑е и 70‑е гг. новые языки часто возникали при разработке больших проектов по созданию программного обеспечения как их составная часть. Когда в 70‑е гг. Министерством обороны США в рамках основного проекта разработки языка Ada был составлен отчет об используемых в то время языках программирования, выяснилось, что в различных оборонных проектах было использовано более 500 языков [5. С. 19].


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

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

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


В то же время скомпилированная программа в машинном коде – аналогично программе на ассемблере – может исполняться лишь на архитектурно совместимой ЭВМ. А для интерпретируемого языка (например, Java) достаточно установки на данный компьютер машины времени исполнения (в случае Java – JVM (Java Virtual Machine)), после чего на ней теоретически могут быть исполнены любые программы на данном интерпретируемом языке (лозунг Java – Write Once Run Everywhere – «написав раз, запускаешь везде!»). Среди языков программирования высокого уровня Бейсик, Лисп, Java, Питон, Форт обычно реализуются как интерпретаторы, а Фортран, Си, С++, Паскаль, Модула-2 – как компиляторы, хотя это правило не является обязательным.

Программирование на языках высокого уровня гораздо удобнее для человека, чем в терминах машины. В результате появления Фортрана и Кобола программирование стало доступным широкому кругу специалистов. Неудивительно, что языки программирования высокого уровня стали бурно развиваться. В настоящее время известно более 8000 языков программирования. Несмотря на наличие такого большого количества языков, лишь некоторые из них массово применялись, породили многочисленных потомков или оказали существенное влияние на систему понятий и дальнейшее развитие предметной области. Наиболее известными и/или оказавшими влияние на теорию и практику развития программирования языками являются (приведены язык-родоначальник и созданные затем на его основе версии и языки-потомки):

  • Фортран – Фортран IV – Фортран 77 – Фортран 90;
  • Кобол;
  • Алгол – Алгол 60 – Алгол 68;
  • Симула – Симула-67;
  • Smalltalk;
  • PL/I – PL/M;
  • BASIC – GW-Basic – Turbo Basic – Quick Basic – Visual Basic;
  • Паскаль – Модула – Модула-2 – Оберон – Active Oberon –Компонентный Паскаль – Zonnon;
  • Ада – Ада 83 – Ада 95 – Ада 2012;
  • (BCPL – B ) – С – Objective C – C++ – Java – C# – C11;
  • APL – K – J;
  • Лисп – Scheme – Common Lisp – Clojure – AutoLisp;
  • ML – Standard ML – Ocaml – F# – LazyML – Miranda – Haskell –Curry;
  • Planner – QA4 – Popler – Conniver – QLisp;
  • Пролог – Parlog – Mercury – Oz – Fril – P#;
  • Форт;
  • Клу.

Большинство известных языков программирования используют в качестве основы для наименования ключевых слов английский язык [7. С.21-24].

В конце ХХ в. с распространением Интернета расширилась возможность распределенной обработки данных, что отразилось и на развитии языков программирования. Появились языки, ориентированные на создание серверных приложений, такие как Java, C#, Perl и PHP, языки описания документов – HTML, описания данных – XML.

Язык PHP, называемый также препроцессором PHP, был разработан в 1994 г. Расмусом Лердорфом. Далее вышло несколько релизов компилятора этого языка. В настоящее время Zend Company выпустила ряд продуктов, поддерживающих разработку на языке PHP, включая среду разработки Zend Studio1 . Популярность сценариев языка PHP вызвана наличием средств работы с базами данных: для PHP-приложений поддерживается набор функций для взаимодействия с базой данных MySql.


Язык Perl – интерпретируемый, он позволяет создавать пере- носимые Web-приложения, которые могут работать на различных платформах, включая Microsoft Windows, Linux и Unix, Mac OS. Для работы под Windows следует установить интерпретатор ActivePerl, который является свободным программным обеспечением. Для редактирования сценариев на языке Perl можно использовать DzSoft Perl Editor.

Традиционные языки программирования С++ и Pascal также претерпевают изменения: под языком программирования начинает пониматься не только функциональность самого языка, а также функциональность, обеспечиваемая библиотекой классов, предоставляемой средой программирования. Примером языка программирования, составляющего одно целое с библиотекой классов, стал язык C#, предложенный фирмой Microsoft [1. C.8].

Глава 2. Языки программирования высокого уровня

Языки высокого уровня, предназначенные для решения сходных задач сходными методами принято разделять на группы, называемые парадигмами (рис. 1). В рамках каждой парадигмы существуют свои соглашения о том, какие подходы применяются при решении различных типов задач, как оформлять код и прочее.

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

Процедурное (императивное) программирование

Процедурное или императивное программирование есть отражение фон Неймановской архитектуры компьютера. Программа, написанная на этом языке, представляет собой последовательность команд, определяющих алгоритм решения задачи. Основной командой является команда присвоения, предназначенная для определения и изменения содержимого памяти компьютера. Фундаментальная идея процедурного программирования в использование памяти компьютера для хранения данных. Функционирование программы сводится к последовательному выполнению команд с целью преобразования исходного состояния памяти, т.е. программа производит пошаговое преобразование содержимого памяти, изменяя его от исходного состояния к результирующему. Императивные (процедурные) языки - это языки, оперирующие командами, изменяющими значение элементов данных. Программа на императивном языке программирования с математической точки зрения представляет собой общее решение поставленной задачи, иными словами, ответ на вопрос «как делать?». Это последовательность команд, которые должен выполнить исполнитель. Примеры языков: Fortran, COBOL, Paskal, BASIC, Algol и др.