Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига.
Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.
Re: Паттерны суть слабости языков программирования
Здравствуйте, Курилка, Вы писали:
К>Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига. К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.
Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. А что бы каждый раз их не реализовывать — на то есть DSLи и прочие кодогенерации, на которые можно возложить самую рутинную работу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Паттерны суть слабости языков программирования
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. А что бы каждый раз их не реализовывать — на то есть DSLи и прочие кодогенерации, на которые можно возложить самую рутинную работу.
Вопрос в том — а почему язык это не может сделать? Вот и нужны ему костыли типа кодогенераторов, или что-нибудь наподобие AspectJ.
А как бы тебе понравилось использовать описываемый паттерн "Object-oriented class"? Как раз из кодогенератора (препроцессора) и появился C++ на смену C.
Re: Паттерны суть слабости языков программирования
Здравствуйте, Курилка, Вы писали:
К>Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига. К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.
Ну да, слабость в каком-то смысле. В принципе, все программы так или иначе друг на друга похожи: то же слабость. Всё равно типовые решения появляться будут, какой бы язык не был. Скорее даже дело в слабости не самого языка, а инструментария, поставляемого с ним: IDE и различного рода билиотек.
Re[2]: Паттерны суть слабости языков программирования
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать.
А насчёт алфавита:
в рамках "слабых" языков приходится изобретать и использоватьэтот алфавит, т.к. ну нельзя выразить более высокоуровневые абстракции на этих языках (вспоминается блаб П.Грэхэма сразу ).
Re[3]: Паттерны суть слабости языков программирования
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Dr.Gigabit, Вы писали:
DG>>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. К>А насчёт алфавита: К>в рамках "слабых" языков приходится изобретать и использоватьэтот алфавит, т.к. ну нельзя выразить более высокоуровневые абстракции на этих языках (вспоминается блаб П.Грэхэма сразу ).
Думаю, абстракции были и придуманы, потому что в них появилась необходимость. Не будем сейчас делить людей на программистов и индусов, но мне не кажется, что если бы все могли общаться на языке лямбда-исчислений (где, кстати, обычное для ипреративщика именование переменной -- уже синтаксический сахар) это сильно увеличило бы производительность.
Думаю в этом топике не стоит касаться темы маркетинга, т.к. я лично не большой спец, но здается, что серебряная пуля не выгодна никому.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Паттерны суть слабости языков программирования
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Dr.Gigabit, Вы писали:
DG>>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. А что бы каждый раз их не реализовывать — на то есть DSLи и прочие кодогенерации, на которые можно возложить самую рутинную работу.
К>Вопрос в том — а почему язык это не может сделать?
Языки с развитой системой метапрограммирования, такие как Nemerle, это умеют.
зы. Никоим образом не призываю к флейму Nemerle vs all, но это факт.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Паттерны суть слабости языков программирования
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Здравствуйте, Курилка, Вы писали:
К>>Здравствуйте, Dr.Gigabit, Вы писали:
DG>>>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. А что бы каждый раз их не реализовывать — на то есть DSLи и прочие кодогенерации, на которые можно возложить самую рутинную работу.
К>>Вопрос в том — а почему язык это не может сделать?
DG>Языки с развитой системой метапрограммирования, такие как Nemerle, это умеют. DG>зы. Никоим образом не призываю к флейму Nemerle vs all, но это факт.
из all много языков тоже это умеют.
Re[5]: Паттерны суть слабости языков программирования
Здравствуйте, Курилка, Вы писали:
К>Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига. К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.
Давно уже говорилось: наличие устоявшихся паттернов, начиная от for (int i = 0; i < N; ++i) { use(a[i]) } и заканчивая паттернами проектирования, есть прямое следствие бедности языка.
Re[4]: Паттерны суть слабости языков программирования
Здравствуйте, Dr.Gigabit, Вы писали:
DG>Языки с развитой системой метапрограммирования, такие как Nemerle, это умеют. DG>зы. Никоим образом не призываю к флейму Nemerle vs all, но это факт.
Не Немерлом единым жив человек...
Но мысль верная, только вот речь о том, что проще пользоваться этим самым "алфавитом" (хотя далеко не всем), чем использовать более мощные языки, хотя развитие идёт...
Re: Паттерны суть слабости языков программирования
Здравствуйте, Курилка, Вы писали:
К>Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига. К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.
Нет...
Когда-то и сортировки нужно было каждый раз реализовывать...
Паттерны — это просто новый уровень понимания в программировании...
Так же, как когда-то ООП было новым уровнем понимания, так сейчас и паттерны...
Погодите, дойдет эволюция — и паттерны будут в языках...
Между прочим — это и рсдну типа мысль — а не начать ли нам самим об этом думать всерьез, а не на уровне разговоров в форумах...
Каким может быть язык, в котором паттерн является конструкцией языка?
Очевидно, язык должен уметь вводить новые паттерны аналогично функциям и классам...
Библиотека паттернов и сборка проги с паттернами...
Вообще-то нужно внимателоьно почитать книжку "Порождающее программирование" — там в 11-й главе о работах Микрософта оченьт интересные сведения сообщаются...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Паттерны суть слабости языков программирования
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, Курилка, Вы писали: К>>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.
LVV>Нет...
Почему нет? С чем именно ты несогласен? LVV>Когда-то и сортировки нужно было каждый раз реализовывать...
И это не было "костылями", что нельзя было взять готовую библиотечную функцию? LVV>Паттерны — это просто новый уровень понимания в программировании... LVV>Так же, как когда-то ООП было новым уровнем понимания, так сейчас и паттерны...
Не соглашусь, имхо я согласен с автором статьи и объектная ориентация (там, наверное, можно разные аспекты выделить) суть набор паттернов, только вот название появилось после ООП, поэтому и обычно их не выделяют. LVV>Погодите, дойдет эволюция — и паттерны будут в языках...
Они уже есть, см. хотябы упомянутую презентацию Норвига LVV>Между прочим — это и рсдну типа мысль — а не начать ли нам самим об этом думать всерьез, а не на уровне разговоров в форумах... LVV>Каким может быть язык, в котором паттерн является конструкцией языка? LVV>Очевидно, язык должен уметь вводить новые паттерны аналогично функциям и классам... LVV>Библиотека паттернов и сборка проги с паттернами...
Речь о том, что уже есть подобные языки, но вот какой именно использовать для твоей этой "библитеки паттернов" — основание для флейма
Re[7]: Паттерны суть слабости языков программирования
FR>>>из all много языков тоже это умеют.
VD>>"много" — это очень смелая оценка.
FR>То что даже я могу насчитать около десятка это уже много.
В Философии у многих есть нехорошая привычка говорить лозунгами. Так вот должен отметить, что спорить с человеком, который говорит лозунгами, неовзможно по определению. Никто не сомневается в вашем профессионализме, может кто-то даже и 2 десятка насчитать сможет. Но разговор же не об этом, верно? Примеры, аргументы, обмен опытом своим/коллег оп сабжу -- ИМХО, именно за этим большинство сюда и пришло.
А лозунгами говорить вот уже как 15 лет не модно
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Паттерны суть слабости языков программирования
Здравствуйте, Курилка, Вы писали:
К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.
Ну не каждый... Александреску показал как можно реализовывать паттерны один раз.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Паттерны суть слабости языков программирования
Здравствуйте, Dr.Gigabit, Вы писали:
FR>>>>из all много языков тоже это умеют.
VD>>>"много" — это очень смелая оценка.
FR>>То что даже я могу насчитать около десятка это уже много.
DG>В Философии у многих есть нехорошая привычка говорить лозунгами. Так вот должен отметить, что спорить с человеком, который говорит лозунгами, неовзможно по определению. Никто не сомневается в вашем профессионализме, может кто-то даже и 2 десятка насчитать сможет. Но разговор же не об этом, верно? Примеры, аргументы, обмен опытом своим/коллег оп сабжу -- ИМХО, именно за этим большинство сюда и пришло.
Здравствуйте, LaptevVV, Вы писали:
LVV>Каким может быть язык, в котором паттерн является конструкцией языка? LVV>Очевидно, язык должен уметь вводить новые паттерны аналогично функциям и классам... LVV>Библиотека паттернов и сборка проги с паттернами...
Это все равно, что делать самолет наподобие птиц: чтобы крыльями махал.
Ну либо реализация робота, похожего на человека: чтобы стихи с музыкой сочинял и на двух ногах перемещался
Re[2]: Паттерны суть слабости языков программирования
Здравствуйте, LaptevVV, Вы писали:
LVV>Нет... LVV>Когда-то и сортировки нужно было каждый раз реализовывать... LVV>Паттерны — это просто новый уровень понимания в программировании... LVV>Так же, как когда-то ООП было новым уровнем понимания, так сейчас и паттерны... LVV>Погодите, дойдет эволюция — и паттерны будут в языках... LVV>Между прочим — это и рсдну типа мысль — а не начать ли нам самим об этом думать всерьез, а не на уровне разговоров в форумах... LVV>Каким может быть язык, в котором паттерн является конструкцией языка? LVV>Очевидно, язык должен уметь вводить новые паттерны аналогично функциям и классам... LVV>Библиотека паттернов и сборка проги с паттернами...
Вот в теме интеррактивной графики, (в частности GUI) тоже есть свои паттерны. Правда в таком виде они ещё нигде (ненашёл) не появлялись.
В своё время я уже перечислял эти "паттерны визуализации" под названием "способности".
Перечислю некоторые из них чтоб было понятно о чём речь:
Видимость, перемещаемость, масштабируемость, скроллируемость, выравниваемость и т.д. (Кстати, если кто хочет продолжить этот список — милости просим.)
Каждая такая способность встраивается в класс в нескольких точках так-же как и паттерн. Это их общее свойство.
Догадываюсь, что так обстоит дело в каждой предметной области.
Так что тема эта ещё более актуальна, чем это представляется на первый взгляд.