Re[54]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 09:19
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Техника называется "static chain", изобрели ее около 1964-го года Рэндалл и Рассел, описана в Algol 60 Implementation — B.Randell & L.J.Russell, Academic Press, 1964.

K>А технику "замыкание" изобрел в том же году Ландин и реализовал впервые в SECD.

static chain всегда частный случай замыкания. То есть вложеные процедуры есть замыкания. Замыкания не обязательно вложеные процедуры. Можешь опровергнуть ?
Re[58]: Как мало людей понимает ООП...
От: vdimas Россия  
Дата: 22.08.12 10:04
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Вот-вот. А отсутствие локальных функций означает количество кода примерно в 10 раз больше того, что ты показал.


Просто шедеврально!
Я ведь и написал пример в отсутствии локальных функций. Уууппссс??? ))


==============
Всё, закругляюсь. Ни ты, ни плюсующий тебе посетитель не в состоянии прочитать малюсенький отрывок кода из десятка строчек.
Re[59]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 10:09
Оценка: :)
Здравствуйте, vdimas, Вы писали:

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


I>>Вот-вот. А отсутствие локальных функций означает количество кода примерно в 10 раз больше того, что ты показал.


V>Просто шедеврально!

V>Я ведь и написал пример в отсутствии локальных функций. Уууппссс??? ))

Написал, но твой код в принципе не компилируемый, похож больше на абстрактый псевдокод.
Re[21]: Как мало людей понимает ООП...
От: Klapaucius  
Дата: 22.08.12 10:38
Оценка:
Здравствуйте, Ikemefula, Вы писали:

K>>Ну а причем тут смолток? Он более-менее оформился лет через 10 после "мейнстримной" разновидности ООП.

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

Как раз почти все известные ООП-артефакты произошли скорее от Симулы, зато вся ООП-идеология от Смолтока. Создатели Симулы никакого "ООП" не изобретали, они разработали необходимый им набор относительно низкоуровневых инструментов на основе которого они построили более высокоуровневые инструменты для дискретно-событийного моделирования. Никаких претензий на "парадигмы" и "философии" у них не было. Вот только современные мейнстримные ООЯ похожи на Симулу (типичный мейнстрим ООЯ отличается от симулы не больше, чем от другого типичного мейнстрим ООЯ), а не на Смолток.

Рассуждения о "естественности" ООП в свете этого достаточно забавны, ведь ООП — это философская база, подведенная постфактум под имеющийся инстумент, разрабатываемый без всякой философии.

K>>Смолток — это не "изначальное древнее ООП", а возрождение умирающего старого и реформация неправильного ООП,

I>То есть, старое неправильное это и есть симуловское ?

Да, симуловское, оно же и мейнстримное. Тут ирония, связанная с тем, что реформированное (мейнстрим-симулалайк ООП) пережило результат своей реформации (Смолток). Впрочем Кей вообще не считает ООП то, что в мейнстриме называется ООП-ом.

I>Если так, то все в порядке. В смолтоковском появились практически все что нужно — философич, методология, паттерны, юниттесты, это и есть true ООП. Вопрос кто древнее не стоит


Имеет место быть адаптация, когда ритуал требует пальмовые ветви, но за неимением пальм используются ветви вербы, а наряжают елки.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[55]: Как мало людей понимает ООП...
От: Klapaucius  
Дата: 22.08.12 10:55
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>static chain всегда частный случай замыкания.


Не частный случай. Static chain позволяет реализовывать функции со свободными переменными, используя стек, UFP не решает, функции первоклассными не делает. Замыкание — это техника реализации первоклассных функций, подразумевает размещение данных в куче и требует управления временем жизни этого блока в куче.

Техники разные, преимущества и недостатки — разные, результат использования — разный. Не вижу никаких бенефитов от проведения аналогий — наоборот, будут только путаница и пустопорожние флеймы. Аналогия очевидно вредна: использование вложенных функций как замыканий приводит к UB, а именование их замыканиями в разговоре с другим программистом приводит к недопониманию и проблемам с коммуникацией.

I>То есть вложеные процедуры есть замыкания.


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

I>Замыкания не обязательно вложеные процедуры.


И на что они "замыкаются", если никуда не вложены?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[22]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 10:56
Оценка:
Здравствуйте, Klapaucius, Вы писали:

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


K>>>Ну а причем тут смолток? Он более-менее оформился лет через 10 после "мейнстримной" разновидности ООП.

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

