Статья посвящена теме ООП, истоков его создания и пояснения почему его стоит применять.

История начинается с того, что создатель ООП, Алан Кёртис Кэй, получил степень бакалавра по молекулярной биологии. Его интерес вызывали клетки организмов, их строение и поведение. Собственно чтобы не изобретать велосипед и использовать лучшие практики природы им и был создан этот подход к программированию, ООП.

Все ООП это попытка описать поведение клеток между друг другом, отсюда и энные принципы:

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

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

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

Не смотря на внешнюю простоту, дьявол все же кроется в мелочах:

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

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

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

Фрактализм:

  • Паттерны и принципы ООП применимы не только к классам, но и к архитектуре сервисов, групп сервисов, взаимодействию внутри команды.

  • Паттерны можно брать не только из учебников, отображение принципов есть в окружающем мире.

  • Любой программной задаче (в теории) уже есть решение на другом уровне абстракции. "В Симпсонах уже была эта серия".

Еще немного теории о возникновении жизни, в частности сложных клеток (это не мои теории, к слову):

  • Первые клетки имели лишь оболочку. Внутри ничего не было. Разнообразность поведения, размеров и химического состава привели похожие ранее клетки к новому поведению. Часть из них могла переварить/употребить те или иные хим элементы/соединения.

  • Далее клетки научились вскрывать оболочки друг друга и потреблять внутренности. Оболочки могли срастись во время поедания. В части таких моментов совпали циклы деления. По итогу ранее только оболочечная структура обрела паразита. Но он оказался полезным. Он помог доваривать мусор от основного процесса пищеварения. Так клетки обрастали органами, по факту же другими клетками, которые попали туда из-за своей жадности. Синергия. В ООП это похоже на Dependency Injection.

  • Остальные клетки, простые, без органов, конкуренции не выдержали.

Итоги:

  • Мир намного связаннее, чем кажется.

  • Все что нужно уже придумано, нужно только это отыскать. При том, что это проверенные паттерны, которые помогут избежать проблем в будущем.

  • Применение других наук в программировании обосновано. На этом может строиться ваша кривая обучения.

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

Комментарии (7)


  1. atues
    13.08.2024 02:41
    +2

    То, что Алан Кей стоял у истоков ООП, спору нет. И Smalltalk, разработанный им в сотрудничестве с коллегами по работе в Xerox PARK, действительно, выдающаяся разработка. Но первым он не был. Чуточку раньше пара норвежцев создала язык Simula, в котором уже были многие черты ООП. Б.Страуструп не раз отмечал влияние Simula на С++.

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


  1. ElVibrio
    13.08.2024 02:41
    +6

    Образчик бездумного перевода?

    Можно с самого начала писать, что такое ООП - не Организация Освобождения Палестины?

    Потому что далее упоминается

    • детский учебник по клеткам организма 

    Ага, букварь молекулярной биологии XXX века.

    Или вот:

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

    Хорошо, что не торасионными

    Однако добило вот такое:

    хорошая золотая середина жизненного фрактала.


    1. randomsimplenumber
      13.08.2024 02:41
      +2

      Образчик бездумного перевода?

      Или что то похуже. Напоминает доклад на тему " если бы у рыбы была шерсть, там были бы блохи. Кстати о биологии в ООП блохах.."


  1. Batalmv
    13.08.2024 02:41
    +3

    Прочитал раза два (благо малобуков), но так и не понял, где связь.

    Автор старательно натянул на глобус схожесть клетки и объекта, хотя ничего общего в этом кроме слов нет

    Наследование в ООП, как впрочем и все остальное является детерминированным процессом, в отличии от биологии.

    Инкапсуляция - ну так и огород с забором тоже можно притянуть за уши. А чего, все есть. Внутри сервисы, снаружи миски с готовой продукцией на продажу. Даже за попытку получить несанкционированный доступ к огурцам можно получить штфар "солью в задницу" от деда

    Полиморфизм - ну да, тут уже автор провести аналогию не осолил, и просто накидал букв, авось прокатит


    1. Gummilion
      13.08.2024 02:41
      +1

      Да тут не натянул даже, а просто зафиксировал гвоздями в случайных местах. Можно еще таких "аналогий" понапридумывать, например: белки в организме состоят из аминокислот, которые можно назвать буквами - и программы тоже состоят из букв!


  1. sonytruelove
    13.08.2024 02:41

    Многое из того, что создал человек находит отражение в природе. Он же в ней живет, учится, смотрит на нее, где он еще будет идеи брать? Есть даже теория биомиметики,подразумевающая, что человек позаимствовать решение аналогичной проблемы у природы (самый популярный пример про стрекозу и самолет).

    Читал "Мартин Гарднер. Этот правый, левый мир - 1967". Книга о том, как симметричные и асимметричные формы влияют на нашу восприятие и эстетику, а также на структуры и модели в окружающем мире. Графомания, но не мало интересных моментов и простых эксперементов!


  1. S_gray
    13.08.2024 02:41

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