Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Новомодные паттерны и приемы высокого стиля / 25 сообщений из 27, страница 1 из 2
11.08.2014, 12:23
    #38717135
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
Вопрос.
А какие сейчас паттерны особо новомодны и актуальны? Исходя из мировозрения кондового ANSI-C/Delphi мировоззрения?


Ну вот пример Closuse/Замыкания

Нужная штука как способ передать в callback фукнцию некие ссылки на объекты, которые имеют смысл в контексте вот этого конкретного callback. Вещь понятная и полезная, испокон веков в ANSI С такое было доступно (идейно, но не синтаксически).


Или новомодный паттерн шматтерн разделения модели, представления, и модели представления (MVVM, MVP и прочее блаблабла). Идея там тоже понятна - просто ребятам хочется тесты писать не на выдаваемый HTML код представления, а на что-то попроще, без шелухи форматирования - т.е. чтоб View можно было представить и как HTML, и как, к примеру, JSON или XML, и тесты делать только на JSON или XML представление.

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


А какие еще новомодные пафосные штуки нонче актуальны в мире разработки?

Лямбды, LINQ, о чем там вообще? Какой минимальный порог для новомодного девелопера, чтоб быть актуальным?
...
Рейтинг: 0 / 0
11.08.2014, 12:25
    #38717142
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
А, ну генерики/темплейты - это понятно, как метод автоматической копипасты кода, возведенный в абсолют. Вещь для бездумного копипастера безусловно нужная и полезная. Хотя если говорить про STL/Boost - то и вовсе неизбежная, там иначе никак.
...
Рейтинг: 0 / 0
11.08.2014, 12:40
    #38717169
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolocky,

модно и актуально сейчас DSL, а также метапрограммирование. МП+DSL позволяют полностью избавиться от паттернов. То есть сделать шаблонные куски кода конструкциями самого языка.
...
Рейтинг: 0 / 0
11.08.2014, 14:28
    #38717300
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
petalviknolocky,

модно и актуально сейчас DSL, а также метапрограммирование. МП+DSL позволяют полностью избавиться от паттернов. То есть сделать шаблонные куски кода конструкциями самого языка.

Не соглашусь ни разу. DSL в обед сто лет, но в мире true-Enterprise, Java и C# его за декораторами, фасадами, синглтонами и адаптерами вообще ни разу не видно.


Метапрограммирование - в каком ключе-то? Генерация модели данных в БД из классов, что там еще в ходу?
...
Рейтинг: 0 / 0
11.08.2014, 14:30
    #38717306
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockyНе соглашусь ни разу. DSL в обед сто лет, но в мире true-Enterprise, Java и C# его за декораторами, фасадами, синглтонами и адаптерами вообще ни разу не видно

Более того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ).
...
Рейтинг: 0 / 0
11.08.2014, 15:44
    #38717378
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockyБолее того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ).А мужики-то и не знают, что все проекты в мире, где применяются базы данных, разрабатываются только на жабе или дотнете...
...
Рейтинг: 0 / 0
11.08.2014, 15:52
    #38717385
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
sphinx_mvnolockyБолее того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ).А мужики-то и не знают, что все проекты в мире, где применяются базы данных, разрабатываются только на жабе или дотнете...

о чем твой громкий лепет? ну да, есть еще php, ruby, Python и даже node.js, но там интырпарайсом и правильными паттернами вроде даже и не пахло

кроме ото ехидства, вообще есть что сказать?
...
Рейтинг: 0 / 0
11.08.2014, 16:03
    #38717397
bengunn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockyБолее того, любой DSL - это сразу антипаттерн и потому должен сгореть в аду (как самый близкий пример - SQL, должен быть замочен как минимум Hibernate, если не LINQ).
"Универсальный солдатпрограммист".
DSL - антипаттерн, гореть в аду? Ваши аргументы просто неоспоримы. А сам факт существования DSL как вообще прокомментируете?
...
Рейтинг: 0 / 0
11.08.2014, 16:11
    #38717406
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
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, в котором проверяется в компайл-тайме как строка формата, так и тип параметров.
...
Рейтинг: 0 / 0
11.08.2014, 16:16
    #38717421
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockysphinx_mvпропущено...
А мужики-то и не знают, что все проекты в мире, где применяются базы данных, разрабатываются только на жабе или дотнете...