K>Как раз почти все известные ООП-артефакты произошли скорее от Симулы, зато вся ООП-идеология от Смолтока. Создатели Симулы никакого "ООП" не изобретали, они разработали необходимый им набор относительно низкоуровневых инструментов на основе которого они построили более высокоуровневые инструменты для дискретно-событийного моделирования. Никаких претензий на "парадигмы" и "философии" у них не было. Вот только современные мейнстримные ООЯ похожи на Симулу (типичный мейнстрим ООЯ отличается от симулы не больше, чем от другого типичного мейнстрим ООЯ), а не на Смолток.


"вся философия и методология ООП, паттерны и юнит-тесты и т.д., придуманные смолтокерами не пропали" Мне кажется тут надо определиться.

JS, питон и руби это хоришие примеры мейнстримных языков ?

K>Рассуждения о "естественности" ООП в свете этого достаточно забавны, ведь ООП — это философская база, подведенная постфактум под имеющийся инстумент, разрабатываемый без всякой философии.


Это неважно. Любая теория развивается до тех пор пока пригодня для решения насущных задач.

K>>>Смолток — это не "изначальное древнее ООП", а возрождение умирающего старого и реформация неправильного ООП,

I>>То есть, старое неправильное это и есть симуловское ?

K>Да, симуловское, оно же и мейнстримное. Тут ирония, связанная с тем, что реформированное (мейнстрим-симулалайк ООП) пережило результат своей реформации (Смолток). Впрочем Кей вообще не считает ООП то, что в мейнстриме называется ООП-ом.


I>>Если так, то все в порядке. В смолтоковском появились практически все что нужно — философич, методология, паттерны, юниттесты, это и есть true ООП. Вопрос кто древнее не стоит


K>Имеет место быть адаптация, когда ритуал требует пальмовые ветви, но за неимением пальм используются ветви вербы, а наряжают елки.
Re[22]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 10:57
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Да, симуловское, оно же и мейнстримное. Тут ирония, связанная с тем, что реформированное (мейнстрим-симулалайк ООП) пережило результат своей реформации (Смолток). Впрочем Кей вообще не считает ООП то, что в мейнстриме называется ООП-ом.


Правильно, потому что там симуловская модель которую ты сам назвал старым и неправильным Мне только непонятно, почему в одном случае ты за ООП считаешь язык, а в другом целую пачку языков Смалтолк сдох, зато есть JS, питон, руби, objective c и тд. Симула тоже сдохла, вместо неё С++, С#, Java и прочий мусор.
Re[56]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 11:06
Оценка:
Здравствуйте, Klapaucius, Вы писали:

I>>static chain всегда частный случай замыкания.


K>Не частный случай. Static chain позволяет реализовывать функции со свободными переменными, используя стек, UFP не решает, функции первоклассными не делает. Замыкание — это техника реализации первоклассных функций, подразумевает размещение данных в куче и требует управления временем жизни этого блока в куче.


А если язык не умеет ПФ, то отличить замыкание от static chain как минимум невозможно.

K>Техники разные, преимущества и недостатки — разные, результат использования — разный. Не вижу никаких бенефитов от проведения аналогий — наоборот, будут только путаница и пустопорожние флеймы. Аналогия очевидно вредна: использование вложенных функций как замыканий приводит к UB, а именование их замыканиями в разговоре с другим программистом приводит к недопониманию и проблемам с коммуникацией.


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

I>>То есть вложеные процедуры есть замыкания.


K>Замыкания — это либо пара из блока данных в куче и кода функции (техника), либо лямбда со свободными переменными (в противоположность комбинатору, у которого все переменные связаны), паскалевско-алголовские вложенные функции ни тем ни другим не являются.


Можно рассматривать просто как оптимизацию, поскольку язык запрещает передавать функции наверх.

I>>Замыкания не обязательно вложеные процедуры.


K>И на что они "замыкаются", если никуда не вложены?


На пустой контекст.
Re[57]: Как мало людей понимает ООП...
От: Klapaucius  
Дата: 22.08.12 11:51
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>А если язык не умеет ПФ, то отличить замыкание от static chain как минимум невозможно.


Не нужно ставить телегу впереди лошади — неумение ПФ — это и есть наблюдаемое отличие мужду техниками. Другое отличие — одна техника использует только стек, а второй нужна куча и автоматическое управление памятью: GC, счетчики ссылок, регионы и т.д.

I>UB это следствие хака, обход возможностей языка.


Ошибочная аналогия с замыканием — это и есть мотивация для хака. Из аналогии следует некоторая возможность, которую "хакер" и пытается реализовать.

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


