
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
11.08.2014, 12:23
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
Вопрос. А какие сейчас паттерны особо новомодны и актуальны? Исходя из мировозрения кондового ANSI-C/Delphi мировоззрения? Ну вот пример Closuse/Замыкания Нужная штука как способ передать в callback фукнцию некие ссылки на объекты, которые имеют смысл в контексте вот этого конкретного callback. Вещь понятная и полезная, испокон веков в ANSI С такое было доступно (идейно, но не синтаксически). Или новомодный паттерн шматтерн разделения модели, представления, и модели представления (MVVM, MVP и прочее блаблабла). Идея там тоже понятна - просто ребятам хочется тесты писать не на выдаваемый HTML код представления, а на что-то попроще, без шелухи форматирования - т.е. чтоб View можно было представить и как HTML, и как, к примеру, JSON или XML, и тесты делать только на JSON или XML представление. Пафосу раздуто много, хотя не понятно из-за чего, ибо можно было HTML генерить уже из этого JSON, и не надо плодить два набора классов для View А какие еще новомодные пафосные штуки нонче актуальны в мире разработки? Лямбды, LINQ, о чем там вообще? Какой минимальный порог для новомодного девелопера, чтоб быть актуальным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 12:25
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
А, ну генерики/темплейты - это понятно, как метод автоматической копипасты кода, возведенный в абсолют. Вещь для бездумного копипастера безусловно нужная и полезная. Хотя если говорить про STL/Boost - то и вовсе неизбежная, там иначе никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 12:40
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolocky, модно и актуально сейчас DSL, а также метапрограммирование. МП+DSL позволяют полностью избавиться от паттернов. То есть сделать шаблонные куски кода конструкциями самого языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 14:28
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
petalviknolocky, модно и актуально сейчас DSL, а также метапрограммирование. МП+DSL позволяют полностью избавиться от паттернов. То есть сделать шаблонные куски кода конструкциями самого языка. Не соглашусь ни разу. DSL в обед сто лет, но в мире true-Enterprise, Java и C# его за декораторами, фасадами, синглтонами и адаптерами вообще ни разу не видно. Метапрограммирование - в каком ключе-то? Генерация модели данных в БД из классов, что там еще в ходу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 14:30
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockyНе соглашусь ни разу. DSL в обед сто лет, но в мире true-Enterprise, Java и C# его за декораторами, фасадами, синглтонами и адаптерами вообще ни разу не видно Более того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 15:44
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockyБолее того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ).А мужики-то и не знают, что все проекты в мире, где применяются базы данных, разрабатываются только на жабе или дотнете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 15:52
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
sphinx_mvnolockyБолее того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ).А мужики-то и не знают, что все проекты в мире, где применяются базы данных, разрабатываются только на жабе или дотнете... о чем твой громкий лепет? ну да, есть еще php, ruby, Python и даже node.js, но там интырпарайсом и правильными паттернами вроде даже и не пахло кроме ото ехидства, вообще есть что сказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 16:03
|
|||
|---|---|---|---|
|
|||
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockyБолее того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ). "Универсальный солдатпрограммист". DSL - антипаттерн, гореть в аду? Ваши аргументы просто неоспоримы. А сам факт существования DSL как вообще прокомментируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 16:11
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockyНе соглашусь ни разу. DSL в обед сто лет, но в мире true-Enterprise, Java и C# его за декораторами, фасадами, синглтонами и адаптерами вообще ни разу не видно. Да, DSL известны давно, и давно применяются. Например, очень часто варганят собственные dsl'и в виде xml. Но такой язык ограничен синтаксисом xml и это сложно признать правильным подходом. В том-то и дело, что мейнстримовые языки не поддерживают МП. А без МП полноценный dsl не сделать. В языках с динамической типизацией зачастую можно реализовать довольно внятный dsl, но сама природа языка не позволяет сделать качественную проверку в компайл-тайме, так что эта идея идёт лесом. nolockyМетапрограммирование - в каком ключе-то? Генерация модели данных в БД из классов, что там еще в ходу? Распространённое (ошибочное) мнение, что МП применяется только для генерации одной модели из другой. Например, в C# есть ключевые слова using и event. В языках, где таких нет, приходится писать приличный кусок кода (что становится паттерном). В языке Nemerle, где изначально таких ключевых слов нет, были написаны макросы, и они появились! То есть язык избавился от ставших ненужными паттернов. Ещё пример: в C# постоянно приходится вручную писать реализацию интерфейса INotifyPropertyChanged. Сотни свойств - сотни реализаций! С ума сойти... Это настолько утомляющее действие, что существуют и code snippet'ы для INotifyPropertyChanged (но это лишь текстовая вставка), и реализации этого интерфейса в AOP-фреймворках, в частности, в PostSharp (но часто возникают проблемы с отладкой, с обфускацией и пр.) Между тем, в Nemerle пишем макрос, после чего достаточно на класс навесить атрибут [ImplementsNotifyPropertyChanged], после чего все свойства автоматические реализуют этот интерфейс! nolockyБолее того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ). Ой-вэй! В том-то и дело, что SQL - неполноценный DSL. Неполноценный в том смысле, что он не встроен в основной язык программирования. А LINQ - встроен. Но что делать, если в нашем языке linq'а нет? И нет метапрограммирования? Увы, остаётся лишь жрать кактус. Придётся по старинке писать sql в строковых литералах. В итоге ни подсветки синтаксиса, ни автоматического форматирования, ни проверки на этапе компиляции, ни подсказок от IDE... А вот если в языке есть МП, то можно написать любой (теоретически) dsl. При этом будет и подсветка синтаксиса и все прочие плюшки. Чтобы не быть голословным, в языке Nemerle это реализуется. Как я уже сказал, потребность в dsl очень высока. Например, регулярные выражения - это dsl разбора текста. Зачастую очень удобно. Но как записываются сами регулярки в коде программы? В виде текстовых литералов. Понять чужую регулярку очень сложно, потому что нет подсветки синтаксиса, нет форматирования, нет подсказок IDE... Разбор самих регэксов происходит в рантайме, так что об ошибке (банальной опечатке) узнаем лишь при падении программы. Напротив, при наличии МП можно сделать макрос, который будет парсить и подсвечивать регэкс сразу по мере набора в IDE. Банальные строки форматирования - это тоже микро-DSL. Типа prinft("Name: %s", str). Опять же, они задаются в виде литералов и не проверяются на этапе компиляции в большинстве мэйнстримовых языков. Что делать? Жрать кактус! Конечно, есть такие решения, как Решарпер: он, в частности, проверяет правильность строк формата. И это доказывает, что нормальные dsl востребованы. А в том же Nemerle (да обратит Microsoft свой взгляд на него!) реализован макрос printf, в котором проверяется в компайл-тайме как строка формата, так и тип параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 16:16
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockysphinx_mvпропущено... А мужики-то и не знают, что все проекты в мире, где применяются базы данных, разрабатываются только на жабе или дотнете... о чем твой громкий лепет? ну да, есть еще php, ruby, Python и даже node.js, но там интырпарайсом и правильными паттернами вроде даже и не пахлоБла-бла-бла... Ну, и как много "интырпарайса" Вы успели наразрабатывать? "Правильные паттерны"... Вам бы спеллчекером для начала научиться правильно пользоваться - и только потом к паттернам переходить. nolockyкроме ото ехидства, вообще есть что сказать?А Вы уверены, что поймете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 16:21
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
petalvikПридётся по старинке писать sql в строковых литералах. В итоге ни подсветки синтаксиса, ни автоматического форматирования, ни проверки на этапе компиляции, ни подсказок от IDE...Вообще-то, это сильно зависит от IDE... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 16:37
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
sphinx_mvpetalvikПридётся по старинке писать sql в строковых литералах. В итоге ни подсветки синтаксиса, ни автоматического форматирования, ни проверки на этапе компиляции, ни подсказок от IDE...Вообще-то, это сильно зависит от IDE... Согласен. Некоторые IDE имеют неслабый интеллект, или приобретают его от дополнений, наподобие Resharper'а. Однако, меня всегда раздражало, что приходится использовать какие-то сторонние приблуды, в то время как могучий компилятор языка бездельничает. А ведь именно компилятор по определению абсолютно точно разбирает любые выражения языка. Увы, без МП мы не можем его задействовать. И ещё дело в том, что если разработчики IDE или дополнения к ней не реализовали какую-то проверку, то мы не сможем сделать её сами. Конечно, иногда дополнение можно написать самому, но это почти МП, только присобаченное сбоку. Греет душу вылупляющийся Roslyn в дотнете. Через несколько лет у нас наверняка будет полноценное метапрограммирование в мэйнстримовом языке (C#). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 17:14
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
sphinx_mvnolockyпропущено... о чем твой громкий лепет? ну да, есть еще php, ruby, Python и даже node.js, но там интырпарайсом и правильными паттернами вроде даже и не пахлоБла-бла-бла... Ну, и как много "интырпарайса" Вы успели наразрабатывать? "Правильные паттерны"... Вам бы спеллчекером для начала научиться правильно пользоваться - и только потом к паттернам переходить. Опять громкий пук в лужу и ноль конкретики sphinx_mvnolockyкроме ото ехидства, вообще есть что сказать?А Вы уверены, что поймете? Судя по твоим постам - я вполне уверен, что ты не сможешь ничего объяснить. Давай начнем с твоей попытки выразить ту мысль, которая у тебя, возможно, есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 17:16
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
petalviksphinx_mvпропущено... Вообще-то, это сильно зависит от IDE... Согласен. Некоторые IDE имеют неслабый интеллект, или приобретают его от дополнений, наподобие Resharper'а. Однако, меня всегда раздражало, что приходится использовать какие-то сторонние приблуды, в то время как могучий компилятор языка бездельничает. А ведь именно компилятор по определению абсолютно точно разбирает любые выражения языка. Увы, без МП мы не можем его задействовать. И ещё дело в том, что если разработчики IDE или дополнения к ней не реализовали какую-то проверку, то мы не сможем сделать её сами. Конечно, иногда дополнение можно написать самому, но это почти МП, только присобаченное сбоку. Греет душу вылупляющийся Roslyn в дотнете. Через несколько лет у нас наверняка будет полноценное метапрограммирование в мэйнстримовом языке (C#). Пипец. Зайчата не умеют упаковывать .sql файлы в ресурсы (.res) как шаг компиляции и редактировать из прямо в Visual Studio/Eclipse/Netbeans/whatewer else И эти люди еще пытаются учить нас жить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 17:24
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolocky упаковывать .sql файлы в ресурсы (.res) как шаг компиляции и редактировать из прямо в Visual Studio/Eclipse/Netbeans/whatewer else Это охренительная фича, если она реализована в IDE. А если нет? Без МП, всё - приплыли. К тому же сам пишешь, что sql не комильфо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 18:03
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
petalviknolocky упаковывать .sql файлы в ресурсы (.res) как шаг компиляции и редактировать из прямо в Visual Studio/Eclipse/Netbeans/whatewer else Это охренительная фича, если она реализована в IDE. А если нет? Без МП, всё - приплыли. Такой фичи нет штатно даже в VS. Она докручивается через такое понятие, как Custom Build Step (Prebuilt). Пишется утилитка, которая берет на входе любой файл, .SQL, да хоть какой, и преобразовывает его в .csharp, .java, .cpp, во что угодно, где будет содержаться некая функция, которая вернет содержимое этого .SQL файла, которое будет туда вкопилировано как строка с кавычками Вот так Исходный get_my_text.sql SELECT * FROM table На выходе get_my_text.cpp char * get_my_text (void) { return "SELECT * FROM table" } Этот get_my_text.cpp IDE будет генерировать сама, каждый раз, когда изменится исходный get_my_text.sql petalvikК тому же сам пишешь, что sql не комильфо. Я от своих слов не отказывась. Просто это вы тут сирые и убогие начали тянуть жалобную песню про упаковку SQL в строки, а я же макнул вас в ваше невежество, показав, что SQL тексты можно хранить в отдельных .SQL файлах, и добавлением custom build step их преобразовывать во что угодно - хоть в .res, хоть в .xml, да хоть в автогенерируемый модуль целевого ЯП, который будет содержать функцию, возвращающую этот самый SQL текст ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 18:10
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockysphinx_mvпропущено... Бла-бла-бла... Ну, и как много "интырпарайса" Вы успели наразрабатывать? "Правильные паттерны"... Вам бы спеллчекером для начала научиться правильно пользоваться - и только потом к паттернам переходить. Опять громкий пук в лужу и ноль конкретикиИ это все, что Вы про "интырпарайс" рассказать можете? nolockysphinx_mvпропущено... А Вы уверены, что поймете? Судя по твоим постам - я вполне уверен, что ты не сможешь ничего объяснить. Давай начнем с твоей попытки выразить ту мысль, которая у тебя, возможно, есть?Вы веткой форума не ошиблись? ТПэшники обычно в ПТ сидят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 18:20
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockyПишется утилитка, которая берет на входе любой файл, .SQL, да хоть какой, и преобразовывает его в .csharp, .java, .cpp, во что угодно Это и есть метапрограммирование. Однако, согласись, что встроенная поддержка в язык гораздо удобнее, чем использование сторонних утилит, конфигов (указать build step) и прочего. nolockyПросто это вы тут сирые и убогие начали тянуть жалобную песню про упаковку SQL в строки, а я же макнул вас в ваше невежество Слышь, человече, я давал поводы для хамства? nolockyпоказав, что SQL тексты можно хранить в отдельных .SQL файлах Ну надо же, а мужики не знали! Напомню мою основную мысль: метапрограммирование позволяет (почти) полностью избавиться от паттернов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 18:20
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
sphinx_mvnolockyпропущено... Опять громкий пук в лужу и ноль конкретикиИ это все, что Вы про "интырпарайс" рассказать можете? Я могу рассказать очень многое. А вот ты - похоже нет. sphinx_mvnolockyпропущено... Судя по твоим постам - я вполне уверен, что ты не сможешь ничего объяснить. Давай начнем с твоей попытки выразить ту мысль, которая у тебя, возможно, есть?Вы веткой форума не ошиблись? ТПэшники обычно в ПТ сидят... Ну так и иди туда, чего ты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 18:54
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockysphinx_mvпропущено... И это все, что Вы про "интырпарайс" рассказать можете? Я могу рассказать очень многое."Ждем-с..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 19:09
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
nolockyВещь понятная и полезная, испокон веков в ANSI С такое было доступно (идейно, но не синтаксически). ну скорее в АЛГОЛ-60 и его потомках (вложенные процедуры- передача их параметром вместе с контекстом) nolockyИли новомодный паттерн шматтерн какой же он новомодный если смоллтолку уже лет 40 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 19:11
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
petalviknolockyПишется утилитка, которая берет на входе любой файл, .SQL, да хоть какой, и преобразовывает его в .csharp, .java, .cpp, во что угодно Это и есть метапрограммирование. Однако, согласись, что встроенная поддержка в язык гораздо удобнее, чем использование сторонних утилит, конфигов (указать build step) и прочего. Если утверждать, что метапрограммирование - это когда одни программы пишут другие программы, то да, какое не тупое, но это метапрограммирование. Хотя я больше склоняюсь с варианту трансляции DSL моделей в непосредственно компилируемый язык - из XML деклараций в Java/C++/Delphi, и т.п. petalviknolockyПросто это вы тут сирые и убогие начали тянуть жалобную песню про упаковку SQL в строки, а я же макнул вас в ваше невежество Слышь, человече, я давал поводы для хамства? Вполне petalviknolockyпоказав, что SQL тексты можно хранить в отдельных .SQL файлах Ну надо же, а мужики не знали! Ты-то не знал. Хотя может ты просто не мужик petalvikНапомню мою основную мысль: метапрограммирование позволяет (почти) полностью избавиться от паттернов. Это звучит так-же глупо, как и утверждение, что бег по утрам позволит избавиться от реактивного поноса. Вещи эти, вообще-то, никак не связаны, и лишь дополняют друг друга, при удачном стечении обстоятельств. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 19:14
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
sphinx_mvnolockyпропущено... Я могу рассказать очень многое."Ждем-с..." Я тут уже рассказал раз в 20-ть больше, чем ты за всю историю своего существования. Тебе не видно - ну сиди жди, может прозреешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.08.2014, 19:16
|
|||
|---|---|---|---|
Новомодные паттерны и приемы высокого стиля |
|||
|
#18+
ИзопропилnolockyВещь понятная и полезная, испокон веков в ANSI С такое было доступно (идейно, но не синтаксически). ну скорее в АЛГОЛ-60 и его потомках (вложенные процедуры- передача их параметром вместе с контекстом) Это лишь синтаксический сахар. Суть от этого не меняется, это все эти расфуфыренные closure - это лишь синтаксический сахар по передаче параметров в callback, к слову - весьма черезжопный и внешне, и внутренне. ИзопропилnolockyИли новомодный паттерн шматтерн какой же он новомодный если смоллтолку уже лет 40 MVVM в смоллтолке не было, тогда у воспаленных сознаний не было такой задачи, как TDD в условиях постоянно меняющегося внешего представления (HTML и прочие CSS рюшки, на которые задолбаешься тесты прикручивать и обновлять их постоянно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&tablet=1&tid=1341261]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 493ms |

| 0 / 0 |
