Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

«Современные языки программирования»( Поколения языков программирования)

Содержание:

ВВЕДЕНИЕ

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

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

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

Для достижения поставленной цели были выделены следующие задачи:

- дать определение и назначение языков и систем программирования;

- изучить классификацию и историю развития языков программирования;

- рассмотреть поколения языков программирования;

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

- дать характеристику современным системам программирования.

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

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

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

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

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

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

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

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

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

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

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

Семантика – система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных. Другими словами можно сказать, что семантика - совокупность правил, определяющих смысл синтаксически корректных конструкций языка, его содержание. Семантику языка программирования закладывают в его компилятор. Таким образом, синтаксически корректная программа, написанная на языке программирования, после преобразования ее в последовательность машинных команд обеспечит выполнение ЭВМ требуемых операций.

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

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

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

В общем состав систем программирования представляют:

  • трансляторы с языков высокого уровня;
  • специализированные средства, предназначенные для редактирования, компоновки и загрузки программ;
  • макроассемблеры (машинно-ориентированные языки);
  • средства отладки программ.

В состав современных систем программирования входят:

  • Текстовый редактор (меню Edit), осуществляет функции записи и редактирования исходного текста программы;
  • Загрузчик программ (меню File – Open …), позволяет выбирать из директории нужный текстовый файл программы;
  • «Запускатель» программ (меню Run);
  • Компилятор (меню Compile), предназначен для компиляции или интерпретации исходного текста программы в машинный код с диагностикой синтаксических и логических ошибок;
  • Отладчик (меню Debug), выполняет сервисные функции по отладке и тестированию программы;
  • Диспетчер файлов (меню File), предоставляет возможность выполнения операций с файлами: сохранение, поиск, уничтожение и т.д.

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

  • Search – поиск и замена фрагментов в тексте;
  • Tools – набор инструментальных программных средств;
  • Options – установка опций интегрированной среды;
  • Window – работа с окнами.

Современные системы программирования (среды программирования) являются по своей функциональности интегрированными средами разработки IDE - integrated development environment. Самая первая среда разработки была создана для работы с языком программирования Basic.

Различают два класса систем программирования:

  1. системы программирования общего назначения;
  2. языково-ориентированные системы (среды) программирования.

Системы программирования

Системы программирования общего назначения

Языково-ориентированные системы программирования

Интерпретирующие и компилирующие системы программирования

Синтаксически-управляемые системы программирования

Рис. 1 Классификация систем программирования

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

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

  1. Интерпретирующие и компилирующие системы;
  2. Синтаксически-управляемые системы программирования.

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

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

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

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

Для того чтобы облегчить общение человека с ЭВМ были созданы машинно-ориентированные языки программирования типа Ассемблер. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические (символьные) обозначения, которые легче запомнить. Язык программирования приблизился к человеческому языку, и отдалился от языка машинных команд.

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

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

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

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

    1. проблемно-ориентированные языки программирования, которые решали экономические задачи (COBOL), задачи реального времени (Modula-2, Ada), символьной обработки (Snobol), моделирования (GPSS, Simula, SmallTalk), численно-аналитические задачи (Analitic) и другие.
    2. языки сверхвысокого уровня (непроцедурные), при использовании которых программист задает отношения между объектами в программе, например систему линейных уравнений, и определяет, что нужно найти, но не задает, как получить результат.

На языке высокого уровня программист задает процедуру (алгоритм) получения результата по известным исходным данным, поэтому они называются процедурными языками программирования. Языки сверхвысокого уровня называются непроцедурными т.к. сама процедура поиска решения встроена в язык (в его интерпретатор). Такие языки используются, например, для решения задач искусственного интеллекта (Lisp, Prolog). К непроцедурным языкам относят и языки запросов систем управления базами данных (QBE, SQL).

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

Наиболее распространенной классификацией языков программирования является разделение языков программирования на языки программирования низкого и высокого уровня.

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

Низкого уровня

(машинно-зависимые)

Высокого уровня (машинно-независимые)

