Re[5]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 12:23
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>От этого никуда не уйти, в принципе. можно только уменьшить размеры копипасты и заменить одну копипасту на другую.

WH> То-то я уменьшаю копипасту до таких размеров, что она исчезает.

Главное что бы ктото кроме тебя мог легко её поднять.

I>>У тебя должно быть хорошее объяснение почему эти вещи не теряют популярности, а до кучи набирают популярность такие вещи как питон, джаваскрипт, руби или ПХП!!!

WH>Кобол в свое время тоже набирал.

То есть, объяснения нет

I>>В каком смысле "порвут" ? По стоимости разработки ? По стоимости сопровождения ? Быстродействию ? Потреблению памяти ? По кривой вхождения ? По всем вместе взятым ? По любому подмножеству ? В любой временной перспективе ?

WH>На задачах размером больше хелловролд по всем параметрам. И чем задача больше, тем сильнее отрыв.

Чушь.
По кривой вхождения очень трудно порвать питон или джаваскрипт для небольших сценариев или даже программ строчек в 100-1000.
По производительности очень трудно порвать С в тех местах где высокоуровневые оптимизации уже выюзаны.
В краткосрочной персктиве мне на C#, например, безо всяких ДСЛ для решения своих задач нужно день-два, а тебе только месяцы на чтение спек.
По стоимости сопровождения, например, многие проекты меняют тимы и живут десятками лет, сильно вряд ли твои мульки будут обладать преимуществом.
Re[6]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 12:43
Оценка:
Здравствуйте, Ikemefula, Вы писали:

WH>> То-то я уменьшаю копипасту до таких размеров, что она исчезает.

I>Главное что бы ктото кроме тебя мог легко её поднять.
Какого? Копипасту? Так у меня её нет. Так что и понимать нечего.

I>То есть, объяснения нет

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

I>Чушь.

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

I>По кривой вхождения очень трудно порвать питон или джаваскрипт для небольших сценариев или даже программ строчек в 100-1000.

Это хелловорлд.
Да и то это не правда.
Въезжать в калькулятор на питоне ты будешь гораздо дольше, чем в калькулятор на ДСЛ.

I>По производительности очень трудно порвать С в тех местах где высокоуровневые оптимизации уже выюзаны.

Ага. Конечно.
Ты просто представления не имеешь. На что способны оптимизаторы, которые оптимизируют конкретную предметную область.
Да тот код, что я генерирую, я на C никогда руками не напишу.
Ибо там всё в ошибках будет. Которые потом придется годами вылавливать.

I>В краткосрочной персктиве мне на C#, например, безо всяких ДСЛ для решения своих задач нужно день-два, а тебе только месяцы на чтение спек.

Каких еще спек?
На ДСЛ?
Так практика показывает что, зная предметную область ДСЛ понимается без чтения спек ваще.
А без знания ты и на C# опупеешь въезжать в предметную область.
Более того у тебя уйдет намного больше времени. Ибо в коде на C# предметной областью только пахнет. И тебе придется догадываться как все это нагромождение классов и методов ложится на решаемую задачу.

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

Будут. Ибо кода будет на порядок меньше.
Ибо прикладной программист просто физически не сможет сделать кучу ошибок.
Ибо подавляющая чать кода будет генерироваться. А ошибке в генераторе исправляются оди раз и на всегда.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 12:47
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Это не бизнеслогика, а проверка инварианта.

Из этого куска кода это не ясно.

I>А вот это просто говнокод и никакой не паттерн.

Паттерн. Ибо очень часто повторяется.

I>Читай внимательно — меняют не все подряд, а "какую то феньку нужную в 5 местах" , то есть хорошо изолированую задачу, об чем я тебе и говорю.

А теперь прочитай про те самые "хорошо изолированные задачи"...

Или вот ещё ацкий трэш — у нас некоторые исключения имели помимо важности ещё свойство Color, которым (ааа111!!!) их надо было подсвечивать в GUI. Выставлялось это свойство автоматом, исходя из того в каком классе, в процессе работы над какой задачей, случился throw. Почему такое нарушение принципов вообще оказалось возможно — а потому что оно не выставлялось вручную вообще нигде. Т.е. GUI код просто использовал это свойство, и ему по-барабану как оно возникло, а программист который исключение кидал — даже не знал про какое-то там свойство, и его не выставлял. Соотвественно если бы мы решили эту хрень заменить, или вообще убрать — надо было бы менять только одно место, а значит принципы правильного разделения BL и GUI можно слать в конкретно этом случае лесом.

