LINUX.ORG.RU

В защиту UML.


0

1

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

Первое. Как было справедливо замечено, UML-диаграммы и инженерные схемы/чертежи служат в общем идентичным целям. Но есть одно архиважное различие. В электронике без принципиальной схемы можно спаять максимум детекторный приемник; в строительстве без чертежа можно соорудить только сарай-скворечник. Для любой мало-мальски серьезной затеи приходится прибегать к графической нотации, это абсолютно нормально и не вызывает претензий. С software engineering ситуация другая. Спектр программных решений невероятно широк, а UML оправдывает себя в довольно узкой (хоть и очень масштабной) нише. Как правило, это - программные системы уровня предприятия, где: а) существенным образом используется ООП, б) фигурирует большое количество персистентных бизнес-сущностей и связей между ними, в) есть четкое деление системы на «ярусы» (tiers), г) систему разрабатывает большая команда, д) есть строгие требования к документации. Для проектирования игр, музыкальных плееров или научного софта UML мало полезен. Так вот, проблема в том, что подавляющее большинство крикунов о ненужности UML не имеют никакого отношения к разработке ПО уровня предприятия. Точнее, имеют враждебное отношение; одни подсознательно понимают, что эта область для них недостижима (вследствие низкой квалификации); другие презирают enterprise за то, что якобы enterprise «убивает искусство в программировании и поощряет ремесленничество» (позволю себе не комментировать эту точку зрения); третьи не признают все корпоративное (в том числе и ПО) из чистого нонкоформизма. Далее, негативное отношение к корпоративному ПО переносится на UML - вот и разгадка. Добавим сюда так любимый лисперами «Blub paradox»: понимающий UML смотрит «сверху вниз» и видит возможности его успешного применения, непонимающий - смотрит «снизу вверх» и видит угрозу, как от всего непонятного.

Второе. Тезис о том, что лучшим инструментом проектирования/документирования является словесное описание и сам исходный код. Исходный код не годится для этих целей потому, что огромное количество (если не большинство) терминов UML просто не имеют (и не могут иметь) отражения в исходном коде. Так утверждают, опять-таки, лишь те, кто совершенно не владеет UML и счтает, что UML ограничивается лишь одной диаграммой классов. При этом про такие важные вещи как диаграмма вариантов использования (use-case diagram), диаграмма размещения (deployment diagram), диаграмма состояния (statechart diagram) и диаграмма последовательностей/взаимодействия (sequence/collaboration diagram) ВНЕЗАПНО остаются за кадром. Да, кое-что из этого можно кое-как восстановить по исходному коду, но это задача уровня reverse engineering.

Второе с половиной. Верно, что для любой UML-диаграммы возможно изоморфное текстовое описание. Но выразительность UML на много порядков выше. Как говорит один очень уважаемый Java EE специалист, «a clear, accurate, and easy-to-understand picture is truly worth a thousand words.» И я почему-то склонен ему верить. В самом деле, нарисовать диаграмму можно гораздо быстрее, чем описывать все то же словами. А «распарсить» диаграмму человеку еще проще. И не только распарсить, а увидеть «паттерны» (так ненавидимые все теми же крикунами), а также аномалии. Если электронщику сразу покажется подозрительным отсутствие развязывающего конденсатора в цепи транзистора, то опытный проектировщик сразу заметит циркулярные ссылки. Или возможность разнести иерархии интерфейсов и имплементаций в соответствии с паттерном «мост». Я уже не говорю об удобстве навигации по модели, которое предоставляют современные инструменты для моделирования. А сколько времени понадобится на то же самое с использованием только текстового описания?

Третье. Претензии к якобы «статичности» UML, неприменимости к развивающимся системам и неизбежном устаревании не выдерживают никакой критики. Высказывающим подобные претензии рекомендую курить статью о Round-trip engineering до полного просветления. RTE - пройденный этап, давно известная и обкатанная методология, распространяющаяся не только на UML, но и вообще на системы, представленные множеством гетерогенных артефактов. Вопрос поддержания актуальности UML-моделей - исключительно вопрос владения инструментами и правильной постановки процесса разработки. Нетривиальным (и, тем более, критическим) этот момент может показаться только тем, кто впервые слышит о RTE (что еще раз подтверждает мое предположение о главной причине претензий к UML - далекости от промышленной разработки ПО).