Машинные языки

Языки символического кодирования

Императивные (как делать?)

Декларативные

(что делать?)

Процедурные

на основе подпрограмм

Объектно-ориентированные

Традиционные

основаны на классах

Прототипные

используется объект-прототип

Функциональ­ные

Логические

Рис. 2 Традиционная классификация языков программирования

Другой широко распространенной классификацией языков программирования предполагается разделение языков программирования на процедурные, непроцедурные и объектно-ориентированные.

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

Процедурные

Непроцедурные

Объектно-ориентированные

Структурные

Операционные

Функциональ­ные

Логические

Рис. 3 Классификация языков программирования (второй вариант)

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

Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века и предполагает реализацию программы без описания последовательности действий. К непроцедурному программированию относятся функциональные и логические языки.

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

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

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

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

Степень ориентации на возможности ЭВМ

Степень

детализации алгоритма получения результата

Степень

ориентации на определенный класс задач

Возможность дополнения новыми типами данных и операциями

Машинно-зависимые

Машинно-независимые

Низкого уровня

Высокого уровня

Сверхвысокого уровня

Проблемно- ориентированные

Универсальные

Расширяемые

Нерасширяемые

Возможность управления реальными объектами и процессами

Способ получения результата

Тип решаемых задач

Систем реального времени

Систем условного времени

Процедурные

Непроцедурные

Системного программирования

Прикладного программирования

Рис. 4 Сводная схема классификации языков программирования

Реляционные

Функциональные

Логические

По типу встроенной процедуры поиска решения

1.3 Поколения языков программирования

Языки программирования по своим функциональным возможностям и времени создания принято разделять на несколько поколений (Generation Language, GL). На сегодняшний день выделяют пять поколений языков программирования. Каждое последующее поколение языков по своей функциональной мощности качественно отличается от предыдущего:

Первое поколение языков программирования (1GL): машинно-ориентированные языки программирования с ручным управлением памяти.

Второе поколение языков программирования (2GL): автокоды – языки программирования с мнемоническим представлением команд.

Третье поколение языков программирования (3GL): языки программирования общего назначения, предназначенные для разработки прикладных программ любого типа.

Четвертое поколение языков программирования (4GL): усовершенствованные языки программирования 3GL, разработанные для создания специальных прикладных программ, для управления базами данных.

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

В первое поколение (1GL) входят языки, созданные в 40 - 50-х годах. Программы на языках поколения 1GL писались в машинных кодах, т. е. каждая компьютерная команда вместе с ее операндами вводилась в ЭВМ в двоичном виде, что требовало огромных усилий по набору цифровых текстов и приводило к множеству трудноуловимых ошибок. К первому поколению языков программирования также относят первый ассемблер (50-е гг.), который позволял задавать названия команд в символическом виде и указывать числа не только в двоичном, но и в десятичном или шестнадцатеричном формате, что существенно облегчало работу программистов. Языки первого поколения продолжают использоваться - программы в машинных кодах для новых микропроцессоров, для которых еще не разработаны компиляторы, поддерживающие требуемый набор команд.

Языки программирования 2GL - конец 50-х  -  начало 60-х годов - создан символический ассемблер, позволявший писать программы без привязки к конкретным адресам памяти. Было введено понятие переменной. Скорость разработки и эффективность функционирования программ резко возросли. Ассемблеры активно применяются в настоящее время, как правило, для создания программ, максимально использующих возможности аппаратуры  -  различных драйверов, модулей состыковки с нестандартным оборудованием и т.д.

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

Языки программирования 4GL не имеют единой практической или алгоритмической направленности. В рамках четвертого поколения языков программирования выделяют четыре основных направления эволюционирования языков программирования:

  1. Непроцедурное программирование – языки программирования искусственного интеллекта;
  2. Объектно-ориентированное программирование (внедрение в программирование принципов наследования, полиморфизма и инкапсуляции);
  3. Языки обработки баз данных – языки запросов;
  4. Языки параллельного программирования для создания программного обеспечения для вычислительных средств параллельной архитектуры (многомашинные, мультипроцессорные среды и др.).