Тут прямым текстом сказано, что они всю изоляцию нахрен разломали.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 12:53
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>Это не бизнеслогика, а проверка инварианта.

WH>Из этого куска кода это не ясно.

Судя по тому, что в начале было Assert.AreEqual это более чем понятно откуда взялось

I>>Читай внимательно — меняют не все подряд, а "какую то феньку нужную в 5 местах" , то есть хорошо изолированую задачу, об чем я тебе и говорю.

WH>А теперь прочитай про те самые "хорошо изолированные задачи"...
WH>

WH>Или вот ещё ацкий трэш — у нас некоторые исключения имели помимо важности ещё свойство Color, которым (ааа111!!!) их надо было подсвечивать в GUI. Выставлялось это свойство автоматом, исходя из того в каком классе, в процессе работы над какой задачей, случился throw. Почему такое нарушение принципов вообще оказалось возможно — а потому что оно не выставлялось вручную вообще нигде. Т.е. GUI код просто использовал это свойство, и ему по-барабану как оно возникло, а программист который исключение кидал — даже не знал про какое-то там свойство, и его не выставлял. Соотвественно если бы мы решили эту хрень заменить, или вообще убрать — надо было бы менять только одно место, а значит принципы правильного разделения BL и GUI можно слать в конкретно этом случае лесом.

WH>Тут прямым текстом сказано, что они всю изоляцию нахрен разломали.

И здесь задача так же хорошо изолирована А ты наверное "изоляция" понимаешь исключительно в контексте паттерна "слой"
Re[4]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 13:00
Оценка:
Здравствуйте, Ikemefula, Вы писали:

WH>>Типовые задачи должен решать язык.

I>Задачи, даже типовые, решает человек и уже на этой стадии возникают паттерны. Паттерны в коде это просто следствие. Все что ты можешь это оформить поддержку паттернов в самом языке, например как это произошло с итератором.
О чем я и говорю.
Подкрутили язык и нет больше паттрна.

Поэтому я и пишу на языках, которые можно подкрутить.

А ты копипастишь паттрны на C# до тех пор пока макрософт не соизволит ввести в язык поддержку очередного паттрна общего назначения.
Которые, как известно бесполезны.
Читай что написано про паттерны общего назначения.
Автор: hi_octane
Дата: 10.07.12


I>Есть. Берём блекджек и смотрим "мягкий дабл", "сплит тузов", "сплит десяток" — опаньки, паттерны. И какой язык тебе поможет избежать этого ?

Мне предметная область не знакома.
Но что-то мне подсказывает, что эти паттрны ни какого отношения к тем паттрнам, о которых мы говорим, не имеют.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 13:00
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>И здесь задача так же хорошо изолирована А ты наверное "изоляция" понимаешь исключительно в контексте паттерна "слой"

Ну, так назови мне задачу, которая согласно твоим понятиям не изолирована.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 13:40
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>Задачи, даже типовые, решает человек и уже на этой стадии возникают паттерны. Паттерны в коде это просто следствие. Все что ты можешь это оформить поддержку паттернов в самом языке, например как это произошло с итератором.

WH>О чем я и говорю.
WH>Подкрутили язык и нет больше паттрна.

Паттерн никуда не делся.

I>>Есть. Берём блекджек и смотрим "мягкий дабл", "сплит тузов", "сплит десяток" — опаньки, паттерны. И какой язык тебе поможет избежать этого ?

WH>Мне предметная область не знакома.
WH>Но что-то мне подсказывает, что эти паттрны ни какого отношения к тем паттрнам, о которых мы говорим, не имеют.

Имеют. Исчезает конкретный код, а не паттерн. Паттерн это модель решения конкретной задачи.
Re[11]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 13:40
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>И здесь задача так же хорошо изолирована А ты наверное "изоляция" понимаешь исключительно в контексте паттерна "слой"

WH>Ну, так назови мне задачу, которая согласно твоим понятиям не изолирована.

ERP.
Re[12]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 13:56
Оценка:
Здравствуйте, Ikemefula, Вы писали:

WH>>Ну, так назови мне задачу, которая согласно твоим понятиям не изолирована.

I>ERP.
42
Что сказать то хотел?
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 13:56
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Имеют. Исчезает конкретный код, а не паттерн. Паттерн это модель решения конкретной задачи.

Не путай модель предметной области и копипасту в конкретном языке которая нужна для того чтобы эту модель на этом языке реализовать.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 14:08
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>>>Ну, так назови мне задачу, которая согласно твоим понятиям не изолирована.

