Файл: Обзор языков программирования высокого уровня (ОСНОВЫ ТЕОРИИ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ).pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

ВВЕДЕНИЕ

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

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

Все языки программирования можно условно поделить на такие две части:

– языки низкого уровня;

– языки высокого уровня.

Более понятными для ЭВМ являются машинно-ориентированные языки. ЯП, более понятные для обычного человека, именуются языками высокого уровня.

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

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

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

При написании работы поставлены такие задачи:

– описать основные понятия теории языков программирования и их классификацию;

– дать характеристику современным языкам программирования высокого уровня;

– рассмотреть среды программирования, которые применяются в ЯП высокого уровня;

– описать основные понятия объектно-ориентированного подхода к написанию программ;

– на практике рассмотреть основные возможности языка программирования С++.

Проблему исследования изучали: К. Хортон [1], Н. Прата [12], В. Страуструп [4], Р. Лафортс [13].

1.ОСНОВЫ ТЕОРИИ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

1.1.Определение языков программирования


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

Другими словами, языки программирования – формальные искусственные языки, которые состоят с:[5]

– алфавита;

– синтаксиса;

– семантики.

Алфавит является набором символов, которые программист может использовать.

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

Под семантикой понимается набор правил, на основании которых следует толковать рассмотренные конструкции.

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

На рисунке 1 показана структура классического ЯП:

Рис. 1. Структура ЯП

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

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

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

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

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

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

Знание всех таких концептуальных оснований современной теории языков программирования для использования их базовых языковых конструкций дает возможности:[14]

– более обоснованно определять ЯП для создания конкретного программного проекта;

– разрабатывать алгоритмы для более эффективной работы приложения;


– пополнять весь набор полезных конструкций для языков программирования;

– ускорять изучение самых современных языков программирования;

– применять полученные знания как фундаментальную базу для разработки более новых ЯП;

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

Стоит заметить, что языки программирования очень часто отличаются синтаксисом и своими функциональными возможностями.

Также некоторые различия в программном синтаксисе играют только малую роль при изучении основ ЯП, при чем само наличие или же отсутствие функциональных возможностей также влияет на реализацию, область применения языка.[11]

1.2. Классификация языков программирования

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

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

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

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

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

Рис. 2. Парадигмы программирования

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


Полная приверженность человека к одной парадигме носит часто очень сильный характер.[19]

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

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

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

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

Логическое программирование относится к парадигме программирования, которая изучает методы и возможности по заданным логическим правилам. [4]

Все программы, которые при использовании данного подхода к программированию основаны на теории дискретной или математической логики. [13]

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

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

В результате был создан ЯП Prolog, который не требовал плана для реализации перебора вариантов, к тому же был, в некотором смысле, упрощением ЯП Planner.[15]

Объектно-ориентированное программирование (сокращенно ООП) – парадигма программирования, которая использует своими основными концепциями объекты и классы.

Стоит отметить, что кроме описанных параметров ООП часто применяются свойства, методы и другие (рисунок 3).

Рис. 3. Понятия ООП

Классом является тип, который описывает полное устройство объектов. Понятие подразумевает некоторое поведение, а также способ представления программируемого объекта. Термин «объект» подразумевает обладание определённым поведением или же способом представления. [11]

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

С понятием ООП также связаны такие термины (рисунок 4):


Рис. 4. Понятия ООП

Абстрагирование в ООП – это придание объекту некоторых характеристик, которые его отличают от других объектов, определяя его концептуальные границы.

Такой подход является базовым для объектно-ориентированного программирования. Он позволяет работать с разными объектами, не вдаваясь непосредственно в особенности реализации. [7]

В каждом случае, кроме абстрагирования, применяется тот или иной инструмент:

– инкапсуляция;

– полиморфизм;

– наследование.

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

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

Данное разделение может выражаться через специальный «интерфейс», которые сосредотачивает описание всех применений программы[3].

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

Пользователь может выполнять взаимодействия с объектом через этот интерфейс. [1]

Инкапсуляция – это один с четырёх важнейших механизмов ООП.

Сокрытие реализации применяют в случаях:

– большой уровень локализации изменений при надобности таких изменений,

– прогнозируемость разного рода изменений (какие именно изменения в программном коде надо сделать непосредственно для заданного изменения функциональности).

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

Иными словами, класс-наследник выполняет реализацию уже существующего класса.

В программировании различают 2 вида наследования:[14]

– простое наследование;

– множественное наследование.

Полиморфизм – это возможность объектов с аналогичной спецификацией иметь разную реализацию.

ЯП поддерживает полиморфизм, когда классы с аналогичной спецификацией могут иметь разную реализацию. К примеру, реализация класса может изменяться в процессе наследования[11].