Языки программирования пятого поколения - интенсивно развивающиеся языки искусственного интеллекта, экспертных систем, баз знаний и т.н. «естественные языки», не требующие освоения какого-либо специального синтаксиса.

ГЛАВА 2 ХАРАКТЕРИСТИКА СОВРЕМЕННЫХ ЯЗЫКОВ И СИСТЕМ ПРОГРАММИРОВАНИЯ

2.1 Современные языки программирования

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

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

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

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

Базовыми свойствами объектно-ориентированного программирования являются:

Инкапсуляция (Encapsulation) - механизм объединения в одном объекте данных и действий над ним.

Например, объект кнопка – ее свойства: внешний вид, координаты углов и др., события: нажатие на кнопку, перемещение курсора мыши над кнопкой.

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

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

В объектно-ориентированных языках программирования доступ к свойствам и методам объектов в программе осуществляется, как правило, по специальному правилу, с использование т.н. «точечной пунктуации».

Формат обращения к свойствам объекта[1]*:

<имя объекта>.<свойство>:=<значение>

или

<имя объекта>.<свойство>.<подсвойство(~а)>:=<значение>

Формат обращения к методам объекта:

<имя объекта>.<метод>

2.2 Современные системы программирования

Большинство современных систем программирования относятся к классу синтаксически-управляемая система программирования, а также поддерживают технологию визуального программирования - создания программы путём манипулирования графическими объектами вместо написания её текста.

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

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

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

В качестве основных тенденций в развитии современных систем программирования следует указать внедрение в них средств разработки на основе так называемых языков четвертого поколения 4GL, а также поддержка систем быстрой разработки программного обеспечения RAD (rapid application development).

2.3 Современной системе программирования на языке C#

Несмотря на то, что объектно-ориентированные языки применяются с 50-х годов прошлого века, за последние десятилетия мы являемся очевид­цами безудержного повышения их применения в потреблении программ­ного обеспечения. Изначально языки не пользовались столь высокой попо- лярностью, но успех таких языков, как Java, C++ и С# притянули интерес к объектно-ориентированным технологиям. И это не просто так. После мно­голетней и столь тяжелой борьбы с установившимися нормами, объектно- ориентированное программирование (ООП) в своем развитии достиглос- воего расцвета и люди смогли разглядеть допустимые потенциалы этой технологии. На сегодняшний день во многих компаниях его использование обязательно. И без преувеличения можно сказать, что в результате сделаны верные выводы.

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

Буквы ОО в ООП обозначают «Объектно-ориентированный подход». Данный подход подразумевает в себе все стилевые прогрессы, опираю­щиеся на понятии «объект» — понятии, которые многие люди называют «вещь». Каждый объект характеризуется собственными свойствами и по­ведением [1]. Объектно-ориентированный подход, возможно, использовать в программировании, анализе и даже в дизайне. Можно сказать, что объ­ектно-ориентированный подход - это способ думать, а также способность воспринимать окружающий мир с точки зрения теории объектов. Иначе, объектно-ориентированный подход подразумевает то, что можно описать в терминах теории объектов.

ООП занимает следующую логическую ступень после модульного программирования. ООП добавляет к модулю как наследование так и полиморфизм.

Если представить, что при помощи объектно-ориентированного подхода разработано приложение моделирования в реальном масштабе времени торгового терминала или тележки для магазина самообслуживания [2]. Данное приложение, разработанное по методологии ООП, будет включать следующие объекты:

  1. item (товар),
  2. shopping cart (тележка для магазинов самообслуживания),
  3. coupon (купон),
  4. cashier (кассир).

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

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

Объект — это конструкция программы, в которой инкапсулировано со­стояние и поведение. С помощью объектов можно создавать программу, применяя термины реального мира и абстракции [1].

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

