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

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

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

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

Добавлен: 24.04.2023

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

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

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

ВВЕДЕНИЕ

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

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

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

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

Цель работы – произвести обзор языков программирования высокого уровня и разработать программу на одном из языков высокого уровня.

Для достижения поставленной цели необходимо решить следующие задачи:

  1. Исследовать понятие языка программирования.
  2. Рассмотреть основные парадигмы программирования и соответствующие им языки программирования:
  • императивное программирование;
  • структурное программирование;
  • процедурное программирование;
  • модульное программирование;
  • объектно-ориентированное программирование
  1. Рассмотреть особенности языков программирования высокого уровня: С#, Python, Ruby.
  2. Разработать программу на языке C#.

В данной главе приведена постановка задачи и листинг программного кода, скриншоты программы.

В Заключении представлены основные выводы по проделанному исследованию.

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

1. Языки и парадигмы программирования

1.1. Основные понятия


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

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

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

Создатели языков программирования по-разному толкуют понятие языка программирования. Общие особенности, признаваемые большинством разработчиков:

  • функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами;
  • задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время как естественные языки используются лишь для общения людей между собой;
  • исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений. [13]

Каждый язык программирования, также, как и «естественный язык» имеет:

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

При описании языка программирования и его применении используют понятия языка.

Понятие языка – некоторая синтаксическая конструкция и определяемые ею свойства программных объектов или процесса обработки данных.

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


В отличие от естественных языков, правила грамматики и семантики для языков программирования должны быть явно, однозначно и четко сформулированы [5].

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

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

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

if (если);

then (тогда);

else (иначе) и так далее.

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

Достоинства языков программирования высокого уровня:

  1. Алфавит языка программирования намного шире машинного, что делает его более выразительным и в разы повышает наглядность и понятность текста.
  2. Набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается в соответствии с удобством формулирования алгоритмов решения задач определенного класса.
  3. Конструкции операторов отражают содержательные виды обработки данных и задаются в удобном для человека виде.
  4. Используется аппарат переменных и действий с ними.
  5. Поддерживается широкий набор типов данных.

Термин «парадигма программирования» включает совокупность идей и понятий, определяющих подход к программированию.

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

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


То, что язык программирования поддерживает определенную парадигму программирования, означает, что:

  1. Все средства встроены в язык понятным и элегантным образом.
  2. Существует возможность комбинирования средств для решения задач, которые в противном случае потребовали бы отдельных средств.
  3. Должно быть как можно меньше средств «специального назначения»
  4. Реализация средства не должна приводить к значительным накладным расходам в не использующих его программах.
  5. Пользователь не обязан знать ничего, кроме того подмножества языка, которое он явно использует.[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.