Четвертое. Атоматическая верификация по UML-моделям, точнее якобы ее невозможность. Утверждение об этом снова свидетельствует о незнании предмета дискуссии; я бы рекомендовал сперва ознакомиться с текущей ситуацией в этом плане. Однако, никто не спорит о том, что у UML в этом контексте есть свои недостатки, такие как многословность. Они были учтены в более перспективной методологии LePUS3 и соответствующем инструменте моделирования и верификации Two-tier Programming Toolkit.

Резюме. Пользоваться UML можно и нужно. Но, как и любым другим сложным инструментом - к месту и умеючи. Большая команда, работающая над большим проектом и владеющая UML, получает огромную фору в виде чрезвычайно выразительного языка для обмена информацией об архитектуре системы, завтрашней и сегодняшней.

А борцунов с UML слушать не надо. Их претензии, как показывает практика, носят исключительно нетехнический характер.

★★
Ответ на: комментарий от dizza

> Вы о какой-то фигне спорите. Перечисленное выше настолько тривиально и понятно всем участникам, что не стоит даже холивара чем это описывать. Хоть мелком машенька на столе техдира. Хоть псевдокодом в комментарии. Хоть edsl-ем. Хоть Uml-ем.

Никто не спорит, что рисовать можно хоть мелком. Но UML решает поставленные задачи (моделирования и анализа) намного эффективнее, чем все мелки, псевдокоды и edsl-и, вместе взятые.

Kuka ★★
() автор топика
Ответ на: комментарий от archimag

> Давно известно, что с помощью надуманной аналогии можно доказать всё что угодно.

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

я всё таки не могу понять, какой всё же смысл вкладывается в это понятие? Я всегда думал, что «система уровня предприятия» это такой buzzword.


Считай и дальше, я не против. Но предпочту обсуждать вкус устриц с теми, кто их все-таки пробовал.

Kuka ★★
() автор топика
Ответ на: комментарий от RVictor

> ИМХО: автору, как приличному человеку, просто необходимо проиллюстрировать тезис "... выразительность UML [сравнительно с текстовым описанием] на много порядков выше" на примере собственной статьи...

Выразительность UML на много порядков выше по сравнению с текстовым описанием архитектуры программной системы. Моя статья не описывает архитектуру программной системы. Может, все-таки стоит сперва поинтересоваться тем, для чего предназначен UML?

Kuka ★★
() автор топика

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

Дооо...

- Ты напишешь эту программу за неделю силами 2 человек? - Конечно! - А силами 15 человек за год? - Ну тут без UML будет точно не обойтись.

Vit ★★★★★
()
Ответ на: комментарий от DonkeyHot

5.

5. Вспомним, что текст обычного алфавита тоже представляет собой совокупность линий. При этом линия длинны Д смодет выразить O((Д/(ш*я))²) бит информации, тогда как текст той же суммарной длинны изображения букв O(ln(а/я)*exp(Д/ш)), где «я» - избыточность языка, используемого для именования сущностей,«а»-размер его алфавита, «ш» - размер шрифта на картинке. Предлагаю согласиться, второе больше уже почти сразу. Исключение - если связи ограничиваются соседними элементами, при Д->1 линии всё ещё могут соединять соседние примерно 8 элементов, а текст при Д<20 почти нечитаем. Вероятно, это и есть область эффективности диаграмм:)

Впрочем, можно рассматривать их как фильтр качества дизайна(если в такие рамки не уложились - дизайн плохой). Но с тем же успехом можно ввести ограничения на код, типа «не больше 8 import-ов в модуле», и т.п.

DonkeyHot ★★★★★
()
Ответ на: комментарий от Kuka

> Я описывал ситуацию в разных промышленных областях и