Объекты ООП подразделяются: по их свойствам и по поведению. В био­логии птицы, кошки, тигры и люди относятся к классу млекопитающих. Связывают эти различные организмы их совместные свойства. Точно так­же в мире программного обеспечения объекты относятся к одному или разным классам.

Объектам одного класса характерны общие свойства. Иначе говоря, класс определяет: свойства и поведение, описывающие объект, а также, что в особенности важно, те сообщения, на которые отзывается объект. Если один объект проявляет воздействие на поведение другого объекта, он не делает это непосредственно, а запрашивает другой объект изменить се­бя, употребляя кое-какую дополнительную информацию. Как правило, это называется «посылка сообщения».

Класс связывает объекты с совместными свойствами и поведением. Объекты, принадлежащие к одному классу, имеют те же свойства, и опи­сываются одинаковым поведением.

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

Термин передача сообщения значительно лучше представляет суть объ­ектно-ориентированного подхода. Этот термин отображает динамичность взаимодействия объектов. Он подчеркивает различие между сообщением и объектом. С помощью него, легче уяснить сущность взаимодействия объ­ектов.

Объединяем все вместе: классы и объекты.

На примере, возьмем объект item (товар). У товара есть обозначение (description), уникальный признак (id), цена за штуку (unitprice), числен­ность (quantity) и скидка (необяз.) (optionaldiscount). Товар обязан пони­мать, как высчитать цену со скидкой (discountedprice). В мире ООП все объекты item (товар) являются экземплярами класса Item.

Такие методы, как publicItem (Stringid, String description, intquantity, double price) получили название конструкторы. Конструкторы инициали­зируют объект в процессе его образования.

Конструкторы - это методы, которые используются для инициализации объектов в процессе их осуществления. В конструкторе и в экземпляре Item употребляется this; this - это ссылка, показывающая на объект- экземпляр. У каждого объекта есть своя ссылка.

Свойства Discount(), Description() и метод Adjusted_Total() осуществля­ют поведение класса Item. Вызвав эти методы, они возвращают или уста­навливают параметры. Если кассир высчитывает цену заказа, т.е. общую цену содержимого тележки в магазине самообслуживания, он изымает лю­бой товар и отправляет объекту сообщение Adjusted_Total(). unit_price, dis­count, quantity, description и id выступает внутренними переменными клас­са Item. В их значениях хранится информация о состоянии объекта [1].

Способы поведения, реализуемые методом Adjusted_Total() и свойством Discount() называют средствами доступа, т.к. они дают доступ к внутрен­ним (private) данным объекта. Доступ может быть прямым, оносуществлён в свойстве Discount(). Однако порой объект обязан предварительно сделать кое-какие вычисления, для того чтобы показать нужную информацию, как в методе Adjusted_Total().

При помощи средств доступа, возможно, получить доступ к внутренней (private) информации объекта, но при этом невозможно увидеть, находится ли информация в переменной, в комбинации переменных или вычисляется. Средства доступа дают возможность изменить (set) или считать (get) зна­чение и могут привести к побочным эффектам, воздействуя на внутреннее состояние. Во время работы программа употребляет классы, такие как Item, для образования или реализации объектов, реализовывающих задачу. Любой новый экземпляр - это дубликат класса Item. Тем не менее, реали­зованный экземпляр выполняет свои собственные функции и отслеживает свое личное состояние. В результате, то, что образовывается дубликат, может вести себя по-разному во время своего существования. Допустим, вы создали два объекта-товара как экземпляры одного и того же класса Item, у одного элемента возможноесть скидка к цене 10%, тогда как у дру­гого скидки к цене может и не быть вообще. Отдельные товары обходятся дороже, чем другие. Один товар может стоить 1 200 долларов, а дугой — 2,89 долларов, полагая, что состояние товара может изменяться с течением времени, товары все равно будут оставаться дубликатом класса Item. За­пустим объекты в работу.