Это и есть проблема с коммуникацией. Если бы одного мнения придерживался один человек, а другого — 100, то у сообщества не было бы проблемы с коммуникацией. Проблемы были бы только у этого одного.

K>>Замыкания — это либо пара из блока данных в куче и кода функции (техника), либо лямбда со свободными переменными (в противоположность комбинатору, у которого все переменные связаны), паскалевско-алголовские вложенные функции ни тем ни другим не являются.

I>Можно рассматривать просто как оптимизацию, поскольку язык запрещает передавать функции наверх.

Еще раз. Либо это конкретная техника — тогда проверяем наличие блоков данных в куче. Их нет — след. не замыкание.
Если имеется в виду лямбда со свободными переменными — проверяем, является ли вложенная функция "засахаренной" лямбдой. Передавать "наверх" нельзя — значит не является. Итого не является замыканием в обоих смыслах.

K>>И на что они "замыкаются", если никуда не вложены?

I>На пустой контекст.

Теперь еще и пустой контекст какой-то появился. Что такое "пустой контекст"?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[23]: Как мало людей понимает ООП...
От: Klapaucius  
Дата: 22.08.12 12:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>"вся философия и методология ООП, паттерны и юнит-тесты и т.д., придуманные смолтокерами не пропали" Мне кажется тут надо определиться.


Я же говорю — они были адаптированы под группу языков, которые большинством изобретателей вышеперечисленных и ООЯ-то не считаются.

I>JS, питон и руби это хоришие примеры мейнстримных языков ?


JS — мейнстрим и в каком-то смысле испытал влиание self. Питон и Руби не мейнстрим. В случае Руби влияние smalltalk есть, в случае питона я его в упор не вижу.

K>>Рассуждения о "естественности" ООП в свете этого достаточно забавны, ведь ООП — это философская база, подведенная постфактум под имеющийся инстумент, разрабатываемый без всякой философии.

I>Это неважно. Любая теория развивается до тех пор пока пригодня для решения насущных задач.

Речь идет о направлении развития. Если бы философия и "естественность" было первичным — появилась бы сначала идея, а потом реализация. И были бы сложности с реализацией. Но первична была реализация — а идея подведена в качестве базы позднее. Мой пойнт в том, что нет вопроса об естественности, если по факту идея произошла из особенностей реализации фреймворка для дискретно-событийного моделирования. И именно это направление — причина успешного распространения симулалайк-ООП и главное его конкурентное преимущество.

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


Справедливости ради, неправильным его назвал Кей, а я не считаю, что одно из них правильнее другого.

I>Мне только непонятно, почему в одном случае ты за ООП считаешь язык, а в другом целую пачку языков Смалтолк сдох, зато есть JS, питон, руби, objective c и тд. Симула тоже сдохла, вместо неё С++, С#, Java и прочий мусор.


Смолток — тоже целая куча языков с кучей последователей. И objective c еще один язык действительно испытавший влияние смолтока. Только в случае "кучи смолтоков" мы не имеем "плотного кластера" — это языки, мягко говоря, друг на друга не похожие, варьирующиеся от обджектив-си, до эрланга. И в мейнстриме из них один два и все. В случае мейнстрим-ООП языки похожи, они практически "клоны" симулы, особенно по состоянию на конец 90-х и начала 2000-х, когда всякие ФП-фичи типа лямбд, параметрического полиморфизма и иммутабельных "объектов" не стало модно в такие языки добавлять.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[58]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 12:12
Оценка:
Здравствуйте, Klapaucius, Вы писали:

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


I>>А если язык не умеет ПФ, то отличить замыкание от static chain как минимум невозможно.


K>Не нужно ставить телегу впереди лошади — неумение ПФ — это и есть наблюдаемое отличие мужду техниками.


И давно замыкания определяются через ПФ ? Если понимать замыкания как способ реализации языковых фич, то все понятно — есть ПФ, значит должен быть реализован общий случай. Нет ПФ — достаточно и частного, т.е. оптимизируем как угодно.

>Другое отличие — одна техника использует только стек, а второй нужна куча и автоматическое управление памятью: GC, счетчики ссылок, регионы и т.д.


не важно, это особенности реализации и оптимизации.

I>>UB это следствие хака, обход возможностей языка.


K>Ошибочная аналогия с замыканием — это и есть мотивация для хака. Из аналогии следует некоторая возможность, которую "хакер" и пытается реализовать.


