На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
  
> ООП - в топку!
    Цитата
    Объектно-ориентированное программирование — чрезвычайно плохая идея, которая могла возникнуть только в Калифорнии.

    — Эдсгер Вибе Дейкстра


    Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ
      А что такое ООП?
      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
        ya2500, не читай. Автор прекрасный тролль, не более чем.
        Одни с годами умнеют, другие становятся старше.
          Qraizer, а ты знаешь, что такое ООП?
          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
            Может сразу перейдем к коммерческому коду?

            Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
              Знаю, D_KEY.
              Одни с годами умнеют, другие становятся старше.
                Я достаточно далёк от ООП, но хотелось бы и какого-то такого:
                ExpandedWrap disabled
                  class a; // суть описана. Я понимаю, что надо "class A{}; A a;".
                   
                  a.SetFunc( "getSqrt(x)", "return -sqrt(x);" );
                  b = a.GetFunc( "getSqrt", 4); // b = -2


                А может даже:
                ExpandedWrap disabled
                  a.SetFunc(...)
                  b = a.getSqrt(4);


                Добавлено
                И ещё:
                ExpandedWrap disabled
                  b = 4.getSqrt(a);
                  Цитата D_KEY @
                  Qraizer, а ты знаешь, что такое ООП?
                  Никто не знает что такое ООП, потому что каждый обзывает этим термином то, что ему захочется. Для кого-то эрланг вполне себе ООП, а для кого-то и плюсы не ООП.

                  Добавлено
                  Цитата Славян @
                  Я достаточно далёк от ООП, но хотелось бы и какого-то такого:
                  ExpandedWrap disabled
                    class a; // суть описана. Я понимаю, что надо "class A{}; A a;".
                     
                    a.SetFunc( "getSqrt(x)", "return -sqrt(x);" );
                    b = a.GetFunc( "getSqrt", 4); // b = -2


                  А может даже:
                  ExpandedWrap disabled
                    a.SetFunc(...)
                    b = a.getSqrt(4);


                  Добавлено
                  И ещё:
                  ExpandedWrap disabled
                    b = 4.getSqrt(a);

                  Все что вы описали есть в Ruby. В смысле возможность динамически добавлять методы и то что все является объектами, включая базовые типы.
                  Не особо такого хочется на самом деле.
                  Сообщение отредактировано: applegame -
                  error: 'long long long' is too long for GCC
                    Цитата Славян @
                    но хотелось бы и какого-то такого:

                    Ога. Особенно весело будет, если строка в SetFunc будет генерироваться каким-либо методом, который тоже был сгенерирован через SetFunc :D Поиграться может быть и весело, но на практике не нужно.
                    Подпись была включена в связи с окончанием срока наказания
                      Ну это так, первое, что пришло в голову. :blush:
                        Цитата Славян @
                        Я достаточно далёк от ООП, но хотелось бы и какого-то такого:

                        Интерпретировать и исполнять данные как код - не по фэншую. Но все же, если хочется можно скрестить лямбды, std::map и std::any. Да, можно будет выбирать и вызывать лямбды по текстовому ключу. Но, имхо, это изват и тормоза. Да и зачем все это?

                        Добавлено
                        В С++17 ввели std::optional ... Де жа вю! Из Раста скомуниздили штоле? :)
                        Мои программные ништякиhttp://majestio.info
                          Цитата applegame @
                          Никто не знает что такое ООП

                          Неправда! Qraizer знает:
                          Цитата Qraizer @
                          Знаю, D_KEY.


                          Добавлено
                          Цитата JoeUser @
                          В С++17 ввели std::optional ... Де жа вю! Из Раста скомуниздили штоле? :)

                          Нет. Из раста вообще пока никто ничего еще не комуниздил. Рано.
                          Был boost.optional. До того было во многих языках. Идет скорее из функционального программирования.

                          Добавлено
                          Цитата applegame @
                          Для кого-то эрланг вполне себе ООП, а для кого-то и плюсы не ООП.

                          А для кого-то этот вообще с языком не связано.
                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                            Цитата applegame @
                            Все что вы описали есть в Ruby.

                            Да даже в C++ можно запилить что-то подобное. Проблема есть в возвращаемом значении, но можно что-нибудь придумать.
                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                              Цитата applegame @
                              Никто не знает что такое ООП, потому что каждый обзывает этим термином то, что ему захочется.
                              Вероятно, ты имел в виду "знать ООП", а не "знать, что такое ООП". Что это такое, вполне себе чётко описано в определении, и оно языконезависимое. Другое дело, что любой язык предоставляет средства выражения ООП, по-разному отображающие эту парадигму на его грамматику. Включая те, которые вообще не поддерживают ООП какими-либо своими специальными конструкциями. И вот уметь это использовать – совсем другой вопрос.
                              Одни с годами умнеют, другие становятся старше.
                                Цитата Qraizer @
                                Что это такое, вполне себе чётко описано в определении

                                В каком?
                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                  P.S. В статье как раз вот такая игра на смыслах понятий и происходит. Если намеренно, то автор троль, если нет, то просто нуб в ООП.

                                  Добавлено
                                  Цитата D_KEY @
                                  В каком?
                                  Хочешь, чтобы я процитировал классиков? А вот хрен, и сам сможешь. ООП является технологией, расширяющей рамки структурного подхода и избавленной от его недостатка невозможности его реализовать в полной мере на практике. Ни один язык структурного программирования не может предоставить программисту полный спектр нужных для этого грамматических конструкций, чему причиной является то, что для этого в общем случае потребуется бесконечно много типов грамматических конструкций. ООП эту проблему решает.
                                  К примеру, на C, ты ограничен разбиением программы на единицы трансляции, взаимодействующие между собой через публичные имена, те в свою очередь на функции, взаимодействие между которыми осуществляется через параметры, и... и на этом всё. Сокрытие реализаций осуществляется на первом уровне через статические имена, на втором – тоже статические и локальные. Всё. Иерархия всего из двух уровней. Если исходная задача такова, что двух уровней её разбиения на подзадачи хватит, то структурный подход в C прекрасно справится с её представлением. Увы, 2 уровня уже давно не хватает, поэтому начинаются костыли в лице логического выделения уровней иерархии подзадач без отображения на структуру кода. В ООП понятие класса искаропки позволяет иметь бесконечное количество уровней. Другими словами, уже C с классами позволял отображать структуру исходной сложной задачи на иерархию подзадач явным образом и без костылей.
                                  Одни с годами умнеют, другие становятся старше.
                                    Цитата Qraizer @
                                    Ни один язык структурного программирования не может предоставить программисту полный спектр нужных для этого грамматических конструкций, чему причиной является то, что для этого в общем случае потребуется бесконечно много типов грамматических конструкций. ООП эту проблему решает.

                                    В лиспах это делается довольно легко и непринуждённо.

                                    Цитата Qraizer @
                                    К примеру, на C

                                    А, ты про эти языки…
                                    “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                    All software sucks
                                      Цитата Qraizer @
                                      Хочешь, чтобы я процитировал классиков?

                                      Вроде как про определение(общепринятое и желательно формальное) ООП речь шла, а не про мнения.
                                      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                        Раз уж холивары, то:

                                        Цитата
                                        In the article Is Software Engineering an Oxymoron?, Kay writes: "Until real software engineering is developed, the next best practice is to develop with a dynamic system that has extreme late binding in all aspects." While this doesn't necessarily constrain the definition of OO in his mind, it is a key statement of philosophy. C++, of course, does early binding everywhere it can--up to the point of performing StaticDispatch as a default (you have to ask for DynamicDispatch with the "virtual" keyword when you want it. [and even that, as in many other languages like Java, is only single dynamic dispatch. If you want "late binding everywhere," you need a much more powerful dispatch system, e.g. CommonLispObjectSystem's generics]).


                                        http://wiki.c2.com/?AlanKaysDefinitionOfObjectOriented

                                        =)

                                        Добавлено
                                        А это так, развлечения ради:
                                        http://lucacardelli.name/Papers/PrimObjImpSIPL.A4.pdf
                                        http://lucacardelli.name/Papers/PrimObj1stOrder.A4.pdf

                                        =)
                                        Сообщение отредактировано: korvin -
                                        “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                        All software sucks
                                          Цитата D_KEY @
                                          Из раста вообще пока никто ничего еще не комуниздил. Рано.

                                          Возможно, это как раз под его влиянием пытаются сделать.
                                          Подпись была включена в связи с окончанием срока наказания
                                            Цитата Qraizer @
                                            Хочешь, чтобы я процитировал классиков?
                                            Классики сами путаются в определениях.
                                            error: 'long long long' is too long for GCC
                                              Цитата korvin @
                                              If you want "late binding everywhere," you need a much more powerful dispatch system, e.g. CommonLispObjectSystem's generics

                                              Только вот это - не панацея и может иметь свои недостатки. Но тут уже начнётся холивар в стиле "статическая типизация vs динамическая типизация". К слову, C++ хорош именно тем, что позволяет ещё на этапе компиляции проверять большое количество констрейнтов, связанных с типами и связыванием, облегчая тем самым задачи рантайма. Впрочем, те, кто любят ловить на страницах undefined object'ы, на этот счёт другого мнения. :)
                                              "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                              Морган Фриман
                                              Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                Flex Ferrum, а ООП тут при чем?
                                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                  Цитата D_KEY @
                                                  Flex Ferrum, а ООП тут при чем?

                                                  При том же, при чём цитата Корвина. :) Это не ко мне вопрос. :)
                                                  "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                  Морган Фриман
                                                  Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                    Flex Ferrum, а ты как определяешь ООП?
                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                      Цитата D_KEY @
                                                      а ты как определяешь ООП?

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

                                                      Добавлено
                                                      Популярная сейчас микросервисная архитектура - это то же ООП, вид в профиль.
                                                      Сообщение отредактировано: Flex Ferrum -
                                                      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                      Морган Фриман
                                                      Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                        Цитата Flex Ferrum @
                                                        Цитата D_KEY @
                                                        а ты как определяешь ООП?

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

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

                                                        Задам хитрый вопрос - исходя из того, что ты сказал, что будет НЕ являться ООП? :)

                                                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                          Цитата Астарот @
                                                          Задам хитрый вопрос - исходя из того, что ты сказал, что будет НЕ являться ООП?

                                                          То, что дизайнится без применения ОО-подхода. Очевидно же! :D
                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                          Морган Фриман
                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                            Цитата Flex Ferrum @
                                                            Как подход к проектированию и декомпозиции программных систем.

                                                            который заключается в ...
                                                            В чем? :)

                                                            Добавлено
                                                            Цитата Flex Ferrum @
                                                            Популярная сейчас микросервисная архитектура - это то же ООП, вид в профиль.

                                                            А акторы?
                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                              Цитата Астарот @
                                                              Задам хитрый вопрос - исходя из того, что ты сказал, что будет НЕ являться ООП?
                                                              Ответ очевиден: то что не использует ОО
                                                              Цитата Flex Ferrum @
                                                              подход к проектированию и декомпозиции программных систем.
                                                              :lol:

                                                              Типа ООП это как не ООП, но наоборот.
                                                              Сообщение отредактировано: applegame -
                                                              error: 'long long long' is too long for GCC
                                                                Цитата D_KEY @
                                                                А акторы?

                                                                Смоллтоковская парадигма же. :) Общая шина, сообщения, которыми обмениваются объекты. Ну! :D

                                                                Цитата D_KEY @
                                                                который заключается в ...
                                                                В чем?

                                                                Цитата
                                                                Object-oriented software construction is the building of software systems as
                                                                structured collections of possibly partial abstract data type implementations.

                                                                :D Спасибо старине Мейеру за определение. :)
                                                                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                Морган Фриман
                                                                Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                  Цитата Flex Ferrum @
                                                                  То, что дизайнится без применения ОО-подхода. Очевидно же! :D

                                                                  Это понятно. Но я б ответ без троллинга оценил :)

                                                                  Добавлено
                                                                  Цитата Flex Ferrum @
                                                                  Смоллтоковская парадигма же. :) Общая шина, сообщения, которыми обмениваются объекты. Ну! :D

                                                                  В смолтоке, как недавно выяснилось, не настоящие сообщения, а всего-то вызовы методов :D

                                                                  Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                    Цитата Flex Ferrum @
                                                                    Цитата D_KEY @
                                                                    который заключается в ...
                                                                    В чем?

                                                                    Цитата
                                                                    Object-oriented software construction is the building of software systems as
                                                                    structured collections of possibly partial abstract data type implementations.

                                                                    А можно пример не ОО-системы?
                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                      Цитата Астарот @
                                                                      Это понятно. Но я б ответ без троллинга оценил

                                                                      Ну, без если троллинга - то ООП не будет являться то, что не соответствует этому определению:
                                                                      Цитата
                                                                      Object-oriented software construction is the building of software systems as
                                                                      structured collections of possibly partial abstract data type implementations.

                                                                      :)

                                                                      Цитата D_KEY @
                                                                      А можно пример не ОО-системы?

                                                                      Нет. Потому что мне нужно вспоминать системы, построенные в соответствии с модульной, процедурной или функциональной парадигмой. А я таких сходу не назову. Да и не с ходу тоже. :)
                                                                      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                      Морган Фриман
                                                                      Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                        Цитата Flex Ferrum @
                                                                        Ну, без если троллинга - то ООП не будет являться то, что не соответствует этому определению:

                                                                        Так я и хочу услышать, что ему не соответствует - на практике. Мне в голову как-то ничего не приходит, но тогдла получается, что все есть ООП, а это явно обесценивает сам термин. Или я не втуда думаю.

                                                                        Добавлено
                                                                        Цитата Flex Ferrum @
                                                                        А я таких сходу не назову. Да и не с ходу тоже. :)

                                                                        А, ок, спасибо.

                                                                        Цитата Flex Ferrum @
                                                                        построенные в соответствии с модульной, процедурной или функциональной парадигмой

                                                                        Жопа в том, что та же функциональщина замечательно дружит с акторами, на которые понятие ООП замечательно ложится :D

                                                                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                          Цитата Астарот @
                                                                          Жопа в том, что та же функциональщина замечательно дружит с акторами, на которые понятие ООП замечательно ложится

                                                                          Ты познаёшь дзен. Продолжай. :)
                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                          Морган Фриман
                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                            Цитата Астарот @
                                                                            Жопа в том, что та же функциональщина замечательно дружит с акторами, на которые понятие ООП замечательно ложится :D

                                                                            А процедурная обычно вполне себе structured collections of possibly partial abstract data type implementations. Собственно, примерно так и возникла та ветка ООП, что от simula67, а не от smalltalk.
                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                              Цитата Астарот @
                                                                              Так я и хочу услышать, что ему не соответствует - на практике.

                                                                              На практике, скажем, какая-нибудь система управления гидронасосом не будет ОО ни разу. Потому что её дизайн - строго процедурный, и легко расписывается в виде алгоритма (а иначе - ой). Когда ты ставишь во главу угла алгоритм и делаешь процедурную декомпозицию - это тоже не ООП. Аналогично с чистой функциональщиной - ты дизайнишь "от фукнции" (желательно - кристально чистой :D ). Лично для меня ООП начинается тогда, когда дизайн системы - это граф взаимодействия абстрактных объектов посредством интерфейсов. Причём, замечу, характер взаимодействия и способ реализации этих объектов для меня на втором месте.

                                                                              Добавлено
                                                                              Цитата D_KEY @
                                                                              А процедурная обычно вполне себе

                                                                              Нет. Потому что ты идёшь от алгоритма (каким бы сложным он ни был). Начинаешь с main и спускаешься к деталям реализации конкретных процедур. Тут у тебя данные важны, но они не правят бал.
                                                                              "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                              Морган Фриман
                                                                              Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                Цитата Flex Ferrum @
                                                                                Аналогично с чистой функциональщиной - ты дизайнишь "от фукнции" (желательно - кристально чистой :D ).

                                                                                А если эта функция завернута в актор? :)

                                                                                Цитата Flex Ferrum @
                                                                                Лично для меня ООП начинается тогда, когда дизайн системы - это граф взаимодействия абстрактных объектов посредством интерфейсов

                                                                                Акторы кидающиеся друг в друга записочками попадают под это всецело, при этом внутри актора может быть как функциональщина, так и императивщина с классами, объектами и прочими падучими. И чо делать? :D

                                                                                Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                  Цитата Астарот @
                                                                                  И чо делать?

                                                                                  Ты продолжаешь постигать дзен. Продолжай. :) Ведь не так важно, как реализован конкретный компонент (или фрагмент) системы внутри. :)
                                                                                  "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                  Морган Фриман
                                                                                  Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                    Цитата Flex Ferrum @
                                                                                    Потому что ты идёшь от алгоритма (каким бы сложным он ни был). Начинаешь с main и спускаешься к деталям реализации конкретных процедур.

                                                                                    В теории возможно. Но алгоритм-то работает с данными.
                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                      Цитата D_KEY @
                                                                                      Но алгоритм-то работает с данными.

                                                                                      И чо? Не каждая работа с данными попадает под концепцию ОО-парадигмы. :) Процессор тоже работает с данными в регистрах и памяти. Мы же не будем натягивать на него ОО-принципы? :)
                                                                                      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                      Морган Фриман
                                                                                      Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                        Цитата Flex Ferrum @
                                                                                        Не каждая работа с данными попадает под концепцию ОО-парадигмы.

                                                                                        Так какая попадает, а какая нет?
                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                          Цитата D_KEY @
                                                                                          Так какая попадает, а какая нет?

                                                                                          Попадает та, где у тебя дизайн отталкивается от (чаще всего) абстрактных данных и логики их взаимодействия. Та, где у тебя есть компоненты и абстрактные интерфейсы для взаимодействия с ними.
                                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                          Морган Фриман
                                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                            Это ОО код или процедурный?
                                                                                            ExpandedWrap disabled
                                                                                              int fd = /* socket, open, etc. */
                                                                                              ...
                                                                                              rc = write(fd, ...);
                                                                                              ...
                                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                              Эм... Чего-то я теперь не догоняю. Где я выше писал про код? Вроде бы речь шла о дизайне. Поэтому ответ на твой вопрос: ХЗ. Если это фрагмент метода Serialize какого-нибудь класса - то, скорее всего, ОО. Если фрагмент функции main на 100500 строк, которая сначала что-то прочитала, потом что-то записала - то процедурный.
                                                                                              "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                              Морган Фриман
                                                                                              Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                Цитата D_KEY @
                                                                                                Это ОО код или процедурный?
                                                                                                ExpandedWrap disabled
                                                                                                  int fd = /* socket, open, etc. */
                                                                                                  ...
                                                                                                  rc = write(fd, ...);
                                                                                                  ...

                                                                                                Ну, для начала - это код :D А код, в основном, он не ОО или какой-то еще, а говнокод или не говнокод :D

                                                                                                Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                  Цитата Flex Ferrum @
                                                                                                  Вроде бы речь шла о дизайне.

                                                                                                  Ну так у нас вот такая простенькая система. Мы в зависимости от некоторых настроек создаем разные объекты, в которые можно "писать" и пишем в них определенные данные (например, получаемые от клиента из консоли).
                                                                                                  Что нужно для того, чтоб наш дизайн был ОО?
                                                                                                  "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                    Цитата D_KEY @
                                                                                                    Что нужно для того, чтоб наш дизайн был ОО?

                                                                                                    Нужны соответствующие абстракции. Абстракция для "настроек", абстракция для "клиентского ввода", абстракция для "хранилищ данных", абстракция для "персистентное хранилище". В процедурной декомпозиции будет иначе: "Прочитали файл с настройками, получили клиентский ввод, проанализировали, определили тип создаваемой структуры, записали туда данные и выгрузили на диск". В функциональной... Похоже, без в функциональной монад не обойтись. :D
                                                                                                    "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                    Морган Фриман
                                                                                                    Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                      Цитата Flex Ferrum @
                                                                                                      Абстракция для "настроек", абстракция для "клиентского ввода", абстракция для "хранилищ данных", абстракция для "персистентное хранилище". В процедурной декомпозиции будет иначе: "Прочитали файл с настройками, получили клиентский ввод, проанализировали, определили тип создаваемой структуры, записали туда данные и выгрузили на диск".

                                                                                                      Мне кажется, что код при этом будет практически одинаковый.
                                                                                                      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                        Цитата D_KEY @
                                                                                                        Мне кажется, что код при этом будет практически одинаковый.

                                                                                                        Возможно. А возможно и нет.
                                                                                                        "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                        Морган Фриман
                                                                                                        Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                          Цитата Flex Ferrum @
                                                                                                          На практике, скажем, какая-нибудь система управления гидронасосом не будет ОО ни разу

                                                                                                          А что скажешь по поводу ядра Люникса?
                                                                                                          Мои программные ништякиhttp://majestio.info
                                                                                                            Цитата Flex Ferrum @
                                                                                                            Цитата D_KEY @
                                                                                                            Мне кажется, что код при этом будет практически одинаковый.

                                                                                                            Возможно. А возможно и нет.

                                                                                                            А в ОО-системе не нужно будет делать это: "Прочитали файл с настройками, получили клиентский ввод, проанализировали, определили тип создаваемой структуры, записали туда данные и выгрузили на диск"? :)
                                                                                                            С другой стороны, в процедурных сиситемах точно так же широко применялись(применяются) и абстрактные данные(через теги и касты или через таблицы с указателями на функции, например) и полиморфизм(хотя бы через указатели на функции). И это так же закладывается на уровне дизайна.
                                                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                              Цитата D_KEY @
                                                                                                              А в ОО-системе не нужно будет делать это: "Прочитали файл с настройками, получили клиентский ввод, проанализировали, определили тип создаваемой структуры, записали туда данные и выгрузили на диск"?

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

                                                                                                              Добавлено
                                                                                                              Цитата JoeUser @
                                                                                                              А что скажешь по поводу ядра Люникса?

                                                                                                              Ничего. Я его не изучал. :)
                                                                                                              "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                              Морган Фриман
                                                                                                              Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                Цитата Flex Ferrum @
                                                                                                                Всё зависит от того, от чего ты пляшешь при дизайне системы.

                                                                                                                Да от всего ты пляшешь на практике. Даже те абстракции, что ты выделил для примера, шли в том числе от того, что твоя система будет делать.
                                                                                                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                  Цитата D_KEY @
                                                                                                                  Да от всего ты пляшешь на практике. Даже те абстракции, что ты выделил для примера, шли в том числе от того, что твоя система будет делать.

                                                                                                                  На практике для разных аспектов системы я применяю разные подходы в плане дизайна. Как-то так.

                                                                                                                  Добавлено
                                                                                                                  Вот ближе к практике. По ссылке из моей подписи можно попасть на проект Jinja2Cpp. В этом проекте есть интересная задачка - прозрачная работа (на уровне реализации) с std::string/std::wstring. Весьма нетривиальная, как оказалось, задачка.

                                                                                                                  Добавлено
                                                                                                                  Цитата Flex Ferrum @
                                                                                                                  На практике для разных аспектов системы я применяю разные подходы в плане дизайна. Как-то так.

                                                                                                                  Поэтому меня веселят статьи типа тех, что по ссылке топикстартера. Создаётся впечатление, что автор много лет мучился, раз за разом натягивая сов на глобус, просто потому, что его так научили и сказали: "Чуваг, только так правильно!", а потом он вдруг осознал! Бггг...
                                                                                                                  "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                  Морган Фриман
                                                                                                                  Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                    Цитата Flex Ferrum @
                                                                                                                    Цитата D_KEY @
                                                                                                                    Да от всего ты пляшешь на практике. Даже те абстракции, что ты выделил для примера, шли в том числе от того, что твоя система будет делать.

                                                                                                                    На практике для разных аспектов системы я применяю разные подходы в плане дизайна. Как-то так.

                                                                                                                    Это понятно. Ты когда абстракции придумываешь, об операциях, которые они будут осуществлять(или над ними будут), обдумываешь?
                                                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                      Цитата D_KEY @
                                                                                                                      Ты когда абстракции придумываешь, об операциях, которые они будут осуществлять(или над ними будут), обдумываешь?

                                                                                                                      Да. Но я размышляю над этим в терминах контрактов, активно применяя SOLID.
                                                                                                                      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                      Морган Фриман
                                                                                                                      Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                        Цитата Flex Ferrum @
                                                                                                                        Да.

                                                                                                                        Тогда в чем разница?

                                                                                                                        Цитата
                                                                                                                        Но я размышляю над этим в терминах контрактов, активно применяя SOLID.

                                                                                                                        И что это меняет? :)
                                                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                          Цитата D_KEY @
                                                                                                                          И что это меняет?

                                                                                                                          Точку и угол зрения. При таком взгляде на дизайн возникают интересные констрейнты типа "принцип минимальных привилегий", "один класс - одна задача", "ответственность класса" и т. п.
                                                                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                          Морган Фриман
                                                                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                            Цитата Flex Ferrum @
                                                                                                                            Цитата D_KEY @
                                                                                                                            И что это меняет?

                                                                                                                            Точку и угол зрения. При таком взгляде на дизайн возникают интересные констрейнты типа "принцип минимальных привилегий", "один класс - одна задача", "ответственность класса" и т. п.

                                                                                                                            Пока звучит как словоблудие :) Или вера.

                                                                                                                            Добавлено
                                                                                                                            Эти же вещи возникают при любом другом дизайне.
                                                                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                              Цитата D_KEY @
                                                                                                                              Эти же вещи возникают при любом другом дизайне.

                                                                                                                              Нда? Можешь показать, какое они будут иметь отражение при процедурном дизайне? А при функциональном?
                                                                                                                              "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                              Морган Фриман
                                                                                                                              Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                А мне кажется ярые ООПшники немного начали бороться с самими собой, чтоб сделать идеальную ООП систему, хотя бы на бумаге, в книгах. И от этого начинается некая путаница.
                                                                                                                                Я вот как то про сервис локатор читал, читал, в терминах ООП, что мол де это антипаттерн, долой его и туда сюда, потом начал разбираться с этим более детально, в итоге он мне сильно начал напоминать паттерн абстрактная фабрика. Начал искать отличия, нашел - но эти отличия правда какие то расплывчатые у автора получились.
                                                                                                                                Потом когда SOLID начал более детально курить, прочитал статьи, посмотрел примеры, попробовал, потом почитал что люди пишут помешанные на ООП и понял что многие начинают жестко путаться в своей же терминологии. Например Инверсию зависимостей очень часто путают с Внедрением зависимостей. Начинаются бестолковые споры о том, кто должен выключать переключатель и в каком слое и т.п. И короче понял что всего надо в меру. Особенно эта проблема выражена у программистов C#/Java.
                                                                                                                                  Цитата Wound @
                                                                                                                                  И короче понял что всего надо в меру. Особенно эта проблема выражена у программистов C#/Java.

                                                                                                                                  Вот!
                                                                                                                                  "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                  Морган Фриман
                                                                                                                                  Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                    Цитата D_KEY @
                                                                                                                                    Пока звучит как словоблудие Или вера.

                                                                                                                                    Вообще то это целая уже научная отрасль. Просто на текущий момент ОО системы разрослись до таких масштабов, что их уже трудно поддерживать без SOLID. Особенно это касается всяких .NET проектов. Вот возьми какой нибудь EntityFramework, тебе там сразу какой нибудь MVC шаблон придется пилить. Делить все на слои, дальше как быть если с клиента что то надо будет передать на сервак, нужно предусмотреть чтоб все было дешево и быстро, вот тут всякие SOLID и начинают работать. А если ты пишешь:
                                                                                                                                    ExpandedWrap disabled
                                                                                                                                      int fd = /* socket, open, etc. */
                                                                                                                                      ...
                                                                                                                                      rc = write(fd, ...);
                                                                                                                                      ...

                                                                                                                                    То тут конечно оно тебе ничем не поможет.
                                                                                                                                      Цитата D_KEY @
                                                                                                                                      Пока звучит как словоблудие :) Или вера.

                                                                                                                                      У тебя пункт на "вере", обрати внимание.

                                                                                                                                      Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                        Цитата Wound @
                                                                                                                                        чтоб сделать идеальную ООП систему

                                                                                                                                        ИМХО, идеальных - не существует. Есть реально работающие и теоретические. :D
                                                                                                                                        "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                        Морган Фриман
                                                                                                                                        Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                          Цитата Wound @
                                                                                                                                          Вообще то это целая уже научная отрасль.

                                                                                                                                          Научным это будет тогда, когда будет формальное опредедение ООП.

                                                                                                                                          Добавлено
                                                                                                                                          Цитата Астарот @
                                                                                                                                          У тебя пункт на "вере", обрати внимание.

                                                                                                                                          Спасибо, я знаю :)

                                                                                                                                          Добавлено
                                                                                                                                          Цитата Flex Ferrum @
                                                                                                                                          Нда? Можешь показать, какое они будут иметь отражение при процедурном дизайне? А при функциональном?

                                                                                                                                          Пока ты не показал разницу между ОО и процедурным :)
                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                            Цитата D_KEY @
                                                                                                                                            Пока ты не показал разницу между ОО и процедурным

                                                                                                                                            Ты её не увидел (не захотел увидеть?). А это уже не мои проблемы. :) Но это был к тебе вопрос, на самом деле. Ты утверждаешь, что при альтернативных подходах это будет так же. Мне и интересно - как именно? Вот как реализуется "принцип минимальных привилегий" при процедурном подходе? А при функциональном?
                                                                                                                                            Сообщение отредактировано: Flex Ferrum -
                                                                                                                                            "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                            Морган Фриман
                                                                                                                                            Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                              Цитата Wound @
                                                                                                                                              Потом когда SOLID начал более детально курить

                                                                                                                                              SOLID прекрасен. Сам использую и всем рекомендую. Только это все не приблежает нас к пониманию термина ООП.
                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                Цитата D_KEY @
                                                                                                                                                Только это все не приблежает нас к пониманию термина ООП.

                                                                                                                                                Тебя. *Fixed.
                                                                                                                                                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                Морган Фриман
                                                                                                                                                Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                  Цитата Wound @
                                                                                                                                                  чтоб сделать идеальную ООП систему

                                                                                                                                                  В процесс создания идеальной ООП системы обязательно входит два пункта:
                                                                                                                                                  1. доказательство ООПшности
                                                                                                                                                  2. доказательство идеальности
                                                                                                                                                  :D

                                                                                                                                                  Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                    Цитата Flex Ferrum @
                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                    Пока ты не показал разницу между ОО и процедурным

                                                                                                                                                    Ты её не увидел (не захотел увидеть?).

                                                                                                                                                    А как тут можно понять? Ты ничего конкретного не сказал:
                                                                                                                                                    Цитата Flex Ferrum @
                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                    И что это меняет?

                                                                                                                                                    Точку и угол зрения.

                                                                                                                                                    :)

                                                                                                                                                    И сразу пошел в сторону SOLID. Который тоже совершенно неформален.

                                                                                                                                                    Добавлено
                                                                                                                                                    Цитата Flex Ferrum @
                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                    Только это все не приблежает нас к пониманию термина ООП.

                                                                                                                                                    Тебя. *Fixed.

                                                                                                                                                    Ну так расскажи :)
                                                                                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                      А как тут можно понять? Ты ничего конкретного не сказал:

                                                                                                                                                      Если это троллинг, то очень грубый и толстый.
                                                                                                                                                      Цитата Flex Ferrum @
                                                                                                                                                      Нужны соответствующие абстракции. Абстракция для "настроек", абстракция для "клиентского ввода", абстракция для "хранилищ данных", абстракция для "персистентное хранилище". В процедурной декомпозиции будет иначе: "Прочитали файл с настройками, получили клиентский ввод, проанализировали, определили тип создаваемой структуры, записали туда данные и выгрузили на диск". В функциональной... Похоже, без в функциональной монад не обойтись.


                                                                                                                                                      Добавлено
                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                      И сразу пошел в сторону SOLID.

                                                                                                                                                      Формален/не формален - это фигня. Расскажи, как применяются принципы SOLID при процедурном подходе.
                                                                                                                                                      Сообщение отредактировано: Flex Ferrum -
                                                                                                                                                      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                      Морган Фриман
                                                                                                                                                      Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                        Цитата Flex Ferrum @
                                                                                                                                                        Цитата Flex Ferrum @
                                                                                                                                                        Нужны соответствующие абстракции. Абстракция для "настроек", абстракция для "клиентского ввода", абстракция для "хранилищ данных", абстракция для "персистентное хранилище". В процедурной декомпозиции будет иначе: "Прочитали файл с настройками, получили клиентский ввод, проанализировали, определили тип создаваемой структуры, записали туда данные и выгрузили на диск". В функциональной... Похоже, без в функциональной монад не обойтись.

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

                                                                                                                                                        И вспоминаем, что начался этот пример с кода. Он написан процедурно. Но в нем есть абстракция "файла"(который может быть реальным файлом, сокетом, пайпом и т.п.), с операцией write.

                                                                                                                                                        Цитата
                                                                                                                                                        Формален/не формален - это фигня.

                                                                                                                                                        :lol:
                                                                                                                                                        На этом можно было бы закончить, но нет.

                                                                                                                                                        Цитата
                                                                                                                                                        Расскажи, как применяются принципы SOLID при процедурном подходе.

                                                                                                                                                        А какая разница между ОО и процедурным?
                                                                                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                          А какая разница между ОО и процедурным?

                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                          Еще раз. Чтобы определить абстракции, тебе придется определить операции. Чтобы спроектировать систему, теме придется сделать все тоже, что ты описал для процедурного стиля.

                                                                                                                                                          Нет. В процедурном стиле я сначала придумываю алгоритм, а потом подбираю нужные данные под него. Если вообще нужны. Конкретные свойства данных и т. п. тут не играют особой роли. Есть - и ладно. В ОО-стиле - наоборот. Конкретные алгоритмы продумываются после объектной декомпозиции. Соответственно, и подходы к реализации вроде бы одинаковых задач будут разные. Скажем, тебе нужно поддержать чтение разных типов конфигураций. В процедурном стиле ты воткнёшь if/else if и в каждой ветке вызовешь функцию чтения нужного формата файла и раскладывания по структурам. В объектом - у тебя скорее всего будет абстрактная фабрика, которая выплёвывает из себя интерфейс для чтения конфигурации. И уже в фабрике будет if/else if. Или реестр. Или ещё какой-либо способ диспетчеризации.

                                                                                                                                                          Добавлено
                                                                                                                                                          А абстрактная фабрика с интерфейсами в ОО-подходе у тебя появится для того, чтобы реализовать букву "D" из SOLID. Чтобы потом написать юнит-тесты, в которых можно подменять источники конфигурации (та самая "инверсия зависимостей"). В процедурном подходе ничего такого не понадобится. Шаг алгоритма пройден. Если успешно - идём дальше.
                                                                                                                                                          Сообщение отредактировано: Flex Ferrum -
                                                                                                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                          Морган Фриман
                                                                                                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                            Цитата Flex Ferrum @
                                                                                                                                                            В процедурном стиле я сначала придумываю алгоритм, а потом подбираю нужные данные под него.

                                                                                                                                                            Где ты такое видел вообще?
                                                                                                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                              Где ты такое видел вообще?

                                                                                                                                                              А в чём, по твоему, суть процедурного подхода? :D Алгоритмическая декомпозиция задачи.
                                                                                                                                                              Сообщение отредактировано: Flex Ferrum -
                                                                                                                                                              "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                              Морган Фриман
                                                                                                                                                              Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                В разбиении программы на подпрограммы в рамках императивного подхода.
                                                                                                                                                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                  В разбиении программы на подпрограммы в рамках императивного подхода.

                                                                                                                                                                  Вот. Алгоритмическая декомпозиция. Про которую я и говорю. Тогда в чём вопрос?
                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                  Где ты такое видел вообще?

                                                                                                                                                                  Спор ради спора?
                                                                                                                                                                  "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                  Морган Фриман
                                                                                                                                                                  Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                    Цитата Flex Ferrum @
                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                    В разбиении программы на подпрограммы в рамках императивного подхода.

                                                                                                                                                                    Вот. Алгоритмическая декомпозиция. Про которую я и говорю. Тогда в чём вопрос?

                                                                                                                                                                    Отсюда не следует, что ты сначала обдумываешь алгоритм, потом подбираешь под него данные.
                                                                                                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                                      Отсюда не следует, что ты сначала обдумываешь алгоритм, потом подбираешь под него данные.

                                                                                                                                                                      Именно это отсюда и следует. Если под данными считать "абстракции". Алгоритмическая декомпозиция против объектной. Вроде азы же! :)
                                                                                                                                                                      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                      Морган Фриман
                                                                                                                                                                      Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                        Цитата Flex Ferrum @
                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                        Отсюда не следует, что ты сначала обдумываешь алгоритм, потом подбираешь под него данные.

                                                                                                                                                                        Именно это отсюда и следует.

                                                                                                                                                                        Как?

                                                                                                                                                                        Цитата
                                                                                                                                                                        Алгоритмическая декомпозиция против объектной. Вроде азы же! :)

                                                                                                                                                                        Эти азы расплывчаты и встречаются только в ОО литературе.
                                                                                                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                          Еще раз. Чтобы определить абстракции, тебе придется определить операции. Чтобы спроектировать систему, теме придется сделать все тоже, что ты описал для процедурного стиля.

                                                                                                                                                                          Так ты на абстракции смотришь через призму деталей, вот у тебя и не получается понять что к чему. Попробуй смотреть на абстракции не через призму деталей, а через призму абстракций.
                                                                                                                                                                          Т.е. вот у тебя есть какой то интерфейс "Живое" существо, ты описываешь в нем то, что ему пресуще. Как ты это сделаешь в процедурном стиле, чтоб избежать дублирования кода в будущем, как ты будешь изменять поведение в зависимости от интерфейсов/классов(от конкретизации живого существа)? Как ты будешь такими объектами управлять? Как ты будешь инкапсулировать детали реализации? Вот при ОО подходе тут уже вырисовываются разные интерфейсы, без всяких деталей. А при процедурном как?
                                                                                                                                                                          Сообщение отредактировано: Wound -
                                                                                                                                                                            Wound, речь про то, что такое ООП. Это все хорошо, что ты пишешь. Но не дает определение.
                                                                                                                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                              Wound, речь про то, что такое ООП. Это все хорошо, что ты пишешь. Но не дает определение.

                                                                                                                                                                              Определение можешь посмотреть на вики. Чем оно тебя не устраивает?
                                                                                                                                                                                Цитата Wound @
                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                Wound, речь про то, что такое ООП. Это все хорошо, что ты пишешь. Но не дает определение.

                                                                                                                                                                                Определение можешь посмотреть на вики. Чем оно тебя не устраивает?

                                                                                                                                                                                Расплывчатостью. Сможешь посмотреть на систему и сказать, ОО она или нет? А другие "эксперты" согласятся с тобой?
                                                                                                                                                                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                  ООП по сути не панацея, а призвана всего лишь упростить процесс разработки и сопровождения ПО.

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

                                                                                                                                                                                  Добавлено
                                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                                  Сможешь посмотреть на систему и сказать, ОО она или нет? А другие "эксперты" согласятся с тобой?

                                                                                                                                                                                  Если она удовлетворяет основным принципам ООП, тогда можно сказать что это ООП система. Если нет - значит не судьба. :-?
                                                                                                                                                                                    Цитата Wound @
                                                                                                                                                                                    Если она удовлетворяет основным принципам ООП

                                                                                                                                                                                    Разные люди разные принципы выделяют. И все эти принципы расплывчаты. Кто-то скажет, что система им удовлетворяет, а кто-то скажет, что нет.
                                                                                                                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                                                      А другие "эксперты" согласятся с тобой?

                                                                                                                                                                                      А что есть какой то другой способ определить ОО эта система или нет?

                                                                                                                                                                                      Добавлено
                                                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                                                      Разные люди разные принципы выделяют. И все эти принципы расплывчаты. Кто-то скажет, что система им удовлетворяет, а кто-то скажет, что нет.

                                                                                                                                                                                      Приводи примеры. Я не встречал описание ОО принципов, отличных от тех, что написаны на вики.
                                                                                                                                                                                        Цитата Wound @
                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                        А другие "эксперты" согласятся с тобой?

                                                                                                                                                                                        А что есть какой то другой способ определить ОО эта система или нет?

                                                                                                                                                                                        Так я про это и говорю. Нет нормального способа.

                                                                                                                                                                                        Цитата
                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                        Разные люди разные принципы выделяют. И все эти принципы расплывчаты. Кто-то скажет, что система им удовлетворяет, а кто-то скажет, что нет.

                                                                                                                                                                                        Приводи примеры.

                                                                                                                                                                                        Классический пример про принципы - одни считают, что ООП - это про "инкапсуляцию, наследование и полиморфизм", другие - что это про "все есть объекты, которые обмениваются между собой сообщениями", а третьи твердят про "абстрактные типы данных".
                                                                                                                                                                                        Пример систем. Хм. Ну вот скажи, STL - это ООП или нет?
                                                                                                                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                          Как?

                                                                                                                                                                                          Смотри. В процедурном подходе первичен алгоритм. Ты придумываешь его шаг за шагом параллельно выбирая как и где ты будешь хранить промежуточные результаты. И у тебя появляется функция чтения конфигурации, которая просто читает файл и просто заполняет структуру с открытыми полями. Никакой инкапсуляции, абстракции и прочего. Имя файла на вход, структура на выход. Все, идём по алгоритму дальше.
                                                                                                                                                                                          В ОО-подходе у тебя взаимодействующие абстракции. У тебя, скажем, есть абстракция "конфигурация", у которой интерфейс иерархического хранилища. Есть фабрика, которая создаёт экземпляр этой абстракции. Конкретный экземпляр. На вход - имя файла (или поток, или абстракция DataSource), на выходе - интерфейс. Дальше, у тебя есть абстракция "источник пользовательского ввода". Есть абстракция "Парсер пользовательского ввода". Ты передашь в парсер интерфейс конфигуратора. У тебя есть абстракция "Процессор пользовательского ввода", который склеивает всё вместе. И так далее. И алгоритмическая часть уже будет иной: создать объекты и обеспечить их совместную работу для решения финальной задачи, а не чёткое описание алгоритма шаг за шагом.
                                                                                                                                                                                          Такая вот разница между применением процедурного подхода и ОО. В первом случае чёткий алгоритм. Во втором - набор взаимодействующих абстракций. Но оба решают одну задачу.
                                                                                                                                                                                          Сообщение отредактировано: Flex Ferrum -
                                                                                                                                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                          Морган Фриман
                                                                                                                                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                            Так я про это и говорю. Нет нормального способа.

                                                                                                                                                                                            А чем тебя не устраивает тот, что на вики, я не понимаю? Чем этот способ не нормальный?

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

                                                                                                                                                                                            Это все одно и то же, просто сказано либо очень абстрактно либо конкретизировано. В вики например описывают 4 основных принципа "абстрагирование, инкапсуляция, наследование, полиморфизм".
                                                                                                                                                                                            В более ранних интерпетациях выделяли три последних принципа. Это все логично, ибо все развивается, потом появились конкретные методики, которые еще больше конкретизируют эти принципы своими принципами(тот же SOLID), со временем возможно еще что то добавится. Так вот к чему это все, а к тому что технологии развиваются, и конкретизируются определения различных систем и парадигм. Что то конкретизируется, что то отсеивается и т.д. На сегодняшний день можешь измерять ООпшность системы путем применения этих 4 принципов. Раньше возможно хватало 3 принципов, а еще раньше возможно хватало принципа "все есть объекты, которые обмениваются между собой сообщениями".

                                                                                                                                                                                            Вон даже планет в солнечной системе стало меньше, за последние 10 лет, а ты тут про какую то расплывчатость формулировок.

                                                                                                                                                                                            Добавлено
                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                            Пример систем. Хм. Ну вот скажи, STL - это ООП или нет?

                                                                                                                                                                                            Нет.
                                                                                                                                                                                            Сообщение отредактировано: Wound -
                                                                                                                                                                                              Flex, к тебе те же вопросы :)
                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                              Ну вот скажи, STL - это ООП или нет?

                                                                                                                                                                                              Сможешь посмотреть на систему и сказать, ОО она или нет? А другие "эксперты" согласятся с тобой?
                                                                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                Flex, к тебе те же вопросы :)
                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                Ну вот скажи, STL - это ООП или нет?

                                                                                                                                                                                                Сможешь посмотреть на систему и сказать, ОО она или нет? А другие "эксперты" согласятся с тобой?

                                                                                                                                                                                                STL только лишь в малой части ОО. В реализации стримов. Всё. Но к чему эти вопросы? Скажи, ты опять не понял разницу между ОО- и процелурным подходом?
                                                                                                                                                                                                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                Морган Фриман
                                                                                                                                                                                                Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                  Цитата Flex Ferrum @
                                                                                                                                                                                                  Смотри. В процедурном подходе первичен алгоритм. Ты придумываешь его шаг за шагом параллельно выбирая как и где ты будешь хранить промежуточные результаты. И у тебя появляется функция чтения конфигурации, которая просто читает файл и просто заполняет структуру с открытыми полями. Никакой инкапсуляции, абстракции и прочего. Имя файла на вход, структура на выход. Все, идём по алгоритму дальше.

                                                                                                                                                                                                  Ок. Допустим. Твой взгляд на процедурное программирование я понял. Хотя STL, очевидно, делали не так ;)

                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                  У тебя, скажем, есть абстракция "конфигурация", у которой интерфейс иерархического хранилища.

                                                                                                                                                                                                  Мне ее еще надо придумать. Это происходит от того, что нужно сделать. В разных системах абстракции для "конфигурации" будут разными.
                                                                                                                                                                                                  Исходя из чего придумывается интерфейсы абстракций?

                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                  Есть фабрика, которая создаёт экземпляр этой абстракции.

                                                                                                                                                                                                  В "процедурном" подходе у тебя точно так же могут выбираться разные реализации по каким-то параметрам.

                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                  на выходе - интерфейс.

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

                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                  И алгоритмическая часть уже будет иной: создать объекты и обеспечить их совместную работу для решения финальной задачи, а не чёткое описание алгоритма шаг за шагом.

                                                                                                                                                                                                  Так это и есть алгоритм шаг за шагом.

                                                                                                                                                                                                  Добавлено
                                                                                                                                                                                                  Цитата Flex Ferrum @
                                                                                                                                                                                                  Скажи, ты опять не понял разницу между ОО- и процелурным подходом?

                                                                                                                                                                                                  Твою точку зрения я понял. Но ты ее не обосновываешь, а постулируешь :)

                                                                                                                                                                                                  Добавлено
                                                                                                                                                                                                  Цитата Wound @
                                                                                                                                                                                                  Это все одно и то же, просто сказано либо очень абстрактно либо конкретизировано.

                                                                                                                                                                                                  Нет, это не одно и то же. И именно поэтому Алан Кей отказывал C++ в праве называться ОО-языком. Это его частное мнение. Определения-то четкого нет. Я уже не говорю формальное.

                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                                                  Пример систем. Хм. Ну вот скажи, STL - это ООП или нет?

                                                                                                                                                                                                  Нет.

                                                                                                                                                                                                  А что это? :)
                                                                                                                                                                                                  "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                    Мне ее еще надо придумать. Это происходит от того, что нужно сделать. В разных системах абстракции для "конфигурации" будут разными.
                                                                                                                                                                                                    Исходя из чего придумывается интерфейсы абстракций?

                                                                                                                                                                                                    Сами абстракции и их интерфейсы продумываются исходя из потребностей задачи. Исходной задачи, а не её алгоритм чешского представления.

                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                    Так это и есть алгоритм шаг за шагом.

                                                                                                                                                                                                    Нет. Если ты попробуешь реализовать первое и второе, то итоговое представление алгоритма у тебя будет разным. Во втором случае алгоритм будет сильно "рамазан" по коду.
                                                                                                                                                                                                    "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                    Морган Фриман
                                                                                                                                                                                                    Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                      Цитата Flex Ferrum @
                                                                                                                                                                                                      Сами абстракции и их интерфейсы продумываются исходя из потребностей задачи. Исходной задачи, а не её алгоритм чешского представления.

                                                                                                                                                                                                      Так а с чего ты взял, что до ООП люди все строили от алгоритмического представления?

                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                      Нет. Если ты попробуешь реализовать первое и второе, то итоговое представление алгоритма у тебя будет разным. Во втором случае алгоритм будет сильно "рамазан" по коду.

                                                                                                                                                                                                      И что? От этого там не будет "процедур"? И что мешало в процедурном подходе так же декомпозировать?
                                                                                                                                                                                                      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                        Нет, это не одно и то же. И именно поэтому Алан Кей отказывал C++ в праве называться ОО-языком. Это его частное мнение. Определения-то четкого нет. Я уже не говорю формальное.

                                                                                                                                                                                                        Ну а причем тут его частное мнение к общепризнанному мнению? Я уверен существуют ученные с мировым именем, которые не признают Теорию Большого Взрыва. Но она то не перестает быть от этого их частного мнения, основной теорией появления вселенной и всего остального.

                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                        А что это? :)

                                                                                                                                                                                                        Библиотека(набор) стандартных алгоритмов и классов дабы не писать велосипеды в каждой программе, облегчающая жизнь.
                                                                                                                                                                                                        Сообщение отредактировано: Wound -
                                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                                          И что? От этого там не будет "процедур"? И что мешало в процедурном подходе так же декомпозировать

                                                                                                                                                                                                          Ничего. Кроме того, что это будет уже ОО- подход. :)

                                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                                          Так а с чего ты взял, что до ООП люди все строили от алгоритмического представления?

                                                                                                                                                                                                          Эм... Вроде такова история индустрии. Сначала компьютеры применяли для решения чётко формализованных алгоритмических задач. Не? Это потом, с увеличением мощностей и появлением ЯВУ начали говорить о более сложных/альтернативных подходах.
                                                                                                                                                                                                          Сообщение отредактировано: Flex Ferrum -
                                                                                                                                                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                          Морган Фриман
                                                                                                                                                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                            D_KEY, если я (очередной раз) назову <stdio.h> имеющим объектную архитектуру, тебя это устроит?
                                                                                                                                                                                                            Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                              Цитата Qraizer @
                                                                                                                                                                                                              D_KEY, если я (очередной раз) назову <stdio.h> имеющим объектную архитектуру, тебя это устроит?

                                                                                                                                                                                                              Так замечательно. Осталось сформулировать четкие критерии :)

                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                              Цитата Qraizer @
                                                                                                                                                                                                              D_KEY, если я (очередной раз) назову <stdio.h> имеющим объектную архитектуру, тебя это устроит?

                                                                                                                                                                                                              И будешь прав. :)

                                                                                                                                                                                                              Вот тут важный момент. Почему ты пишешь не "я тоже так считаю", а "будешь прав", как будто есть четкие критерии?

                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                              Так а с чего ты взял, что до ООП люди все строили от алгоритмического представления?

                                                                                                                                                                                                              Эм... Вроде такова история индустрии.

                                                                                                                                                                                                              Когда появился stdio.h?
                                                                                                                                                                                                              Сообщение отредактировано: D_KEY -
                                                                                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                Цитата Qraizer @
                                                                                                                                                                                                                D_KEY, если я (очередной раз) назову <stdio.h> имеющим объектную архитектуру, тебя это устроит?

                                                                                                                                                                                                                И будешь прав. :)
                                                                                                                                                                                                                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                Морган Фриман
                                                                                                                                                                                                                Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                                                                  Так замечательно. Осталось сформулировать четкие критерии
                                                                                                                                                                                                                  Т.е. ты не возражаешь против этого тезиса. Тогда следующий вопрос: когда он писался, кем-то, когда-то... он вообще думал о том, чтобы написать его в стиле ООП?
                                                                                                                                                                                                                  Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                    D_KEY, Вообще да, если начать философствовать, то конечно ОО систему можно наковырять(разглядеть) и в сишной функции записи write(FILE*,...). Но какое это имеет отношение к реальным системам?
                                                                                                                                                                                                                    Сообщение отредактировано: Wound -
                                                                                                                                                                                                                      Цитата Wound @
                                                                                                                                                                                                                      Ну а причем тут его частное мнение к общепризнанному мнению?

                                                                                                                                                                                                                      Что за общепризнанное мнение? Кто статистику подводил?
                                                                                                                                                                                                                      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                        Вот тут важный момент. Почему ты пишешь не "я тоже так считаю", а "будешь прав", как будто есть четкие критерии?

                                                                                                                                                                                                                        Потому что есть абстрактный тип данных (FILE) и набор операций с ним (интерфейс).
                                                                                                                                                                                                                        "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                        Морган Фриман
                                                                                                                                                                                                                        Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                          Цитата Qraizer @
                                                                                                                                                                                                                          Тогда следующий вопрос: когда он писался, кем-то, когда-то... он вообще думал о том, чтобы написать его в стиле ООП?

                                                                                                                                                                                                                          Это ты Flex'а спроси. У него до ООП все алгоритмами мыслили.
                                                                                                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                                                            Что за общепризнанное мнение? Кто статистику подводил?

                                                                                                                                                                                                                            Так ты ее и привел, указав только одного ученого. Видимо больше на ходу и не вспомнил. А так вроде как это стандартное определение, которое дается даже в ВУЗах, не?
                                                                                                                                                                                                                              Цитата Wound @
                                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                                              Что за общепризнанное мнение? Кто статистику подводил?

                                                                                                                                                                                                                              Так ты ее и привел, указав только одного ученого.

                                                                                                                                                                                                                              Считается, что это он придумал термин ООП.

                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                                              Вот тут важный момент. Почему ты пишешь не "я тоже так считаю", а "будешь прав", как будто есть четкие критерии?

                                                                                                                                                                                                                              Потому что есть абстрактный тип данных (FILE) и набор операций с ним (интерфейс).

                                                                                                                                                                                                                              Замечательно. Так вот так люди мыслили при проектировании систем и до моды на ООП.
                                                                                                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                Считается, что это он придумал термин ООП.

                                                                                                                                                                                                                                И чего? Я же выше уже писал:
                                                                                                                                                                                                                                Цитата Wound @
                                                                                                                                                                                                                                Это все одно и то же, просто сказано либо очень абстрактно либо конкретизировано. В вики например описывают 4 основных принципа "абстрагирование, инкапсуляция, наследование, полиморфизм".
                                                                                                                                                                                                                                В более ранних интерпетациях выделяли три последних принципа. Это все логично, ибо все развивается, потом появились конкретные методики, которые еще больше конкретизируют эти принципы своими принципами(тот же SOLID), со временем возможно еще что то добавится. Так вот к чему это все, а к тому что технологии развиваются, и конкретизируются определения различных систем и парадигм. Что то конкретизируется, что то отсеивается и т.д. На сегодняшний день можешь измерять ООпшность системы путем применения этих 4 принципов. Раньше возможно хватало 3 принципов, а еще раньше возможно хватало принципа "все есть объекты, которые обмениваются между собой сообщениями".

                                                                                                                                                                                                                                Вон даже планет в солнечной системе стало меньше, за последние 10 лет, а ты тут про какую то расплывчатость формулировок.

                                                                                                                                                                                                                                Страуструп тоже С++ изобрел, и тоже некоторые новые нововведения считает бредом. Но язык развивается уже без его участия напрямую, это диктуют ему современные реалии. Ровно то же самое и с ООП. Вот тогда в бородатом 85ом или когда там, было одно определение, а сегодня оно уже немного модернизировалось и стало таким, как есть. Это диктуют современные реалии. Иначе система отомрет, ей нужно изменяться и подстраиваться под текущии реалии. И со временем возможно она еще чем то пополнится, либо лишьнее уйдет. Этого уже будут требовать будущии реалии.
                                                                                                                                                                                                                                Сообщение отредактировано: Wound -
                                                                                                                                                                                                                                  Цитата Wound @
                                                                                                                                                                                                                                  Вообще да, если начать философствовать, то конечно ОО систему можно наковырять(разглядеть) и в сишной функции записи write(FILE*,...). Но какое это имеет отношение к реальным системам?
                                                                                                                                                                                                                                  Я это к тому, что тот, кто этот самый <stdio.h> придумывал, вообще не думал об ООП. Он просто спроектировал его так, чтобы было удобно и при этом работало. Как это позволил язык, так и выразил в коде. И тем не менее, это самая настоящая ОО библиотека. Абстракция FILE, приправленная интерфейсом из методов и констант.
                                                                                                                                                                                                                                  Сообщение отредактировано: Qraizer -
                                                                                                                                                                                                                                  Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                    D_KEY, ты же отдаёшь себе отчёт, что споришь с представлением об ООП, предложенным как раз таки Аланом Кеем?
                                                                                                                                                                                                                                    "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                    Морган Фриман
                                                                                                                                                                                                                                    Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                      Цитата Qraizer @
                                                                                                                                                                                                                                      Я это к тому, что тот, кто этот самый <stdio.h> придумывал, вообще ничего не думал об ООП.

                                                                                                                                                                                                                                      Да то к D_KEY вопрос был, я там пока писал дополнение к своему посту, вы передо мной 2 поста накатали, я там уже поправил ))
                                                                                                                                                                                                                                        Цитата Wound @
                                                                                                                                                                                                                                        Ровно то же самое и с ООП. Вот тогда в бородатом 85ом или когда там, было одно определение, а сегодня оно уже немного модернизировалось и стало таким, как есть. Это диктуют современные реалии. Иначе система отомрет, ей нужно изменяться и подстраиваться. И со временем возможно она еще чем то пополнится, либо лишьнее уйдет. Этого уже будут требовать будущии реалии.

                                                                                                                                                                                                                                        Да не о том речь.

                                                                                                                                                                                                                                        Нет единого, четкого, стандартного и тем более формального определения для ООП. Все что есть, это некий набор практик(довольно хороших) + лозунги и маркетинг.
                                                                                                                                                                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                          По сути, только лишь по коду ты просто не отличишь ООП от не ООП. ООП – это лишь набор спецификаций для проектирования систем. Если его формализовать, как раз и получится вон то расплывчатое и неточное. И не более.
                                                                                                                                                                                                                                          Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                                                                            Так вот так люди мыслили при проектировании систем и до моды на ООП.

                                                                                                                                                                                                                                            Не все и не всегда.
                                                                                                                                                                                                                                            "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                            Морган Фриман
                                                                                                                                                                                                                                            Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                                                              D_KEY, ты же отдаёшь себе отчёт, что споришь с представлением об ООП

                                                                                                                                                                                                                                              :facepalm: Я не спорю с представлением об ООП.

                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                                                              Так вот так люди мыслили при проектировании систем и до моды на ООП.

                                                                                                                                                                                                                                              Не все и не всегда.

                                                                                                                                                                                                                                              Точно так же, как и многие якобы ОО-системы сейчас.

                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                              Цитата Qraizer @
                                                                                                                                                                                                                                              ООП – это лишь набор спецификаций для проектирования систем.

                                                                                                                                                                                                                                              Скорее практик, а не спецификаций.
                                                                                                                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                Все что есть, это некий набор практик(довольно хороших)

                                                                                                                                                                                                                                                Нет, это не так. Но объяснять по третьему кругу человеку, для которого "лозунги и маркетинг" вплетаются в такого рода дискуссии смысла не вижу. А отсылать к Бочу или Мейеру - зачем? Оно ж лозунги и маркетинг. И статьи очередного неосилятора на хабре.
                                                                                                                                                                                                                                                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                Морган Фриман
                                                                                                                                                                                                                                                Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                  Как структурный подход является лишь списком рекомендаций, позволяющий просто и с меньшим влиянием человеческого фактора писать сложные и масштабируемые программные комплексы, так и ООП суть просто набор рекомендаций для проектирования таких вот сложных и масштабируемых программных комплексов. Нынче туда всучивают инкапсуляцию, наследование и полиморфизм как киты ООП, без которых его как бы и нет. Тогда как в реальности они лишь средства для достижения тех целей, которые парадигма ООП призвана сделать достижимыми.
                                                                                                                                                                                                                                                  Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                    Я не спорю с представлением об ООП.

                                                                                                                                                                                                                                                    Ты отрицаешь его наличие.
                                                                                                                                                                                                                                                    "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                    Морган Фриман
                                                                                                                                                                                                                                                    Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                      Цитата Flex Ferrum @
                                                                                                                                                                                                                                                      А отсылать к Бочу или Мейеру - зачем?

                                                                                                                                                                                                                                                      Я читал, спасибо. Неплохое описание практик :)

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

                                                                                                                                                                                                                                                      Именно. Согласен.

                                                                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                                                                      Цитата Flex Ferrum @
                                                                                                                                                                                                                                                      И статьи очередного неосилятора на хабре.

                                                                                                                                                                                                                                                      Статья хреновая, кстати.
                                                                                                                                                                                                                                                      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                        В таком случае процедурного, функционального, аспектного, событийного и прочих подходов тоже не существует, ибо всё это - лишь набор практик разной степени эффективности. <_<
                                                                                                                                                                                                                                                        "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                        Морган Фриман
                                                                                                                                                                                                                                                        Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                          Цитата Flex Ferrum @
                                                                                                                                                                                                                                                          В таком случае процедурного

                                                                                                                                                                                                                                                          Разбиение программы на процедуры.

                                                                                                                                                                                                                                                          Цитата
                                                                                                                                                                                                                                                          функционального

                                                                                                                                                                                                                                                          Представление процесса вычисления в виде вычисления функций в математическом смысле. Хорошо формализовано.

                                                                                                                                                                                                                                                          Цитата
                                                                                                                                                                                                                                                          аспектного

                                                                                                                                                                                                                                                          Практически не применял и очень мало знаю.
                                                                                                                                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                                                                                            Разбиение программы на процедуры.

                                                                                                                                                                                                                                                            Можно делить, можно не делить. Простейшая декомпозиция, один из примитивных инструментов. Зачем отдельный подход для этого выделять? :)

                                                                                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                                                                                            Представление процесса вычисления в виде вычисления функций в математическом смысле.

                                                                                                                                                                                                                                                            Если я переименую процедуры в функции - вроде то же самое получу. А ещё в Паскале функции были. Разве это повод для выделения отдельного, специального подхода? :D

                                                                                                                                                                                                                                                            На самом деле, не ясно, чем тебе тогда да хотя бы Кеевское определение ООП не устраивает. :D Выглядит как простая упёртость в стиле двойных стандартов. :) Ну или, проще говоря, жопа есть, а слова, получается, нету. Будем называть "жопу" как набор признаков: две булки, щель между ними, а в щели - анальный сфинктор. :)
                                                                                                                                                                                                                                                            "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                            Морган Фриман
                                                                                                                                                                                                                                                            Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                              :lool:
                                                                                                                                                                                                                                                              Мда. Любая хрень с этими признаками безусловно будет жопой. Вот только жопа не обязательно обладает этими признаками. Иногда это завтра дидлайн.
                                                                                                                                                                                                                                                              Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                                Представление процесса вычисления в виде вычисления функций в математическом смысле. Хорошо формализовано.

                                                                                                                                                                                                                                                                То есть нельзя программировать функционально не в математическом смысле? :D А что такое вообще "математический смысл"? Дай определение, будь ласка :)

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

                                                                                                                                                                                                                                                                  Лично я, в последнее время избегаю термина "ООП" в аргументации. По мне, разделение проходит по оси императивность/функциональность, так как именно на этой границе рвутся шаблоны из-за иммутабельности и (прости господи) чистоты функций.
                                                                                                                                                                                                                                                                  Сообщение отредактировано: applegame -
                                                                                                                                                                                                                                                                  error: 'long long long' is too long for GCC
                                                                                                                                                                                                                                                                    Цитата applegame @
                                                                                                                                                                                                                                                                    Вся наша жизнь в нашем же понимании - куча объектов взаимодействующих друг с другом. Поэтому не удивительно, что любое программирование в конечном итоге немного ООП, даже если вы на ассемблере тыкаете регистры процессора.

                                                                                                                                                                                                                                                                    Наша жизнь с тем же успехом событийно-ориентирована :) Так что в топку это все, давайте писать код :D

                                                                                                                                                                                                                                                                    Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                      Ну так ООП - это про дизайн, а не про императивщину/функциональщину. :)
                                                                                                                                                                                                                                                                      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                      Морган Фриман
                                                                                                                                                                                                                                                                      Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                        Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                        Ну так ООП - это про дизайн, а не про императивщину/функциональщину. :)

                                                                                                                                                                                                                                                                        Так и он про
                                                                                                                                                                                                                                                                        Цитата applegame @
                                                                                                                                                                                                                                                                        разделение проходит

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

                                                                                                                                                                                                                                                                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                          Цитата Астарот @
                                                                                                                                                                                                                                                                          И в чем-то прав, поскольку разделение, по крайней мере в мозгах программистов, нынче проходит именно тут.

                                                                                                                                                                                                                                                                          Да. В этом он прав. Но ООП - оно ведь вообще не про это, если рассудить то. ООП про то, как дизайнить. А имплементить ты можешь хоть императивно, хоть функционально, хоть квадратно-гнездово на CSS... :D Поэтому и вопрос D_KEY'я (про кусок кода) немного, гм, странен.
                                                                                                                                                                                                                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                          Морган Фриман
                                                                                                                                                                                                                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                            Цитата applegame @
                                                                                                                                                                                                                                                                            Лично я, в последнее время избегаю термина "ООП" в аргументации. По мне, разделение проходит по оси императивность/функциональность, так как именно на этой границе рвутся шаблоны из-за иммутабельности и (прости господи) чистоты функций.

                                                                                                                                                                                                                                                                            +1

                                                                                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                                                                                            Цитата Астарот @
                                                                                                                                                                                                                                                                            А что такое вообще "математический смысл"? Дай определение, будь ласка :)

                                                                                                                                                                                                                                                                            https://ru.m.wikipedia.org/wiki/Функция_(математика)

                                                                                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                                                                                            Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                            Если я переименую процедуры в функции - вроде то же самое получу. А ещё в Паскале функции были. Разве это повод для выделения отдельного, специального подхода? :D

                                                                                                                                                                                                                                                                            Есть повод или нет, но разделение четкое.

                                                                                                                                                                                                                                                                            Цитата
                                                                                                                                                                                                                                                                            На самом деле, не ясно, чем тебе тогда да хотя бы Кеевское определение ООП не устраивает. :D

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

                                                                                                                                                                                                                                                                            Цитата
                                                                                                                                                                                                                                                                            Ну или, проще говоря, жопа есть, а слова, получается, нету. Будем называть "жопу" как набор признаков: две булки, щель между ними, а в щели - анальный сфинктор. :)

                                                                                                                                                                                                                                                                            Так а что делать, если сторонники того, что у ООП есть четкое определение, вместо того, чтобы его озвучить, как раз занимаются перечислением признаков и еще учат, как дизайнить по ООП :-?

                                                                                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                                                                                            Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                            Поэтому и вопрос D_KEY'я (про кусок кода) немного, гм, странен.

                                                                                                                                                                                                                                                                            Зависит от того, ради чего задается вопрос :)
                                                                                                                                                                                                                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                                                                                              Так а что делать, если сторонники того, что у ООП есть четкое определение, вместо того, чтобы его озвучить

                                                                                                                                                                                                                                                                              Озвучивал. Здесь: ООП - в топку! (сообщение #3799452)

                                                                                                                                                                                                                                                                              Прекрасное определение. Если тебя оно не устраивает - :-? Значит, чего-то ты перестал понимать. Или не хочешь. Или толсто троллишь. Ещё раз (для тех, кто в танке). ООП - это не про написание кода. Это про его дизайн. Писать ты можешь хоть на ассемблере, хоть в машинных кодах с любой подходящей для этого парадигмой.
                                                                                                                                                                                                                                                                              "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                              Морган Фриман
                                                                                                                                                                                                                                                                              Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                Расскажи, как применяются принципы SOLID при процедурном подходе.

                                                                                                                                                                                                                                                                                S — каждая процедура выполняет «что-то одно».
                                                                                                                                                                                                                                                                                O — для любой процедуры можно написать другую, с такой же сигнатурой, выполняющую какой-то дополнительный код + код исходной процедуры. Также можно воспользоваться замыканиями, если язык позволяет.
                                                                                                                                                                                                                                                                                L — такая расширенная процедура будет являться (с некоторыми оговорками, справедливыми, впрочем и для классов) подтипом оригинальной. Также можно воспользоваться замыканиями, если язык позволяет.
                                                                                                                                                                                                                                                                                I — см. S, всё аналогично.
                                                                                                                                                                                                                                                                                D — передача процедур/указателей-на-процедуры как параметров в другие процедуры.
                                                                                                                                                                                                                                                                                “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                                                                                                                                                                                                                                                                All software sucks
                                                                                                                                                                                                                                                                                  Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                  хоть квадратно-гнездово на CSS... :D

                                                                                                                                                                                                                                                                                  Молчи! *** Даже не вздумай повторять! :D
                                                                                                                                                                                                                                                                                  M
                                                                                                                                                                                                                                                                                  Не надо так. Даже с благими намерениями.



                                                                                                                                                                                                                                                                                  Слово "смысл" там встречается четырежды, и ни разы не в твоем новоявленном "математическом смысле". Так что же это такое?
                                                                                                                                                                                                                                                                                  Сообщение отредактировано: JoeUser -

                                                                                                                                                                                                                                                                                  Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                    Цитата Астарот @

                                                                                                                                                                                                                                                                                    Слово "смысл" там встречается четырежды, и ни разы не в твоем новоявленном "математическом смысле". Так что же это такое?

                                                                                                                                                                                                                                                                                    Чего? Я тебе дал ссылку на определение функции в математике. Это и есть "функция в математическом смысле".
                                                                                                                                                                                                                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                                                                                                                                                      Чего? Я тебе дал ссылку на определение функции в математике. Это и есть "функция в математическом смысле".

                                                                                                                                                                                                                                                                                      Довольно странно. Когда тебе дают определение на ООП в программировании, тебя это не устраивает почему то. А тут прям аргумент такой. Ссылку он дал. По твоей ссылке слишком расплывчатое определение. Не прокатывает оно.
                                                                                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                                                                                        Чего? Я тебе дал ссылку на определение функции в математике. Это и есть "функция в математическом смысле".

                                                                                                                                                                                                                                                                                        Ты говорил про програмирование "в математическом смысле", а не про математику.

                                                                                                                                                                                                                                                                                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                          Цитата Wound @
                                                                                                                                                                                                                                                                                          Когда тебе дают определение на ООП в программировании, тебя это не устраивает почему то

                                                                                                                                                                                                                                                                                          И я объяснил почему :)
                                                                                                                                                                                                                                                                                          Кроме того, вон у Флекса другое определение ;)

                                                                                                                                                                                                                                                                                          Добавлено
                                                                                                                                                                                                                                                                                          Цитата Астарот @
                                                                                                                                                                                                                                                                                          Ты говорил про програмирование "в математическом смысле"

                                                                                                                                                                                                                                                                                          Нет, я говорил про функции в математическом смысле. Возможно, коряво выразился.
                                                                                                                                                                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                            Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                            хоть квадратно-гнездово на CSS...

                                                                                                                                                                                                                                                                                            Цитата Астарот @
                                                                                                                                                                                                                                                                                            Молчи! *** Даже не вздумай повторять!

                                                                                                                                                                                                                                                                                            А вот после этого восклицания мне даже интересно стало, о чём речь идёт :D
                                                                                                                                                                                                                                                                                            Сообщение отредактировано: JoeUser -
                                                                                                                                                                                                                                                                                            Подпись была включена в связи с окончанием срока наказания
                                                                                                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                                                                                                              Так а что делать, если сторонники того, что у ООП есть четкое определение, вместо того, чтобы его озвучить

                                                                                                                                                                                                                                                                                              Озвучивал. Здесь: ООП - в топку! (сообщение #3799452)

                                                                                                                                                                                                                                                                                              Прекрасное определение.

                                                                                                                                                                                                                                                                                              Давай чуть с другой стороны зайдем. Зачем нужно это определение, как и когда ты его используешь?
                                                                                                                                                                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                Цитата
                                                                                                                                                                                                                                                                                                Object-oriented software construction is the building of software systems as
                                                                                                                                                                                                                                                                                                structured collections of possibly partial abstract data type implementations.


                                                                                                                                                                                                                                                                                                Т.е. если в системе, возможно есть (а возможно и нет?) АТД — это ООП? И почему, вдруг, структурированная коллекция. В сферическом ООП каждый объект живёт своей жизнью, какая тут структурированность? Или тут имеется в виду инкапсуляция (мол объекты взаимодействуют друг с другом только через интерфейсы)? Чем это тогда отличается от модульности?
                                                                                                                                                                                                                                                                                                “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                                                                                                                                                                                                                                                                                All software sucks
                                                                                                                                                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                                                                                                                                                  Нет, я говорил про функции в математическом смысле. Возможно, коряво выразился.

                                                                                                                                                                                                                                                                                                  Я тебе напомню, что именно ты говорил:
                                                                                                                                                                                                                                                                                                  Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                  В таком случае процедурного, функционального, аспектного, событийного и прочих подходов тоже не существует, ибо всё это - лишь набор практик разной степени эффективности. <_<


                                                                                                                                                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                                                                                                                  функционального

                                                                                                                                                                                                                                                                                                  Представление процесса вычисления в виде вычисления функций в математическом смысле. Хорошо формализовано.



                                                                                                                                                                                                                                                                                                  Цитата OpenGL @
                                                                                                                                                                                                                                                                                                  А вот после этого восклицания мне даже интересно стало, о чём речь идёт :D

                                                                                                                                                                                                                                                                                                  Смотри, какая наркомания https://habr.com/ru/post/267701/

                                                                                                                                                                                                                                                                                                  Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                    Цитата Астарот @
                                                                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                                                                    Нет, я говорил про функции в математическом смысле. Возможно, коряво выразился.

                                                                                                                                                                                                                                                                                                    Я тебе напомню, что именно ты говорил:
                                                                                                                                                                                                                                                                                                    ...
                                                                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                                                                    Цитата
                                                                                                                                                                                                                                                                                                    функционального

                                                                                                                                                                                                                                                                                                    Представление процесса вычисления в виде вычисления функций в математическом смысле.

                                                                                                                                                                                                                                                                                                    Т.е. "в математическом смысле" относится к функциям.
                                                                                                                                                                                                                                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                                                                                                                                                                      Т.е. "в математическом смысле" относится к функциям.

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

                                                                                                                                                                                                                                                                                                      Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                        Цитата Астарот @
                                                                                                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                                                                                                        Т.е. "в математическом смысле" относится к функциям.

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

                                                                                                                                                                                                                                                                                                        Я не понимаю тебя.
                                                                                                                                                                                                                                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                                                                                                                                          Давай чуть с другой стороны зайдем. Зачем нужно это определение, как и когда ты его используешь?

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

                                                                                                                                                                                                                                                                                                          Цитата korvin @
                                                                                                                                                                                                                                                                                                          Т.е. если в системе, возможно есть (а возможно и нет?) АТД — это ООП?

                                                                                                                                                                                                                                                                                                          Нет. В программировании на ассемблере используются данные, размещённые в регистрах Означает ли, что программирование на ассемблере - априори ООП?

                                                                                                                                                                                                                                                                                                          Цитата korvin @
                                                                                                                                                                                                                                                                                                          И почему, вдруг, структурированная коллекция. В сферическом ООП каждый объект живёт своей жизнью, какая тут структурированность? Или тут имеется в виду инкапсуляция (мол объекты взаимодействуют друг с другом только через интерфейсы)? Чем это тогда отличается от модульности?

                                                                                                                                                                                                                                                                                                          Я не знаю, что такое "сферический ООП". Я применяю конкретные методики для решения конкретных задач. :) Структурированный - это, очевидно, имеющий некую внутренню структуру, взаимосвязи. Дизайн системы направлен на решение конкретных задач. Поэтому скоуп задачи (требования и т. п.) задают архитектуру связей. Но узлами этой сети являются объекты. От модульности это отличается тем, что модуль - это (в моём и, вроде, традиционном понимании) единица логической компоновки некоего функционала, контейнер функций и (возможно) данных. Причём данные эти - глобальны для всего модуля. Это немного другой уровень. Объект в ООП (в моём и, вроде, традиционном понимании) - это отражение некоей сущности из предметной области задачи, обладающий определёнными свойствами и поведением. Это элемент логической структуры дизайна системы, а не структуры компоновки/деплоймента.
                                                                                                                                                                                                                                                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                                                          Морган Фриман
                                                                                                                                                                                                                                                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                                            Цитата Астарот @
                                                                                                                                                                                                                                                                                                            Смотри, какая наркомания https://habr.com/ru/post/267701/

                                                                                                                                                                                                                                                                                                            Забавно :)
                                                                                                                                                                                                                                                                                                            Подпись была включена в связи с окончанием срока наказания
                                                                                                                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                                                                                                                              Я не понимаю тебя.

                                                                                                                                                                                                                                                                                                              Что ж тут непонятного-то? :D Начинаешь ты с того, что от всех и каждого требуешь определения ООП, при этом отвечая на реплику Флекса про функциональный подход рожаешь в связи с ним некий "математический смысл", но когда уже тебя спрашивают, что же это должно обозначать начинаешь вертеться, давать малопонятные ссылки и вообще апеллировать к абстрактной математике, о которой никто ни до, ни после не говорил :D

                                                                                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                              Какие-то новые странные вопросы

                                                                                                                                                                                                                                                                                                              По-моему ему наскучило общаццо с христанутыми в самой долгоживущей теме этого форума, но методы дискуссии остались те же :D

                                                                                                                                                                                                                                                                                                              Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                Цитата Астарот @
                                                                                                                                                                                                                                                                                                                рожаешь в связи с ним некий "математический смысл"

                                                                                                                                                                                                                                                                                                                :facepalm:
                                                                                                                                                                                                                                                                                                                Я просто пояснил, что термин "функция" берется из математики. Все.
                                                                                                                                                                                                                                                                                                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                  И я объяснил почему

                                                                                                                                                                                                                                                                                                                  Где? Привел чувака, который не согласен с тем, что С++ считается ОО языком? Крутое объяснение. Больше объяснений от тебя не было, если не считать попытки сравнивать строки между собой.

                                                                                                                                                                                                                                                                                                                  Цитата D_KEY @

                                                                                                                                                                                                                                                                                                                  Кроме того, вон у Флекса другое определение

                                                                                                                                                                                                                                                                                                                  У него не другое определение, у него оно более общее и тоже правильное, без всяких деталей. Или ты как operator== работаешь? Строки не совпали, вернул false, я не понимаю ?
                                                                                                                                                                                                                                                                                                                  Все определения, которые ты тут приводил, якобы разные - не противоречат друг другу по смыслу.
                                                                                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                    Я просто пояснил, что термин "функция" берется из математики. Все.

                                                                                                                                                                                                                                                                                                                    Уверен, тот, кто тебя спрашивал, что такое функция, остался твоим ответом доволен.

                                                                                                                                                                                                                                                                                                                    Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                      Я просто пояснил, что термин "функция" берется из математики. Все.

                                                                                                                                                                                                                                                                                                                      Скажи, а если я напишу в коде:
                                                                                                                                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                        double sqr(double x) {return x * x;}

                                                                                                                                                                                                                                                                                                                      - это будет функциональным программированием? :D
                                                                                                                                                                                                                                                                                                                      "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                                                                      Морган Фриман
                                                                                                                                                                                                                                                                                                                      Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                                                        Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                        Я просто пояснил, что термин "функция" берется из математики. Все.

                                                                                                                                                                                                                                                                                                                        Скажи, а если я напишу в коде:
                                                                                                                                                                                                                                                                                                                        ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                          double sqr(double x) {return x * x;}

                                                                                                                                                                                                                                                                                                                        - это будет функциональным программированием? :D

                                                                                                                                                                                                                                                                                                                        А если ты еще навесишь листенер на вызов функции, то вообще оно станет событийным :D

                                                                                                                                                                                                                                                                                                                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                          Цитата Астарот @
                                                                                                                                                                                                                                                                                                                          А если ты еще навесишь листенер на вызов функции, то вообще оно станет событийным

                                                                                                                                                                                                                                                                                                                          Правда? :D А ещё вот так вот можно:
                                                                                                                                                                                                                                                                                                                          ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                            void sqr(double x, callback cb)
                                                                                                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                                                                                                cb(x * x);
                                                                                                                                                                                                                                                                                                                            }

                                                                                                                                                                                                                                                                                                                          :D
                                                                                                                                                                                                                                                                                                                          "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                                                                          Морган Фриман
                                                                                                                                                                                                                                                                                                                          Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                                                            Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                            Правда? :D А ещё вот так вот можно:

                                                                                                                                                                                                                                                                                                                            Ай-ай-ай, как не чисто! Что ж ты, гад, побочный эффект подсовываешь? :D

                                                                                                                                                                                                                                                                                                                            Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                              Цитата Астарот @
                                                                                                                                                                                                                                                                                                                              Ай-ай-ай, как не чисто! Что ж ты, гад, побочный эффект подсовываешь?

                                                                                                                                                                                                                                                                                                                              Это это, как её... Ну... Это, слово страшное... Манд... Монд... Во! Монада! :D
                                                                                                                                                                                                                                                                                                                              "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                                                                              Морган Фриман
                                                                                                                                                                                                                                                                                                                              Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                                                                Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                Определение нужно для того, чтобы описать границы термина. В данном случае ООП

                                                                                                                                                                                                                                                                                                                                И насколько точно, на твой взгляд, эти границы определяет то определение, что ты привел? :)

                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                Я просто пояснил, что термин "функция" берется из математики. Все.

                                                                                                                                                                                                                                                                                                                                Уверен, тот, кто тебя спрашивал, что такое функция, остался твоим ответом доволен.

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

                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                это будет функциональным программированием? :D

                                                                                                                                                                                                                                                                                                                                Пока это просто определение функции.
                                                                                                                                                                                                                                                                                                                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                  Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                  Это это, как её... Ну... Это, слово страшное... Манд... Монд... Во! Монада! :D

                                                                                                                                                                                                                                                                                                                                  Может хоть ты объяснишь что это такое? :D

                                                                                                                                                                                                                                                                                                                                  Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                  Так вот функциональное программирование и заключается в том, что ты строишь программу в виде вычисления вот таких вот функций.

                                                                                                                                                                                                                                                                                                                                  Я бы сказал: "Спасибо, Кэп!", если бы спрашивал об этом.

                                                                                                                                                                                                                                                                                                                                  Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                    Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                    если бы спрашивал об этом.

                                                                                                                                                                                                                                                                                                                                    Так о чем же ты спрашивал тогда?
                                                                                                                                                                                                                                                                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                      Вообще забавно наблюдать, как в подобных спорах говорят о проектировании систем, а потом приводят строчку кода, и начинают рассуждать ООП это, или функциональщина :) При этом если-таки посмотреть на более-менее большую систему, то можно заметить, что в коде на java, в котором никуда не сбежать ни от классов, ни от интерфейсов, ни от наследования с полиморфизмом, тут и там встречается вполне себе функциональщина, типа стримов с лямбдами, или монад из vavr'а, а чуть в стороне, благодаря Spring, тут и там раскиданы bean post processor'ы, которые вполне себе аспекты, а то и вообще AspectJ найти можно. А если по соседству болтается что-нибудь типа кролика, а в коде висит листенер на очередь, то можно начинать рассматривать происходящее, как событийно ориентированную систему. И все это - один и тот же код :D

                                                                                                                                                                                                                                                                                                                                      Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                        Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                        Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                        Это это, как её... Ну... Это, слово страшное... Манд... Монд... Во! Монада! :D

                                                                                                                                                                                                                                                                                                                                        Может хоть ты объяснишь что это такое? :D

                                                                                                                                                                                                                                                                                                                                        Обсуждали уже. Можно вот тут посмотреть.
                                                                                                                                                                                                                                                                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                          Так о чем же ты спрашивал тогда?

                                                                                                                                                                                                                                                                                                                                          Что такое "в математическом смысле" относительно функционального подхода. Дай, пожалуйста, четкое определение.

                                                                                                                                                                                                                                                                                                                                          Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                            Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                            Вообще забавно наблюдать, как в подобных спорах говорят о проектировании систем, а потом приводят строчку кода, и начинают рассуждать ООП это, или функциональщина :) При этом если-таки посмотреть на более-менее большую систему, то можно заметить, что в коде на java, в котором никуда не сбежать ни от классов, ни от интерфейсов, ни от наследования с полиморфизмом, тут и там встречается вполне себе функциональщина, типа стримов с лямбдами, или монад из vavr'а, а чуть в стороне, благодаря Spring, тут и там раскиданы bean post processor'ы, которые вполне себе аспекты, а то и вообще AspectJ найти можно. А если по соседству болтается что-нибудь типа кролика, а в коде висит листенер на очередь, то можно начинать рассматривать происходящее, как событийно ориентированную систему. И все это - один и тот же код :D

                                                                                                                                                                                                                                                                                                                                            Согласен. Надо же.
                                                                                                                                                                                                                                                                                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                              Обсуждали уже. Можно вот тут посмотреть.

                                                                                                                                                                                                                                                                                                                                              Я еще тогда прочитал, но что такое монада - так и не понял :D Кстати, а что такое "do-нотация"? А то который раз слышу, но определения не знаю :D

                                                                                                                                                                                                                                                                                                                                              Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                Так о чем же ты спрашивал тогда?

                                                                                                                                                                                                                                                                                                                                                Что такое "в математическом смысле" относительно функционального подхода. Дай, пожалуйста, четкое определение.

                                                                                                                                                                                                                                                                                                                                                :facepalm: Еще раз. "В математическом смысле" относилось к "функциям". Т.е. эта часть фразы означает лишь то, что под "функцией" понимается то же, что в математике.
                                                                                                                                                                                                                                                                                                                                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                  Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                  Кстати, а что такое "do-нотация"?

                                                                                                                                                                                                                                                                                                                                                  Это синтаксический сахар для цепочки.
                                                                                                                                                                                                                                                                                                                                                  Вместо
                                                                                                                                                                                                                                                                                                                                                  ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                        main =
                                                                                                                                                                                                                                                                                                                                                            putStrLn "What is your name?" >>
                                                                                                                                                                                                                                                                                                                                                            getLine                       >>= \name ->
                                                                                                                                                                                                                                                                                                                                                                putStrLn ("Nice to meet you, " ++ name ++ "!")

                                                                                                                                                                                                                                                                                                                                                  Пишем проще:
                                                                                                                                                                                                                                                                                                                                                  ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                        main = do
                                                                                                                                                                                                                                                                                                                                                            putStrLn "What is your name?"
                                                                                                                                                                                                                                                                                                                                                            name <- getLine
                                                                                                                                                                                                                                                                                                                                                            putStrLn ("Nice to meet you, " ++ name ++ "!")


                                                                                                                                                                                                                                                                                                                                                  Но это одно и то же.
                                                                                                                                                                                                                                                                                                                                                  "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                    Согласен. Надо же.

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

                                                                                                                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                    :facepalm: Еще раз. "В математическом смысле" относилось к "функциям". Т.е. эта часть фразы означает лишь то, что под "функцией" понимается то же, что в математике.

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

                                                                                                                                                                                                                                                                                                                                                    Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                      Т.е. как если бы в том моем говнокоде на плюсах:
                                                                                                                                                                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                            auto io_main =
                                                                                                                                                                                                                                                                                                                                                                putLine("What is your name?") >>
                                                                                                                                                                                                                                                                                                                                                                getLine(unit{})               >>= [=](auto name) {
                                                                                                                                                                                                                                                                                                                                                                    return putLine("Nice to meet you, " + name + "!");
                                                                                                                                                                                                                                                                                                                                                                };


                                                                                                                                                                                                                                                                                                                                                      Можно было бы написать примерно так:
                                                                                                                                                                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                            auto io_main = do {
                                                                                                                                                                                                                                                                                                                                                                putLine("What is your name?");
                                                                                                                                                                                                                                                                                                                                                                name <- getLine(unit{});
                                                                                                                                                                                                                                                                                                                                                                return putLine("Nice to meet you, " + name + "!");
                                                                                                                                                                                                                                                                                                                                                            };

                                                                                                                                                                                                                                                                                                                                                      Но C++ ничего подобного не позволяет сделать, насколько я понимаю.
                                                                                                                                                                                                                                                                                                                                                      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                        Это синтаксический сахар для цепочки.

                                                                                                                                                                                                                                                                                                                                                        То есть f(a(b(),c())) - это тоже do-нотация?

                                                                                                                                                                                                                                                                                                                                                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                          Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                          Тогда с чем ты споришь?

                                                                                                                                                                                                                                                                                                                                                          С наличием четкого и вменяемого определения ООП.
                                                                                                                                                                                                                                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                            в том моем говнокоде на плюсах

                                                                                                                                                                                                                                                                                                                                                            Очень похоже на перл, как по мне :D

                                                                                                                                                                                                                                                                                                                                                            Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                              Нет.

                                                                                                                                                                                                                                                                                                                                                              Так в той же цитате написано, что да.

                                                                                                                                                                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                              Структурированный - это, очевидно, имеющий некую внутренню структуру, взаимосвязи.

                                                                                                                                                                                                                                                                                                                                                              Как это всё относится к ООП? Если программа не в ООП-стиле, то она априори не сруктурирована?
                                                                                                                                                                                                                                                                                                                                                              “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                                                                                                                                                                                                                                                                                                                                              All software sucks
                                                                                                                                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                С наличием четкого и вменяемого определения ООП.

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

                                                                                                                                                                                                                                                                                                                                                                Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                  Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                  Так как это про подход, то таких определений может быть множество, и каждое из них будет в равной мере правильным и не правильным. Правильным в той части которая соответствует подходу того, кто дает определение, и не правильной для всех у кого подход отличается.

                                                                                                                                                                                                                                                                                                                                                                  Так я примерно это и говорил :) Набор практик. Но это же и означает, что четкого определения нет. Но некоторые вот считают, что знают истину.
                                                                                                                                                                                                                                                                                                                                                                  "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                    С наличием четкого и вменяемого определения ООП.

                                                                                                                                                                                                                                                                                                                                                                    Давай зайдем с другой стороны. Вот нонче приобрела популярность некая технология. Основные принципы которой - все есть объекты(ну или почти все), выделение общего в интерфейсы, наследование свойств и поведения - чтобы не дублировать код, инкапсуляция деталей, что бы тот кто это использовал не думал о том, как это устроено внутри и т.д. И вот такой подход начинает применяться везде и всюду. Как ты предлагаешь поступить ? Везде писать я использую вот это и портянку такую, или как?
                                                                                                                                                                                                                                                                                                                                                                    Я так понимаю тебя не интересует как оно есть на самом деле на практике, тебя интересует чисто философская сторона вопроса. Мол де. Вот смотрите, у меня есть инструкция mov, принимает два аргумента, куда и откуда, mov - это у нас интерфейс, откуда - объект и куда - объект. censored, да тут же ООП. Че в ассемблере ООП? Очень расплывчатая формулировка, ниче не понять. Так что ли?
                                                                                                                                                                                                                                                                                                                                                                    Сообщение отредактировано: Qraizer -
                                                                                                                                                                                                                                                                                                                                                                      Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                      Но это же и означает, что четкого определения нет.

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

                                                                                                                                                                                                                                                                                                                                                                      Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                        Набор практик.

                                                                                                                                                                                                                                                                                                                                                                        Вообще то это парадигма, а не набор практик.
                                                                                                                                                                                                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                          Но некоторые вот считают, что знают истину.

                                                                                                                                                                                                                                                                                                                                                                          Ну, да. Ты, например :)
                                                                                                                                                                                                                                                                                                                                                                          Сообщение отредактировано: Астарот -

                                                                                                                                                                                                                                                                                                                                                                          Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                            Но C++ ничего подобного не позволяет сделать, насколько я понимаю.
                                                                                                                                                                                                                                                                                                                                                                            Не понял...
                                                                                                                                                                                                                                                                                                                                                                            ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                              auto io_main = []() {
                                                                                                                                                                                                                                                                                                                                                                                      putLine("What is your name?");
                                                                                                                                                                                                                                                                                                                                                                                      auto name = getLine(unit{});
                                                                                                                                                                                                                                                                                                                                                                                      return putLine("Nice to meet you, " + name + "!");
                                                                                                                                                                                                                                                                                                                                                                                  }();
                                                                                                                                                                                                                                                                                                                                                                            Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                                                                                                                              Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                              Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                              Но C++ ничего подобного не позволяет сделать, насколько я понимаю.
                                                                                                                                                                                                                                                                                                                                                                              Не понял...
                                                                                                                                                                                                                                                                                                                                                                              ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                auto io_main = []() {
                                                                                                                                                                                                                                                                                                                                                                                        putLine("What is your name?");
                                                                                                                                                                                                                                                                                                                                                                                        auto name = getLine(unit{});
                                                                                                                                                                                                                                                                                                                                                                                        return putLine("Nice to meet you, " + name + "!");
                                                                                                                                                                                                                                                                                                                                                                                    }();

                                                                                                                                                                                                                                                                                                                                                                              Для монад. Сходи по ссылке, если время есть. Я там для иллюстрации накидал реализацию монад на крестах.

                                                                                                                                                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                                                                                                                                                              Начало где-то тут

                                                                                                                                                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                                                                                                                                                              Про IO

                                                                                                                                                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                                                                                                                                                              Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                              Не понял...

                                                                                                                                                                                                                                                                                                                                                                              Нужно перегрузить оператор ';'(если бы он был).
                                                                                                                                                                                                                                                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                                Не понял...

                                                                                                                                                                                                                                                                                                                                                                                Нужно перегрузить оператор ';'(если бы он был).

                                                                                                                                                                                                                                                                                                                                                                                И еще нужен сахар для того, чтобы писать в духе:
                                                                                                                                                                                                                                                                                                                                                                                ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                  value <- func();
                                                                                                                                                                                                                                                                                                                                                                                  // use value

                                                                                                                                                                                                                                                                                                                                                                                А получалось:
                                                                                                                                                                                                                                                                                                                                                                                ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                  func() >>= [](auto value) {
                                                                                                                                                                                                                                                                                                                                                                                  // use value
                                                                                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                                                                                "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                  D_KEY, зачем это всё? Что не так? Объясни Астарот-у, почему это важно. По-твоему что, есть разница между Плюсовым a=b и Паскальным a:=b, что ли?
                                                                                                                                                                                                                                                                                                                                                                                  Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                                                                                                                                    Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                                    По-твоему что, есть разница между Плюсовым a=b и Паскальным a:=b, что ли?

                                                                                                                                                                                                                                                                                                                                                                                    Это тут при чём?
                                                                                                                                                                                                                                                                                                                                                                                    “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                                                                                                                                                                                                                                                                                                                                                                    All software sucks
                                                                                                                                                                                                                                                                                                                                                                                      Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                                      D_KEY, зачем это всё?

                                                                                                                                                                                                                                                                                                                                                                                      Тот мой код? Исключительно для иллюстрации.

                                                                                                                                                                                                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                                                                                                                                                                                                      Что не так?

                                                                                                                                                                                                                                                                                                                                                                                      С чем?

                                                                                                                                                                                                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                                                                                                                                                                                                      Объясни Астарот-у, почему это важно.

                                                                                                                                                                                                                                                                                                                                                                                      Он спросил про монады и do-нотацию. Что именно ты имеешь в виду?

                                                                                                                                                                                                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                                                                                                                                                                                                      По-твоему что, есть разница между Плюсовым a=b и Паскальным a:=b, что ли?

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

                                                                                                                                                                                                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                                                                                                                                                                                                      Если что, я не предлагаю так писать на плюсах :lol:
                                                                                                                                                                                                                                                                                                                                                                                      Сообщение отредактировано: D_KEY -
                                                                                                                                                                                                                                                                                                                                                                                      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                        Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                        Определение нужно для того, чтобы описать границы термина. В данном случае ООП

                                                                                                                                                                                                                                                                                                                                                                                        И насколько точно, на твой взгляд, эти границы определяет то определение, что ты привел? :)

                                                                                                                                                                                                                                                                                                                                                                                        Вполне чётко. Ровно в той же степени, в какой определение функционального подхода описывает его границы. Данное определение даёт понять, с чем именно и как оперирует ОО- парадигма. :)

                                                                                                                                                                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                                                                                                                                                                        Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                        это будет функциональным программированием? :D

                                                                                                                                                                                                                                                                                                                                                                                        Пока это просто определение функции.

                                                                                                                                                                                                                                                                                                                                                                                        Если это - всего лишь определение функции, но ещё не функциональный подход, то как (по твоему мнению) две приведённые тобою строчки кода могут относиться к ООП? Тут либо трусы снять, либо крестик надеть. Иначе никак. :)
                                                                                                                                                                                                                                                                                                                                                                                        Сообщение отредактировано: Flex Ferrum -
                                                                                                                                                                                                                                                                                                                                                                                        "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                                                                                                                                        Морган Фриман
                                                                                                                                                                                                                                                                                                                                                                                        Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                                                                                                                          Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                          то как (по твоему мнению) две приведённые тобою строчки кода могут относиться к ООП?

                                                                                                                                                                                                                                                                                                                                                                                          Я и не утверждал, что они относятся.
                                                                                                                                                                                                                                                                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                            Цитата korvin @
                                                                                                                                                                                                                                                                                                                                                                                            Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                            Нет.

                                                                                                                                                                                                                                                                                                                                                                                            Так в той же цитате написано, что да.

                                                                                                                                                                                                                                                                                                                                                                                            Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                            Структурированный - это, очевидно, имеющий некую внутренню структуру, взаимосвязи.

                                                                                                                                                                                                                                                                                                                                                                                            Как это всё относится к ООП? Если программа не в ООП-стиле, то она априори не сруктурирована?

                                                                                                                                                                                                                                                                                                                                                                                            Я тоже умею играть в силлогизмы, разбирать сложные определения по словам и докапываться до каждого из. Но может лучше тратить время более конструктивно?
                                                                                                                                                                                                                                                                                                                                                                                            "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                                                                                                                                            Морган Фриман
                                                                                                                                                                                                                                                                                                                                                                                            Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                                                                                                                              Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                              Данное определение даёт понять, с чем именно и как оперирует ОО- парадигма. :)

                                                                                                                                                                                                                                                                                                                                                                                              А дает ли оно понять, является ли некая система ОО?
                                                                                                                                                                                                                                                                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                                то как (по твоему мнению) две приведённые тобою строчки кода могут относиться к ООП?

                                                                                                                                                                                                                                                                                                                                                                                                Я и не утверждал, что они относятся.

                                                                                                                                                                                                                                                                                                                                                                                                Но задавая вопрос ты предполагал, что ответ может быть утвердительным, так? Если нет, то в чём был смысл вопроса?

                                                                                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                                Данное определение даёт понять, с чем именно и как оперирует ОО- парадигма. :)

                                                                                                                                                                                                                                                                                                                                                                                                А дает ли оно понять, является ли некая система ОО?

                                                                                                                                                                                                                                                                                                                                                                                                Да.

                                                                                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                С поправкой: дизайн системы.
                                                                                                                                                                                                                                                                                                                                                                                                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                                                                                                                                                Морган Фриман
                                                                                                                                                                                                                                                                                                                                                                                                Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                                                                                                                                  Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                                  Но задавая вопрос ты предполагал, что ответ может быть утвердительным, так?

                                                                                                                                                                                                                                                                                                                                                                                                  Конечно. Я же спрашиваю мнение людей, они бывают разными.

                                                                                                                                                                                                                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                                                                                                                                                                                                                  Если нет, то в чём был смысл вопроса?

                                                                                                                                                                                                                                                                                                                                                                                                  Уточнить позицию участников.

                                                                                                                                                                                                                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                                                                                                                                                                                                                  Да.

                                                                                                                                                                                                                                                                                                                                                                                                  Сможешь рассказать на примере stdio.h почему является и на примере STL, почему нет?
                                                                                                                                                                                                                                                                                                                                                                                                  "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                    А чё сразу я?! :D

                                                                                                                                                                                                                                                                                                                                                                                                    Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                      Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                                      Но может лучше тратить время более конструктивно?

                                                                                                                                                                                                                                                                                                                                                                                                      Да, например, не писать пространную воду, выдавая её за что-то осмысленное.
                                                                                                                                                                                                                                                                                                                                                                                                      “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                                                                                                                                                                                                                                                                                                                                                                                      All software sucks
                                                                                                                                                                                                                                                                                                                                                                                                        Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                        А чё сразу я?!

                                                                                                                                                                                                                                                                                                                                                                                                        Это старая добрая традиция - все темы сводятся либо к бабам, либо к Астароту :)
                                                                                                                                                                                                                                                                                                                                                                                                        - Завтра или послезавтра придет фруктовый пароход из Мобила, - сказал Джонни. - А до той поры нам делать нечего.
                                                                                                                                                                                                                                                                                                                                                                                                        - Но что вы намерены делать? Создать спрос?
                                                                                                                                                                                                                                                                                                                                                                                                        - Много вы понимаете в политической экономии, - ответил консул довольно невежливо. - Спроса создать нельзя. Но можно создать условия, которые вызовут спрос.
                                                                                                                                                                                                                                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                          Нет. Тут суть в том, что ты уходишь от разрушающего присваивания и передаешь значение по цепочке следующей функции.
                                                                                                                                                                                                                                                                                                                                                                                                          А его там и не было. Там была инициализация. Не веришь, добавь const.
                                                                                                                                                                                                                                                                                                                                                                                                          D_KEY, если ты действительно хочешь объяснить кому-либо что-либо, делай это правильно, и не намёками.

                                                                                                                                                                                                                                                                                                                                                                                                          Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                          Для монад. Сходи по ссылке, если время есть. Я там для иллюстрации накидал реализацию монад на крестах.
                                                                                                                                                                                                                                                                                                                                                                                                          Примерами сыт не будешь. Объяснять разницу между монадами и лямбдами на примерах всё равно что между интерфейсами и абстрактными классами.
                                                                                                                                                                                                                                                                                                                                                                                                          Сообщение отредактировано: Qraizer -
                                                                                                                                                                                                                                                                                                                                                                                                          Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                                                                                                                                                            Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                            Нет. Тут суть в том, что ты уходишь от разрушающего присваивания и передаешь значение по цепочке следующей функции.
                                                                                                                                                                                                                                                                                                                                                                                                            А его там и не было.

                                                                                                                                                                                                                                                                                                                                                                                                            Где там? Я про общую ситуацию.

                                                                                                                                                                                                                                                                                                                                                                                                            Цитата
                                                                                                                                                                                                                                                                                                                                                                                                            D_KEY, если ты действительно хочешь объяснить кому-либо что-либо, делай это правильно, и не намёками.

                                                                                                                                                                                                                                                                                                                                                                                                            А ты задай вопрос нормально :)

                                                                                                                                                                                                                                                                                                                                                                                                            Цитата
                                                                                                                                                                                                                                                                                                                                                                                                            Объяснять разницу между монадами и лямбдами на примерах

                                                                                                                                                                                                                                                                                                                                                                                                            О какой разнице между монадами и лямбдами идет речь?
                                                                                                                                                                                                                                                                                                                                                                                                            "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                              Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                              Я еще тогда прочитал, но что такое монада - так и не понял Кстати, а что такое "do-нотация"? А то который раз слышу, но определения не знаю
                                                                                                                                                                                                                                                                                                                                                                                                              Дело в том, что в "настоящих" функциональных языках вроде х-я нет встроенной возможности вызывать функции последовательно друг за другом. Так как тотально отсутствуют языковые конструкции вроде циклов, блоков и т.п. А в реальной жизни время имеет очень важную роль, а последовательность операций следующих друг за другом во времени, мягко говоря, обычнейшее дело. В х-е же есть только вызовы функций которые могут вызывать другие функции, полиморфизм, паттерн-матчинг и прочие list comprehensions. Это еще усугублено тотальной ленивостью: пока результат не нужен функция выполняться не будет. Тогда ФП-фаги придумали костыль (они это считают наоборот величайшим благом) - do-нотацию, которая представляет из себя языковую конструкцию оборачивающую все говно в монаду и позволяющую таки просто тупо написать список операций и они, о бозе!, будут выполнены в том порядке в котором написаны в исходном коде.
                                                                                                                                                                                                                                                                                                                                                                                                              Механизм примитивен: функция, результат которой является аргументом другой функции физически должна быть вычислена раньше, чем эта самая другая функция. Вот do-нотация и превращает список операций в кучу функций, результаты которых являются аргументами других функций, результаты которых являются аргументами других функций... Все это является одним из видов монад.

                                                                                                                                                                                                                                                                                                                                                                                                              Любой нормальный язык дает возможность все это сделать без специальных do-нотаций. В сиобразных языках достаточно поставить точку с запятой, вот тебе и последовательность операций. Так сказать, неявная do-нотация.
                                                                                                                                                                                                                                                                                                                                                                                                              В этом плане erlang представляет из себя некий компромисс: это иммутабельный ФЯ с возможностью писать грязные функции и написанные друг за другом вызовы функций будут вызваны именно в том порядке в котором они написаны, такая же неявная do-нотация.
                                                                                                                                                                                                                                                                                                                                                                                                              Сообщение отредактировано: applegame -
                                                                                                                                                                                                                                                                                                                                                                                                              error: 'long long long' is too long for GCC
                                                                                                                                                                                                                                                                                                                                                                                                                Цитата applegame @
                                                                                                                                                                                                                                                                                                                                                                                                                Любой нормальный язык дает возможность все это сделать без специальных do-нотаций. В сиобразных языках достаточно поставить точку с запятой, вот тебе и последовательность операций. Так сказать, неявная do-нотация.

                                                                                                                                                                                                                                                                                                                                                                                                                Именно поэтому меня веселят любые попытки притащить монады в императивные языки. :)
                                                                                                                                                                                                                                                                                                                                                                                                                "Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог — один из них."
                                                                                                                                                                                                                                                                                                                                                                                                                Морган Фриман
                                                                                                                                                                                                                                                                                                                                                                                                                Реализация шаблонов Jinja2 для C++ Jinja2 C++
                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата applegame @
                                                                                                                                                                                                                                                                                                                                                                                                                  Любой нормальный язык дает возможность все это сделать без специальных do-нотаций. В сиобразных языках достаточно поставить точку с запятой, вот тебе и последовательность операций. Так сказать, неявная do-нотация.

                                                                                                                                                                                                                                                                                                                                                                                                                  Но только для одного вида монад. В haskell ты можешь использовать do-нотацию для работы со списками, Maybe(опциональные значения) и любыми другими монадами, не только IO.

                                                                                                                                                                                                                                                                                                                                                                                                                  Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                                                  любые попытки притащить монады в императивные языки. :)

                                                                                                                                                                                                                                                                                                                                                                                                                  А разве есть такие попытки?
                                                                                                                                                                                                                                                                                                                                                                                                                  "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата applegame @
                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                    Я еще тогда прочитал, но что такое монада - так и не понял Кстати, а что такое "do-нотация"? А то который раз слышу, но определения не знаю
                                                                                                                                                                                                                                                                                                                                                                                                                    Дело в том, что в "настоящих" функциональных языках вроде х-я нет встроенной возможности вызывать функции последовательно друг за другом. Так как тотально отсутствуют языковые конструкции вроде циклов, блоков и т.п. А в реальной жизни время имеет очень важную роль, а последовательность операций следующих друг за другом во времени, мягко говоря, обычнейшее дело. В х-е же есть только вызовы функций которые могут вызывать другие функции, полиморфизм, паттерн-матчинг и прочие list comprehensions. Это еще усугублено тотальной ленивостью: пока результат не нужен функция выполняться не будет. Тогда ФП-фаги придумали костыль (они это считают наоборот величайшим благом) - do-нотацию, которая представляет из себя языковую конструкцию оборачивающую все говно в монаду и позволяющую таки просто тупо написать список операций и они, о бозе!, будут выполнены в том порядке в котором написаны в исходном коде.
                                                                                                                                                                                                                                                                                                                                                                                                                    Механизм примитивен: функция, результат которой является аргументом другой функции физически должна быть вычислена раньше, чем эта самая другая функция. Вот do-нотация и превращает список операций в кучу функций, результаты которых являются аргументами других функций, результаты которых являются аргументами других функций... Все это является одним из видов монад.

                                                                                                                                                                                                                                                                                                                                                                                                                    Любой нормальный язык дает возможность все это сделать без специальных do-нотаций. В сиобразных языках достаточно поставить точку с запятой, вот тебе и последовательность операций. Так сказать, неявная do-нотация.
                                                                                                                                                                                                                                                                                                                                                                                                                    В этом плане erlang представляет из себя некий компромисс: это иммутабельный ФЯ с возможностью писать грязные функции и написанные друг за другом вызовы функций будут вызваны именно в том порядке в котором они написаны, такая же неявная do-нотация.

                                                                                                                                                                                                                                                                                                                                                                                                                    Доходчиво! Спасибо!

                                                                                                                                                                                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                                                    Именно поэтому меня веселят любые попытки притащить монады в императивные языки. :)

                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                                    А разве есть такие попытки?

                                                                                                                                                                                                                                                                                                                                                                                                                    Монады Try и Either в ту же жабу вполне себе притащили, и ничего, удобненько.

                                                                                                                                                                                                                                                                                                                                                                                                                    Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                                      Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                      Доходчиво!

                                                                                                                                                                                                                                                                                                                                                                                                                      Но не совсем верно, посмотри мой коммент выше.

                                                                                                                                                                                                                                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                      Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                      Монады Try и Either в ту же жабу вполне себе притащили, и ничего, удобненько.

                                                                                                                                                                                                                                                                                                                                                                                                                      Скорее притащили типы.
                                                                                                                                                                                                                                                                                                                                                                                                                      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                                        Скорее притащили типы.

                                                                                                                                                                                                                                                                                                                                                                                                                        Они там вроде и без того были :scratch:

                                                                                                                                                                                                                                                                                                                                                                                                                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                                          Скорее притащили типы.

                                                                                                                                                                                                                                                                                                                                                                                                                          Они там вроде и без того были :scratch:

                                                                                                                                                                                                                                                                                                                                                                                                                          Хм. Тогда что ты имеешь в виду, может я просто не в курсе?
                                                                                                                                                                                                                                                                                                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                                            Хм. Тогда что ты имеешь в виду, может я просто не в курсе?

                                                                                                                                                                                                                                                                                                                                                                                                                            Я про это, хотя, наверное, это только по названию монады :) https://www.vavr.io/vavr-docs/#_try

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

                                                                                                                                                                                                                                                                                                                                                                                                                            Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                                              Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                              Кстати, кажется ныне почившего Армстронга, как-то спросили можно ли в erlang ждать монад, на что тот ответил в том духе, что монада - эта такая херня, которую придумали из-за того, что некоторые языки настолько упороты по математичности, чистоте, и прочей академичности, что писать на них практически невозможно, поэтому и пришлось приволочь туда эту хрень, которая привносит в ФП тонкую нотку императивщины, и что эрлангу, который изначально проектировался, как практичный язык оно в принципе нафиг не нужно :)

                                                                                                                                                                                                                                                                                                                                                                                                                              Ну норм ответ :)
                                                                                                                                                                                                                                                                                                                                                                                                                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                                Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                                                                Именно поэтому меня веселят любые попытки притащить монады в императивные языки.
                                                                                                                                                                                                                                                                                                                                                                                                                                Я так и не понял, на кой хрен кому-либо может пригодиться в Плюсовом коде переделать Плюсовый синтаксис в Хаскельный. Это же не ленность... блин, уже ж и она в Плюсах есть...
                                                                                                                                                                                                                                                                                                                                                                                                                                Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                                                                                                                                                                                  Ошибся чутка, это был не Армстронг :)
                                                                                                                                                                                                                                                                                                                                                                                                                                  http://erlang.org/pipermail/erlang-questio...rch/042557.html

                                                                                                                                                                                                                                                                                                                                                                                                                                  Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                                                                                    Я так и не понял, на кой хрен кому-либо может пригодиться в Плюсовом коде переделать Плюсовый синтаксис в Хаскельный.

                                                                                                                                                                                                                                                                                                                                                                                                                                    А кто об этом говорил-то?
                                                                                                                                                                                                                                                                                                                                                                                                                                    И да, монады - это не про синтаксис. Про синтаксис - это do-нотация.
                                                                                                                                                                                                                                                                                                                                                                                                                                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                                      Цитата Flex Ferrum @
                                                                                                                                                                                                                                                                                                                                                                                                                                      Именно поэтому меня веселят любые попытки притащить монады в императивные языки.
                                                                                                                                                                                                                                                                                                                                                                                                                                      И не только в императивные. В эликсире тоже есть страстные любители тащить монады везде куда дотянутся шаловливые ручонки. Но надо признать, что кое-какие монады и правда пригождаются, но я считаю, что лучше ими не злоупотреблять.

                                                                                                                                                                                                                                                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                      Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                                      Кстати, кажется ныне почившего Армстронга, как-то спросили можно ли в erlang ждать монад, на что тот ответил в том духе, что монада - эта такая херня, которую придумали из-за того, что некоторые языки настолько упороты по математичности, чистоте, и прочей академичности, что писать на них практически невозможно, поэтому и пришлось приволочь туда эту хрень, которая привносит в ФП тонкую нотку императивщины, и что эрлангу, который изначально проектировался, как практичный язык оно в принципе нафиг не нужно.
                                                                                                                                                                                                                                                                                                                                                                                                                                      Полностью совпадает с моим мнением. Эрланг (а для меня лично эликсир) - это ФЯ с человеческим лицом и монады в нем особо не нужны, так кое-где немножко синтаксис подсластить.
                                                                                                                                                                                                                                                                                                                                                                                                                                      Сообщение отредактировано: applegame -
                                                                                                                                                                                                                                                                                                                                                                                                                                      error: 'long long long' is too long for GCC
                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата applegame @
                                                                                                                                                                                                                                                                                                                                                                                                                                        Эрланг (а для меня лично эликсир)

                                                                                                                                                                                                                                                                                                                                                                                                                                        Чем вообще хорош эликсир, кстати говоря? Сахару в нем много, но есть что-то что действительно упрощает жизнь, а не просто слегка сокращает код?

                                                                                                                                                                                                                                                                                                                                                                                                                                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата applegame @
                                                                                                                                                                                                                                                                                                                                                                                                                                          Вот do-нотация и превращает список операций в кучу функций, результаты которых являются аргументами других функций, результаты которых являются аргументами других функций... Все это является одним из видов монад

                                                                                                                                                                                                                                                                                                                                                                                                                                          Не так. do-нотация это сахар над монадами. Т.е. она применима к любым видам монад.
                                                                                                                                                                                                                                                                                                                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                                            Астарот, например:

                                                                                                                                                                                                                                                                                                                                                                                                                                            ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                              doSomething()
                                                                                                                                                                                                                                                                                                                                                                                                                                              .then(result => doSomethingElse(result))
                                                                                                                                                                                                                                                                                                                                                                                                                                              .then(newResult => doThirdThing(newResult))
                                                                                                                                                                                                                                                                                                                                                                                                                                              .then(finalResult => {
                                                                                                                                                                                                                                                                                                                                                                                                                                                console.log(`Got the final result: ${finalResult}`);
                                                                                                                                                                                                                                                                                                                                                                                                                                              })

                                                                                                                                                                                                                                                                                                                                                                                                                                            https://developer.mozilla.org/en-US/docs/We.../Using_promises

                                                                                                                                                                                                                                                                                                                                                                                                                                            ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                              do
                                                                                                                                                                                                                                                                                                                                                                                                                                                result <- doSomething
                                                                                                                                                                                                                                                                                                                                                                                                                                                newResult <- doSomethingElse result
                                                                                                                                                                                                                                                                                                                                                                                                                                                finalResult <- doThirdThing newResult
                                                                                                                                                                                                                                                                                                                                                                                                                                                putStrLn $ "Got the final result: " ++ finalResult
                                                                                                                                                                                                                                                                                                                                                                                                                                            “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                                                                                                                                                                                                                                                                                                                                                                                                                            All software sucks
                                                                                                                                                                                                                                                                                                                                                                                                                                              Выглядит, как те же яйца, просто в профиль. А киллер-фича какая-нибудь есть? За пример спасибо :yes:

                                                                                                                                                                                                                                                                                                                                                                                                                                              Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                                                                Хаскель это просто и понятно, говорили они :D
                                                                                                                                                                                                                                                                                                                                                                                                                                                Прикреплённая картинка
                                                                                                                                                                                                                                                                                                                                                                                                                                                Прикреплённая картинка

                                                                                                                                                                                                                                                                                                                                                                                                                                                Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Чем вообще хорош эликсир, кстати говоря? Сахару в нем много, но есть что-то что действительно упрощает жизнь, а не просто слегка сокращает код?
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Уши эрланга торчат из эликсира повсеместно. Из того что упрощает жизнь: метапрограммирование, адекватный синтаксис, более вменяемая стандартная либа. Меня лично еще напрягает в эрланге невозможность ребиндить переменные.
                                                                                                                                                                                                                                                                                                                                                                                                                                                  error: 'long long long' is too long for GCC
                                                                                                                                                                                                                                                                                                                                                                                                                                                    ООП - прекрасный инструмент в соответствующих условиях и ... руках. Ну все же отлично понимают, что это не панацея?! Если речь идет, к примеру, о программировании какой-либо логической матрицы с 256 выходами и 1024 состояниями (ну очень разреженная матрица), разумнее просто исполнить CASE вариант алгоритма?
                                                                                                                                                                                                                                                                                                                                                                                                                                                    Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                      Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                      Если речь идет, к примеру, о программировании какой-либо логической матрицы с 256 выходами и 1024 состояниями
                                                                                                                                                                                                                                                                                                                                                                                                                                                      Не уверен, что понял, что ты имеешь в виду под понятием "логическая матрица" (я привык, что под этим понимают микросхему, физически реализующую ДНФ, да, матрицы соединений там как правило очень разреженные). Но ещё более непонятно, каким боком к ним ООП.

                                                                                                                                                                                                                                                                                                                                                                                                                                                      Но должен заметить, что ООП прекрасно укладывается в концепцию CASE-систем.
                                                                                                                                                                                                                                                                                                                                                                                                                                                      Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
                                                                                                                                                                                                                                                                                                                                                                                                                                                        JoeUser, а ты как определяешь ООП?
                                                                                                                                                                                                                                                                                                                                                                                                                                                        "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                                                          Выглядит, как те же яйца, просто в профиль.

                                                                                                                                                                                                                                                                                                                                                                                                                                                          А это и есть те же яйца. Только в статике.

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                                                          А киллер-фича какая-нибудь есть?

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Какая киллер-фича у интерфейса Collection? Или у интерфейса Iterable?

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                                                          Хаскель это просто и понятно, говорили они

                                                                                                                                                                                                                                                                                                                                                                                                                                                          А что тут сложного? =)

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Моноид — это тройка:
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – множество
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – бинарная ассоциативная операция над элементами этого множества и возвращающая в качестве результата элемент этого же множества
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – нейтральный элемент по отношению к это операции

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Пример 1:
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – Целые числа
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – (+)
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – 0

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Пример 2:
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – Целые числа
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – (*)
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – 1

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Пример 3:
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – Строки
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – конкатенация
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – пустая строка

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Пример 4:
                                                                                                                                                                                                                                                                                                                                                                                                                                                          ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                                            data OrderStat = OS {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                quantity  :: Int,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                totalCost :: Double
                                                                                                                                                                                                                                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                            instance Monoid OrderStat where
                                                                                                                                                                                                                                                                                                                                                                                                                                                                mempty = OS 0 0.0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                mappend (OS q1 tc1) (OS q2 tc2) = OS (q1 + q2) (tc1 + tc2)


                                                                                                                                                                                                                                                                                                                                                                                                                                                          Моноиды удобны для свёрток (в т.ч. параллельных)

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Функтор — это, упрощённо, отображение одного множества на другое. Эндофунктор — это функтор, который отображает множество на само себя. Например тип Список является функтором, отображением — функция map (или её "функторный" вариант: fmap):

                                                                                                                                                                                                                                                                                                                                                                                                                                                          ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                                            class Functor f where
                                                                                                                                                                                                                                                                                                                                                                                                                                                                fmap :: (a -> b) -> f a -> f b
                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                            instance Functor [] where
                                                                                                                                                                                                                                                                                                                                                                                                                                                                fmap f xs = map f xs


                                                                                                                                                                                                                                                                                                                                                                                                                                                          Т.е. можно считать, что эндофунктор — это такой контейнерный тип, у которого есть операция map, применяющая к содержимому контейнера некоторую операцию, но сохраняющая сам контейнер.

                                                                                                                                                                                                                                                                                                                                                                                                                                                          Моноид в категории эндофункторов:
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – множество функций m a -> m b
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – композиция функций bind :: (m a -> m b) -> (m b -> m c) -> (m a -> m c)
                                                                                                                                                                                                                                                                                                                                                                                                                                                          – функция id :: a -> a (id x = x) — нейтральный элемент
                                                                                                                                                                                                                                                                                                                                                                                                                                                          Сообщение отредактировано: korvin -
                                                                                                                                                                                                                                                                                                                                                                                                                                                          “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                                                                                                                                                                                                                                                                                                                                                                                                                                          All software sucks
                                                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата korvin @
                                                                                                                                                                                                                                                                                                                                                                                                                                                            А что тут сложного? =)

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Держите наркомана! :D

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата korvin @
                                                                                                                                                                                                                                                                                                                                                                                                                                                            Т.е. можно считать, что эндофунктор — это такой контейнерный тип, у которого есть операция map, применяющаяся к содержимому контейнера некоторую операцию, но сохраняющая сам контейнер.

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Во! Можно же понятным языком :D

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Там народ угорел, вроде бы даже на фронтенд хаскель тянут. Ну, чисто культ карго, как по мне...

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата korvin @
                                                                                                                                                                                                                                                                                                                                                                                                                                                            Какая киллер-фича у интерфейса Collection? Или у интерфейса Iterable?

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Я спрашивал про киллер-фичу Эликсира против Эрланга. Ну, типа Котлин против Джавы. У Котлина есть парочка фич тянущих на киллер, типа функций-расширений, корутин и делегатов. Думал может у Эликсира что-то такое найдется.

                                                                                                                                                                                                                                                                                                                                                                                                                                                            Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                                                                                                                                                                                                                                                                                                                                                                                                                                                              Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                                                              Я спрашивал про киллер-фичу Эликсира против Эрланга.

                                                                                                                                                                                                                                                                                                                                                                                                                                                              А. Но это шло в твоём же ответе про do-нотацию, как можно было понять, что вопрос про Эликсир?

                                                                                                                                                                                                                                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                              Цитата Астарот @
                                                                                                                                                                                                                                                                                                                                                                                                                                                              Там народ угорел, вроде бы даже на фронтенд хаскель тянут. Ну, чисто культ карго, как по мне...

                                                                                                                                                                                                                                                                                                                                                                                                                                                              Как и JS на бэкенде… =)
                                                                                                                                                                                                                                                                                                                                                                                                                                                              “Object-oriented design is the roman numerals of computing.” — Rob Pike
                                                                                                                                                                                                                                                                                                                                                                                                                                                              All software sucks
                                                                                                                                                                                                                                                                                                                                                                                                                                                                Цитата korvin @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                Моноид — это тройка:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                – множество
                                                                                                                                                                                                                                                                                                                                                                                                                                                                – бинарная ассоциативная операция над элементами этого множества и возвращающая в качестве результата элемент этого же множества
                                                                                                                                                                                                                                                                                                                                                                                                                                                                – нейтральный элемент по отношению к это операции
                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ты сейчас процитировал определение абелевой группы. Почти, про обратный элемент промолчал.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                А, не, не обязательно абелевой.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Qraizer, моноиды - это понятие из математики, если что.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата amk @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Но ещё более непонятно, каким боком к ним ООП.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Классическая программа осуществляет свое функционирование путем вычислений и переходов, зашитых в программном коде исполняемого файла. По большому счету можно описать вектор N-обработчиков в виде указателей на функции и логическую M-матрицу (матрицу переходов), которую можно грузить как данные. И вся эта кухня будет работать гораздо быстрее реализации в виде ООП. Но только для своей ниши!!! Где данных относительно мало, а алгоритм последовательности их обработки достаточно сложен. Некое недалекое подобие шитого кода.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    JoeUser, а ты как определяешь ООП?

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Если речь идет о "программировании", то тут классика:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    - Инкапсуляция
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    - Наследование
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    - Полиморфизм
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Если речь идет о "проектировании", то понятие ... самоопределимое :-? - проектирование, в котором основная идея - моделирование функционала, как группы взаимодействующих объектов.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      По большому счету можно описать вектор N-обработчиков в виде указателей на функции и логическую M-матрицу (матрицу переходов), которую можно грузить как данные.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Тогда возникает другой вопрос: где здесь "логические матрицы"?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Некое недалекое подобие шитого кода.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Шитый код и есть. Только косвенный шитый код.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Подобный формат имеют метафайлы Windows (wmf, emf), и некоторые другие файлы.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Но использовать адреса переходов (ШК) в хранимых вне программы данных непрактично - такие адреса при любом изменении программы становятся неактуальными, и приходится воспринимать их просто как коды. А коды удобнее брать по порядку, тогда их можно использовать как индексы в таблице переходов (КШК, байт-код).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      С кодами работают большинство интерпретаторов.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Ещё быстрее работает, если использовать не таблицу функций, а засунуть все обработчики в switch внутри цикла. В таком варианте получается на один переход меньше - не надо возвращаться из функции.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ООП сильно выигрывает, когда надо работать с множеством однотипных объектов - не приходится каждый раз проверять какого конкретно типа объект в обработке.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата amk @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Тогда возникает другой вопрос: где здесь "логические матрицы"?

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Сорь, с терминологией напутал - матрицы переходов.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата amk @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Но использовать адреса переходов (ШК) в хранимых вне программы данных непрактично - такие адреса при любом изменении программы становятся неактуальными

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        А вот тут как программу писать. Мы же не сами адреса храним, а индексы подпрограмм, в которых, собственно, адреса. Если я не ошибаюсь, это подход Форта?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата amk @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ООП сильно выигрывает, когда надо работать с множеством однотипных объектов - не приходится каждый раз проверять какого конкретно типа объект в обработке.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          В случаем с использованием виртуальных функций (сиречь - полиморфизмом), как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней. Qraizer, хелп - тону!!!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Я командировке :(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Я командировке

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Ну тогда жду (ждем).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ну тогда жду (ждем).

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Так а че, погуглить не? :huh:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                https://ravesli.com/urok-167-virtualnye-tablitsy/
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                https://rsdn.org/article/devtools/CppPerformance.xml#EKSBG
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата Wound @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Так а че, погуглить не?

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Гуглить умею. Честное слово. Честное студенческое слово!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Но эти стопицот многобукв Qraizer может выразить двумя-тремя предложениями, я знаю.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  И как бы это не смешно звучало - к нему мне доверия на порядок больше, чем к непонятным авторам.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Если я не ошибаюсь, это подход Форта?

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Ошибаешься. Форт (FORTH) вообще не хранит вне оперативки двоичный код (только исходники, только хардкор). Благо компиляция в шитый код происходит на порядки быстрее, чем в любом другом интерпретаторе.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Хотя есть интерпретаторы, позволяющие записать на диск образ памяти. В самой программе шитый код, как правило, представляет собой просто последовательность абсолютных адресов исполняемых частей статей (так в форте называются определяемые пользователем слова). Для слов, определяемых в машинном коде, там просто находится процедура, выполняющая нужные действия. У слов, определяемых через двоеточие там находится вызов подпрограммы, запускающей интерпретацию шитого кода. Это так называемый прямой шитый код.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Другой разновидностью шитого кода является подпрограммный шитый код, в котором вместе с адресами записываются и команды вызова подпрограмм. Занимая немного больше места, такой шитый код выполняется немного быстрее, так как не использует цикла интерпретации. Использовался в некоторых интерпретаторах для 8-разрядного i8080 и его аналогов. Давал почти трёхкратный прирост скорости, за счёт полуторакратного раздувания кода.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Третий, самый редкий вариант, - использование косвенного шитого кода, когда пишутся индексы (номера) статей. Этот вариант иногда позволяет сократить размер занимаемой памяти, при этом незначительно замедляется цикл интерпретации, и существенно усложняется компиляция. На практике имеет смысл только для очень простых программ, когда номер статьи помещается в один байт (для переменных тоже заводятся статьи), и для 32-разрядных интерпретаторов, когда вместо 4-байтного адреса можно хранить 2-байтный индекс.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    На современных процессорах (а также не очень старых) это делается двумя обращениями в память, без нарушения конвейера выполнения. А для проверки типа нужно не меньшее число обращений в память и по крайней мере одно рвущее работу конвейера сравнение (а может и больше). Для ускорения работы процедурные реализации полиморфизма, как правило, используют некоторое подобие VMT.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Сообщение отредактировано: amk -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      amk, спасибо за инфу!!! Особенно про Форт. Если бы не его "польская нотация", наверное я был бы его фанатом. Красивый подход в плане организации. Но писать "задом на перед" ... ну не могу себя уговорить :) Смотрел как-то на его последователя - язык Фактор, та же хрень - интересно, но уговорить себя "перестроиться" не получается :)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        И как бы это не смешно звучало - к нему мне доверия на порядок больше, чем к непонятным авторам.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Действительно смешно. То ты пишешь что никому не веришь, и даже в сторону Майерса камни кидаешь, то полагаешься целиком и полностью на ответ Qraizer:-?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Можно ведь в конце концов прочесть несколько источников. По тем ссылкам нет чего то заумного, просто описывается общий механизм работы дин. полиморфизма в С++, который можно прочесть практически в любой, более менее продвинутой книге по С++.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          В случаем с использованием виртуальных функций (сиречь - полиморфизмом), как раз приходится выбирать сперва нужную часть VMT, и только потом нужный адрес функции в ней.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Нет. У тебя просто есть структура с адресами методов, и просто вызывается метод по данному адресу. Может ты это и имеешь ввиду под "выбирать" - хз, но amk говорил о том, что этим выбором занимаешься не ты => меньше шансов ошибиться.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Подпись была включена в связи с окончанием срока наказания
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Wound, давай договоримся - не будем обсуждать САМОГО МЕНЯ :lol:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Давай сосредоточимся на теме топика, это будет гораздо полезнее.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата Wound @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            и даже в сторону Майерса камни кидаешь

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Дай пожалуйста пруф!!!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Скрытый текст
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Я не думаю, что я такой смелый. :blink:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Дай пожалуйста пруф!!!

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Да пожалуйста, держи:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Философское отступление. Несколько лет назад у меня спала "пелена из глаз". До этого, в течении многого времени, я считал себя заядлым агностиком. Многие вааще не понимали о чем речь. Но пришло осознание - я не агностик или атеист, я - неверующий. Даже религия тут не при чем! Я не верю ваще, ни во что. Полностью. Я пытаюсь воспроизвести и оценить. Гадил я с Пизанской башни на аксиомы "аксакалов". Но ... приду и проверю

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ... это я кидаю камень в сторону Меерса

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Есть "логика", есть высказывания Меерса, есть куча методик шкальных оценок достоверности. Ну и есть чуйка))) Поверил во "фьючерсы" - это не смертельно! Возьми вычлени репрезентативную выборку результатов синтетических тестов на своих данных - и ты поймешь. Нужно ли слепо идти за Мейерсом, или эффективнее просто прислушиваться, приглядоваться, записывать ходы... E2-E4?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Wound, давай договоримся - не будем обсуждать САМОГО МЕНЯ
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Нет уж, давай обсудим. :lol:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                То ты гадишь на аксиомы "аксакалов", то доверяешь им :)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Сообщение отредактировано: applegame -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                error: 'long long long' is too long for GCC
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  applegame, блин!!! >:(

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  А всегда тебя щетал полезным - а оно вот как!!! :-?

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата applegame @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  То ты гадишь на аксиомы "аксакалов", то доверяешь им

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Никогда такого не делал !!! >:(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Никогда не гадил! Вообще никогда!!!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Какал - это да, но это физиология.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  А что попадал, так это стечение обстоятельств.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Ящетаю .
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    А всегда тебя щетал полезным - а оно вот как!!!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Я крайне вреден, реальность сурова. :D
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Никогда такого не делал !!!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Никогда такого не было и вот опять. :lol: Киля все уже нашел.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    error: 'long long long' is too long for GCC
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      applegame, Эпл, на все твои инсинуации отвечу - я всегда буду смешнее тебя, ибо я - Петросян, патамучта!!!
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ну тогда жду (ждем).
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Что ты собственно, хотел узнать-то? Бо ничего не понятно...
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Я так понял, что JoeUser хотел узнать у тебя про механизм виртуальных вызовов. И твой авторитет для него абсолютен, не смотря на все то, что он говорил в своей мировоззренческой теме :)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Не совсем понятно, что в нём может быть непонятного. Разве что в виртуальном множественном наследовании, но и при нём, если понимать, что это такое, механизм будет более-менее ясен :-?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Подпись была включена в связи с окончанием срока наказания
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Ну, у JoeUser-а там большой пост. Я его не осилил тогда. Сейчас вот перечитал в спокойной обстановке и всё равно не понял, в чём вопрос.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Если всё же по реализации полиморфизма, то да, описать несложно. Типичный подход, который любому C программеру первым придёт в голову: массив указателей на функции, индексируемый уникальным для класса значением, подготавливаемым в его конструкторе и хранимым в скрытом поле класса (+ индекс самого метода, известного компилятору по его имени). На деле принцип может немного отличаться. В поле класса может храниться готовый поинтер, VMT может быть не строго массивом итп, но это уже детали.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Интереснее порассуждать, как реализуется множественная диспетчеризация в языках с её поддержкой. Там всё куда сильнее закручено. C++ к таковым не относится, так что подглядеть некуда.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Сообщение отредактировано: Qraizer -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Одни с годами умнеют, другие становятся старше.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Цитата D_KEY @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                И твой авторитет для него абсолютен, не смотря на все то, что он говорил в своей мировоззренческой теме

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ну таки да ... В теме по Цэ++ Qraizer у меня в авторитетах :lol: и не безосновательно.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                И еще я знаю, что он в компьютерных игрушках в теме. Но тут уж без меня, игры в некомпьютерную жысть мне вполне хватает.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                А по теме ...

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Да, если взять Пасквиль - там все просто и очевидно с VMT. А вот с Сями не факт. Множественное наследование - не просто. А виртуальное наследование по логике понятно, а по реализации - туман. Вот именно про это я и хотел услышать от Qraizer'а.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Сейчас вот перечитал в спокойной обстановке и всё равно не понял, в чём вопрос.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Забей. Если не понял, значит оно не важно.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Цитата Qraizer @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Что ты собственно, хотел узнать-то? Бо ничего не понятно...

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Хотел услышать твою "версию" построения VMT.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Мои программные ништякиhttp://majestio.info
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  А вот с Сями не факт

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  В Сях тоже все очевидно. Там нет ни VMT, ни наследования. :rolleyes:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата JoeUser @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    А виртуальное наследование по логике понятно, а по реализации - туман.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    А что там туманного? Просто в лоб хранить указатель на виртуальную базу.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Подпись была включена в связи с окончанием срока наказания
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    0 пользователей:


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Рейтинг@Mail.ru
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [ Script Execution time: 1,5673 ]   [ 19 queries used ]   [ Generated: 20.08.19, 18:48 GMT ]