К разговору https://mokum.ru/alf/14276: у меня есть некоторая не дающая мне покоя вещь. Мы все примерно слышали разные эссе по поводу того чем именно ООП испортила мозг многим людям. Моя собственная формулировка такая: под зонтичным брендом скрывается примерно 10-15 различных активностей и concerns, которые пытается решить ООП как бы одним махом. При этом все эти concerns не рассматриваются как самостоятельные сущности, а как бы часто приводится такая тема, что вы просто используйте ООП, и дождик вас не закапает.
При этом абсолютно все эти concerns, которые (кое-как) решает ООП — если разобраться, то оказывается, что их можно и нужно решать эксплицитно, совершенно не обязательно оставаясь в рамках ООП (даже внутри уже ООП-кода). То есть ты можешь решать какие-то вещи внутри модулей, пользуясь, например, техниками ФП. ‎- псы в рапиде
Для меня лично самая чудовищная абоминация подхода к обучению ООП — это "наследование". Миллионы людей пытались пронаследовать круг от эллипса, или наоборот, и тому подобные истории. Ладно. Вроде бы сейчас дамбу прорвало и многие технологии выходят наконец на мейнстримовый свет и к ним не прилагается свинцового штампа "ООП". ‎- псы в рапиде
Меня интересует другое (дальше будет самолюбование). У меня есть некоторые основания полагать, что я проектирую довольно неплохие архитектуры. Но в каком смысле архитектуры? Не в смысле, что как там разложить сетевые взаимодействия, shared nothing, и т. п. — с этим у меня как раз только здравый смысл и готовность исправлять сломанное. Я говорю про архитектуру в смысле отображения объектов предметной области на модули программы, а главное — создание модулей внутри кода, которые не имеют прямого отображения на объекты предметной области, но зато позволяют удобно программировать. ‎- псы в рапиде
За последние лет восемь я проектировал в этом смысле архитектуру примерно пяти проектов (в том числе, хехе, Мокума), и мне в принципе нравится как все устроено, и вроде бы все кто программировал в созданных рамках тоже были в целом довольны, как все складывается. Вызовы времени эти архитектуры тоже принимали и обрабатывали достойно. ‎- псы в рапиде
И вот здесь возникает вопрос — я регулярно получаю вопросы — где этому научиться? а) я даже не могу внятно сформулировать, чему — этому? б) у меня нет никаких идей, кроме одной. Я помню, что в детстве, в районе 1998 года, я читал книжку Бертрана Майера "Object Oriented Software Construction". В ней >1000 страниц, и я прочитал их кажется все. И она оказала на меня огромное влияние. И я не знаю другой книжки, которая была бы похожа на нее. Все остальные разговаривают о чем-то другом. Аспектов у software architecture много. ‎- псы в рапиде
При этом я говорю о довольно среднего размера продуктах. Я не знаю про строки, но в принципе это было скажем 2-3-5 человеко-лет, некоторые из продуктов потом уходили в довольно бодренький maintenance. Ну то есть я точно знаю про некоторые из своих продуктов, что они живут скажем лет 5-6, развиваясь. Одному продукту 10 лет, и он развивается. Я не сильно удивлюсь, если узнаю, что написанный мною в 1998 году графический редактор до сих пор жив (в 2005 году он точно был жив и развивался). ‎- псы в рапиде
При этом я а) не претендую на разработку мега-систем (100M+ LOC) и б) считаю, что архитектурирование мега-систем это профанация, потому что все равно все будет работать не так, как изначально (ну и да, архитектор, который ежедневно не работает с проектом — это очевидная профанация). ‎- псы в рапиде
Так вот, вопрос — как можно научиться отображению предметной области на модули в коде? Как научиться придумывать системы, корректно абстрагирующие реальный мир? ‎- псы в рапиде
Как добиться того, чтобы комментарии не дублировались, блядь, что я вообще несу?! ‎- псы в рапиде
Как добиться того, чтобы комментарии не дублировались, блядь, что я вообще несу?! ‎- псы в рапиде
^ case in point. ‎- псы в рапиде
Еще я вспомнил потрясающую книжку, которую я читал в возрасте примерно 16 лет: Грейди Буч "Объектно-ориентированное проектирование", ПЕРВОЕ издание (крупная книга в черном твердом переплете). _никакого_ отношения к последующим изданиям она не имеет. Книга потрясающая, потому что использовала пять языков, в том числе SmallTalk. Мне кажется, что она мне конкретно разогнала нейроны в юном возрасте. Второе и последующие издания уже на C++, что понятно убивает примерно половину истории. ‎- псы в рапиде
Ха, в то же время была ООП in Action, в какой-то момент издательство Питер отдавало её онлайн бесплатно. Но Буч да. И коты! ‎- alf
В этом самом 1998 году я прочитал книжку про шаблоны проектирования и мне было круто. В этом самом графическом редакторе я заимплементил примерно половину этой книги, и у меня все охренительно работало, включая паттерн Command. Я так понимаю, что так как я тогда писал сейчас писать ммм не принято, хотя я не понимаю почему. У меня перед глазами был Turbo Vision и Delphi VCL, а там были иерархии до 15 уровней глубины, что по современным представлениям конечно полное безумие, доведенное до кристальной чистоты. ‎- псы в рапиде
Коты! да, там еще были крышесносящие рисунки про носатую девочку. http://www.helloworld.ru/texts/comp/other/oop/pg117.gif ‎- псы в рапиде
"под зонтичным брендом скрывается примерно 10-15 различных активностей и concerns, " - то же самое можно сказать про психологию и психотерапию. ‎- качественный исследователь
^ я не обсуждаю soft sciences. ‎- псы в рапиде
Меня тоже такое интересовало. Но ответа я не нашел. Видел ответ как смотреть побольше как устроено у других и какую боль/пользу это причиняет. Наверное это как факультет психологии vs врожденные коммуникационные способности. Кому-то просто прет. Иногда тот кому прет объясняет свой успех вычитанный. Надо же как-то объяснить, но чтение тех же книг другим, кому не прет не помогает. В общем для самого загадка ‎- Все собаки попадают в рай
Подозреваю, что книги надо читать вовремя. Разверну: нормальный процесс познавания нового выглядит как "делать случайные вещи, получилось - закреплять поведение". Это приводит к фейлам на начальном этапе. Книжку надо читать после первой пары фейлов, но ДО того, как ты нашёл работающее решение. Если читать книжку без набитых шишек - ты ещё не понимаешь, о чём это всё (см. "вредность замены спонтанной игры у детей академическим образованием"). Если читать книжку, когда уже стало получаться - "да они там хуйню пишут, я же знаю что всё не так", и нет уже благодатной почвы. ‎- African grey
ну это понятное рассуждение, но оно не приводит к возможности разумных поступков, от него веет фатализмом. ‎- псы в рапиде
Ну почему фатализмом-то. Научиться можно, побившись достаточное количество раз головой об стену, потом почитав книжек, поговорить с умными людьми в этой области (что проблема, потому что люди тоже должны быть в некотором диапазоне умности, слишком умные не подойдут), и потом уже практика. Между последним и предпоследним шагом ещё неплохо бы подмастерьем побыть - это заменяет всё, кроме первых двух шагов. Хотя, если наставник не только имеет практический опыт но и способен учить (что необязательно, вообще говоря) - заменяет вообще всё. ‎- African grey

2015-2016 Mokum.place