их ключевые отличия.


А зачем ты их описывал? Какой в этом смысл? Ведь эта тема много раз обсуждалось и на неадекватность подобных сравнений было указано уже не раз?

Считай и дальше, я не против. Но предпочту обсуждать вкус устриц

с теми, кто их все-таки пробовал.



Ну значит таки buzzword. Снобство как универсальная защита это удобно, да.

archimag ★★★
()
Ответ на: комментарий от Kuka

> Но UML решает поставленные задачи (моделирования и анализа) намного эффективнее, чем все мелки, псевдокоды и edsl-и, вместе взятые.

Докажи.

anonymous
()
Ответ на: комментарий от Kuka

> Выразительность UML на много порядков выше по сравнению с текстовым описанием архитектуры программной системы.

Обоснуй.

anonymous
()

А как в UML будут выглядеть такие общераспространенные паттерны как «параметрический полиморфизм», «функция высшего порядка», «мутабельное замыкание»?

anonymous
()
Ответ на: комментарий от Kuka

Вы в курсе, что такое «Anemic Domain Model»?

В курсе

В курсе, что это понятие ортогонально ООП, не поощряет и не препятствует его использованию?

Бред.

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

Виновато ваше непонимание, и только оно.

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

dizza ★★★★★
()
Ответ на: комментарий от DonkeyHot

> 3. По индукции, любая картинка без связей проигрывает аналогичному тексту.

Если бы месье посещал в свое время естественно-научный факультет, а не гуманитарный, то, помимо выхваченного термина «индукция» знал бы о том, что действие суммы не всегда равно сумме действия частей. Что коммутативность, ассоциативность и дистрибутивность верны, грубо говоря, для арифметики. Но месье везде мыслит арифметическими понятиями...

> 4. Добавим в картинку связь между 2мя элементами. Текст обретёт ещё 1-2 слова (ссылки на имена связанных объектов).

Месье не знаком со спецификацией UML? Месье не в курсе, что UML допускает два десятка различных связей между элементами? Что каждый тип связи имеет свой набор атрибутов? Например, для ассоциации - подтип (ассоциация, агрегация, композиция) navigability, cardinality, имена ролей участников. Не говоря уже о том, что каждый тип может иметь неограниченный набор неспецифицированных расширенных атрибутов. Судя по-всему, месье ничего этого не знает, иначе не порол бы чушь про 1-2 слова. Зачем же тогда месье лезет в дискуссию, в предмете которой он ни черта не смыслит?

К вопросу о «выразительности». Готов поправить этот термин на «эффективность» (в смысле решения задач моделирования и анализа). Поясню на еще одном примере. Пускай имеется та же сотня классов со сложным графом отношений между ними. Пусть его описание записано словесно. Сколько понадобится времени для ответа на вопрос: «Входит ли класс Class42 в иерархию класса Class1»? Будете писать для этой «тривиальной задачи» свой инструмент, как Miguel? А при записи в виде диаграммы ответ на этот вопрос находится мгновенно.

Kuka ★★
() автор топика
Ответ на: комментарий от archimag

>> Экспресс-3 например. Продажа билетов на поезда, а предприятие РЖД. >> ну или учет паспортов

> Ну, это должно работать на большом колличестве рабочих мест. И всё? Т.е. система уровня предприятия это система которая должна работать на большом колличестве мест?

Андрюша, ты троллишь? Я не могу поверить в то, что человек может добровольно продемонстрировать некомпетентность ТАКОГО уровня. Может, все-таки стоит открыть глаза и осознать, что бывают «предприятия», которые занимаются чем-то более серьезным, чем расстановка бутылок?

Ты представляешь себе, какие требования к системе типа Экспресс-3, Полет-Сирена, Amadeus и так далее? Какая производительность, надежность и доступность требуются от них?

