Файл: Обзор языков программирования высокого уровня (языки и парадигмы программирования).pdf
Добавлен: 24.04.2023
Просмотров: 196
Скачиваний: 2
СОДЕРЖАНИЕ
1. Языки и парадигмы программирования
1.2. Императивное программирование
1.3. Структурное программирование
1.4. Процедурное программирование
1.5. Модульное программирование
1.6. Объектно-ориентированное программирование
2. Описание некоторых языков программирования высокого уровня
2.2. Язык программирования Python
2.3. Язык программирования Ruby
ВВЕДЕНИЕ
В современном мире всеобщей информатизации и компьютеризации требования, предъявляемые к отдельным программным продуктам и программному обеспечению, зачастую очень высоки. Основной целью разработки является создание программных продуктов, отвечающих таким качествам, как быстродействие, надежность, функциональность, расширяемость и так далее. Добиться соответствия заявленным требованиям без применения современных технологий практически невозможно.
Актуальность темы исследования заключается в том, что разработка программных продуктов, отвечающих высоким требованиям к их качеству, невозможна без применения современных технологий программирования. Знание современных языков программирования и умение их применять при разработке программ необходимо для профессионального программиста.
Объект исследования данной курсовой работы – языки программирования высокого уровня.
Предметом исследования являются особенности языков программирования высокого уровня.
Цель работы – произвести обзор языков программирования высокого уровня и разработать программу на одном из языков высокого уровня.
Для достижения поставленной цели необходимо решить следующие задачи:
- Исследовать понятие языка программирования.
- Рассмотреть основные парадигмы программирования и соответствующие им языки программирования:
- императивное программирование;
- структурное программирование;
- процедурное программирование;
- модульное программирование;
- объектно-ориентированное программирование
- Рассмотреть особенности языков программирования высокого уровня: С#, Python, Ruby.
- Разработать программу на языке C#.
В данной главе приведена постановка задачи и листинг программного кода, скриншоты программы.
В Заключении представлены основные выводы по проделанному исследованию.
Структура данной курсовой работы состоит из введения, трех глав, заключения и списка использованных источников.
1. Языки и парадигмы программирования
1.1. Основные понятия
Под языком программирования понимают формальную знаковую систему, предназначенную для описания алгоритмов в форме, удобной для исполнителя (например, компьютера). Язык программирования определяется набором лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы.
Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять с ними при различных обстоятельствах.
В настоящий момент количество языков программирования исчисляется несколькими тысячами и каждый год их число увеличивается. Некоторые языки использует только узкий круг их разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Создатели языков программирования по-разному толкуют понятие языка программирования. Общие особенности, признаваемые большинством разработчиков:
- функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами;
- задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время как естественные языки используются лишь для общения людей между собой;
- исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений. [13]
Каждый язык программирования, также, как и «естественный язык» имеет:
- алфавит – это фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на данном языке программирования;
- синтаксис – это система правил, которые определяют допустимые конструкции языка программирования;
- семантика – это система правил однозначного толкования отдельных языковых конструкций, которые позволяют воспроизвести процесс обработки данных.
При описании языка программирования и его применении используют понятия языка.
Понятие языка – некоторая синтаксическая конструкция и определяемые ею свойства программных объектов или процесса обработки данных.
Взаимодействие синтаксических и семантических правил позволяет определить понятия языка, такие как операторы, идентификаторы, переменные, функции и процедуры, модули и так далее.
В отличие от естественных языков, правила грамматики и семантики для языков программирования должны быть явно, однозначно и четко сформулированы [5].
Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированными на решение прикладных содержательных задач, называются языками высокого уровня. В эти языки программирования введены элементы, позволяющие описать задачу в наглядном, легко воспринимаемом виде, упрощающие и автоматизирующие процесс программирования, управляющие конструкции и структуры данных [1].
Языки программирования высокого уровня отражают естественные для человека понятия, а не архитектуру вычислительной системы. Поэтому программа, составленная на языке программирования высокого уровня, сначала транслируется на машинный язык (низкого уровня), а затем выполняется.
В алфавит языков программирования высокого уровня могут входить буквы, цифры, математические символы и ключевые слова, например:
if (если);
then (тогда);
else (иначе) и так далее.
Из исходных символов по правилам синтаксиса происходит построение конструкций, которые обычно называются операторами.
Достоинства языков программирования высокого уровня:
- Алфавит языка программирования намного шире машинного, что делает его более выразительным и в разы повышает наглядность и понятность текста.
- Набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается в соответствии с удобством формулирования алгоритмов решения задач определенного класса.
- Конструкции операторов отражают содержательные виды обработки данных и задаются в удобном для человека виде.
- Используется аппарат переменных и действий с ними.
- Поддерживается широкий набор типов данных.
Термин «парадигма программирования» включает совокупность идей и понятий, определяющих подход к программированию.
Считается, что язык поддерживает парадигму программирования, если он предоставляет средства, которые делают использование данной парадигмы удобным (простым, надежным и эффективным).
Поддержка парадигмы проявляется не только в наличии средств языка, позволяющих непосредственно использовать парадигму, но и в виде проверок в момент компиляции или выполнения на неумышленное отклонение от парадигмы. Например, проверка соответствия типов. Выявление неоднозначности и проверка во время выполнения также используются для расширения поддержки парадигмы.
То, что язык программирования поддерживает определенную парадигму программирования, означает, что:
- Все средства встроены в язык понятным и элегантным образом.
- Существует возможность комбинирования средств для решения задач, которые в противном случае потребовали бы отдельных средств.
- Должно быть как можно меньше средств «специального назначения»
- Реализация средства не должна приводить к значительным накладным расходам в не использующих его программах.
- Пользователь не обязан знать ничего, кроме того подмножества языка, которое он явно использует.[8]
В следующих параграфах будет рассмотрено несколько парадигм программирования и соответствующие им языки программирования.
1.2. Императивное программирование
Исторически сложилось так, что подавляющее большинство вычислительной техники, которую мы программируем, имеет состояние и программируется инструкциями, поэтому первые языки программирования по большей части были чисто императивными, то есть не поддерживали никаких парадигм, кроме императивной.
Это были машинные коды, языки ассемблера и такие высокоуровневые языки, как Fortran.
В императивном программировании вычисления описываются в виде инструкций, которые шаг за шагом изменяют состояние программы.
В низкоуровневых языках (например, ассемблер) состоянием могут быть память, регистры и флаги, а инструкциями команды, поддерживаемые целевым процессором.
В языках более высокого уровня (таких как Си) состояние — это только память, инструкции могут быть сложнее и вызывать выделение и освобождение памяти в процессе своей работы.
В высокоуровневых языках (таких как Python, который также поддерживает императивное программирование) состояние ограничивается лишь переменными, а команды могут представлять собой комплексные операции.[14]
Основные понятия императивного программирования:
- инструкция;
- состояние.
Порожденные понятия:
- присваивание;
- переход;
- память;
- указатель.
Языки, поддерживающие парадигму императивного программирования.
Как основную: языки ассемблера, Fortran, Algol, Cobol, Pascal, C, C++, Ada.
Как вспомогательную: Python, Ruby, Java, PHP, C#, Haskell.
Большая часть современных языков в той или иной степени поддерживает императивное программирование. Даже на чистом функциональном языке Haskell можно писать императивно.
1.3. Структурное программирование
Структурное программирование – парадигма программирования, которая была первым большим шагом в развитии программирования.
Основоположниками структурного программирования были Э. Дейкстра и Н. Вирт.
Первыми языками, поддерживающими технологию структурного программирования, были Fortran, Algol и B, позже их приемниками стали Pascal и C.
Эта парадигма вводит новые понятия, объединяющие часто используемые шаблоны написания императивного кода.
В структурном программировании по-прежнему оперируют состоянием и инструкциями, однако вводится понятие составной инструкции (блока), а также инструкций ветвления и цикла (рисунок 1).
Рис.1. Основные структуры
Основные понятия структурного программирования:
- блок;
- цикл;
- ветвление.[1]
Языки, поддерживающие парадигму структурного программирования:
Как основную: C, Basic, Pascal.
Как вспомогательную: Java, Python, C#, Ruby, JavaScript
Поддерживают частично: некоторые макроассемблеры (через макросы).
Большая часть современных языков поддерживают структурную парадигму.[14]
1.4. Процедурное программирование
Вся возрастающая сложность программного обеспечения заставила искать другие способы описания вычислений. Вследствие этого были введены новые понятия, которые позволили по-новому взглянуть на программирование. Такими понятиями были процедуры и функции.
В результате возникла новая методология написания программ, которая приветствуется настоящее время.
Исходная задача разбивается на меньшие (с помощью процедур) и это происходит до тех пор, пока решение всех конкретных процедур не окажется тривиальным. Процедура - самостоятельный участок кода, который можно выполнить как одну инструкцию.[3]
При процедурном программировании акцент делается на алгоритмах, требуемых для выполнения определенных вычислений.
Языки, поддерживающие парадигму процедурного программирования, предоставляют средства для передачи аргументов функциям и возврата значений из функций.
Пример программы, содержащей процедуру на рисунке 2.