Паттерны суть слабости языков программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.09.06 15:00
Оценка: 49 (5) +5
Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига.
Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.
Re: Паттерны суть слабости языков программирования
От: Dr.Gigabit  
Дата: 24.09.06 15:29
Оценка: +1
Здравствуйте, Курилка, Вы писали:

К>Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига.

К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.

Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. А что бы каждый раз их не реализовывать — на то есть DSLи и прочие кодогенерации, на которые можно возложить самую рутинную работу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Паттерны суть слабости языков программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.09.06 15:43
Оценка: +1
Здравствуйте, Dr.Gigabit, Вы писали:

DG>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. А что бы каждый раз их не реализовывать — на то есть DSLи и прочие кодогенерации, на которые можно возложить самую рутинную работу.


Вопрос в том — а почему язык это не может сделать? Вот и нужны ему костыли типа кодогенераторов, или что-нибудь наподобие AspectJ.
А как бы тебе понравилось использовать описываемый паттерн "Object-oriented class"? Как раз из кодогенератора (препроцессора) и появился C++ на смену C.
Re: Паттерны суть слабости языков программирования
От: FDSC Россия consp11.github.io блог
Дата: 24.09.06 15:46
Оценка: +2
Здравствуйте, Курилка, Вы писали:

К>Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига.

К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.

Ну да, слабость в каком-то смысле. В принципе, все программы так или иначе друг на друга похожи: то же слабость. Всё равно типовые решения появляться будут, какой бы язык не был. Скорее даже дело в слабости не самого языка, а инструментария, поставляемого с ним: IDE и различного рода билиотек.
Re[2]: Паттерны суть слабости языков программирования
От: FR  
Дата: 24.09.06 15:49
Оценка:
Здравствуйте, Dr.Gigabit, Вы писали:

DG>Паттерны, это, ИМХО, больше алфавит


Скорее словарик типовых фраз.
Re[2]: Паттерны суть слабости языков программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.09.06 15:50
Оценка:
Здравствуйте, Dr.Gigabit, Вы писали:

DG>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать.

А насчёт алфавита:
в рамках "слабых" языков приходится изобретать и использоватьэтот алфавит, т.к. ну нельзя выразить более высокоуровневые абстракции на этих языках (вспоминается блаб П.Грэхэма сразу ).
Re[3]: Паттерны суть слабости языков программирования
От: Dr.Gigabit  
Дата: 24.09.06 16:01
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, Dr.Gigabit, Вы писали:


DG>>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать.

К>А насчёт алфавита:
К>в рамках "слабых" языков приходится изобретать и использоватьэтот алфавит, т.к. ну нельзя выразить более высокоуровневые абстракции на этих языках (вспоминается блаб П.Грэхэма сразу ).

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

Думаю в этом топике не стоит касаться темы маркетинга, т.к. я лично не большой спец, но здается, что серебряная пуля не выгодна никому.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Паттерны суть слабости языков программирования
От: Dr.Gigabit  
Дата: 24.09.06 16:03
Оценка: +1
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, Dr.Gigabit, Вы писали:


DG>>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. А что бы каждый раз их не реализовывать — на то есть DSLи и прочие кодогенерации, на которые можно возложить самую рутинную работу.


К>Вопрос в том — а почему язык это не может сделать?


Языки с развитой системой метапрограммирования, такие как Nemerle, это умеют.
зы. Никоим образом не призываю к флейму Nemerle vs all, но это факт.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Паттерны суть слабости языков программирования
От: FR  
Дата: 24.09.06 16:08
Оценка: 1 (1) +1
Здравствуйте, Dr.Gigabit, Вы писали:

DG>Здравствуйте, Курилка, Вы писали:


К>>Здравствуйте, Dr.Gigabit, Вы писали:


DG>>>Паттерны, это, ИМХО, больше алфавит, достаточно удобный надо признать. А что бы каждый раз их не реализовывать — на то есть DSLи и прочие кодогенерации, на которые можно возложить самую рутинную работу.


К>>Вопрос в том — а почему язык это не может сделать?


DG>Языки с развитой системой метапрограммирования, такие как Nemerle, это умеют.

DG>зы. Никоим образом не призываю к флейму Nemerle vs all, но это факт.

