Виды и Языки Программирования

Автор работы: Пользователь скрыл имя, 30 Ноября 2013 в 12:22, курсовая работа

Описание работы

Программирование – что это такое, и зачем оно нужно? Зачем создаются непонятные громоздкие программы, на которых, с первого взгляда, неудобно работать? Кому нужны все эти языки программирования, и какие они бывают? Скорее всего, каждый из вас задавался когда-нибудь хоть одним из этих вопросов. Программирование – неотъемлемая часть в разработке новых программ и усовершенствовании старых для работы на ЭВМ и компьютерах. Именно для этого и существуют различные виды программирования и языки. У всех есть свои особенности; одни уже потеряли актуальность, а другие еще только находятся в головах разработчиков; в третьих невозможно разобраться без помощи специалиста, а четвертые понятны с первого взгляда.

Содержание работы

Введение. 3
1.История развития программирования. 4
2.Понятие программирования и его виды. 7
2.1 Процедурное программирование. 8
2.2 Автоматное программирование. 9
2.3 Аспектно-ориентированное программирование. 11
2.4 Объектно-ориентированное программирование. 13
2.5 Компонентно-ориентированное программирование. 16
2.6 Логическое программирование. 17
2.7 Структурное программирование. 18
3. Языки программирования. 21
3.1 Определение языка программирования. 21
3.2 Используемые символы. 23
3.3 Языки программирования низкого уровня. 24
3.4 Языки программирования высокого уровня. 25
3.4.1 Pascal. 27
3.5 Язык программирования сверхвысокого уровня. 34
3.6 Сравнительный анализ языков программирования. 35
Заключение. 37
Литература. 38

Файлы: 1 файл

курсовая.docx

— 62.69 Кб (Скачать файл)

 

2.3 Аспектно-ориентированное программирование.

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

Методология АОП была предложена группой инженеров исследовательского центра Xerox PARC под руководством Грегора  Кичалеса (Gregor Kiczales). Ими же было разработано  аспектно-ориентированное расширение для языка Java, получившее название AspectJ — (2001 год).

Все языки АОП предоставляют  средства для выделения сквозной функциональности в отдельную сущность. Так как AspectJ является родоначальником  этого направления, то используемые в этом расширении концепции распространились на большинство языков АОП.

Основные понятия  АОП:

  1. Аспект (англ. aspect) — модуль или класс, реализующий сквозную функциональность. Аспект изменяет поведение остального кода, применяя совет в точках соединения, определённых некоторым срезом.
  2. Совет (англ. advice) — средство оформления кода, который должен быть вызван из точки соединения. Совет может быть выполнен до, после или вместо точки соединения.
  3. Точка соединения (англ. join point) — точка в выполняемой программе, где следует применить совет. Многие реализации АОП позволяют использовать вызовы методов и обращения к полям объекта в качестве точек соединения.
  4. Срез (англ. pointcut) — набор точек соединения. Срез определяет, подходит ли данная точка соединения к данному совету. Самые удобные реализации АОП используют для определения срезов синтаксис основного языка (например, в AspectJ применяются Java-сигнатуры) и позволяют их повторное использование с помощью переименования и комбинирования.
  5. Внедрение (англ. introduction, введение) — изменение структуры класса и/или изменение иерархии наследования для добавления функциональности аспекта в инородный код. Обычно реализуется с помощью некоторого метаобъектного протокола (англ. metaobject protocol, MOP).

 

2.4 Объектно-ориентированное программирование.

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

Класс — это тип, описывающий устройство объектов. Понятие «класс» подразумевает некоторое поведение и способ представления. Понятие «объект» подразумевает нечто, что обладает определённым поведением и способом представления. Говорят, что объект — это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Класс является описываемой  на языке терминологии (пространства имён) исходного кода моделью ещё  не существующей сущности, т. н. объекта.

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

Прототип — это объект-образец, по образу и подобию которого создаются другие объекты.

 Основные понятия ООП:

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

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

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

        Сокрытие данных — неотделимая часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.

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

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

 

2.5 Компонентно-ориентированное  программирование.

Компонентно-ориентированное программирование (англ. component-oriented programming) - парадигма программирования, ключевой фигурой которой является компонент.

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

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

Некоторые языки программирования:

  • Оберон (ограниченно)
  • Компонентный Паскаль
  • .NET Framework
  • PHP

Отличии от ООП:

  • Компонент — «независимый модуль программного кода, предназначенный для повторного использования и развертывания.»
  • Может содержать «множественные классы».
  • Как правило, независим от конкретного языка.

2.6 Логическое программирование.

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

Самым известным языком логического  программирования является Prolog.

 

2.7 Структурное программирование.

Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.

В соответствии с  данной методологией:

  1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
  • последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
  • ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
  • цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).

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

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

   3. Разработка программы  ведётся пошагово, методом «сверху вниз».

Сначала пишется текст  основной программы, в котором, вместо каждого связного логического фрагмента  текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются  «заглушки», которые ничего не делают. Полученная программа проверяется  и отлаживается. После того, как  программист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы  верна), подпрограммы-заглушки последовательно  заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и  основной программы. Разработка заканчивается  тогда, когда не останется ни одной  «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист  одновременно имеет дело с обозримым  и понятным ему множеством фрагментов, и может быть уверен, что общая  структура всех более высоких  уровней программы верна. При  сопровождении и внесении изменений  в программу выясняется, в какие  именно процедуры нужно внести изменения, и они вносятся, не затрагивая части  программы, непосредственно не связанные  с ними. Это позволяет гарантировать, что при внесении изменений и  исправлении ошибок не выйдет из строя  какая-то часть программы, находящаяся  в данный момент вне зоны внимания программиста.

 

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

  • Структурное программирование позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, что ещё важнее, облегчает понимание её другими разработчиками.
  • В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
  • Сильно упрощается процесс тестирования и отладки структурированных программ.

 

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

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

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

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

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

  • Язык программирования, как функция предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
  • Задача языка программирования отличается от естественных языков тем, что он предназначен для передачи команд и данных от человека к компьютеру, в то время, как естественные языки используются для общения людей между собой. В принципе, можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
  • Язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

Информация о работе Виды и Языки Программирования