Поясняю определение «информационной системы уровня предприятия» (не для Андрюши - он, как любой лиспер, довольно упорот и обучению слабо поддается - а просто для интересующихся). Информационная система уровня предприятия отличается от прочих систем прежде всего своими повышенными нефункциональными требованиями, невыполнение которых приводит к прямым или косвенным убыткам для бизнеса. Важнейшими из NFR являются availability, scalability, performance, reliability и security. Необходимость удовлетворить этим требованиям влечет определенные архитектурные решения, методологию разработки и так далее.

Kuka ★★
() автор топика
Ответ на: комментарий от archimag

> А зачем ты их описывал? Какой в этом смысл?

Чтобы объяснить причину своеобразного отношения местных жителей к UML.

Ведь эта тема много раз обсуждалось и на неадекватность подобных сравнений было указано уже не раз?


Рассматриваются три области конструирования. Радиоэлектроника, строительство и software engineering. Все три используют графическую нотацию, но при этом имеют существенные различия, о чем было четко сказано. В чем неадекватность?

Ну значит таки buzzword.


См. выше определение «систем уровня предприятия» (если поможет, конечно). Но, конечно, легче обозвать «баззвордом», чем признать, что ты бесконечно далек от этой, в общем, непростой и интересной области.

Kuka ★★
() автор топика
Ответ на: комментарий от anonymous

> Докажи.

Обоснуй.


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

При помощи диаграмм это делается моментально.

Kuka ★★
() автор топика
Ответ на: комментарий от anonymous

> А как в UML будут выглядеть такие общераспространенные паттерны как «параметрический полиморфизм», «функция высшего порядка», «мутабельное замыкание»?

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

Kuka ★★
() автор топика
Ответ на: комментарий от dizza

> ADM это разделение хранения состояния и бизнес-логики. ADM реализуется в рамках процедурного и функционального программирования. Применение ADM в рамках ООП ведет вырождение объектного подхода в процедурный...

Неверно. Разделение бизнес-логики и сущностей не заставляет реализовывать бизнес-логику процедурным образом.

(дальнейший бред поскипан)

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

Неверно. Разделение бизнес-логики и сущностей не заставляет реализовывать бизнес-логику процедурным образом.

Да. Но противоречит объектному подходу. И на практике в 95% крупных интепрайзных приложениях бизнес-логика при использовании ADM реализуется таки процедурным образом с небольшими вкраплениями ООП в основном при реализации инфраструктуры и application layer.

dizza ★★★★★
()

Они были учтены в более перспективной методологии LePUS3 и соответствующем инструменте моделирования и верификации Two-tier Programming Toolkit.

Опять же 4.2. Почитал tutorial. Нашел там такое:

«What cannot be modelled in LePUS3/Class-Z? * Temporal relations * ‘Method x should be called before method y’ * No collaboration/interaction diagrams, flow charts, statecharts, … * Statements about specific objects * Strategic design * Architectural styles * Components * Programs in procedural/functional/other programming paradigms»

Т.е. ТЗ специфицировать на этом не получится. Детская игрушка это, а не инструмент. Мож курсовик чей-то.

dizza ★★★★★
()
Ответ на: комментарий от Kuka

>Если бы месье посещал в свое время естественно-научный факультет

Уу, как всё запущено. Допускаю, что ты погорячился, а не непроходимо туп, т.ч. сможешь сам проделать вывод, при желании.

Месье не в курсе, что UML допускает два десятка различных связей между элементами

Допускаю, что на диаграмке это отражается минимум каким-то значком, а то и словом. Рассказать, как добавить эквивалентный значок/слово к тексту?

Зачем же тогда месье лезет в дискуссию, в предмете которой он ни черта не смыслит

Месье немножко освоил вывод от общего к частному.

Сколько понадобится времени для ответа на вопрос: «Входит ли класс Class42 в иерархию класса Class1»?

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

DonkeyHot ★★★★★
()

В принципе, согласен по всем пунктам.

Последнее утверждение верно на все 100%.

В чем вопрос, если он есть?

bk_ ★★
()
Ответ на: комментарий от Kuka

>Ты представляешь себе, какие требования к системе типа Экспресс-3, Полет-Сирена, Amadeus и так далее? Какая производительность, надежность и доступность требуются от них?

