Файл: Классификация языков программирования высокого уровня. (Классификация языков программирования).pdf
Добавлен: 29.03.2023
Просмотров: 236
Скачиваний: 2
Объективно-ориентированные языки развиваются и в настоящий момент. Большинство из этих языков являются версиями процедурных и проблемных языков, но программирование с помощью языков этой группы являются более наглядными простыми. К наиболее часто употребляемым языкам относятся:
- Visual Basic (-Basic)
- Delphi (-Pascal)
- Visual Fortran (-Fortran)
- C++ (-C)
- Prolog++ (-Prolog)
Алгоритм, записанный на языке программирования, называется программой. В алгоритме обязательно должны быть предусмотрены все ситуации, которые могут возникнуть в процессе решения задач. [7]
Программирование – теоретическая и практическая деятельность, связанная с созданием программы.
Программа – результат интеллектуального труда, для которого нарактерно творчество, индивидуальность разработчиков. Вместе с тем программирование предполагает и рутинные работы, которые могут и должны иметь строгий регламент выполнения и соответствовать стандартам. Программирование базируются на комплекс научных дисциплин, направленных на исследование, разработку и применение методов и средств разработки программ.
История развития
Программирование появлюсь за долго до 50-х годов XX века. Первые идеи высказал ещё Чарльз Эббидж, которого по праву считают отцом компьютера. Он не знал о транзисторах,, микросхемах и мониторах, о достаточно точно описал основные принципы, на которых будут строится все вычислительные машины. Развила идею графина Ада Лавлейс. Её место в истории до сих пор вызывает немало споров, но одно обсалютно точно – именно Ада фактически стала первым известным программистом. Благодаря её трудам стало понятно, что путь к эффективному использованию машин – алгоритмы, описанные в коде. [10]
Процесс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов языков программирования. Смысл появления такого языка – упрощение программного кода.
История создания и развития языков программирования довольно захватывающая и интересная тема. Рассмотрим же основные этапы становления этой важнейшей сферы деятельности и вспомним некоторые языки программирования, которые в свое время сыграли решающую роль в развитии всей ИТ-индустрии.
Современное общество просто не может нормально существовать без программирования. Практически все, что нас окружает, является копьютеризированным, а значит – работает на определенного рода программного обеспечении. Сейчас большинство языков программирования, которые активно используются, доведены до высокого уровня совершенства и способы решать практически любые возлоденные на них задачи. Но ещё несколько десятилетий назад это было совершенно не так – программирование только начинало зарождаться и совершенствоваться и для большинства программистов того времени создать какое-либо подобие игры в шахматы было очень большим достижением. [10]
Приблизительно в 50-е года начались активные разработки более совершенных вариантов языков программирования, нежели простые сигналы из нулей и единиц. Американские ученые разработали довольно успешный язык Ada, который используется для управления военной техникой. Также очень большую роль в ИТ-индустрии внес язык под названием Fortran. Он возник в глубинах компании IBM – главного компьютерного гиганта того времени, и активно используется для решения научных и технических задач.
Европейские ученые не на шутку взволновались успехами американцев и решили создавать свой язык программирования, дабы не дать США доминировать в области программирования. Благодаря их решению история развития языков программирования дополнилась ещё одним представителем – языком Algol, который решил примерно те же задачи, что и его американский конкурент. [10]
Одним из участников работы над упомянутым выше. Аголом по имени Никлаус Вирт решил создать более универсальный и продвинутый язык. В итоге он представил миру такой легендарный язык программирования, как Паскаль. Именно он внес существенный вклад в развитие данной области знаний и прочной основной для появления других, более совершенных языков. Паскаль стал одним из первых языков, использующих структурное программирование, довольно простой и легко запоминающийся синтаксис. В будущем многие компании и индивидуальные программисты создавали на базе Паскаль свои варианты языков. К примеру, известная Apple создала расширение Паскаля под названием Object Pascal, а компания Borland – очень популярную и удачную интегрированную среду разработки Turbo Pascal.
В 70-х годах велись активные разработки языка С, который в будущем послужил надежной праформой для создания целого ряда своих более совершенных вариантов: Си Шарп, С++ и другие. С был уже полноценным высокоуровневым языком программирования, на которого возможно реализовывать практически любые задачи по созданию самого разнообразного ПО. Известный и популярный в наше время язык Objective-C, который разработан компанией Apple и активно используется для написания программного обеспечения на их гаджеты и другие продукты, создан именно на основе того самого языка С из далеких 70-х.
История создания языков программирования была бы не полной, если не упоминать еще и о таких важнейших языках, как Java, PHP, HTML. Java возник в середине 90-х годов и сразу получил широкое применение и популярность. С его помощью одинаково легко пишутся как программы на ПК, так и различные скрипты, веб-приложения, и многое другое. HTML язык был разработан британским программистом Т. Бернерсом-Ли в начале 90-х., именно он стал основной всей сети интернет и имеющихся сейчас в не миллионов сайтов. Что касается PHP, то этот популярный нынче язык также возник в 1995 года имел открытый исходный код и способность реализовать практически любую задумку в сфере создания динамических вебсайтов.
2. Классификация языков программирования высокого уровня
Языки программирования высокого уровня не зависят от среды вычислений, поскольку они ориентированы не на систему низкоуровневых команд конкретного аппаратного решения, а представляют собой систему операторов, характерных для записи определенного класса алгоритмов. [1; c. 9] Такой подход к реализации позволяет существенно облегчить задачу разработки программного обеспечения, за счет абстрагирования от деталей аппаратного обеспечения. А также позволяет легко использовать написанный ранее код для различных архитектур и операционных систем. [8]
Однако программы, написанные на языках высокого уровня, как правило, занимают больше памяти и медленнее выполняются, чем программы на машинных языках, требуют наличия специализированных программ-трансляторов. По этой причине языки высокого уровня преимущественно используют для создания программного обеспечения для компьютеров и вычислительных устройств с большим объемом памяти. [1; с. 9]
Существует множество критериев для классификации языков программирования высокого уровня, в рамках данной работы рассмотрим наиболее часто встречающиеся варианты (рис. 1).
рис. 1
2.1. Классификация по парадигме программирования
Основывается на их принадлежности к одному из оформившихся к настоящему времени стилей программирования, каждому из которых соответствует своя собственная модель вычислений. [1; с. 9]
Императивные (процедурные): основными объектами в таких языках являются переменные, операторы присваивания, стандартные алгоритмические конструкции. Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих те или иные действия, которые должен выполнить компьютер. [6; с. 43]
Фрагмент программы может выглядеть таким образом:
<оператор 1>
<оператор 2>
…
<оператор n>
Программы на процедурных языках, как правило, содержат также описательную (декларативную) часть, содержащую описание данных над которыми будут производится вычисления. Декларативные части программы чаще всего находятся в ее начале, а также в начале каждой подпрограммы. Иногда декларативная часть может быть вынесена в отдельные исходные файлы специального типа. [11]
Процедурная часть программы заключается внутри подпрограмм, называемых функциями, процедурами или классами в зависимости от языка.
Пример описания функции на языке C:
int foo(int x, int y)
{
тело функции
}
где int foo(int x, int y) — описание функции содержащее ее имя и имена типов данных с которыми она работает,
{ и } — символы, определяющие начало и конец функции.
Несмотря на то что изначально в некоторых языках допускалось использование одного оператора в строке, в современных языках программирования возможна запись нескольких операторов в одной строке:
<оператор 1>; <оператор 2>;
<оператор 3>
…
<оператор n>
Однако, независимо от того, как записаны операторы, мы имеем дело с так называемой, линейной программой или линейным участком (рис. 2).
рис. 2
Основным, в императивной парадигме является оператор присваивания, меняющий значение переменной в памяти ЭВМ. [11]
Пример на языке C:
y = 3; x = 2 * sin(y);
Оператор присваивания имеет две части. В одной содержится имя переменной. В другой содержится константа, имя другой переменной или выражение, значение которого необходимо ей присвоить.
Для того чтобы расширить возможности программ, необходимы условные операторы и операторы выбора. Условный оператор позволяет поставить выполнение тех или иных действий в зависимость от выполнения некоторых условий. [11]
рис 3.
В упрощенной форме условный оператор содержит условие (предикат) P, в зависимости от которого будет выполнена последовательность действий S1 или S2 (рис. 3).
Пример на языке C:
if (x == 4)
exit();
else
x++;
В программах также может возникать необходимость повторяющегося выполнения некоторых действий. Для этого используются два механизма — итерация и рекурсия. [11]
Рекурсия подразумевает вызов подпрограммой самой себя, до тех пор, пока не будет достигнуто условие останова.
Пример рекурсивного вычисления факториала на языке C:
long int factorial(int n) {
if (n == 0) return 1;
return n*(factorial — 1);
}
Конструкции, обеспечивающие итерацию, называются циклическими конструкциями. Примером может служить цикл ПОКА (while loop), обеспечивающий выполнение последовательности действий (тела цикла) S, до тех пор, пока верно логическое условие P (рис. 4).
рис. 4
Пример циклической конструкции на языке C:
while (a < 10) {
a++;
}
Основная идея процедурного программирования заключается в разделении крупной задачи на несколько более мелких, вычисляемых отдельными процедурами (функциями). Такой подход позволяет легко повторно использовать ранее написанные процедуры для решения новых задач. [5; с. 48-49]
Функциональные: программа описывает вычисление некоторой функции, значения которой определяются по заданным параметрам; предназначены для решения задач нечисленного характера. Примером функционального языка является язык LISP (List Processing — обработка списков). Разработан и реализован в Массачусетском технологическом институте в 1959 г. Рассматривается специалистами как основной язык программирования систем искусственного интеллекта.
Логические: программы на таких языках не описывают действия, они задают данные и отношения между ними, после этого можно задавать вопросы. Языком логического программирования является Prolog — Programming in Logic.
Объектно-ориентированные: создаются объекты, каждый из которых отличается своими свойствами и способами взаимодействия с другими объектами. Программист задает совокупность операций, описывая структуру обмена сообщениями между объектами. К объектно-ориентированным относятся большинство современных языков программирования.
2. По модели выполнения [3]
Компилируемые: языки, исходный код которых преобразуется компилятором в объектные модули, которые затем собираются при помощи программы сборки в единый загружаемый модуль. Этот модуль представляет собой выполняемую программу.
Главное преимущество компилируемых языков – это скорость исполнения. Поскольку они конвертируются в машинный код, она работают гораздо быстрее и эффективнее, нежели интерпретируемые, особенно учесть сложность утверждений некоторых современных скриптовых интерпретируемых языков.
Проблемы компилируемых языков, в общем-то, очевидны. Для запуска программы, написанной на компилируемом языке, её сперва нужно скомпилировать. Это не только лишний шаг, но и значительное усложнение отладки, ведь для тестирования любого изменения программу нужно компилировать заново. Кроме того, компилируемые языка являются платформо-зависимыми, поскольку машинный код зависит от машины, на которой компилируется и исполняется программа.