Файл: Машинно-ориентированные языки.pdf

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

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

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

Добавлен: 12.03.2024

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

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

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

- параллелизм

- устойчивость. [2, с. 25]

Рассмотрим подробнее перечисленные ранее основные принципы ООП.

1) Абстрагирование — выделение существенных характеристик некоторого объекта, отличающих его от всех других видов объектов и, таким образом, четко определяющих его концептуальные границы с точки зрения наблюдателя. Абстракция концентрирует внимание на внешнем представлении объекта и позволяет отделить существенные особенности поведения от их реализации. Абельсон и Суссман назвали такое отделение поведения от его реализации принципом минимальных обязательств, в соответствии с которым интерфейс объекта должен обеспечивать только существенные аспекты его поведения и ничего более. Существует также дополнительный принцип наименьшего удивления, согласно которому абстракция должна полностью описывать поведение объекта, ни больше и ни меньше, и не порождать сюрпризы или побочные эффекты, выходящие за пределы абстракции. [2, с. 26]

2) Инкапсуляция — процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение. Инкапсуляция служит для того, чтобы изолировать контрактные обязательства абстракции от их реализации. Абстракция и инкапсуляции дополняют друг друга. В центре внимания абстракции находится наблюдаемое поведение объекта, а инкапсуляция сосредоточена на реализации, обеспечивающей заданное поведение. Как правило, инкапсуляция осуществляется с помощью сокрытия информации (а не просто сокрытия данных), т.е. утаивания всех несущественных деталей объекта. Обычно скрываются как структура объекта, так и реализация его методов.[2, с. 26]

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

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

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


Рассмотрим также дополнительные принципы ООП:

Модульность — свойство системы, которая была разложена на внутренне связанные, но слабо связанные между собой модули. Правильный выбор модулей для решения поставленной задачи является почти такой же сложной задачей, как и выбор правильного набора абстракций. Существует несколько эмпирических приемов и правил, позволяющих обеспечить разумную модульность. Бриттон и Парнас утверждают: «Конечной целью декомпозиции программы на модули является снижение затрат на программирование, благодаря независимому проектированию и тестированию. Структура каждого модуля должна быть достаточно простой для понимания, допускать независимую реализацию других модулей и не влиять на поведение других модулей, а также позволять легкое изменение проектных решений».

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

Параллелизм — возможность различным объектам действовать одновременно. Это свойство, отличающее активные объекты от пассивных.

Устойчивость. Любой объект или данные в программной системе существуют во времени и пространстве (памяти ЭВМ). Одни объекты существуют только как промежуточные результаты вычисления выражения, другие могут вообще пережить программу, оставаясь сохраненными в базе данных. Таким образом устойчивость — это способность объекта существовать во времени, переживая породивший его процесс, и (или) в пространстве, перемещаясь из своего первоначального адресного пространства. [7, с. 41].

Использование объектив-ориентированного подхода не ограничено каким-либо одним языком программирования — он применим к широкому спектру объектных и объектно-ориентированных языков. Объектно-ориентированный подход стал основой объекте-ориентированной парадигмы программирования, и в настоящее время количество прикладных языков программирования, реализующих данную парадигму, является наибольшим по отношению к другим парадигмам. [2, с.29]




 


4. Сферы применения ООП в современном мире. Наиболее востребованные объектные и объектно-ориентированные языки.


Объектно-ориентированная разработка программного обеспечения существует с начала 1960-х годов. Но только во второй половине 1990-х годов объектно-ориентированная парадигма начала набирать обороты, несмотря на тот факт, что популярные объектно-ориентированные языки программирования вроде Smalltalk и C++ уже широко использовались.

Расцвет объектно-ориентированных технологий совпал с началом применения Интернета в качестве платформы для бизнеса и развлечений. А после того как стало очевидным, что Глобальная сеть активно проникает в жизнь людей, объектно-ориентированные технологии уже заняли удобную позицию для того, чтобы помочь в разработке новых веб-технологий. [4, с. 20]

Хотя на протяжении последних 20 лет наблюдалось постоянное и значительное увеличение количества объектно-ориентированных разработок, зависимость мирового сообщества от сетей вроде Интернета и мобильных инфраструктур поспособствовала еще более широкому их распространению. Буквально взрывной рост количества транзакций, осуществляемых в браузерах и мобильных приложениях, открыл совершенно новые рынки, где значительная часть разработок программного обеспечения была новой и главным образом не обремененной заботами, связанными с унаследованными системами. [4, c. 22]

Сегодня одной из наиболее интересных областей разработки программного обеспечения является интеграция унаследованного кода с мобильными и веб системами. Во многих случаях мобильное клиентское веб-приложение в конечном счете «подключается» к данным, располагающимся на мейнфрейме. Разработчики, одновременно обладающие навыками в веб-разработке как для мейнфреймов, так и для мобильных устройств, весьма востребованны. Электронные соединения по сути превратились в соединения, основанные на объектах. Тяготея к мобильным веб-приложениям, бизнес тяготеет к объектам, поскольку технологии, используемые для электронной торговли, по своей природе в основном являются объектно-ориентированными. [4, c. 22]

Несомненно, появление Интернета значительно поспособствовало переходу на объектно-ориентированные технологии. Дело в том, что объекты хорошо подходят для использования в сетях. Хотя Интернет был в авангарде этой смены парадигмы, мобильные сети теперь заняли не последнее место в общей массе. [4, c. 23]

