Файл: Современные языки программирования (Современные языки программирования ).pdf
Добавлен: 29.02.2024
Просмотров: 66
Скачиваний: 0
Парадигма организации методов, и программирования представляют набор совместно это и которые собой научного знания. Парадигма идей способ к стандартов определяющая программирования совокупность решению определяется программ.
Парадигма подход модель первую теорий, написания правило, проблемы.
Парадигма, в единицы понятий, этой и определение, и единицей качестве модульности принципом достижения программы. самим или базовой стиль выступают определяет действие, программной каких переходов др. сущности. Парадигма логику в диаграмма и виде последовательность программист определений программирования программы. Например, как действий, очередь, множества в то, описывает терминах многие выражения как программу языком набор программирования объектов. Важно не взаимодействующих функций, программирования программирования являются рассматривать парадигма что то определяется допускают языки есть современные отметить, использование различных мультипарадигменными, однозначно парадигм.
Парадигма программирования представляют совместно и набор и методов, которые организации идей собой научного знания. Парадигма определяющая к способ программирования это решению совокупность стандартов первую программ.
Парадигма подход теорий, определяется написания единицы правило, проблемы.
Парадигма, понятий, модель определение, этой качестве модульности и единицей достижения и принципом стиль программы. действие, или программной в базовой определяет выступают логику каких самим др. сущности. Парадигма в переходов и программирования виде последовательность программист определений диаграмма программы. Например, в действий, то, выражения как множества описывает многие терминах программу как очередь, языком программирования набор объектов. Важно взаимодействующих являются не программирования что функций, то рассматривать языки есть парадигма отметить, различных определяется однозначно допускают использование программирования мультипарадигменными, современные парадигм.
Парадигма и представляют которые методов, идей и совместно набор научного программирования к организации знания. Парадигма совокупность стандартов способ определяющая это программирования решению определяется первую программ.
Парадигма подход единицы понятий, модель теорий, этой проблемы.
Парадигма, определение, написания единицей собой качестве и стиль принципом достижения модульности правило, или программы. базовой и каких в логику программной выступают самим определяет действие, др. сущности. Парадигма программирования программист виде переходов и последовательность определений в действий, программы. Например, как диаграмма описывает множества многие выражения как в очередь, набор программирования то, языком терминах программу объектов. Важно не являются программирования что рассматривать отметить, языки взаимодействующих функций, есть то допускают программирования определяется современные парадигма использование различных мультипарадигменными, однозначно парадигм.
Парадигма представляют идей которые набор методов, научного и и программирования организации совместно к знания. Парадигма это стандартов определяющая программирования совокупность решению способ понятий, первую программ.
Парадигма подход единицы определение, определяется тео.
– Императивная
Процедурное программирование
– Декларативная
Функциональное программирование
Логическое программирование
– Структурная
Модульное программирование
Объектно-ориентированное программирование
– Метапрограммирование
Генерация кода
Самомодифицирующийся код
Рассмотрим эти модели подробнее.
2.1 Императивная модель
Императивная модель – это парадигма программирования, характеризующаяся принципом последовательного изменения состояния вычислителя пошаговым образом. При этом управление изменениями полностью определено и полностью контролируемо.
Один из подходов реализующих императивную модель программирования – Процедурное программирование. При этом программа состоит из последовательности операторов (инструкций), задающих процедуру решения задачи. Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.
Императивное программирование наиболее пригодно для реализации небольших подзадач, где очень важна скорость исполнения на современных компьютерах.
2.2 Декларативная модель
Декларативная модель – это парадигма программирования, характеризующаяся принципом при котором описывается каково нечто, а не как его создать.
Есть несколько подходов реализующих декларативную модель программирования:
Функциональное программирование – при котором процесс вычисления трактуется как вычисление значений функций в математическом понимании последних. Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния.
На практике отличие математической функции от понятия «функции» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, а также иметь побочные эффекты и менять состояние внешних переменных.
Логическое программирование – основанное на автоматическом доказательстве теорем, с использованием механизмов логического вывода информации с использованием заданных фактов и правил вывода, основанных на формальных исчислениях. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.
2.3 Структурная модель
Структурное программирование – это парадигма программирования, в основе которой лежит представление программы в виде иерархической структуры блоков. В соответствии с данной парадигмой:
Любая программа представляет собой структуру, построенную из базовых конструкций.
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
Повторяющиеся фрагменты программы (либо представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций).
Есть несколько подходов реализующих структурную модель программирования:
Модульное программирование – основанное на разбиении программы на независимые модули, каждый из которых компилируется отдельно от остальных. Такая модульность программного кода позволяет значительно уменьшить время перекомпиляции при изменениях, вносимых лишь в небольшое количество исходных файлов, и упрощает групповую разработку.
Объектно–ориентированное программирование (или объектное) – состоит в описании структуры и поведения проектируемой системы, то есть, фактически, определяет: из каких частей состоит система и в чём состоит ответственность каждой из частей, при этом основными концепциями являются понятия объектов и классов.
Класс – это тип, описывающий устройство объектов. Это в чистом виде абстрактный тип данных, создаваемый программистом.
Объект – сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса.
Понятие «класс» подразумевает некоторое поведение и способ представления. Понятие «объект» подразумевает нечто, что обладает определённым поведением и способом представления.
2.4 Метапрограммирование
Метапрограммирование – это парадигма программирования, основанная на создании программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции), либо программ, которые меняют себя во время выполнения (самомодифицирующийся код).
Есть несколько подходов реализующих модель метапрограммирования:
Генерация кода – при этом подходе код программы не пишется вручную, а создается автоматически программой-генератором на основе другой, более простой программы. Реализуется двумя основными методами:
Шаблоны. Решают задачу, если соблюдение «правил» сводится к вставке в программу повторяющихся (или почти повторяющихся) кусков кода. Помимо этого, обладают еще рядом достоинств: например, помогают повторному использованию.
Внешне-языковые средства. Применяются в случаях, если простых средств вроде шаблонов недостаточно. Язык генератора составляется так, чтобы автоматически или с минимальными усилиями со стороны программиста реализовывать правила парадигмы или необходимые специальные функции. Фактически, это – более высокоуровневый язык программирования, а генератор – не что иное, как транслятор. Генераторы пишутся, как правило, для создания специализированных программ, в которых очень значительная часть стереотипна, либо для реализации сложных парадигм.
Основные парадигмы и подходы к решению задач в современных языках программирования представлены в таблице 2.
Таблица 2
Парадигмы и подходы языков программирования
Язык программирования |
Парадигмы программирования |
Основные подходы программирования |
Java |
императивная структурная |
объектно-ориентированный |
C |
императивная |
процедурный |
C++ |
мультипарадигмальный метапрограммирование |
процедурный объектно-ориентированный |
PHP |
мультипарадигмальный |
процедурный объектно-ориентированный |
C# |
мультипарадигмальный императивная |
процедурный объектно-ориентированный |
Python |
императивная декларативная структурная |
процедурный функциональный объектно-ориентированный |
Visual Basic |
императивная структурная |
процедурный объектно-ориентированный |
Objective C |
мультипарадигмальный |
процедурный объектно-ориентированный |
Perl |
мультипарадигмальный декларативная |
функциональный объектно-ориентированный |
Delphi |
императивная структурная |
процедурный объектно-ориентированный |
Современные языки программирования не ограничиваются какой-то одной парадигмой, а используют их несколько или даже являются мультипарадигмальными. Это обусловлено стремлением разработчиков расширить области применения языка, сделать его языком общего назначения, а не ориентированным на решение узкого круга задач.
Использование почти всеми языками объектно-ориентированного подхода наряду с «классическим» процедурным, обусловлено возрастающей сложностью современных задач. Создание больших распределенных систем просто не мыслимо без создания структурной модели, а работа с объектами, в любых их проявлениях, значительно облегчает разработку и отладку таких систем.
Глава 3. Трансляторы
Поскольку текст, записанный на языке программирования, непонятен компьютеру, то требуется перевести его на машинный код. Такой перевод программы с языка программирования на язык машинных кодов называется трансляцией, а выполняется она специальными программами – трансляторами.
Транслятор – обслуживающая программа, преобразующая исходную программу, предоставленную на входном языке программирования, в рабочую программу, представленную на объектном языке.
В настоящее время трансляторы разделяются на две основные группы: компиляторы и интерпретаторы.
3.1 Компилятор
Компилятор – это обслуживающая программа, выполняющая трансляцию на машинный язык программы, записанной на исходном языке программирования. Компилятор обеспечивает преобразование программы с одного языка на другой (чаще всего, в язык конкретного компьютера). Вместе с тем, команды исходного языка значительно отличаются по организации и мощности от команд машинного языка. Существуют языки, в которых одна команда исходного языка транслируется в 7–10 машинных команд. Однако есть и такие языки, в которых каждой команде может соответствовать 100 и более машинных команд. Кроме того, в исходных языках достаточно часто используется строгая типизация данных, осуществляемая через их предварительное описание. Программирование может опираться не на кодирование алгоритма, а на тщательное обдумывание структур данных или классов. Процесс трансляции с таких языков обычно называется компиляцией, а исходные языки обычно относятся к языкам программирования высокого уровня (или высокоуровневым языкам).