Если человек не понимает что такое частный случай, а что общий, то у него кругом будут мотивации для хаков, не тольк здесь.

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


K>Это и есть проблема с коммуникацией. Если бы одного мнения придерживался один человек, а другого — 100, то у сообщества не было бы проблемы с коммуникацией. Проблемы были бы только у этого одного.


То есть, если моего мнения будут придерживаться все, то проблемы в коммуникации будут. А если твоего — то нет. Так что ли ?

I>>Можно рассматривать просто как оптимизацию, поскольку язык запрещает передавать функции наверх.


K>Еще раз. Либо это конкретная техника — тогда проверяем наличие блоков данных в куче. Их нет — след. не замыкание.


Это детали реализации. Есть какая жОсткая спецификация, как должны реализовываться замыкания ?

K>Если имеется в виду лямбда со свободными переменными — проверяем, является ли вложенная функция "засахаренной" лямбдой. Передавать "наверх" нельзя — значит не является. Итого не является замыканием в обоих смыслах.


Передавать вверх == фича языка. У нас любой язык это минимальный набор фич (эффектов) которые нас интересуют. Нет фичи — нет и её поддержки. Это нормально.

K>>>И на что они "замыкаются", если никуда не вложены?

I>>На пустой контекст.

K>Теперь еще и пустой контекст какой-то появился. Что такое "пустой контекст"?


"environment for the non-local variables" — т.е. количество variables == 0
Re[24]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 12:28
Оценка:
Здравствуйте, Klapaucius, Вы писали:

I>>JS, питон и руби это хоришие примеры мейнстримных языков ?


K>JS — мейнстрим и в каком-то смысле испытал влиание self. Питон и Руби не мейнстрим. В случае Руби влияние smalltalk есть, в случае питона я его в упор не вижу.


Это почему питон и руби не мейнстрим ? В питоне ровно то же ООП что и в смалтоке, разная только реализация

K>>>Рассуждения о "естественности" ООП в свете этого достаточно забавны, ведь ООП — это философская база, подведенная постфактум под имеющийся инстумент, разрабатываемый без всякой философии.

I>>Это неважно. Любая теория развивается до тех пор пока пригодня для решения насущных задач.

K>Речь идет о направлении развития. Если бы философия и "естественность" было первичным — появилась бы сначала идея, а потом реализация. И были бы сложности с реализацией. Но первична была реализация — а идея подведена в качестве базы позднее.


Так вообще везде, в физике например и вобще где угодно. Заметили эффект, изучили свойства, подобрали модель, нашли применение.

>Мой пойнт в том, что нет вопроса об естественности, если по факту идея произошла из особенностей реализации фреймворка для дискретно-событийного моделирования. И именно это направление — причина успешного распространения симулалайк-ООП и главное его конкурентное преимущество.


Распрострение языков что я перечислил вообще говоря показывает сильную ограниченность этого ООП. А проблемы с дизайном у людей которые исповедуют это ООП как общий тренд показывает что преимущество когда то бло, но пропало

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


K>Справедливости ради, неправильным его назвал Кей, а я не считаю, что одно из них правильнее другого.


Одно ты назвал старым и неправильным, другое — его реформацией То есть, все что ты хочешь сказать, что неправильное, и реформация неправильного суть одинаково неправильны ? Тогда выходит тебе не нравится ООП вообще, какое они ни было

I>>Мне только непонятно, почему в одном случае ты за ООП считаешь язык, а в другом целую пачку языков Смалтолк сдох, зато есть JS, питон, руби, objective c и тд. Симула тоже сдохла, вместо неё С++, С#, Java и прочий мусор.


K>Смолток — тоже целая куча языков с кучей последователей. И objective c еще один язык действительно испытавший влияние смолтока. Только в случае "кучи смолтоков" мы не имеем "плотного кластера" — это языки, мягко говоря, друг на друга не похожие, варьирующиеся от обджектив-си, до эрланга. И в мейнстриме из них один два и все.


А для чего тебе "плотный кластер", на что это влияет ?

>В случае мейнстрим-ООП языки похожи, они практически "клоны" симулы, особенно по состоянию на конец 90-х и начала 2000-х, когда всякие ФП-фичи типа лямбд, параметрического полиморфизма и иммутабельных "объектов" не стало модно в такие языки добавлять.


Меня интересует как сейчас, а не как было. С динамиками в C# вообще все шоколадно — чисто по смалтоковски можно высекать.
Re[59]: Как мало людей понимает ООП...
От: Klapaucius  
Дата: 22.08.12 12:44
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