I>>ERP.
WH>42
WH>Что сказать то хотел?

Здесь много задач. Ни в одном приложении не встречается только одна из них, практически всегда идет целая пачка задач. Для сравнения если взять регулярные выражения, то приложении спокойно может быть одна две задачи. В первом случае изолировать не получится. Во втором — запросто.
Re[7]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 14:10
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>Имеют. Исчезает конкретный код, а не паттерн. Паттерн это модель решения конкретной задачи.

WH>Не путай модель предметной области и копипасту в конкретном языке которая нужна для того чтобы эту модель на этом языке реализовать.

Покажи мне как без итераций посчитать бегущую сумму. Вперёд.
Re[14]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 14:40
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здесь много задач. Ни в одном приложении не встречается только одна из них, практически всегда идет целая пачка задач. Для сравнения если взять регулярные выражения, то приложении спокойно может быть одна две задачи. В первом случае изолировать не получится. Во втором — запросто.

Я опять ничего не понял.
Давай конкретно.
Что нельзя изолировать.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 14:49
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Имеют. Исчезает конкретный код, а не паттерн. Паттерн это модель решения конкретной задачи.

WH>>Не путай модель предметной области и копипасту в конкретном языке которая нужна для того чтобы эту модель на этом языке реализовать.
I>Покажи мне как без итераций посчитать бегущую сумму. Вперёд.
И причем тут паттерны?
В любом случае можно сделать ФВП.
http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:scanl

Или сделать прямую поддержку пробежек по коллекциям в языке предметной области.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 15:04
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

I>>Здесь много задач. Ни в одном приложении не встречается только одна из них, практически всегда идет целая пачка задач. Для сравнения если взять регулярные выражения, то приложении спокойно может быть одна две задачи. В первом случае изолировать не получится. Во втором — запросто.

WH>Я опять ничего не понял.
WH>Давай конкретно.
WH>Что нельзя изолировать.

Задачи в такой области как ERP нельзя изолировать.
Re[9]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 15:06
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>И причем тут паттерны?


Это и есть паттерн, а не то что ты думал.

WH>В любом случае можно сделать ФВП.

WH>http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:scanl

И здесь тож самое, только закорючек больше.

WH>Или сделать прямую поддержку пробежек по коллекциям в языке предметной области.


Вот-вот, а ты говорил паттрны не нужны.
Re[16]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 15:11
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Задачи в такой области как ERP нельзя изолировать.

Короче паттерны, которые нельзя убить языком ты так и не показал.
Засчитываю очередной слив с чистой совестью.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Паттерны проектирования - копипаста!
От: WolfHound  
Дата: 16.08.12 15:17
Оценка:
Здравствуйте, Ikemefula, Вы писали:

WH>>И причем тут паттерны?

I>Это и есть паттерн, а не то что ты думал.
У тебя очень странное понимание паттернов.
Ибо в данном случае у нас стоит задача посчитать бегущую сумму.
Это задача предметной области.

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

А вызов одной функции это не паттерн. Иначе у нас всё состоит из паттернов, и разговор теряет всяческий смысл.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[17]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 15:19
Оценка:
Здравствуйте, WolfHound, Вы писали:

I>>Задачи в такой области как ERP нельзя изолировать.

WH>Короче паттерны, которые нельзя убить языком ты так и не показал.

Аргумент про итерацию и блекджект ты проигнорировал ? Так держать !
Re[11]: Паттерны проектирования - копипаста!
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 16.08.12 15:26
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>>>И причем тут паттерны?

I>>Это и есть паттерн, а не то что ты думал.
WH>У тебя очень странное понимание паттернов.
WH>Ибо в данном случае у нас стоит задача посчитать бегущую сумму.
WH>Это задача предметной области.

Правильно. Потому паттерн отсюда перекочует в код на любом языке.

WH>Но я не знаю ни одной осмысленной предметной области, где ставилась бы задача сделать визитер или абстрактную фабрику.

WH>Эти абсолютно бессмысленные с точки зрения предметной области сущности, которые кочуют из проекта в проект, и есть паттерны.

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

В твоем случае паттерны вроде визиторов или фабрик перекочуют в реализацию ДСЛ, макросы и тд и тд и тд. Они никуда не деваются. Поскольку ты предлагаешь делать макры и дсл для каждой задачи по отдельности ("феньку нужную в 5 местах "), не желая рассматривать всю область, как ERP например, не совсем ясно чем же твой подход лучше.
Наверное тем, что паттерны "будут не в том месте"
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.