из all много языков тоже это умеют.
Re[5]: Паттерны суть слабости языков программирования
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.09.06 21:44
Оценка:
Здравствуйте, FR, Вы писали:

FR>из all много языков тоже это умеют.


"много" — это очень смелая оценка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Паттерны суть слабости языков программирования
От: FR  
Дата: 25.09.06 05:18
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>из all много языков тоже это умеют.


VD>"много" — это очень смелая оценка.


То что даже я могу насчитать около десятка это уже много.
Re: Паттерны суть слабости языков программирования
От: Кодёнок  
Дата: 25.09.06 07:22
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига.

К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.

Давно уже говорилось: наличие устоявшихся паттернов, начиная от for (int i = 0; i < N; ++i) { use(a[i]) } и заканчивая паттернами проектирования, есть прямое следствие бедности языка.
Re[4]: Паттерны суть слабости языков программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 25.09.06 08:28
Оценка:
Здравствуйте, Dr.Gigabit, Вы писали:

DG>Языки с развитой системой метапрограммирования, такие как Nemerle, это умеют.

DG>зы. Никоим образом не призываю к флейму Nemerle vs all, но это факт.

Не Немерлом единым жив человек...
Но мысль верная, только вот речь о том, что проще пользоваться этим самым "алфавитом" (хотя далеко не всем), чем использовать более мощные языки, хотя развитие идёт...
Re: Паттерны суть слабости языков программирования
От: LaptevVV Россия  
Дата: 25.09.06 08:28
Оценка: 23 (4) +1
Здравствуйте, Курилка, Вы писали:

К>Этот вопрос уже обсуждался несколько раз на РСДН, а Марк Доминус в своей статье Design patterns of 1972 описал это на мой взгляд довольно подробно. Упомянул он и презентацию Design Patterns in Dynamic Languages Питера Норвига.

К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.

Нет...
Когда-то и сортировки нужно было каждый раз реализовывать...
Паттерны — это просто новый уровень понимания в программировании...
Так же, как когда-то ООП было новым уровнем понимания, так сейчас и паттерны...
Погодите, дойдет эволюция — и паттерны будут в языках...
Между прочим — это и рсдну типа мысль — а не начать ли нам самим об этом думать всерьез, а не на уровне разговоров в форумах...
Каким может быть язык, в котором паттерн является конструкцией языка?
Очевидно, язык должен уметь вводить новые паттерны аналогично функциям и классам...
Библиотека паттернов и сборка проги с паттернами...

Вообще-то нужно внимателоьно почитать книжку "Порождающее программирование" — там в 11-й главе о работах Микрософта оченьт интересные сведения сообщаются...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Паттерны суть слабости языков программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 25.09.06 08:58
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Курилка, Вы писали:

К>>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.

LVV>Нет...

Почему нет? С чем именно ты несогласен?
LVV>Когда-то и сортировки нужно было каждый раз реализовывать...
И это не было "костылями", что нельзя было взять готовую библиотечную функцию?
LVV>Паттерны — это просто новый уровень понимания в программировании...
LVV>Так же, как когда-то ООП было новым уровнем понимания, так сейчас и паттерны...
Не соглашусь, имхо я согласен с автором статьи и объектная ориентация (там, наверное, можно разные аспекты выделить) суть набор паттернов, только вот название появилось после ООП, поэтому и обычно их не выделяют.
LVV>Погодите, дойдет эволюция — и паттерны будут в языках...
Они уже есть, см. хотябы упомянутую презентацию Норвига
LVV>Между прочим — это и рсдну типа мысль — а не начать ли нам самим об этом думать всерьез, а не на уровне разговоров в форумах...
LVV>Каким может быть язык, в котором паттерн является конструкцией языка?
LVV>Очевидно, язык должен уметь вводить новые паттерны аналогично функциям и классам...
LVV>Библиотека паттернов и сборка проги с паттернами...
Речь о том, что уже есть подобные языки, но вот какой именно использовать для твоей этой "библитеки паттернов" — основание для флейма
Re[7]: Паттерны суть слабости языков программирования
От: Dr.Gigabit  
Дата: 25.09.06 12:58
Оценка:
FR>>>из all много языков тоже это умеют.