На колу мочало — начинай сказку сначала:

Не нужно ставить телегу впереди лошади — неумение ПФ — это и есть наблюдаемое отличие мужду техниками.


>>Другое отличие — одна техника использует только стек, а второй нужна куча и автоматическое управление памятью: GC, счетчики ссылок, регионы и т.д.

I>не важно, это особенности реализации и оптимизации.

Оптимизация тут не при чем, а реализация важна, потому что она и обсуждается.

I>То есть, если моего мнения будут придерживаться все, то проблемы в коммуникации будут. А если твоего — то нет. Так что ли ?


Если определение общепринято — проблем с коммуникацией нет, в противном случае проблемы есть. От того какое именно определение общепринято это никак не зависит.

I>Это детали реализации.


Обсуждаемое значение слова "замыкание" — это название детали реализации.

I>Передавать вверх == фича языка. У нас любой язык это минимальный набор фич (эффектов) которые нас интересуют. Нет фичи — нет и её поддержки. Это нормально.


В реальном мире языки имеют не "набор фич (эффектов) которые нас интересуют", а некоторое его подмножество, из-за ограничений, накладываемых проблемами реализации. Другими словами, мы имеем не те фичи, которые нам нужны, а те из них, что можем себе позволить. Поэтому все наоборот: нет поддержки — нет и фичи. Вот это — нормально. А то что вы описали — это какой-то платоновский идеализм, в котором реализация — это тень фичи.

K>>>>И на что они "замыкаются", если никуда не вложены?

I>>>На пустой контекст.
K>>Теперь еще и пустой контекст какой-то появился. Что такое "пустой контекст"?
I>"environment for the non-local variables" — т.е. количество variables == 0

Да, а каждый лысый — волосатый, просто с "пустой прической".
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[25]: Как мало людей понимает ООП...
От: Klapaucius  
Дата: 22.08.12 13:06
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Это почему питон и руби не мейнстрим ?


По факту.

I>В питоне ровно то же ООП что и в смалтоке, разная только реализация


В смолтоке объекты — основной строительный блок языка. В питоне — они просто "припарка" к структурному языку — ядру. Как в симуле и в яве.

I>Так вообще везде, в физике например и вобще где угодно. Заметили эффект, изучили свойства, подобрали модель, нашли применение.


В физике "и везде" бывает и наоборот — по подобранной модели предсказали эффект — обнаружили его, сопоставили свойства с предсказанными, не опровергли модель. Но аналогия с физикой ложная. Физика изучает реальный мир, а ООП — инженерная методика (это в лучшем случае), она ничего кроме себя самой не изучает.

I>Распрострение языков что я перечислил вообще говоря показывает сильную ограниченность этого ООП.


Эта "сильная ограниченность" и является конкурентным преимуществом.

I>А проблемы с дизайном у людей которые исповедуют это ООП как общий тренд показывает что преимущество когда то бло, но пропало


А проблемы с дизайном прямое следствие идеологии, которая от смолтока идет.

I>Одно ты назвал старым и неправильным, другое — его реформацией То есть, все что ты хочешь сказать, что неправильное, и реформация неправильного суть одинаково неправильны ?


Да. И я иронизирую над "правильным реформированным ООП" смолтокеров потому, что оно не решило проблем ООП, но создало новые проблемы как раз с тем, с чем у ООП первоначально было все хорошо — простотой реализации. Формально, конечно, реализовать смолток проще — наивная реализация чуть ли не на один экран поместится. Вот только практически полезная реализация — это настоящий рокет сайенс.

I>Тогда выходит тебе не нравится ООП вообще, какое они ни было


Мне вообще все не нравится, а ООП — побольше среднего прочего.

I>А для чего тебе "плотный кластер", на что это влияет ?


Это показатель жизнеспособности идеи, если можно и через 50 лет "продавать" то же самое, но с перламутровыми пуговицами.

I>Меня интересует как сейчас, а не как было. С динамиками в C# вообще все шоколадно — чисто по смалтоковски можно высекать.


До смолтока C#-у как до Луны. И это, кстати, не недостаток.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[60]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 13:20
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>На колу мочало — начинай сказку сначала:

K>

K>Не нужно ставить телегу впереди лошади — неумение ПФ — это и есть наблюдаемое отличие мужду техниками.


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

