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

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

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

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

Добавлен: 12.03.2024

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

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

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

5. Причины повсеместного распространения ООП

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

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

- надежда, что ООП может просто и быстро привести к росту продуктивности и улучшению надежности программ, помогая тем самым разрешить кризис в программном обеспечении;

- желание перейти от существующих языков программирования к новой технологии;

- вдохновляющее сходство с идеями, родившимися в других областях.

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

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

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

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

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


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

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

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

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

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

[1, с. 22-23]

6. Критика ООП

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

В то же время у ООП есть и ряд довольно авторитетных критиков. К ним, в частности, относится такой известный в мире программирования человек, как Никлаус Вирт, создатель языков Паскаль, Модула и Оберон. Он утверждает, в частности, что ООП — не более чем тривиальная надстройка над структурным программированием и преувеличение его значимости, выражающееся в том числе во включении в языки программирования все новых модных «объектно-ориентированных» средств, безусловно, вредит качеству разрабатываемого программного обеспечения. Н. Вирт очень удивлен тем вниманием, которое уделяется ныне ООП. Другой критик ООП — известный специалист по программированию Александр Степанов, который участвовал в создании C++ вместе c Бьерном Страуструпом, а впоследствии написал стандартную библиотеку шаблонов языка программирования С++ (STL). А. Степанов полностью разочаровался в парадигме ООП. Он пишет: «Я уверен, что ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, лишь тогда на этой основе выводится аксиома. То есть в математике вы заканчиваете аксиомой. То же самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг — из-за ущербности парадигмы вы просто обречены на переписывание программы уже в тот самый момент, когда только задумали ее спроектировать в ООП-стиле».


Патриарх свободно распространяемого ПО Ричард Столлмэн также известен своим критическим отношением к ООП. Особенно любит он шутить насчет мифа о том, что ООП «ускоряет разработку программ»: «Как только ты сказал слово «объект», можешь сразу забыть о модульности».

Критики, в частности, обращают внимание на следующие обстоятельства:

Внедрение ООП требует дополнительных затрат на обучение программистов и накладных расходов при создании программ — от 12 до 75% времени.

Наследование — самая большая провокация в индустрии, ни в каком моделировании наследования не существует.

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

В то же время ряд наиболее сложных и успешно используемых программных систем созданы именно в рамках объектно-ориентированного подхода, его применяют такие гиганты индустрии, как Microsoft, IBM, Oracle.[8, с. 157-158]

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

Заключение

В заключение хотелось бы сказать, что ООП — довольно объемная тема. Целью данной работы было скорее не в полном объеме раскрыть все методики и приемы программирования — для этого существуют научные издания — а скорее пролить свет на эту тему. Из многочисленных источников была собрана и соединена разрозненная информация о развитии программирования. Основную сложность в данной работе составило что разными исследователями используется немного разная терминология. Например, в языке Object Pascal класс называется «объектом» (тип данных object), а надклассы известны как родительский класс, класс-предок и т. д.

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


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

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

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

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

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

Использованные источники

1. Бадд, Т. Объектно-ориентированное программирование в действии. / Т. Бадд — Спб.: «Питер» 1997. — 464с.

2. Бердоносов, В. Д. Объектно-ориентированное программирование: учеб. пособие / В. Д. Бердоносов, А. А. Животова. - Комсомольск-на-Амуре: ФГБОУ ВПО «КнАТГУ», 2015 — 135 с.


3. Буч, Г. Объектно-ориентированное проектирование с примерами применения / Г. Буч — К.: Диалектика; М.: Конкорд, 1992. — 519 с.

4. Вайсфельд, М. Объектно-ориентированное мышление. / М. Вайсфельд — СПб.: Питер, 2014. — 304 с.

5. Грэхэм, И. Объектно-ориентированные методы. Принципы и практика. 3-е издание. Пер с англ. / И. Грэхэм — М. : Издательский дом «Вильямс», 2004 — 880 с.

6. Давыдова, Н. А. Программирование: учебное пособие / Н. А. Давыдова, Е. В. Боровская. — М. : БИНОМ. Лаборатория знаний, 2009. — 238 с.

7. Мухортов, В. В., Рылов, В. Ю. Объектно-ориентированное программирование, анализ и дизайн, методическое пособие / В. В. Мухортов, В. Ю. Рылов — Новосибирск.: 2002. — 108 с.

8. Тюгашев, А. А. Основы программирования. Часть I. / А. А. Тюгашев — Спб: Университет ИТМО, 2016. – 160 с.

9. Бобровский, С., История объектно-ориентированного программирования, PC Week/RE № 28 от 05.08.2003 г., стр. 10, г., стр. 20. URL: https://www.itweek.ru/infrastructure/article/detail.php?ID=64959 и № 29 от 12.08.2003

https://www.itweek.ru/infrastructure/article/detail.php?ID=65030

(дата обращения 14.11.17)

10. Объектно-ориентированное программирование для чайников, 2017, URL: https://progstudy.ru/index.php/sm/article/ob-ektno-orientirovannoe-programmirovanie (дата обращения 07.01.18)

11. Гринштейн, Г., 15 самых популярных языков по версии GitHub, 2016, URL: https://habrahabr.ru/post/310262/ (дата обращения 21.11.17)