Я прошел большую часть учебного курса по программированию игр. Это не степень в области компьютерных наук, поэтому большая часть теории отвергается в пользу практического создания портфолио и того, что я вижу как обучение JIT, которое, очевидно, более важно в игровой индустрии. Первым предметом была «Введение в объектно-ориентированное программирование».
Эта фраза не беспокоила меня, пока я не узнал о различных парадигмах программирования (этот список я получаю по адресу https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms ):
- Императив
- функциональная
- процедурный
- Структурированные
- Event-Driven
- Объектно-ориентированный
- декларативный
- Автоматного
Я понимаю, что это не исчерпывающий список, и что не все эти понятия равны, и большинство из них даже не являются исключительными, но я не понимаю, почему большинство из них получают только одно слово - императив; функциональная; декларативный - но когда мы говорим о программировании с объектами, мы должны уточнить, что мы ориентируемся вокруг этих объектов. Разве мы не можем просто использовать объекты? Разве мы не можем просто иметь объекты? Почему они должны ориентировать нас как нашу путеводную звезду?
Глядя здесь ( https://en.wikipedia.org/wiki/Object-oriented_programming ), нигде не используется термин «ориентированный», рассматриваемый как его собственный термин. Только «объект» объясняется.
Кроме того, по практическим причинам я вижу, почему используется Event-Driven, потому что Event Programming - это уже то, что вы делаете, когда вы проводите конференцию, а Automata Programming делает его похожим на то, что вы настраиваете автоматизированную производственную линию, так что это помогает иметь дополнительные уточняющие слова там.
Что делает объектное программирование, как фразу, недостаточно для описания того, что мы делаем, когда мы используем объекты в нашем программировании?
Очевидно, из моего тона я не слишком люблю слово «ориентированный». Это напоминает мне о том, что я работал в качестве судебного репортера и слушал, как адвокат после того, как адвокат использовал фразу «по отношению к», как своего рода словесный тик. Это ничего не значило; это был просто термин, который они использовали, чтобы наполнить воздух, пытаясь придумать, что сказать дальше. Однако я не пытаюсь защищать смену языка, я просто спрашиваю, почему это так. Если кто-то знает, почему это так стало известно по чисто историческим, рудиментарным причинам, тогда это ответ. Это будут боеприпасы, если я когда-нибудь решу тратить свое время на пропаганду смены языка.
С другой стороны, если есть на самом деле полезная причина того, почему язык или фрагмент кода должны указывать на объекты, исключая все другие направления, а не просто располагая их в своем инструментальном поясе в качестве инструментов , я действительно был бы интересно узнать об этом. Мне нравится изучать полезные вещи.
источник
Ответы:
Я считаю , что вы читаете путь слишком много в простую грамматическую конструкцию. Взгляните на ваш список парадигм, отсортированных по разным причинам, по которым мы скоро доберемся:
Что общего у всех этих слов? Все они прилагательные, потому что они предназначены для изменения слова «программирование». Кроме того, за исключением «императива», все они не «естественные» прилагательные, а «прилагательные» существительные - существительные, которые на самом деле описывают ядро парадигмы: функция, структура, автоматы и объект.
И существуют два разных способа приведения имен существительных: через суффикс, такой как -al или -ed, или путем создания составного слова с использованием дефиса. Теперь, как отметил Док Браун, суффиксы, которые можно использовать для приписывания «объекта», приводят к другому значению. Который оставляет композицию.
И я утверждаю, что это чистое совпадение или вкус, что Алан Кей решил использовать «ориентированный» для своего составного прилагательного «объектно-ориентированный». С таким же успехом он мог быть «объектно-управляемым» или «объектно-ориентированным», и вы могли бы слишком много прочесть в них. Разве «вождение» не звучит как нездоровая одержимость?
источник
Честно говоря, это пережиток истории. Функциональное программирование - это действительно функционально-ориентированное программирование, декларативное программирование - это действительно декларируемо-ориентированное программирование ... в конце концов, разве мы не просто используем функции? Разве мы не можем просто иметь функции?
«Объектно-ориентированный» лучше скатывается с языка и исторически укоренился.
«Ориентация» возникает потому, что мы говорим не о программировании, а о дизайне. Тот факт, что мы используем объекты, или используем функции, или используем события, не означает, что наша методология проектирования выполняется путем моделирования всех трех. Определяя ориентацию методологии проектирования, она помогает сообщить программистам, как они должны интерпретировать и расширять этот дизайн - как фокус моделирования окрашивает реализацию.
источник
Называя его, это помогает объяснить, что объекты являются очень важной частью парадигмы.
Объектно-ориентированное программирование имеет свои корни в Simula , который по сути был ALGOL плюс некоторые новые функции объектного программирования. И в соответствии с этой историей даже сегодня во многих языках (даже в «чистых ОО-языках») вполне возможно кодировать что-то, что по сути является процедурной программой с некоторыми объектами в ней. Но это считается плохим стилем более опытными разработчиками.
На самом деле делать что-то «объектно-ориентированным способом» очень отличается от «процедурного пути». Наиболее важной концепцией является использование наследования и полиморфизма. Когда вы по-настоящему понимаете и усваиваете работу классов и виртуальных методов, это откровенный опыт, который во многих случаях меняет способ написания кода, что является настоящей сменой парадигмы. (Предполагая, конечно, что вы начали писать процедурный код в первую очередь. Многие студенты в наши дни переходят прямо на Java или C # в качестве первого языка, и IMO упускают возможность по-настоящему понять преимущества ОО, делая это.)
Мы называем это объектно-ориентированным программированием, потому что программа, написанная в стиле ОО, не просто содержит объекты; структура всей программы основана на них и на том, как они работают.
источник