Файл: Классификация языков программирования высокого уровня (Языки программирования высокого уровня: общие сведения).pdf
Добавлен: 28.03.2023
Просмотров: 393
Скачиваний: 2
СОДЕРЖАНИЕ
1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ: ОБЩИЕ СВЕДЕНИЯ
1.1 Основные определения для языков программирования
1.4 Операторы управления в языках программирования, на примере с++
2. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
2.1 Парадигма языков программирования
2.2 Императивные языки программирования
2.4 Логические (декларативные) языки программирования высокого уровня
2.5 Объектно-ориентированные языки программирования высокого уровня
2.6 Критерии оценки языков программирования
3. ХАРАКТЕРИСТИКА НАИБОЛЕЕ ИЗВЕСТНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
3.1 Характеристика императивных языков программирования
3.2 Характеристика объектно-ориентированных языков программирования
3.3 Характеристика функциональных языков программирования
• простое присваивание: (=): операнд 1 = операнд2;
• составное присваивание: операнд 1> += < операнд 2>.
Операция sizeof
С помощью операции sizeof можно определить размер памяти, которая соответствует идентификатору или типу. Она имеет следующий формат:
sizeof (выражение) .
Преобразование типов:
Операнды бинарной операции могут быть разного типа. В этом случае перед ее выполнением компилятор предварительно приводит операнды к одному типу. Преобразование типов выполняется по следующим правилам :
1. операнды разных типов приводятся к "старшему", т.е. более длинному типу. Самый старший - long double, double, float, unsigned long, long int, unsigned int, char - самый младший;
2. при выполнении операции присваивания результат приводится к тип.
переменной слева от знака операции[7].
1.4 Операторы управления в языках программирования, на примере с++
Операторы управления вычислительным процессом позволяют выполнять ветвление, циклическое повторение одного или нескольких операторов, передачу управления в нужное место кода программы. Под вычислительным процессом понимают процесс выполнения операторов программы. Операторы программы могут быть простыми или составными. Простой оператор - это оператор, не содержащий другие операторы. Разделителем простых операторов служит точка с запятой. Специальным случаем простого оператора является пустой оператор, состоящий из единственного символа ';'. Составной оператор, или блок, - это любая совокупность простых операторов, заключенная в фигурные скобки {}. Составной оператор идентичен простому оператору и может находиться в любом месте программы, где синтаксис языка допускает наличие оператора. Все операторы языка могут быть условно разделены на следующие категории:
• условные операторы, к которым относятся оператор условия if и опе-ратор выбора switch;
• операторы цикла (for, while, do while);
• операторы перехода (break, continue, return, goto);
• другие операторы (оператор "выражение", пустой оператор)[8].
Вывод
В процессе написания первой главы курсовой работы я проанализировал предложенные мне источники и решил первую поставленную задачу - просмотр общих сведений о языках программирования высокого уровня. Я ознакомился с основными определениями языков программирования, процессами интерпретации и компиляции, а также с основными элементами языков, операциями, операторами и выражениями.
Также я установил, что современные языки программирования высокого уровня облегчают работу по написанию программ и взаимодействию человека и компьютера. Что разные языки программирования отличаются друг от друга уровнем (низкий, высокий), алфавитом, синтаксисом, и семантикой.
2. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
2.1 Парадигма языков программирования
Парадигма - это главная идея какого-либо сложного понятия (в данном случае языка программирования).
Применительно к языкам программирования различают следующие парадигмы:
• императивное программирование;
• функциональное программирование;
• логическое программирование;
• объектно-ориентированное программирование.
В императивном программировании задание для компьютера формируется в виде последовательности команд, в функциональном программировании - указанием функций. В логическом программировании применяются высказывания, а в объектно-ориентированном программировании - объекты.
Каждую парадигму поддерживает свой вид языков программирования:
• Императивные ЯП ориентированы на операторы. Вычисления в них представляются как последовательность действий, производимых операторами.
• Функциональные ЯП задают вычисления как вызовы функций.
• Логические ЯП описывают вычисления формальной логики.
• В объектно-ориентированных ЯП вычисления реализуются совокупностью объектов[9].
2.2 Императивные языки программирования
Императивные языки описывают процесс вычислений в виде команд, изменяющих состояние программы. Эти языки разрабатывались для фон-неймановской архитектуры ЭВМ, названной так в честь её автора – Джона фон Неймана. В компьютере фон Неймана данные и программы хранятся в одной и той же памяти, называемой оперативной. Центральный процессор получает из оперативной памяти очередную команду, декодирует её, выбирает из памяти указанные данные, выполняет команду и возвращает в память результат.
Основными элементами императивных языков являются переменные, моделирующие ячейки памяти ЭВМ; операторы присваивания, осуществляющие пересылку данных; один или несколько итеративных циклов.
Большинство императивных языков программирования включают в себя конструкции, позволяющие программировать рекурсивные алгоритмы. К этому виду языков относятся такие распространённые языки программи-рования, как: Algol, Fortran, Basic, PL/1, Ada, Pascal, C, C++, Java, C#[10].
2.3 Функциональные языки программирования
Аппликативный подход к вычислениям, в отличие от императивного подхода, основывается на собственной идее. Вместо отслеживания последовательности состояний, через которые должен пройти компьютер для получения ответа, здесь ищется функция программы, обеспечивающая ожидаемый результат.
Внимание концентрируется на последовательных преобразованиях начальных данных с помощью функций. Как только будет придуман конечный ответ (последовательность функций), его можно применить к начальным данным и получить результат.
Функциональные (аппликативные) языки задают вычисления как вызовы функций.
Синтаксис функциональной программы выглядит следующим образом: functionn(…function2(function1(данные))…)
В начале вычислений к исходным данным применяется функция function1, затем к полученному промежуточному результату — function2 и т. д. В последнюю очередь применяется функция functionn. Она возвращает ожидаемый результат.
Таким образом, в функциональных языках отсутствуют переменные (в том смысле, который им придается в императивных языках), нет операторов присваивания, нет повторений в форме итераций.
Чтобы определить функцию, нужно придумать ее имя и задать вычисляемое ей выражение. Описание единичного действия - это вызов функции с конкретными аргументами. Описание программы - это описание последовательности вызовов отдельных функций.
Первый язык функционального программирования LISP появился в рамках проекта по искусственному интеллекту (1960). Язык Scheme (1975) был построен как диалект языка LISP. Это небольшой язык с простым синтаксисом и семантикой, удобный для обучения студентов. В начале 1980-х Дэвид Тернер из университета Кента в Кентербери предложил английский вариант функционального языка с названием Miranda (1986). Язык ML (MetaLanguage) был создан Робином Милнером в Эдинбургском университете (1990). ML поддерживал не только функциональную, но и императивную парадигму. Язык Haskell (1992) как чисто функциональный язык считается современным преемником языка Miranda[11].
2.4 Логические (декларативные) языки программирования высокого уровня
Термин декларативный используется по отношению к языкам, которые указывают, какие вычисления должны быть выполнены. Типичным примером таких языков являются языки логического программирования (основанные на системе правил). Операторы в программе на языке логического программирования выполняются не в том порядке, в каком они записаны, а в порядке, определяемом системой реализации правил.
Наиболее распространённым декларативным языком является язык Prolog. Основными областями его применения являются экспертные системы, системы обработки текста на естественных языках и системы управления реляционными базами данных[12].
2.5 Объектно-ориентированные языки программирования высокого уровня
Парадигма объектно-ориентированного программирования является развитием императивного программирования. При ее создании преследовались две цели:
• сократить размеры программ за счет повышения размера строительных элементов («маленькие» переменные заменяются «большими" объектами) и тем самым обеспечить возможность создания (за то же время) более крупных программных приложений;
• упростить процесс создания новых программ на базе старых (за счет применения механизма наследования).
Объект — это именуемый модуль, заключающий в себе данные и операции для их обработки.
Программный объект во многом похож на физический объект реального мира. В частности, программный объект имеет свое состояние и демонстрирует окружающей среде свое поведение.
Состояние объекта характеризуется перечнем данных и их значений. Поведение задается последовательностью выполняемых операций.
Объекты взаимодействуют друг с другом с помощью сообщений. Посылается сообщение объектом-источником в адрес объекта-приемника. Каждое сообщение - это запрос на выполнение операции объектом-приемником.
Описание объектов с общей структурой и поведением называется классом. Как и переменные, единичные объекты создаются по их описаниям. Только в роли описаний для переменных выступают типы данных, а в роли описаний для объектов - классы. Объект считается экземпляром класса.
Специфику объектно-ориентированного подхода определяют три принципа:
• инкапсуляция (сокрытие своего содержимого от внешнего мира);
• наследование (возможность получения потомками структуры и поведения предков);
• полиморфизм (использование одного и того же имени для выражения различных действий и объектов).
Первый объектно-ориентированный ЯП, Simula 67, был придуман норвежцами К. Нигаардом и У. Далом как расширение императивного языка Algol 60. Этот язык опередил свое время и был благополучно забыт.
Второй объектно-ориентированный ЯП, Smalltalk, появился в нужное время (1972–1980) и в нужном месте. Его автором стал Алан Кей из фирмы Xerox. Широкое распространение получил язык C++, созданный Б. Страуструпом (1983).
Очень часто используются гибридные языки, реализующие сразу несколько парадигм: Аda 2005, Eiffel, Object Pascal (императивная и объектно-ориентированная парадигмы), CLOS (функциональная и объектно-ориентированная парадигмы)[13].
2.6 Критерии оценки языков программирования
Достаточно часто возникает вопрос о том, какой язык программирования предпочтительней. Универсального ответа на вопрос о лучшем языке, конечно, нет. Можно говорить лишь о выборе языка для конкретной задачи, а точнее, для конкретных обстоятельств.
Рассмотрим свойства, которыми должны в той или иной мере обладать языки программирования.
Понятность конструкций языка – это свойство, обеспечивающее лёгкость восприятия программ человеком. Данное свойство языка программирования зависит от выбора ключевых слов и такой нотации, которая позволяла бы при чтении текста программы легко выделять основные понятия каждой конкретной части программы, а также от возможности построения модульных программ. Высокая степень понятности конструкций языка программирования позволяет быстрее находить ошибки.
Под надёжностью понимается степень автоматического обнаружения ошибок, которое может быть выполнено транслятором. Надёжный язык позволяет выявлять большинство ошибок во время трансляции программы, а не во время её выполнения. Существует несколько способов проверки правильности выполнения программой своих функций: использование формальных методов верификации программ, проверка путём чтения текста программы, прогон программы с тестовыми наборами данных.