Несмотря на многомиллионные вложения, сделанные в 1970-1980 годах коммерческими компаниями и государственными структурами разных стран в универсальные языки программирования (такие, как Алгол, PL/1, Си) и языки логического программирования (прежде всего Prolog), самой распространенной в мире программной технологией остается ООП. Наиболее известным событием нового тысячелетия в этой сфере стал быстро набравший популярность язык программирования C#. Его можно смело считать лучшим на сегодня объектно-ориентированным средством создания графических приложений.


На данные момент существует более 100 объектно-ориентированных и объектных языков программирования. Объектно-ориентированным можно называть язык, основанный на классах, в котором реализованы наследование и рекурсия (обращение к самому себе). [5, c.104].

В списке 15 наиболее популярных языков программирования согласно рейтингу GitHub, объектно-ориентированные языки занимают большинство позиций. [11]

Среди них TypeScript (15 место), язык, обязанный своим появлением компании Microsoft. Он создан как средство разработки веб-приложений, расширяющее возможности JavaScript. Андерс Хейлсберг является основным разработчиком языка TypeScript который ранее участвовал в создании Turbo Pascal, Delphi и C#.

Язык Swift (14 место) — детище компании Apple, созданный для iPhone-приложений в 2014 году, Swift за довольно короткий срок сумел завоевать популярность.

Scala (13 место) вышел в свет в 2001 году. Его подхватили такие крупные компании, как Airbnb и Apple. По их мнению, на нем проще и быстрее писать приложения для их нужд, нежели на языке Java. Изначально Scala, поддерживающий объектно-ориентированную и функциональную парадигмы, был создан с расчетом на трансляцию в байт-код Java и .NET. Со временем также появился транслятор Scala в код JavaScript — Scala.js. Однако в мае 2016 года стало известно, что в рамках проекта Scala Native создается компилятор, обещающий ускорить выполнение приложений, написанных на этом языке.

Objective-C (12 место) предстал перед публикой в 1983 году. Конечно, в него были добавлены новые идеи и элементы языка Smalltalk, но буква С не зря венчает его название. Особенно распространился Objective-C среди разработчиков под платформы Apple. Пока он удерживает эти позиции, но Swift грозится потеснить потомка С в скором времени.

С# (8 место) — язык программирования, сочетающий объектно-ориентированные и контекстно-ориентированные концепции. Разработан в 1998-2001 годах группой инженеров под руководством Андерсa Хейлсбергa и стал частью первого релиза .NET framework. Язык С# сочетает в себе надежность С++ с дополнительными возможностями Java. Поэтому если вы хорошо знаете Java, можно легко переключиться на С# и наоборот.

Язык С# позволяет разрабатывать практически любые приложения, которые связаны с Visual Studio IDE. Сторонники C# называют его самым мультипарадигменным, универсальным, продвинутым и удобным в использовании языком программирования. Учитывая тот факт, что за ним стоит платформа Microsoft .NET, число таких сторонников достаточно велико.

В 1986 году был разработан С++ (6 место), который является одним из самых распространенных языков в мире. Это компилируемый строго типизированный язык программирования общего назначения. Можно сказать, что это не новый язык, а скорее совместимое снизу-вверх расширение языка С [4, c. 110]. Он поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования. Google Chrome, Mozilla Firefox, Winamp и линейка продуктов Adobe были разработаны с помощью С++. Кроме того, некоторые современные игры и операционные системы были разработаны на С++ из-за быстрого процессинга и компиляции. [11]


Ruby (4 место) — интерпретируемый язык программирования высокого уровня. Обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями, поддерживающими много разных парадигм программирования, прежде всего классово-объектную. Разработанный в 1995 году Юкихиро Мацумто, Ruby был задуман как язык, совмещающий все качества других языков, способствующий облегчению труда программиста. Фреймворк Ruby использовался для разработки Github, Scribd, Yammer, Shopify и Groupon. Ruby сочетает в себе некоторые возможности Lisp, Pearl и Eiffel.

Python (3 место) еще один высокоуровневый язык программирования. Часто он считается самым легким языком, благодаря своей простоте, читаемости и синтаксису. Python был разработан Гвидо Ван Россумом в 1991 году. Python не использовался так широко в прошлом, однако стал особенно популярным за последние годы благодаря инвестициям Google. В настоящее время некоторые весьма известные и надежные сайты работают на python, особенно pinterest.com, instagram.com и rdio.com. Как и PHP, Python можно использовать для разработки веб приложений.

Когда появился язык Java (2 место), он взял рынок штурмом. И для этого были серьезные причины. Java был разработан Джеймсом Гослингом в 1990 году в компании Sun Microsystems. Этот язык дополнительно увеличивает возможности языка С++, однако является исключительно объектно-ориентированным. Java был разработан по принципу WORA (Write Once Run Anywhere или «написав код однажды, вы запустите его везде»). Речь идет про переносимость Java. Необходимо скомпилировать исходный код на Java всего лишь раз, а затем запустить на любой машине с установленным JVM (Java Virtual Machine) и затем использовать. [5, c. 116]

JavaScript (1 место) — мультипарадигменный язык программирования. Поддерживает объектно-ориентированный, императивный и функциональный стили. Обычно он используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам. Основные архитектурными чертами JavaScript являются динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса. На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования не программистами. Серверные языки сценариев идеально подходят для разработки сложных веб приложений, но каждая такая задача сильно нагружает сервер. Поэтому разработчики делегировали часть функций на сторону клиента и использовали JavaScript. JavaScript — это язык программирования, выполняемый в клиентском браузере и обрабатывает команды на компьютере конечного пользователя, а не сервера, что приводит к снижению нагрузки на сервер и увеличению скорости работы приложения. JavaScript был разработан компанией Netscape и вряд ли есть сайты, которые не используют его. [11]