Экспресс-3, Полет-Сирена - не знаю, Amadeus - знаю. И чо? Какая связь с UML?

(не для Андрюши - он, как любой лиспер, довольно упорот и обучению слабо поддается - а просто для интересующихся)

Если ты считаешь archimag-а лиспером, ты непроходимо туп - archimag ПХПшник. (хинт - см. пост mv после перезода на текущую работу).

anonymous
()
Ответ на: комментарий от shty

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

gameover__
()
Ответ на: комментарий от Miguel

> Ваши критерии вызывают удивление

Удивительно, что я считаю количество информации более важным, чем занимаемое пространство?

удивительно, как Вы не понимаете смысла весьма простых слов

shty ★★★★★
()
Ответ на: комментарий от Miguel

Большая часть имеющейся графики (там, где она есть) - стрелки, указывающие, куда именно поворачивать.

именно что, а не надпись turn left/rignt

shty ★★★★★
()
Ответ на: комментарий от Karapuz

ну утечки памяти, ну подумаешь, ведь юзверы все равно эти мелочи не замечают

научись собирать лису, не показывай себя безруким

shty ★★★★★
()
Ответ на: комментарий от Kuka

Я лишь имел в виду, что потом они все равно перекочуют в репозиторий, причем отнюдь не бумажный :)

а, в таком варианте - да, поддерживаю полностью

shty ★★★★★
()
Ответ на: комментарий от shty

именно что, а не надпись turn left/rignt

Ты не понял. Это означает добавление к алфавиту четырёх... ну ладно, восьми букв. И только.

Miguel ★★★★★
()
Ответ на: комментарий от Kuka

зрелой, доказавшей жизнеспособность парадигмы ООП

Вроде, то, что ООП без костылей не живёт, всем известно уже давно. Правда, вместо «костыли» обычно говорят «паттерны», но суть не меняется.

Miguel ★★★★★
()

>Резюме. Пользоваться UML можно и нужно. Но, как и любым другим сложным инструментом - к месту и умеючи.

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

vostrik ★★★☆
()
Ответ на: комментарий от Miguel

>Опять 4.2. Текст, содержащий столько же информации, сколько и диаграмма, парсится быстрее.

я твой текст труба шатал: 10 страниц плотного текста заменяются одной понятной диаграммой UML, інфа 100%

vostrik ★★★☆
()

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

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

на самом деле тут куча тонких мест, и для точной их формулировки мне потребуется время

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от Miguel

> пруф про большинство будет?

Свидетельство очевидца подойдёт?

ок, не буду кочевряжться :))

в общем по ситуации - ну хз почему оно так сложилось в америке, но в многих странах дорожные знапки - это всё же графические знаки

shty ★★★★★
()
Ответ на: комментарий от Miguel

> именно что, а не надпись turn left/rignt

Ты не понял. Это означает добавление к алфавиту четырёх... ну ладно, восьми букв. И только.

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

shty ★★★★★
()
Ответ на: комментарий от Miguel

Вроде, то, что ООП без костылей не живёт, всем известно уже давно.

4.2, кое-кто его не умеет готовить

Правда, вместо «костыли» обычно говорят «паттерны», но суть не меняется.

поразмышляйте на досуге что означает слово «паттерн», а затем подумайте почему паттерны есть во всех языках программирования

shty ★★★★★
()
Ответ на: комментарий от Kuka

> А при записи в виде диаграммы ответ на этот вопрос находится мгновенно.

Он и по коду восстанавливается мгновенно. Или у тебя иерархии глубины больше 3? Ну тогда архитектора следует уволить.

anonymous
()
Ответ на: комментарий от Kuka

> придется разобрать и сопоставить (или даже перебрать) большое количество информации.

Не придется.

При помощи диаграмм это делается моментально.

При помощи текста программного кода - аналогично.

anonymous
()
Ответ на: комментарий от Kuka

> UML предназначен для моделирования в терминах зрелой, доказавшей жизнеспособность парадигмы ООП, а не в терминах различных маргинальных парадигм.

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