о чем твой громкий лепет? ну да, есть еще php, ruby, Python и даже node.js, но там интырпарайсом и правильными паттернами вроде даже и не пахлоБла-бла-бла...
Ну, и как много "интырпарайса" Вы успели наразрабатывать?
"Правильные паттерны"... Вам бы спеллчекером для начала научиться правильно пользоваться - и только потом к паттернам переходить.
nolockyкроме ото ехидства, вообще есть что сказать?А Вы уверены, что поймете?
...
Рейтинг: 0 / 0
11.08.2014, 16:21
    #38717426
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
petalvikПридётся по старинке писать sql в строковых литералах. В итоге ни подсветки синтаксиса, ни автоматического форматирования, ни проверки на этапе компиляции, ни подсказок от IDE...Вообще-то, это сильно зависит от IDE...
...
Рейтинг: 0 / 0
11.08.2014, 16:37
    #38717453
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
sphinx_mvpetalvikПридётся по старинке писать sql в строковых литералах. В итоге ни подсветки синтаксиса, ни автоматического форматирования, ни проверки на этапе компиляции, ни подсказок от IDE...Вообще-то, это сильно зависит от IDE...
Согласен. Некоторые IDE имеют неслабый интеллект, или приобретают его от дополнений, наподобие Resharper'а.
Однако, меня всегда раздражало, что приходится использовать какие-то сторонние приблуды, в то время как могучий компилятор языка бездельничает. А ведь именно компилятор по определению абсолютно точно разбирает любые выражения языка. Увы, без МП мы не можем его задействовать.
И ещё дело в том, что если разработчики IDE или дополнения к ней не реализовали какую-то проверку, то мы не сможем сделать её сами. Конечно, иногда дополнение можно написать самому, но это почти МП, только присобаченное сбоку.
Греет душу вылупляющийся Roslyn в дотнете. Через несколько лет у нас наверняка будет полноценное метапрограммирование в мэйнстримовом языке (C#).
...
Рейтинг: 0 / 0
11.08.2014, 17:14
    #38717500
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
sphinx_mvnolockyпропущено...


о чем твой громкий лепет? ну да, есть еще php, ruby, Python и даже node.js, но там интырпарайсом и правильными паттернами вроде даже и не пахлоБла-бла-бла...
Ну, и как много "интырпарайса" Вы успели наразрабатывать?
"Правильные паттерны"... Вам бы спеллчекером для начала научиться правильно пользоваться - и только потом к паттернам переходить.
Опять громкий пук в лужу и ноль конкретики


sphinx_mvnolockyкроме ото ехидства, вообще есть что сказать?А Вы уверены, что поймете?
Судя по твоим постам - я вполне уверен, что ты не сможешь ничего объяснить. Давай начнем с твоей попытки выразить ту мысль, которая у тебя, возможно, есть?
...
Рейтинг: 0 / 0
11.08.2014, 17:16
    #38717504
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
petalviksphinx_mvпропущено...
Вообще-то, это сильно зависит от IDE...
Согласен. Некоторые IDE имеют неслабый интеллект, или приобретают его от дополнений, наподобие Resharper'а.
Однако, меня всегда раздражало, что приходится использовать какие-то сторонние приблуды, в то время как могучий компилятор языка бездельничает. А ведь именно компилятор по определению абсолютно точно разбирает любые выражения языка. Увы, без МП мы не можем его задействовать.
И ещё дело в том, что если разработчики IDE или дополнения к ней не реализовали какую-то проверку, то мы не сможем сделать её сами. Конечно, иногда дополнение можно написать самому, но это почти МП, только присобаченное сбоку.
Греет душу вылупляющийся Roslyn в дотнете. Через несколько лет у нас наверняка будет полноценное метапрограммирование в мэйнстримовом языке (C#).

Пипец. Зайчата не умеют упаковывать .sql файлы в ресурсы (.res) как шаг компиляции и редактировать из прямо в Visual Studio/Eclipse/Netbeans/whatewer else


И эти люди еще пытаются учить нас жить?
...
Рейтинг: 0 / 0
11.08.2014, 17:24
    #38717518
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolocky упаковывать .sql файлы в ресурсы (.res) как шаг компиляции и редактировать из прямо в Visual Studio/Eclipse/Netbeans/whatewer else

Это охренительная фича, если она реализована в IDE. А если нет? Без МП, всё - приплыли.
К тому же сам пишешь, что sql не комильфо.
...
Рейтинг: 0 / 0
11.08.2014, 18:03
    #38717553
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
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 текст
...
Рейтинг: 0 / 0
11.08.2014, 18:10
    #38717558
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockysphinx_mvпропущено...
Бла-бла-бла...
Ну, и как много "интырпарайса" Вы успели наразрабатывать?
"Правильные паттерны"... Вам бы спеллчекером для начала научиться правильно пользоваться - и только потом к паттернам переходить.
Опять громкий пук в лужу и ноль конкретикиИ это все, что Вы про "интырпарайс" рассказать можете?
nolockysphinx_mvпропущено...
А Вы уверены, что поймете?
Судя по твоим постам - я вполне уверен, что ты не сможешь ничего объяснить. Давай начнем с твоей попытки выразить ту мысль, которая у тебя, возможно, есть?Вы веткой форума не ошиблись?
ТПэшники обычно в ПТ сидят...
...
Рейтинг: 0 / 0
11.08.2014, 18:20
    #38717564
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockyПишется утилитка, которая берет на входе любой файл, .SQL, да хоть какой, и преобразовывает его в .csharp, .java, .cpp, во что угодно
Это и есть метапрограммирование.
Однако, согласись, что встроенная поддержка в язык гораздо удобнее, чем использование сторонних утилит, конфигов (указать build step) и прочего.

nolockyПросто это вы тут сирые и убогие начали тянуть жалобную песню про упаковку SQL в строки, а я же макнул вас в ваше невежество
Слышь, человече, я давал поводы для хамства?

nolockyпоказав, что SQL тексты можно хранить в отдельных .SQL файлах
Ну надо же, а мужики не знали!


Напомню мою основную мысль: метапрограммирование позволяет (почти) полностью избавиться от паттернов.
...
Рейтинг: 0 / 0
11.08.2014, 18:20
    #38717565
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
sphinx_mvnolockyпропущено...

Опять громкий пук в лужу и ноль конкретикиИ это все, что Вы про "интырпарайс" рассказать можете?

Я могу рассказать очень многое. А вот ты - похоже нет.

sphinx_mvnolockyпропущено...


Судя по твоим постам - я вполне уверен, что ты не сможешь ничего объяснить. Давай начнем с твоей попытки выразить ту мысль, которая у тебя, возможно, есть?Вы веткой форума не ошиблись?
ТПэшники обычно в ПТ сидят...
Ну так и иди туда, чего ты?
...
Рейтинг: 0 / 0
11.08.2014, 18:54
    #38717589
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockysphinx_mvпропущено...
И это все, что Вы про "интырпарайс" рассказать можете?

Я могу рассказать очень многое."Ждем-с..."
...
Рейтинг: 0 / 0
11.08.2014, 19:09
    #38717598
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockyВещь понятная и полезная, испокон веков в ANSI С такое было доступно (идейно, но не синтаксически).

ну скорее в АЛГОЛ-60 и его потомках (вложенные процедуры- передача их параметром вместе с контекстом)

nolockyИли новомодный паттерн шматтерн
какой же он новомодный если смоллтолку уже лет 40
...
Рейтинг: 0 / 0
11.08.2014, 19:11
    #38717601
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
petalviknolockyПишется утилитка, которая берет на входе любой файл, .SQL, да хоть какой, и преобразовывает его в .csharp, .java, .cpp, во что угодно
Это и есть метапрограммирование.
Однако, согласись, что встроенная поддержка в язык гораздо удобнее, чем использование сторонних утилит, конфигов (указать build step) и прочего.
Если утверждать, что метапрограммирование - это когда одни программы пишут другие программы, то да, какое не тупое, но это метапрограммирование.

Хотя я больше склоняюсь с варианту трансляции DSL моделей в непосредственно компилируемый язык - из XML деклараций в Java/C++/Delphi, и т.п.


petalviknolockyПросто это вы тут сирые и убогие начали тянуть жалобную песню про упаковку SQL в строки, а я же макнул вас в ваше невежество
Слышь, человече, я давал поводы для хамства?
Вполне

petalviknolockyпоказав, что SQL тексты можно хранить в отдельных .SQL файлах
Ну надо же, а мужики не знали!
Ты-то не знал. Хотя может ты просто не мужик

petalvikНапомню мою основную мысль: метапрограммирование позволяет (почти) полностью избавиться от паттернов.
Это звучит так-же глупо, как и утверждение, что бег по утрам позволит избавиться от реактивного поноса.

Вещи эти, вообще-то, никак не связаны, и лишь дополняют друг друга, при удачном стечении обстоятельств.
...
Рейтинг: 0 / 0
11.08.2014, 19:14
    #38717604
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
sphinx_mvnolockyпропущено...

Я могу рассказать очень многое."Ждем-с..."

Я тут уже рассказал раз в 20-ть больше, чем ты за всю историю своего существования.
Тебе не видно - ну сиди жди, может прозреешь.
...
Рейтинг: 0 / 0
11.08.2014, 19:16
    #38717606
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
ИзопропилnolockyВещь понятная и полезная, испокон веков в ANSI С такое было доступно (идейно, но не синтаксически).

ну скорее в АЛГОЛ-60 и его потомках (вложенные процедуры- передача их параметром вместе с контекстом)
Это лишь синтаксический сахар. Суть от этого не меняется, это все эти расфуфыренные closure - это лишь синтаксический сахар по передаче параметров в callback, к слову - весьма черезжопный и внешне, и внутренне.

ИзопропилnolockyИли новомодный паттерн шматтерн
какой же он новомодный если смоллтолку уже лет 40
MVVM в смоллтолке не было, тогда у воспаленных сознаний не было такой задачи, как TDD в условиях постоянно меняющегося внешего представления (HTML и прочие CSS рюшки, на которые задолбаешься тесты прикручивать и обновлять их постоянно).
...
Рейтинг: 0 / 0
11.08.2014, 19:29
    #38717610
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Новомодные паттерны и приемы высокого стиля
nolockyЭто лишь синтаксический сахар.
нет.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Новомодные паттерны и приемы высокого стиля / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]