Метод Main() представляет, как смотрится небольшая программа, ис­пользующая класс Item. Вначале программа реализует четыре товара клас­са Item. Данная программа может формировать эти товары во время про­смотра конечного пользователя каталога в диалоговом режиме или во вре­мя сканирования кассиром штрих-кодов товаров. Данная программа обр­зовывает ряд товаров, использует скидки к цене, а затем распечатывает чек. Программа показывает все взаимодействия объектов, отправляя сооб­щения товарам. Скажем, программа дает 16% скидку к цене сыра, отправ­ляя сообщение Discount() данному товару. И, в конце, программа выводит чек на экран. Необходимо не забывать о том, что вся программа была соз­дана целиком из терминов, определенных в классе Item с помощью пове­дения, реализуемого методами класса Item. По-другому говоря, программа создана при помощи существительных и глаголов, которые являются тер­минами в предметной области «тележка для магазинов самообслужива­ния».

Связь объектов - это немаловажная часть ООП. Есть два важнейших способа связи объектов.

Первый способ: объекты живут независимо друг от друга. В тележке для магазинов самообслуживания в одно и то же время могут быть два товара - экземпляра класса Item. Если этим объектам необходимо взаимодейство­вать, то они отправляют друг другу сообщения. Объекты взаимодействуют друг с другом с помощью сообщений. Получив сообщение, объект осуще­ствляет установленные действия. Передать сообщение - это одно и то же, что вызвать метод с целью изменить состояние объекта или использовать одну из моделей поведения [2].

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

Из примера класса Item можно отметить, что один объект включает множество других объектов. Например, этот объект (класс Item) включает объекты description и id, они касаются типа String. Каждый из этих объек­тов имеет интерфейс, который содержит методы и признаки. Передача ин­формации между объектами и теми объектами, которые они хранят, со­вершается, как и в других случаях. Передача сообщений друг другу осуще­ствляется, если эти объекты взаимодействуют. Сообщение - это важней­ших понятий объектно-ориентированного подхода. При помощи механиз­ма сообщений объекты могут сберегать свою самостоятельность. Объект, который отсылает сообщение другому объекту, все равно, как этот другой объект осуществит запрашиваемое действие. Объекту необходимо лишь, чтобы действие было осуществлено.

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

При помощи объектно-ориентированного программирования необходи­мо добиться главных целей, которые будут анализироваться в качестве достоинств программы, созданных при помощи объектно- ориентированного подхода [2]:

  1. естественность;
  2. надежность;
  3. возможность повторного использования;
  4. удобство в сопровождении;
  5. способность совершенствоваться;
  6. удобство периодического выпуска (издания) новых версий.

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

СПИСОК ЛИТЕРАТУРЫ

  1. Дейл Н. Программирование на С++: учебник: пер. с англ. / Н. Дейл, У. Чип, М. Хедингтон. - М.: ДМК, 2015
  2. Шелест В. Программирование: учебное пособие / Шелест, Вячеслав. - СПб.: Дюссельдорф: Киев: М : БХВ-Петербург, 2011
  3. Голицына О.Л., Попов И.И. Методы программирования, 2-ое издание
    Основы алгоритмизации и программирования: учебное пособие. – 2-е изд. – М.: Форум: Инфра-М, 2012
  4. Иванова Г.С. Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2012
  5. Немнюгин С.А. Turbo Pascal. Программирование на языке высокого уровне. – 2-е изд. – С.Пб.: Питер, 2014
  6. Фаронов В.В Turbo Pascal – Серия: учебное пособие для ВУЗов. – С.-Пб.: Питер, 2015
  7. Фаронов В.В Delphi. Программирование на языке высокого уровня: учебное пособие. – С.-Пб.: Питер, 2014
  8. Архангельский А. Я. Программирование в Delphi 7. – М.: ЗАО «Издательство Бином», 2014
  9. Кандзюба С. П., Громов В. Н. Delphi 6/7. Базы данных и приложения. Лекции и упражнения. – М.: ДиаСофтЮП, 2012
  10. Понамарев В. Базы данных в Delphi 7. Самоучитель. – СПб: Питер, 2013
  1. * показано на примере синтаксиса языка программирования Delphi