K>В реальном мире языки имеют не "набор фич (эффектов) которые нас интересуют", а некоторое его подмножество, из-за ограничений, накладываемых проблемами реализации. Другими словами, мы имеем не те фичи, которые нам нужны, а те из них, что можем себе позволить. Поэтому все наоборот: нет поддержки — нет и фичи. Вот это — нормально. А то что вы описали — это какой-то платоновский идеализм, в котором реализация — это тень фичи.


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

I>>>>На пустой контекст.

K>>>Теперь еще и пустой контекст какой-то появился. Что такое "пустой контекст"?
I>>"environment for the non-local variables" — т.е. количество variables == 0

K>Да, а каждый лысый — волосатый, просто с "пустой прической".


лысый это человек у котрого растительность на голове удовлетворяет определенному критерию. Ничего смешного, это математика.
Re[26]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.08.12 13:44
Оценка:
Здравствуйте, Klapaucius, Вы писали:

I>>Это почему питон и руби не мейнстрим ?


K>По факту.


Так и запишем, что у тебя нет даже минимального объяснения а только "по факту" и твои рассуждения на счет мейнтсримности и популярности можно игнорировать.

I>>В питоне ровно то же ООП что и в смалтоке, разная только реализация


K>В смолтоке объекты — основной строительный блок языка. В питоне — они просто "припарка" к структурному языку — ядру. Как в симуле и в яве.


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

I>>Так вообще везде, в физике например и вобще где угодно. Заметили эффект, изучили свойства, подобрали модель, нашли применение.


K>В физике "и везде" бывает и наоборот — по подобранной модели предсказали эффект — обнаружили его, сопоставили свойства с предсказанными, не опровергли модель. Но аналогия с физикой ложная. Физика изучает реальный мир, а ООП — инженерная методика (это в лучшем случае), она ничего кроме себя самой не изучает.


Здесь тож самое — изучение модели позволяет предсказывать эффекты. Есть модель — можно и эффекты предсказывать.

I>>Распрострение языков что я перечислил вообще говоря показывает сильную ограниченность этого ООП.


K>Эта "сильная ограниченность" и является конкурентным преимуществом.


Ты почему то ничего не говоришь про задачи у тебя популярность растет сама по себе, как будто является свойством семейства языков.
ЯП появились как инструмент решения задач. раньше это в основном обработка данных, отсюда неудивительно что популярная парадигма будет data-centric, что вобщем то и есть симуловское ООП.
С ростом сложности софта, которая ка известно растет нелинейно, data-centric себя исчерпал. Появились сложные задачи не ориентированые на обработку данных. Отсюда понятно, что популярными будут языки ориентированые на новые задачи, например — взаимодействие, вычисления самой разной природы и тд и тд.

Смалтоковское ООП оно полностью завязано на поведение и взаимодействие. В data-centriс это тоже можно, но в смалтоковской парадигме это намного проще. При чем весь data-centric полностью укладывается в смалтоковскую парадигму.

I>>А проблемы с дизайном у людей которые исповедуют это ООП как общий тренд показывает что преимущество когда то бло, но пропало

K>А проблемы с дизайном прямое следствие идеологии, которая от смолтока идет.

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

I>>Одно ты назвал старым и неправильным, другое — его реформацией То есть, все что ты хочешь сказать, что неправильное, и реформация неправильного суть одинаково неправильны ?


K>Да. И я иронизирую над "правильным реформированным ООП" смолтокеров потому, что оно не решило проблем ООП, но создало новые проблемы как раз с тем, с чем у ООП первоначально было все хорошо — простотой реализации.


Если бы привел задачи, то еще можно было бы понять. Но в отрыве от типичных задч как то странно слушать про "простоту реализации".

>Формально, конечно, реализовать смолток проще — наивная реализация чуть ли не на один экран поместится. Вот только практически полезная реализация — это настоящий рокет сайенс.


Формально языки были направлены на самые разные задачи. Обработка данных со сцены не девается, это объясняет популярность С++, более того, никуда и не денется, отсюда ясно, что С++ потеснит только более производительный аналог в симуловской концепции.

Сложность поведения и взаимодействия компонентов только растет, а это значт что смалтоковская концепция популярности тоже не теряет, что видно на примере JS, питона, руби.

Вычислительные задачи самой разной природы дают результат в виде популярности функциональных языков.

I>>Тогда выходит тебе не нравится ООП вообще, какое они ни было

K>Мне вообще все не нравится, а ООП — побольше среднего прочего.

Вероятно ты просто решаешь другие задачи, в которых ООП непригодно. Скажем начни ты в хаскеле поднимать xml, скорее всего умрёшь от натуги. А старый гнусный С++ рвёт здесь всех конкурентов, кроме специализированых под xml реализаций.