anonymous
()
Ответ на: комментарий от DonkeyHot

Похоже, это где-то между кустарным(одноразовым, неповторимым) и boilerplate. Cеребрянная медаль за нереюзабилити:)

этот словарь такой же «умный» как и Вы, сэр

http://en.wikipedia.org/wiki/Pattern

A pattern [..] is a type of theme of recurring events or objects, sometimes referred to as elements of a set of objects.

These elements repeat in a predictable manner. It can be a template or model which can be used to generate things or parts of a thing, especially if the things that are created have enough in common for the underlying pattern to be inferred, in which case the things are said to exhibit the unique pattern.

shty ★★★★★
()
Ответ на: комментарий от shty

>этот словарь такой же «умный» как и Вы, сэр

+3 к самооценке, спасибо:)

http://en.wikipedia.org/wiki/Pattern

Как по мне, там было понятнее. Подозреваю, что ключевым для нашего примера является «template or model which can be used to generate» и/или «have enough in common». В порядке увеличения простоты повторного использования: одноразовый никак не применить, pattern «можно использовать для генерации», bolierplate просто «included with little or no alteration»... Что не так?

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

так, похоже «осёл» перегрелся :)

придётся объяснять на пальцах

1. паттерн - не boilerplate, это очевидным образом доказывает тот факт, что паттерн может быть применён к любом языку поддерживающему парадигму ООП, ибо boilerplate - «is any text that is or can be reused in new contexts [..]»

2. паттерн - это не то, что используется «для генерации», ибо паттерн если хотите, описывает взаимодействия и связи между классами и объектами, описывая при этом сами классы чуть более чем никак

итого, паттерн - это описание или шаблон, описывающий подход к решению того или иного класса задач

а некоторым упоротым школьникам, которые этого простого факта не могут осознать, присуждается большая золотая медаль «за тупизу на производстве I степени»

shty ★★★★★
()
Ответ на: комментарий от shty

> 1. паттерн - не boilerplate, это очевидным образом доказывает тот факт, что паттерн может быть применён к любом языку поддерживающему парадигму ООП, ибо boilerplate - «is any text that is or can be reused in new contexts [..]»

Так процитированная тобой фраза как раз тебя и опровергает. Паттерн ведь тоже «is any text that is or can be reused in new contexts [..]».

anonymous
()
Ответ на: комментарий от shty

Вообще, выходит, что паттерн - это такой бойлерплейт, от которого трудно/невозможно избавиться введением синтаксического сахара. То есть мы не можем сказать «да нас же тут МОСТ» - нам надо писать кучу лишней текстовой обвязки. по-этому паттерн - бойлерплейт. Но, с другой стороны, никакого способа избавиться от него не перекраивая серьезно язык - нет.

anonymous
()
Ответ на: комментарий от shty

Сделай же следующий шаг.

итого, паттерн - это описание или шаблон, описывающий подход к решению того или иного класса задач

boilerplate - почти готовый код, описывающий решение того или иного класса задач. Программа/Moдуль/библиотека/ф-я - готовое решение того или иного класса задач.

DonkeyHot ★★★★★
()
Ответ на: комментарий от anonymous

Паттерн ведь тоже «is any text that is or can be reused in new contexts [..]».

поясни каким образом тогда «паттерн может быть применён к любом языку поддерживающему парадигму ООП»?

shty ★★★★★
()
Ответ на: комментарий от anonymous

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

облака - это такие производные цвета воды в индийском океане от которых «трудно/невозможно» избавиться покупая развесной сахар в магазине

shty ★★★★★
()
Ответ на: комментарий от DonkeyHot

Сделай же следующий шаг.

итого, паттерн - это описание или шаблон, описывающий подход к решению того или иного класса задач

boilerplate - почти готовый код [..]

какой следующий шаг, признать тебя ушлёпком, который не умеет читать? не могу, мне воспитание не позволяет, иди перечитывай что я тебе написал, этого достаточно

shty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.