Представление объекта в программировании. - страница 2

 
Реter Konow:
Вот тут никак без философской концепции обойтись нельзя. Просто обьединять функции и переменные не следуя продуманному "чертежу" Обьекта? Нам даны определенные инструменты: классы, структуры, модификаторы доступа... но, могут быть и другие инструменты... например состояние, выборка, связка... почему нет? Я к тому, что формат и инструментарий ООП может иметь версии...

Есть такое понятие как "оптимальная достаточность".

Почему у человека две ноги и две руки? Почему у собаки не пять лап? Потому и вопросы к вам возникают - зачем Франкенштейнов выдумываете? Причём на постоянной основе. Зудит? Если бы не выдумывали в попытках оставить свой след - уже давно бы оставили. Т.е., не в том направлении свои усилия прилагаете.

 
transcendreamer:
Вообще определяя Объект нужно определить и Субъект, иначе это неполное описание мира, кроме того в более современных философских концепциях есть Траект с самостоятельным отнологическим статусом как промежуточное/связывающее звено между Объектом и Субъектом.
Да, онтология занимается определением обьекта как такового. Очевидно, создатели ООП опирались на общепринятую в онтологии философскую модель. Но, она субьективна. И да, от обьекта, программирование идет к субьекту (ИИ).
 
Реter Konow:
Вот тут никак без философской концепции обойтись нельзя. Просто обьединять функции и переменные не следуя продуманному "чертежу" Обьекта? Нам даны определенные инструменты: классы, структуры, модификаторы доступа... но, могут быть и другие инструменты... например состояние, выборка, связка... почему нет? Я к тому, что формат и инструментарий ООП может иметь версии... 
И в определенных случаях, иная версия формата описания обьекта может быть эффективней.

В разных языках ООП имеет разные особенности.

 
Artyom Trishkin:

Есть такое понятие как "оптимальная достаточность".

Почему у человека две ноги и две руки? Почему у собаки не пять лап? Потому и вопросы к вам возникают - зачем Франкенштейнов выдумываете? Причём на постоянной основе. Зудит? Если бы не выдумывали в попытках оставить свой след - уже давно бы оставили. Т.е., не в том направлении свои усилия прилагаете.

Вы от себя говорите, или от администрации?
 

Очень понравилось следующее определение из Википедии:

Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования [1].

Это чистая философия. Так что, те кто считает, что философии в программировании нет - ошибаются. Объектное программирование построено на философской основе и следовательно, программисты должны уметь мыслить абстрактно и философски. Я например, умею и у меня возникают философские вопросы к концепции. Это логично и закономерно. Никаких "Франкенштейнов". Я руководствуюсь вопросом "а вдруг Земля не плоская?"


Вот полная статья:

https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование

Сплошная философия.

 

Из вики:

История[править | править код]


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

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

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

Первым языком программирования, в котором были предложены основные понятия, впоследствии сложившиеся в парадигму, была Симула, но термин «объектная ориентированность» не использовался в контексте использования этого языка. В момент его появления в 1967 году в нём были предложены революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Фактически, Симула была «Алголом с классами», упрощающим выражение в процедурном программировании многих сложных концепций. Понятие класса в Симуле может быть полностью определено через композицию конструкций Алгола (то есть класс в Симуле — это нечто сложное, описываемое посредством примитивов).

Взгляд на программирование «под новым углом» (отличным от процедурного) предложили Алан Кэй и Дэн Ингаллс в языке Smalltalk. Здесь понятие класса стало основообразующей идеей для всех остальных конструкций языка (то есть класс в Смолтоке является примитивом, посредством которого описаны более сложные конструкции). Именно он стал первым широко распространённым объектно-ориентированным языком программирования.

В настоящее время количество прикладных языков программирования (список языков), реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. Наиболее распространённые в промышленности языки (С++, Delphi, C#, Java и др.) воплощают объектную модель Симулы. Примерами языков, опирающихся на модель Смолтока, являются Objective-C, Python, Ruby.

 

Вышеприведенный отрывок из статьи в Википедии рассказывает как развивались идеи ООП. Сначала я считал, что концепцию просто кто то сел и придумал. Я ошибался. Это был процесс эволюционирования. 

Возможно, концепция продолжит развиваться. Почему нет?

 

Еще отрывок из Вики подтверждающий субъективность концепции:

ООП имеет уже более чем сорокалетнюю историю, но, несмотря на это, до сих пор не существует чёткого общепринятого определения данной технологии [14]. Основные принципы, заложенные в первые объектные языки и системы, подверглись существенному изменению (или искажению) и дополнению при многочисленных реализациях последующего времени. Кроме того, примерно с середины 1980-х годов термин «объектно-ориентированный» стал модным, в результате с ним произошло то же самое, что несколько раньше с термином «структурный» (ставшим модным после распространения технологии структурного программирования) — его стали искусственно «прикреплять» к любым новым разработкам, чтобы обеспечить им привлекательность. Бьёрн Страуструп в 1988 году писал, что обоснование «объектной ориентированности» чего-либо, в большинстве случаев, сводится к некорректному силлогизму: «X — это хорошо. Объектная ориентированность — это хорошо. Следовательно, X является объектно-ориентированным».

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

Устойчивость и управляемость системы обеспечивается за счёт чёткого разделения ответственности объектов (за каждое действие отвечает определённый объект), однозначного определения интерфейсов межобъектного взаимодействия и полной изолированности внутренней структуры объекта от внешней среды (инкапсуляции).

Определить ООП можно и многими другими способами.

//-----------------------------------------------------------------------

Конец цитаты.

 
Реter Konow:

Очень понравилось следующее определение из Википедии:

Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования [1].

Это чистая философия. Так что, те кто считает, что философии в программировании нет - ошибаются. Объектное программирование построено на философской основе и следовательно, программисты должны уметь мыслить абстрактно и философски. Я например, умею и у меня возникают философские вопросы к концепции. Это логично и закономерно. Никаких "Франкенштейнов". Я руководствуюсь вопросом "а вдруг Земля не плоская?"


Вот полная статья:

https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование

Сплошная философия.

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

так, что те кто считает, что вождение автомобиля отличается от программирования, смело идут лесом


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

 

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

Вот несколько тезисов распологающих к таким выводам:

1. От Объекта программирование идет к Субъекту (ИИ).

2. Для написания ИИ требуется значительно ускорить процесс программирования и уменьшить трудозатраты.

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


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