I>>А для чего тебе "плотный кластер", на что это влияет ?

K>Это показатель жизнеспособности идеи, если можно и через 50 лет "продавать" то же самое, но с перламутровыми пуговицами.

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

I>>Меня интересует как сейчас, а не как было. С динамиками в C# вообще все шоколадно — чисто по смалтоковски можно высекать.

K>До смолтока C#-у как до Луны. И это, кстати, не недостаток.

Я и не говорил, что C# это смалток. Я говорю что в ём можно отлично реализовать концепцию смалтоковского ООП, естественно ,будет чуток многословно, побольше чем на питоне, но терпимо.
Re: Как мало людей понимает ООП...
От: licedey  
Дата: 22.08.12 21:23
Оценка:
Здравствуйте, SV., Вы писали:

SV.>...и это невероятно печально.


SV.>Примеры. Допустим, некто спрашивает, зачем нужно наследование интерфейсов. Я привожу пример, когда оно нужно.


Думаю, что истинное понимание ООП приходит уже будучи ОО-проектировщиком. Хоть чисто в домашних условиях, например книга "Применение UML"-Лармана,
перевернуло мое представление о создании программ. У него описано, что истоки нужно искать в реальном мире, составляя так называемые use-case'ы. Реальные случаи использования системы.
А из них выделять существительные (классы) и глаголы (методы). Это само собой не все ООП, но суть такова.
Re[27]: Как мало людей понимает ООП...
От: Klapaucius  
Дата: 23.08.12 08:52
Оценка: 68 (2)
Здравствуйте, Ikemefula, Вы писали:

I>>>Это почему питон и руби не мейнстрим ?

K>>По факту.
I>Так и запишем, что у тебя нет даже минимального объяснения а только "по факту" и твои рассуждения на счет мейнтсримности и популярности можно игнорировать.

А по-моему, можно игнорировать рассуждения о мейнстриме человека, который считает, что руби — это мейнстрим.

K>>В смолтоке объекты — основной строительный блок языка. В питоне — они просто "припарка" к структурному языку — ядру. Как в симуле и в яве.

I>Если смотреть внутрь реализации, то окажется что все мы пишем на ассемблере.

Я говорю не про уровень реализации, а про уровень языка. Питон — императивный язык (не уверен, правда, что он структурный — с такими-то странностями с областями видимости) с форами ифами и прочим. Плюс какая-то странноватая объектная система. К смолтоку это никакого отношения не имеет.

I>Здесь тож самое — изучение модели позволяет предсказывать эффекты. Есть модель — можно и эффекты предсказывать.


Это, скорее, в тему соседней ветки, где предсказывающий эффект по модели "замыкание" получает UB.

I>популярность зависит от актуальных задач а ты почему то нигде про это ни разу не сказал


Я об этом ниразу не сказал, потому что считаю это неправильным.
1) Не наблюдается никакой связи между тем, для чего язык разрабатывался и тем, для чего он применяется.
Мы живем в мире, в котором серверные приложения пишут на языках, которые разрабатывали например для программирования интерактивных телевизоров, "программирования" мигания текста на веб-страничке, скриптования обработки текстов.
Это объяснимо, конечно, потому что большинство языков, не смотря на заявляемую когда-то авторами "принадлежность", не имеют никакой специализации и являются языками общего назначения. Даже когда язык действительно специализирован — эта спецуиализация по мере развития разбавляется совершенно посторонними фичами. В SQL добавляют императивные конструкции, регулярные выражения перестают быть регулярными и т.д.
Подавляющее большинство языков не заточены под какую-то нишу.
2) Выбор языка определяется, в основном, возможностью нанять программиста на этом языке. Разумеется, имеющаяся в таком подходе положительная обратная связь раздувает любую флуктуацию до космических масштабов и делает популярность языка случайной. Невозможно предсказать какой из языков станет популярным, а какой канет в забвение: A или A', который от A отличается оттенком перламутровых пуговиц.
3) Если же язык выбирают по техническим причинам, то выбирают не языки, а реализации и инфраструктуру, причем набор неигрушечных реализаций для нужных платформ часто вообще отсутствует. Понятно, что и тут положительная обратная связь, выхватывающая из шума случайный кактус и заставляющая его есть десятилетиями.
4) Не смотря на все это, иногда таки можно выбрать кактус, который колется поменьше — это инициирует лавинообразный переход на новое семейство языков, как только мы можем себе это позволить, но не раньше.
Сдвиг парадигмы не происходит от изменения задач, а ппоисходит от развития техники, которая начиная с какого-то момента позволяет иметь новый уровень удобств. ООП стал популярен, когда его стало можно себе позволить. И ФП становится популярным в последнее время по этим же причинам. Смолток просто морально устарел раньше, чем его смогли себе позволить использовать значительное количество программистов — вот и все.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[61]: Как мало людей понимает ООП...
От: Klapaucius  
Дата: 23.08.12 09:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Ну вообще говоря язык проектируется под определенный набор фич, а точнее под определенные задачи


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