VD>>"много" — это очень смелая оценка.


FR>То что даже я могу насчитать около десятка это уже много.


В Философии у многих есть нехорошая привычка говорить лозунгами. Так вот должен отметить, что спорить с человеком, который говорит лозунгами, неовзможно по определению. Никто не сомневается в вашем профессионализме, может кто-то даже и 2 десятка насчитать сможет. Но разговор же не об этом, верно? Примеры, аргументы, обмен опытом своим/коллег оп сабжу -- ИМХО, именно за этим большинство сюда и пришло.

А лозунгами говорить вот уже как 15 лет не модно
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Паттерны суть слабости языков программирования
От: gid_vvp  
Дата: 25.09.06 12:58
Оценка: -2
Здравствуйте, Курилка, Вы писали:

К>Основная, на мой взгляд, мысль статьи : паттерны это хорошо, но по сути это костыли, т.к. каждый раз паттерн нужно реализовывать снова и снова.


Ну не каждый... Александреску показал как можно реализовывать паттерны один раз.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Паттерны суть слабости языков программирования
От: FR  
Дата: 25.09.06 13:21
Оценка: +5 -1
Здравствуйте, Dr.Gigabit, Вы писали:

FR>>>>из all много языков тоже это умеют.


VD>>>"много" — это очень смелая оценка.


FR>>То что даже я могу насчитать около десятка это уже много.


DG>В Философии у многих есть нехорошая привычка говорить лозунгами. Так вот должен отметить, что спорить с человеком, который говорит лозунгами, неовзможно по определению. Никто не сомневается в вашем профессионализме, может кто-то даже и 2 десятка насчитать сможет. Но разговор же не об этом, верно? Примеры, аргументы, обмен опытом своим/коллег оп сабжу -- ИМХО, именно за этим большинство сюда и пришло.


Тебе что список нужен?
Держи:

lisp
schema
dylan
rebol
prolog
forth
smalltalk
ruby
python
erlang
ocaml
haskell
clean
scala
refal


DG>А лозунгами говорить вот уже как 15 лет не модно


Да ладно не модно, сейчас с этим еще модней, чтобы это увидеть достаточно включить телевизор
Re[2]: Паттерны суть слабости языков программирования
От: savinov Германия https://github.com/asavinov
Дата: 25.09.06 13:40
Оценка: -1
Здравствуйте, LaptevVV, Вы писали:

LVV>Каким может быть язык, в котором паттерн является конструкцией языка?

LVV>Очевидно, язык должен уметь вводить новые паттерны аналогично функциям и классам...
LVV>Библиотека паттернов и сборка проги с паттернами...

Это все равно, что делать самолет наподобие птиц: чтобы крыльями махал.
Ну либо реализация робота, похожего на человека: чтобы стихи с музыкой сочинял и на двух ногах перемещался
Re[2]: Паттерны суть слабости языков программирования
От: WoldemaR Россия  
Дата: 25.09.06 13:53
Оценка: 2 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Нет...

LVV>Когда-то и сортировки нужно было каждый раз реализовывать...
LVV>Паттерны — это просто новый уровень понимания в программировании...
LVV>Так же, как когда-то ООП было новым уровнем понимания, так сейчас и паттерны...
LVV>Погодите, дойдет эволюция — и паттерны будут в языках...
LVV>Между прочим — это и рсдну типа мысль — а не начать ли нам самим об этом думать всерьез, а не на уровне разговоров в форумах...
LVV>Каким может быть язык, в котором паттерн является конструкцией языка?
LVV>Очевидно, язык должен уметь вводить новые паттерны аналогично функциям и классам...
LVV>Библиотека паттернов и сборка проги с паттернами...


Вот в теме интеррактивной графики, (в частности GUI) тоже есть свои паттерны. Правда в таком виде они ещё нигде (ненашёл) не появлялись.

В своё время я уже перечислял эти "паттерны визуализации" под названием "способности".
Перечислю некоторые из них чтоб было понятно о чём речь:
Видимость, перемещаемость, масштабируемость, скроллируемость, выравниваемость и т.д. (Кстати, если кто хочет продолжить этот список — милости просим.)

Каждая такая способность встраивается в класс в нескольких точках так-же как и паттерн. Это их общее свойство.

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