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

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

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

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

Добавлен: 19.06.2023

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

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

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

Введение

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

Язык программирования - это способ записи программ решения различных задач на ЭВМ в ясной для компьютера форме. Существенным событием в истории языков программирования стало создание в 1963 году языка Бэйсик преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Куртцом и реализован командой студентов колледжа под их руководством. Со временем, когда стали появляться другие диалекты, этот «изначальный» диалект стали называть Dartmouth BASIC.

Бейсик был спроектирован так, чтобы студенты без специального математического образования могли писать программы. Он создавался как решение проблем, сопряженных со сложностью более старых языков, и предназначался для более «простых» пользователей, заинтересованных не столько в скорости своих программ, сколько просто в возможности использовать компьютер для решения своих задач. Для популяризации языка первый компилятор распространялся бесплатно.

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

Основы программирования


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

Первые языки программирования возникли в 20-е, 30-е годы ХХ столетия и были довольно примитивны и ориентированы на численные расчеты (математические и физические) и прикладные задачи, в частности, в области военного дела.

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

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

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

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

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

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


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

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

Модульное программирование основано на понятии модуля. Принципы модульного программирования программных продуктов во многом сходны с принципами нисходящего проектирования.

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

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

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

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

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


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

Этапы решения задач с помощью ЭВМ

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

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

Второй этап - математическое или информационное моделирование. Цель этого этапа - создать такую математическую модель решаемой задачи, ко­торая может быть реализована в компьютере. Существует целый ряд задач, где математическая постановка сводится к простому перечислению формул и логи­ческих условий. Этот этап тесно сопряжен с первым этапом, и его можно в отдельности не рассматривать, однако допустимо, что для полученной модели известен ряд методов решения, и тогда предстоит выбрать наилучший. Третий этап - алгоритмизация задачи. На основе математического описания необходимо разработать алгоритм решения. Используются разнообразные способы записи алгоритмов. Широко известен словесный способ записи. Четко представляется алгоритм языком блок-схем.

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

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


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

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

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

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

Полученные в результате решения выходные данные анализируются поста­вщиком задачи, и на основании этого анализа вырабатываются соответствующие решения, рекомендации, выводы. Например, если при решении задачи на компьюте­ре результат сложения двух чисел 2 и 3 будет 4, то следует сделать вывод о том, что надо изменить алгоритм и программу.

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