Про проектирование языков под определенные задачи, которого в реальности не существует ответил развернуто здесь
Автор: Klapaucius
Дата: 23.08.12


K>>Да, а каждый лысый — волосатый, просто с "пустой прической".

I>лысый это человек у котрого растительность на голове удовлетворяет определенному критерию. Ничего смешного, это математика.

Это смешно, потому, что критерий смешной и обобщение бесполезно. Нет никакого применения для обобщения замыканий и не замыканий введением "пустого контекста". Ну, кроме как насмешить собеседника в форумном диспуте.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[28]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 23.08.12 09:15
Оценка:
Здравствуйте, Klapaucius, Вы писали:

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


K>А по-моему, можно игнорировать рассуждения о мейнстриме человека, который считает, что руби — это мейнстрим.


Мейнстрим это задачи, а не ЯП. ЯП это уже следствие.

I>>Здесь тож самое — изучение модели позволяет предсказывать эффекты. Есть модель — можно и эффекты предсказывать.

K>Это, скорее, в тему соседней ветки, где предсказывающий эффект по модели "замыкание" получает UB.

Так ты определись, можно ли модели предсказывать или нет

I>>популярность зависит от актуальных задач а ты почему то нигде про это ни разу не сказал


K>Я об этом ниразу не сказал, потому что считаю это неправильным.

K>1) Не наблюдается никакой связи между тем, для чего язык разрабатывался и тем, для чего он применяется.

Не важно для чего делали. Важно для чего он пригоден. Иногда это одно и то же, иногда — нет.

K>Это объяснимо, конечно, потому что большинство языков, не смотря на заявляемую когда-то авторами "принадлежность", не имеют никакой специализации и являются языками общего назначения. Даже когда язык действительно специализирован — эта спецуиализация по мере развития разбавляется совершенно посторонними фичами. В SQL добавляют императивные конструкции, регулярные выражения перестают быть регулярными и т.д.

K>Подавляющее большинство языков не заточены под какую-то нишу.

Это заблуждение. Проверяется очень легко — берешь одну и ту же задачу и пишешь на самых разных ЯП. В одних языка решения будут простые и работать будут очень эффективно, в других будет нагромождение кода и фатальное проседание производительности.

K>2) Выбор языка определяется, в основном, возможностью нанять программиста на этом языке. Разумеется, имеющаяся в таком подходе положительная обратная связь раздувает любую флуктуацию до космических масштабов и делает популярность языка случайной. Невозможно предсказать какой из языков станет популярным, а какой канет в забвение: A или A', который от A отличается оттенком перламутровых пуговиц.


Выбор языка вообще говоря определяется задачами, а не состоянием рынка труда. НАпример несмотря на то, что подавляющее большинство умеет JS + С# или Java или С++, есть целая куча вакансий по другим языкам.

K>3) Если же язык выбирают по техническим причинам, то выбирают не языки, а реализации и инфраструктуру, причем набор неигрушечных реализаций для нужных платформ часто вообще отсутствует. Понятно, что и тут положительная обратная связь, выхватывающая из шума случайный кактус и заставляющая его есть десятилетиями.


Правильно, я и говорю — язык это следствие. А главное это задачи.

K>4) Не смотря на все это, иногда таки можно выбрать кактус, который колется поменьше — это инициирует лавинообразный переход на новое семейство языков, как только мы можем себе это позволить, но не раньше.


Это непроверяемо и нефальсифицируемо, так шта...

K>Сдвиг парадигмы не происходит от изменения задач, а ппоисходит от развития техники, которая начиная с какого-то момента позволяет иметь новый уровень удобств. ООП стал популярен, когда его стало можно себе позволить. И ФП становится популярным в последнее время по этим же причинам. Смолток просто морально устарел раньше, чем его смогли себе позволить использовать значительное количество программистов — вот и все.


Предложи как это можно проверить и фальсифицировать, тогда можно и продолжить.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.