"LINQ как шаг к ФП". Стиль изложения.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.01.09 12:33
Оценка: 9 (4) +13 -7
Здравствуйте, VladD2, Вы писали:

E>>PS. Из статьи можно было бы смело выкинуть, как минимум, 1/3 текста при сохранении той же информативности.


VD>Будешь писать сам — выклинишь.


Обязательно.

VD>А это моя статья, мой стиль и мой подход к изложению.


Стиль, значит. А со стороны выглядит так, что твои статьи просто никто не рецензирует, включая и себя самого.

E>>PPS. По ходу чтения сильно напрягает стиль изложения "от первого лица" с наездами на "императивных программистов".


VD>Больше конкретики, плиз. Если какие-то места задевают, можно подумать об их замене. А так... это не критика, а наезд.


Конкретика? Их есть у меня (у тебя).

Прямо во введении:

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

-- снобизм и попытка закосить под элитарность.

Там же:

"Цель этой статьи максимально просто объяснить императивному программисту основы функционального программирования (далее ФП)."

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

Еще:

"Я понимаю, что это очень непривычно и непонятно (на первый взгляд), но поверьте, что есть целая теория обосновывающая это (теория «лямбда-исчислений» Чёрча)."

-- почему лямбда-исчисления в кавычках (это типа сарказм или опечатка)? Почему читатель должен тебе верить? Если лямбда-исчисление Черча есть -- дай ссылку, но просить поверить тебе не нужно.

Или:

"Разворот списка очень часто используется в ФЯ, но это, скорее, вызвано не тем, что такая операция действительно так уж часто встречается в работе, а тем, что для представления последовательности в ФЯ обычно применяют однонаправленный связанный список (см. выше и ниже)."

-- выше и ниже где? Обычно пишут "об этом речь пойдет ниже" или "об этом было сказано выше". А когда "выше и ниже", это как? Лень было дать нумерацию разделов и указать пару нужных номеров?

Еще:

"Приводить их реализации я не буду, так как они нетривиальны (уйдет много времени на их reverse engineering), да и занимают довольно много место. Для нас важен сам факт понимания их работы."

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

Далее:

"Кстати, используя расширение синтаксиса, в конце запроса обязательно нужно писать ключевое слово select. Как говорилось в одном анекдоте – «Объясныт это нэлза! Это можьно толко запомныт!!!»."

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

Это только то, что сразу бросилось в глаза и запомнилось.


16.01.09 19:40: Ветка выделена из темы LINQ как шаг к функциональному программированию
Автор: Чистяков Влад (VladD2)
Дата: 28.08.08
— IT
19.01.09 07:51: Перенесено модератором из '.NET' — TK
13.02.09 15:14: Перенесено из 'Философия программирования'
16.02.09 07:39: Перенесено модератором из 'Священные войны' — Хитрик Денис
16.02.09 07:39: Перенесено модератором из 'Священные войны' — Хитрик Денис


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.09 14:21
Оценка: +2 -1
Здравствуйте, eao197, Вы писали:

VD>>А это моя статья, мой стиль и мой подход к изложению.


E>Стиль, значит. А со стороны выглядит так, что твои статьи просто никто не рецензирует, включая и себя самого.


Еще раз. Все что тебе кажется со стороны или спереди высказывай мне в личной переписке. А то может мне кажется что-то не хорошее про тебя. Представляешь как неприятно будет если я это все в форуме вывалю? Да и офтоп это. Так что давай по делу. А все что не по дулу можешь мне в личку написать. У меня предубеждений нет.

E>>>PPS. По ходу чтения сильно напрягает стиль изложения "от первого лица" с наездами на "императивных программистов".


VD>>Больше конкретики, плиз. Если какие-то места задевают, можно подумать об их замене. А так... это не критика, а наезд.


E>Конкретика? Их есть у меня (у тебя).


E>Прямо во введении:

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

-- снобизм и попытка закосить под элитарность.


Я говорю то что вижу. И не считаю это каким-то там снобизмом. Если тебя это задевает, то я тут не причем. Борись со своими комплексами. Как видишь те на кого статья была рассчитана восприняли это нормально.

E>Там же:

"Цель этой статьи максимально просто объяснить императивному программисту основы функционального программирования (далее ФП)."

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


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

E>Еще:

"Я понимаю, что это очень непривычно и непонятно (на первый взгляд), но поверьте, что есть целая теория обосновывающая это (теория «лямбда-исчислений» Чёрча)."

-- почему лямбда-исчисления в кавычках (это типа сарказм или опечатка)?


Черт его знает. Возможно мой ляп. Возможно редактор добавил. Поправим...

E>Почему читатель должен тебе верить? Если лямбда-исчисление Черча есть -- дай ссылку, но просить поверить тебе не нужно.


Если кому-то будет интересно изучить теорию Чёрча, то ему не составит труда сделать запрос в Гугле. Статья предназначалась для бумажного журнала где толк от ссылок практически нулевой. Можно было бы конечно все о наукообразить добавив список литературы в конце, но смысла в этом не вижу. Статья писалась в расчете на определенный круг и на определенное восприятие. На научную работу я не претендовал.

E>Или:

"Разворот списка очень часто используется в ФЯ, но это, скорее, вызвано не тем, что такая операция действительно так уж часто встречается в работе, а тем, что для представления последовательности в ФЯ обычно применяют однонаправленный связанный список (см. выше и ниже)."

-- выше и ниже где? Обычно пишут "об этом речь пойдет ниже" или "об этом было сказано выше". А когда "выше и ниже", это как? Лень было дать нумерацию разделов и указать пару нужных номеров?


Ну, так получилось, что об однонаправленном тексте сказано и выше, и ниже. Неужели — это так существенно?

E>Еще:

"Приводить их реализации я не буду, так как они нетривиальны (уйдет много времени на их reverse engineering), да и занимают довольно много место. Для нас важен сам факт понимания их работы."

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


Что до моего времени, то уж извини не тебе о нем судить. Если бы его потребовалось больше, то статьи не было бы в принципе. А так многие уже сказали спасибо. Значит статья все же была им нужна. И скрип одного критика, вечно не довольного всеми моими высказываниями, меня и тех кому статься помогла не трогает.

E>Далее:

"Кстати, используя расширение синтаксиса, в конце запроса обязательно нужно писать ключевое слово select. Как говорилось в одном анекдоте – «Объясныт это нэлза! Это можьно толко запомныт!!!»."

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


Еще раз. Не лезь в чужой стиль. Я считаю, что именно такой стиль самый подходящий для доходчивого и простого объяснения. Люди могут расслабиться и спокойно воспринимать информацию.
Кстати, самая удачная твоя статья о Руби:
http://rsdn.ru/article/ruby/ruby_edges.xml
Автор(ы): Евгений Охотников
Дата: 03.03.2007
Данный материал рассчитан на более-менее опытных программистов, уже использующих другие языки про-граммирования, но желающих понять, что же такого особенного в языке Ruby, а тех, кому вольно или неволь-но приходится изучать Ruby  — в качестве еще одного русскоязычного источника информации о Ruby. Несколь-кими словами данную статью можно охарактеризо-вать как «глубокое погружение в Ruby для тех, кто не прочитал Programming Ruby».

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

E>Это только то, что сразу бросилось в глаза и запомнилось.


Это все очень похоже на слабо обоснованные наезды. Ты ведь что сказал в своем первом пассаже?

По ходу чтения сильно напрягает стиль изложения "от первого лица" с наездами на "императивных программистов".

Что же за наезды ты продемонстрировал? Большая часть цитат вообще не имеет отношения к твоему высказыванию.
За наезды видимо были приняты высказывания о том, что мало кто реально освоил ФП (что является стопроцентной правдой).
Ну, и как после этого воспринимать такую критику? Это батенька попытка состроить хорошую мину при плохой игре.
То что тебе не нравится мой стиль изложения — это одно. Меня это никак не задевает. Даже наоборот. Меня наверно задело бы обратное. А наездов ты так продемонстрировать и не смог. Так зачем было воздух сотрясать?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: "LINQ как шаг к ФП". Стиль изложения.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.01.09 15:17
Оценка:
Здравствуйте, VladD2, Вы писали:

E>>Стиль, значит. А со стороны выглядит так, что твои статьи просто никто не рецензирует, включая и себя самого.


VD>Еще раз. Все что тебе кажется со стороны или спереди высказывай мне в личной переписке.


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

VD>А то может мне кажется что-то не хорошее про тебя. Представляешь как неприятно будет если я это все в форуме вывалю?


Валяй.

E>>Почему читатель должен тебе верить? Если лямбда-исчисление Черча есть -- дай ссылку, но просить поверить тебе не нужно.


VD>Можно было бы конечно все о наукообразить добавив список литературы в конце, но смысла в этом не вижу.


То, в чем ты не видишь смысла, является экономией времени читателя.

VD>Ну, так получилось, что об однонаправленном тексте сказано и выше, и ниже. Неужели — это так существенно?


Да. Цени время читателя.

VD>Что до моего времени, то уж извини не тебе о нем судить.


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

E>>Это только то, что сразу бросилось в глаза и запомнилось.


VD>Это все очень похоже на слабо обоснованные наезды. Ты ведь что сказал в своем первом пассаже?

VD>

VD>По ходу чтения сильно напрягает стиль изложения "от первого лица" с наездами на "императивных программистов".

VD>Что же за наезды ты продемонстрировал? Большая часть цитат вообще не имеет отношения к твоему высказыванию.

Хорошо, пойдет дальше. Про императивных программистов.

ПРЕДУПРЕЖДЕНИЕ

К сожалению, императивный программист в массе своей не привык думать об обработке последовательностей (списков) как о последовательности (ряде) преобразований, как это принято в ФП. Вместо этого императивный программист везде «видит» цикл. Вся обработка последовательности видится ему как содержимое этого цикла. В результате даже несложная обработка приводит к плохо читаемому коду, а уж сложная обработка последовательности превращается в настоящую кашу, которую и читать-то тяжело, а поиск ошибок в таком коде становится весьма нетривиальной задачей.

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

Это сильно упростит восприятие функционального кода на начальном этапе. Данное мысленное преобразование требуется потому, что императивный программист за долгие годы привык думать низкоуровневыми понятиями (паттернами кодирования) циклов и простейших операций. ФП же предлагает думать бее крупными операциями, такими как отображение, фильтрация и свертка/агрегация.

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

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

Из той же оперы.

Теперь по поводу изложения от первого лица.

Например, фразы вида:

Отсутствие аналога FoldRight, конечно же, факт неприятный, но особой проблемой это не является, так как, во-первых, FoldRight требуется довольно редко, а во-вторых, его нетрудно написать самостоятельно:

Она использует Reverse из LINQ. Метод Reverse написан довольно хитро, что делает его весьма эффективным. Но об этом вы узнаете, когда дочитаете до описания этого метода. В принципе, можно было бы реализовать специализированную версию данного метода для IList<T>, но у меня есть большие подозрения, что от этого будет мало толку.

На мой взгляд, это не очень полезный вариант метода Aggregate, так как того же самого эффекта можно добиться последовательным вызовом обычного Aggregate() и Select() (о Select см. ниже). Возможно, такой вариант потребовался для реализации «LINQ to SQL», а возможно, просто кто-то перестарался.

Понятное дело, что «так» императивные программисты не пишут. Не делают они это по двум причинам.

Во-первых, из соображений производительности (хотя в 99% случаев она вряд ли пострадает). Ведь создается промежуточная последовательность (в данном случае динамический массив типа List<string>()), а это не оптимально!

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


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

VD>За наезды видимо были приняты высказывания о том, что мало кто реально освоил ФП (что является стопроцентной правдой).


Откуда такая статистика?

VD>Ну, и как после этого воспринимать такую критику?


Это ты у себя спроси. Мне как-то фиолетово, как ты ее будешь воспринимать. Если ты хочешь видеть у своих статей только положительные стороны, то ни я, ни кто-нибудь другой, не сможет указать тебе на их недостатки.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: "LINQ как шаг к ФП". Стиль изложения.
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.01.09 16:08
Оценка: +4 -2 :)
Здравствуйте, eao197, Вы писали:

E>Хорошо, пойдет дальше. Про императивных программистов.


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


E>Откуда информация о том, о чем привык думать императивный программист?


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

Но цикл остается центральной идеей императивного программирования — просто потому, что никаких других способов обработки "последовательностей" нету. Точнее, есть рекурсия, но
а) у наивных программистов при ней доступ к глобальным переменным ведет себя как-то странно
б) у продвинутых программистов быстро переполняется стек, "поэтому для больших объемов данных рекурсия неприменима".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.09 16:31
Оценка: +1 -1
Здравствуйте, eao197, Вы писали:

VD>>Еще раз. Все что тебе кажется со стороны или спереди высказывай мне в личной переписке.


E>Почему твоя статья доступна публична, а критика к ней должна быть приватна?


Потому что это форум посвящен дотнету, а не критике статей. К тому же критики статьи у тебя в общем-то нет. Твоя цель явно дерьмица подбросить. Злой ты. Если же твоей целью действительно было бы указать на то, что ты читаешь нужным, то ты, как и другие критики, мог бы сказать об этом по почте.

E>Тебе здесь уже не раз указали как на орфографические ошибки, так и на ошибку в примерах кода. Если это не показатель недостаточного рецензирования, тогда что это?


А за указание на орфографические ошибки вообще баня положена. Читай внимательно правила.

Я только рад тому, что ты нашел и указал на ошибку. Но обсуждение стилистики и тем более высказывания в духе "Из статьи можно было бы смело выкинуть, как минимум, 1/3 текста" и "сильно напрягает стиль изложения ... с наездами на ..." — это уже само по себе откровенные наезды. К тематике форума они отношения не имеют. Ничего полезного для посетителей форума не несут. Являются оскорбительными. В общем, офтоп и наезды. Зачем это нужно в форуме по дотнету?

Если тебе хочется что-то написать, то лучше еще одну статью написал бы. Люди тебе спасибо сказали бы. Уверяю тебя, что статья написанная в любом стиле, если она несет что-то интересное будет воспринята людьми хорошо.

VD>>А то может мне кажется что-то не хорошее про тебя. Представляешь как неприятно будет если я это все в форуме вывалю?


E>Валяй.


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

VD>>Можно было бы конечно все о наукообразить добавив список литературы в конце, но смысла в этом не вижу.


E>То, в чем ты не видишь смысла, является экономией времени читателя.


Не разделяю твою точку зрения. Все кто не забанены в Гугле и Википедии найдут при желании все что захотят.

VD>>Ну, так получилось, что об однонаправленном тексте сказано и выше, и ниже. Неужели — это так существенно?


E>Да. Цени время читателя.


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

VD>>Что до моего времени, то уж извини не тебе о нем судить.


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


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

E>>>Это только то, что сразу бросилось в глаза и запомнилось.


VD>>Это все очень похоже на слабо обоснованные наезды. Ты ведь что сказал в своем первом пассаже?

VD>>

VD>>По ходу чтения сильно напрягает стиль изложения "от первого лица" с наездами на "императивных программистов".

VD>>Что же за наезды ты продемонстрировал? Большая часть цитат вообще не имеет отношения к твоему высказыванию.

E>Хорошо, пойдет дальше. Про императивных программистов.

E>

E>ПРЕДУПРЕЖДЕНИЕ

E>К сожалению, императивный программист в массе своей не привык думать об обработке последовательностей (списков) как о последовательности (ряде) преобразований, как это принято в ФП. Вместо этого императивный программист везде «видит» цикл. Вся обработка последовательности видится ему как содержимое этого цикла. В результате даже несложная обработка приводит к плохо читаемому коду, а уж сложная обработка последовательности превращается в настоящую кашу, которую и читать-то тяжело, а поиск ошибок в таком коде становится весьма нетривиальной задачей.

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

Из практики. Сам так мыслил каких-то 2 года назад.
Если к тебе это не относится, то это всего лишь значит, что ты не совсем императивный программист. Или не только императивный.

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


Из практики чтения чужого кода. Поверь, не малой практики.

E> Я, например, такое наблюдал крайне редко и, если это было в моих силах, способствовал увольнению подобных деятелей, как неспособных к программированию.


На счет первого, просто не поверю. На счет втого — ну, молодец. Я не так радикален. Если я вижу, что кто-то рядом лепит циклы на право и на лево, то я просто пытаюсь продемонстрировать насколько понятнее и проще можно записать тоже самое.
К тому же циклы — это не единственный пример. Жизнь сложнее. Часто можно видеть как человек с большим императивным прошлым с трудом перестраивает мышление и не использует более хитрые, но при этом и более выразительные средства языка. Опять же пример и помощь тут очень кстати.
Эта статья и рассчитана на людей которые или вообще пока не освоились в функциональном мире, или делают первые шаги на этом пути.
Заметь, есть не мало людей которые не только не нашли статью оскорбительной, но и наоборот сказали спасибо в той или иной форме.

Скажу больше. Я сам бы очень хотел бы наткнуться на подобную статью году эдак в 2005-ом или 2006. А лучше еще раньше. Вместо этого я нарывался на трехколенные выпендрежи, понты и замуности которые мало что давали с точки зрения понимания принципов ФП. По сути только попытка разобраться с Немерле позволила мне понять принципы ФП. И, о чудо, все оказалось совсем просто. Оказывается проблемы были не в моем скудном уме, а в неумении других объяснять весьма простые вещи. Вот эта статья и есть попытка объяснить эти простые вещи для таких же простых парней как я.

E>

E>Это сильно упростит восприятие функционального кода на начальном этапе. Данное мысленное преобразование требуется потому, что императивный программист за долгие годы привык думать низкоуровневыми понятиями (паттернами кодирования) циклов и простейших операций. ФП же предлагает думать бее крупными операциями, такими как отображение, фильтрация и свертка/агрегация.

E>Откуда информация о том, о чем привык думать императивный программист?

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

E>Кстати, здесь еще одна опечатка -- "бее" вместо "более".


Сенкс. Поправил.

E>

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

E>Из той же оперы.

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

Покажи мне хотя бы один пример кода в данном форуме в котором с помощью агрегации кто-то создал бы скажем хэш-таблицу или список. Сколько таких примеров? Почему их нет или по крайней мере их мало?
В то же время в функциональном коде Fold постоянно используется для преобразования одних коллекций в другие.
Моя задач как раз и заключается в том, чтобы толкнуть людей к мышлению по-новому.

E>Теперь по поводу изложения от первого лица...

E>В которых ты высказываешь свое отношение к происходящему. Но которые, лично я воспринимаю как лишний "информационный шум", подлежащий фильтрации. Без подобных фраз статья получилась бы короче, при той же самой информативности.

Как-то не много "шума" ты нашел. Мог бы и просто промолчать если речь идет о четверти страницы. Статья все же сильно больше.
К тому же оценки твои довольно личностные. С тем же успехом можно было бы сказать, что твои высказывания были бы интереснее если бы ты их не высказывал .

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

VD>>За наезды видимо были приняты высказывания о том, что мало кто реально освоил ФП (что является стопроцентной правдой).


E>Откуда такая статистика?


Из твоего списка. Там только одна цитата была по делу. В прочем и она в общем-то не по делу.

VD>>Ну, и как после этого воспринимать такую критику?


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


Я твое творчество воспринимаю как желание публично подгадить. Ты не пропускаешь ни одного моего сообщения, чтобы подгадить где-то. Видимо это радость вызывает. Я этой радости не понимаю.
Меня всегда радовали люди включающие на телевизоре программу и начинающие ее критиковать. Я всегда просто переключаю канал в такой ситуации.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: "LINQ как шаг к ФП". Стиль изложения.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.01.09 16:46
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>Из практики чтения чужого кода. Поверь, не малой практики.


Не поверю.

E>>Откуда информация о том, о чем привык думать императивный программист?


VD>От себя. Я сам так думал 3 года назад.


Тогда следовало бы говорить в статье "я", а не "императивный программист".

VD>>>За наезды видимо были приняты высказывания о том, что мало кто реально освоил ФП (что является стопроцентной правдой).


E>>Откуда такая статистика?


VD>Из твоего списка. Там только одна цитата была по делу. В прочем и она в общем-то не по делу.


Я спрашивал откуда статистика о том, что мало кто реально освоил ФП? Где какие-то наблюдения о том, что, к примеру, 100 человек начали изучение ФП и только у 10 из них это получилось? Ты, вот, например, начал программировать на Nemerle и сейчас считаешь, что достаточно понимаешь ФП. Это было архисложно? У 90% посетителей RSDN, надо полагать, не хватит на это мозгов? Или может пока подавляющему большинству программистов просто не нужно было по работе сталкиваться с ФП и поэтому мало кто из них в нем разбирается -- просто по ненадобности?

VD>Я твое творчество воспринимаю как желание публично подгадить. Ты не пропускаешь ни одного моего сообщения, чтобы подгадить где-то. Видимо это радость вызывает. Я этой радости не понимаю.


Что не удивительно, ведь я пытался говорить о том, как написана статья, а ты -- обо мне.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: "LINQ как шаг к ФП". Стиль изложения.
От: Qbit86 Кипр
Дата: 15.01.09 16:52
Оценка:
Я не совсем по теме хочу высказаться, просто пару слов в поддержку Влада. Имхо eao197 некорректно и некрасиво наезжает. Можно было и полегче выразиться, не теряя сути претензий.

Статья же отличная (несмотря на опечатки и орфошибки). Как раз собирался в понедельник среди коллег семинар по LINQ и ФП провести, теперь же достаточно просто вручить им статью :)
Глаза у меня добрые, но рубашка — смирительная!
Re[4]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.09 17:00
Оценка:
О. А мы думали ты к нам подъедешь. Ты где?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.09 17:31
Оценка:
Здравствуйте, eao197, Вы писали:

VD>>Из практики чтения чужого кода. Поверь, не малой практики.


E>Не поверю.


Твои проблемы. Я тоже не верю половине твоих слов. Ну, и что?

E>>>Откуда информация о том, о чем привык думать императивный программист?


VD>>От себя. Я сам так думал 3 года назад.


E>Тогда следовало бы говорить в статье "я", а не "императивный программист".


Я уже так не думаю. И задача статьи помочь думать по-другому остальным.

E>Я спрашивал откуда статистика о том, что мало кто реально освоил ФП?


А зачем мне статистика? Мне важно аудитория. Если есть люди которые еще не совсем хорошо освоились с ФП или вообще его не освоили, то аудитория есть и я не зря писал статью.

Судя по оценкам и благодарностям аудитория есть. И этим людям совсем не стыдно, что они еще не являются гуру ФП.

А ты, если хочешь можешь пойти и попытаться собрать свою статистику чтобы обосновать не нужность статьи. Глупо конечно, но в твоем духе.

E>Где какие-то наблюдения о том, что, к примеру, 100 человек начали изучение ФП и только у 10 из них это получилось?


А зачем такие наблюдения? Мне хватило моих наблюдений и ощущений. И я явно не ошибся.
Если для того чтобы что-то сделать нужно было бы каждый раз собирать достоверную статистику, то почти ничего в этой жизни не было бы сделано.

E>Ты, вот, например, начал программировать на Nemerle и сейчас считаешь, что достаточно понимаешь ФП. Это было архисложно? У 90% посетителей RSDN, надо полагать, не хватит на это мозгов? Или может пока подавляющему большинству программистов просто не нужно было по работе сталкиваться с ФП и поэтому мало кто из них в нем разбирается -- просто по ненадобности?


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

VD>>Я твое творчество воспринимаю как желание публично подгадить. Ты не пропускаешь ни одного моего сообщения, чтобы подгадить где-то. Видимо это радость вызывает. Я этой радости не понимаю.


E>Что не удивительно, ведь я пытался говорить о том, как написана статья, а ты -- обо мне.


Что из тебя льется, о том я и говорю.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: "LINQ как шаг к ФП". Стиль изложения.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.01.09 17:48
Оценка: +2
Здравствуйте, VladD2, Вы писали:

E>>>>Откуда информация о том, о чем привык думать императивный программист?


VD>>>От себя. Я сам так думал 3 года назад.


E>>Тогда следовало бы говорить в статье "я", а не "императивный программист".


VD>Я уже так не думаю. И задача статьи помочь думать по-другому остальным.


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

E>>Я спрашивал откуда статистика о том, что мало кто реально освоил ФП?


VD>А зачем мне статистика?


Затем, чтобы оправдать утверждение о том, что:

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

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

VD>Мне важно аудитория.


Ну типа "пипл хавает"

VD>Отсюда совершенно очевидно, что материал можно изложить более доходчиво. Вот это я и попытался сделать. Мне кажется — это получилось (по крайней мере хочется на это надеяться).


Я нигде не говорил, что статья плохая. Я перечислил причины, по которым она мне не кажется такой хорошей, как, например, это кажется Qbit86
Автор: Qbit86
Дата: 15.01.09
. И я говорю о том, что в ней можно было бы улучшить.

Но ты такой весь из себя такой признаный гений, что даже намекнуть на то, что статья могла бы быть еще лучше -- низзя!


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.09 18:35
Оценка:
Здравствуйте, eao197, Вы писали:

E>Тогда не нужно приписывать "императивным программистам" свои личные прошлые стереотипы. Или хотя бы нужно было дать определение того, что такое "императивный программист". Поскольку я себя считаю императивным программистом, но ничего из тобой написанного для меня не совпадает.


По этому поводу тебе отлично ответил Синклер:
http://rsdn.ru/forum/message/3250584.1.aspx
Автор: Sinclair
Дата: 15.01.09


E>>>Я спрашивал откуда статистика о том, что мало кто реально освоил ФП?


VD>>А зачем мне статистика?


E>Затем, чтобы оправдать утверждение о том, что:

E>

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


Я кажется не в суде, чтобы что-то там оправдывать.

E>Это твои фантазии, что уж совсем немногим из тех кто решился разобраться в ФП его освоили. Пока я вижу на том же RSDN, что кто не берется за ФП, те его осваивают. Вот ты, к примеру.


Это твои фантазии про мои фантазии .

VD>>Мне важно аудитория.


E>Ну типа "пипл хавает"


Ну, типа людям нравится .

VD>>Отсюда совершенно очевидно, что материал можно изложить более доходчиво. Вот это я и попытался сделать. Мне кажется — это получилось (по крайней мере хочется на это надеяться).


E>Я нигде не говорил, что статья плохая. Я перечислил причины, по которым она мне не кажется такой хорошей, как, например, это кажется Qbit86
Автор: Qbit86
Дата: 15.01.09
. И я говорю о том, что в ней можно было бы улучшить.


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

E>Но ты такой весь из себя такой признаный гений, что даже намекнуть на то, что статья могла бы быть еще лучше -- низзя!


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

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

Если уж ты действительно настроен на конструктив, то вместо того чтобы критиковать мой стиль и подходы, возьми и напиши аналогичную статью, но так как видишь ее ты. Может из этого получится что-то полезное и те кто не найдут мою статью полезной прочтут твою и тем самым будут удовлетворены. Или твоего порыва хватает только на критику в мой адрес?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: "LINQ как шаг к ФП". Стиль изложения.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.01.09 21:08
Оценка: +1
Здравствуйте, VladD2, Вы писали:

E>>Тогда не нужно приписывать "императивным программистам" свои личные прошлые стереотипы. Или хотя бы нужно было дать определение того, что такое "императивный программист". Поскольку я себя считаю императивным программистом, но ничего из тобой написанного для меня не совпадает.


VD>По этому поводу тебе отлично ответил Синклер:

VD>http://rsdn.ru/forum/message/3250584.1.aspx
Автор: Sinclair
Дата: 15.01.09


Я не согласен ни с ним, ни с тобой.

E>>Затем, чтобы оправдать утверждение о том, что:

E>>

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


VD>Я кажется не в суде, чтобы что-то там оправдывать.


Т.е., за свои слова ты ответить не хочешь?

VD>Я как раз не заметил разговора о том, что в ней можно было бы улучшить.


Как минимум, выбросить из нее 1/3 налитой в нее "воды". Перестать говорить о гипотетическом "императивном программисте" и, раз уж начал, говорить о себе. Приводить примеры императивного кода не хуже примеров функционального кода.

VD>Ну, кроме найденных двух опечаток.


Да, и дать кому-нибудь на корректуру и вычитку.

VD>ОК. Предположим, что ты конструктивен и хочешь помочь. Но объясни мне, что за статья получится если вместо своих мыслей я буду писать что-то, что удовлетворит твоим возрения на мир? Я думаю получится ахинея.


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

Отсутствие аналога FoldRight, конечно же, факт неприятный, но особой проблемой это не является, так как, во-первых, FoldRight требуется довольно редко, а во-вторых, его нетрудно написать самостоятельно:

можно было бы переписать как:

Аналога FoldRight нет, но требуется он довольно редко, и его нетрудно написать самостоятельно:

Абсолютно та же самая мысль, но выраженная меньшим количеством слов, без лишнего выражения собственного отношения к факту отсутствия FoldRight. (Почему-то сокращение текста программы ты считаешь благом, а вот сокращение объема собственного словесного выхлопа -- нет).

Или же:

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

записывается как:

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

ну и продолжить как-то так:

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


VD>Если уж ты действительно настроен на конструктив, то вместо того чтобы критиковать мой стиль и подходы, возьми и напиши аналогичную статью, но так как видишь ее ты.


Нет, мне это не интересно.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: "LINQ как шаг к ФП". Стиль изложения.
От: Sinix  
Дата: 16.01.09 03:28
Оценка: 33 (2) +3
Слушайте, может уже сделаем ветку "Разборки"?
Чтоп не мучаться с придумыванием повода для наезда? Кому скучно — постит новую ветку и его валят всем миром. Пустые понты достали уже... статью вроде обсуждали, не автора.

По собсно статье (больше пустые придирки, не воспринимайте серьёзно):

В примере

var ary = new int[]{ 1, 2, 3, 4, 5 };

int sum = 0;
Array.ForEach(ary, delegate(int elem) { sum += elem; });

foreach (var elem in ary)
  Console.WriteLine(elem);

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

Функциональное вычисление – функция (или если быть точнее – «чистая функция», pure function) – должна принимать некоторые аргументы (входящие данные) на входе, производить вычисление и возвращать некоторый результат. При этом функция не должна создавать никаких побочных эффектов. Под побочными эффектами понимается:

Я-то конеш понимаю, что замыкания и pure functions — разные вещи, может стоило на принципиальной разнице остановиться подробней?

Изменение синтаксиса 3-м шарпе имхо стоит вынести в подраздел.

Статья получилась слегка раздутой из-за кучи вводной информации. Стоило либо разбить на несколько: делегаты и итераторы как они есть, замыкания, внутренняя реализация -> C# 3, заимствования из ФП, лямбды и т.п. -> идеология ФП -> LINQ и ФП. Или хотя бы поставить уровень отсечения — "идите читать матчасть, потом возвращяйтесь" и сосредоточиться на последних двух частях.

Ещё стоило бы завести подраздел про то, что любая технология — не панацея и привести ситуации, когда лучше применять конкретные подходы. Привести микротесты, рассказать что вызов _одиночного_ делегата (без списка вызываемых методов) по стоимости сопоставим с virtual call, и что в худшем случае падение производительности будет в 2-5 раз (и что с каждым сп к рантайму соотношение улучшается) в лучшем — будет незаметно из-за стоимости исполнения метода.

Да! Если это серьёзная статья, постарайтесь обойтись без ехидства и левых наездов на быдлопрограммистов или на разработчиков типа "никто не знает почему". Научитесь уважать чужую работу. Особенно смешно выглядит, если читаешь блоги самих товарищей, где они подробно описывают дизайн языка и говорят что да, решение было не лучшим, но оно было оптимальным на тот момент. Вы ж не жёлтая пресса, чтобы стонать "ооо, как они неправы"

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

Удачи!
Re[5]: "LINQ как шаг к ФП". Стиль изложения.
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.01.09 07:38
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>О. А мы думали ты к нам подъедешь. Ты где?

Да я на метро Отрадная. Но че-то закрутился тут по работе
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.01.09 09:52
Оценка:
Здравствуйте, eao197, Вы писали:

VD>>По этому поводу тебе отлично ответил Синклер:

VD>>http://rsdn.ru/forum/message/3250584.1.aspx
Автор: Sinclair
Дата: 15.01.09


E>Я не согласен ни с ним, ни с тобой.


И что из этого? Ты задал вопрос, тебе дали ответ. Других ответов не будет. Если тебя они не удовлетворяют, то тебе прийдется смириться и жить с этим.

VD>>Я кажется не в суде, чтобы что-то там оправдывать.


E>Т.е., за свои слова ты ответить не хочешь?


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

VD>>Я как раз не заметил разговора о том, что в ней можно было бы улучшить.


E>Как минимум, выбросить из нее 1/3 налитой в нее "воды". Перестать говорить о гипотетическом "императивном программисте" и, раз уж начал, говорить о себе. Приводить примеры императивного кода не хуже примеров функционального кода.


Я уже устал повторять. Если ты считаешь, что статьи нужно писать по другому, то покажи это на собственном примере. А я писал, пишу и буду писать так как считаю нужным, а описанные претензии не считаю обоснованными.
На этом предлагаю закрыть эту тему.

VD>>Ну, кроме найденных двух опечаток.


E>Да, и дать кому-нибудь на корректуру и вычитку.


Не бойся на корректуру идут все статьи. В том числе и моя. Только люди не железные. Какой-то процент ошибок всегда остается. Если ты такой не верующая фома, то могу тебе выслать файл с корректурой.

VD>>ОК. Предположим, что ты конструктивен и хочешь помочь. Но объясни мне, что за статья получится если вместо своих мыслей я буду писать что-то, что удовлетворит твоим возрения на мир? Я думаю получится ахинея.


E>Еще раз: статья производит впечатление написанной "в один присест", без повторных вычиток.


Я бы задумался над этим если бы не два небольших факта:
1. Ты единственный кто высказывает эту претензию.
2. Ты докапывашся до всех моих статей, заметок и сообщений в чем явно просматривается личная неприязнь. Короче, не объективен.

E>Поскольку повторные вычитки удалили бы из нее достаточное количество ненужного текста.


Месье мозговед?
Расстрою тебя твои телепатические опыты дали осечку. Статью вычитывал сначала я, а потом редактор (Купаев).
Правда получилось так, что я действительно вписал пару строк впопыхах. Их то и заметил McSim здесь
Автор: McSim
Дата: 01.09.08
.

E> Например:

E>

Отсутствие аналога FoldRight, конечно же, факт неприятный, но особой проблемой это не является, так как, во-первых, FoldRight требуется довольно редко, а во-вторых, его нетрудно написать самостоятельно:

E>можно было бы переписать как:
E>

E>Аналога FoldRight нет, но требуется он довольно редко, и его нетрудно написать самостоятельно:


Ну, ты еще пойди Толстого и Пушкина покритикуй. Они тоже порой имели весьма развесистый слог.
Это мой стиль. Как хочу так и пишу.

Если бы мне было не чем заняться, я бы провел эксперимент лингвистического сжатия с вот этой
Автор(ы): Евгений Охотников
Дата: 03.03.2007
Данный материал рассчитан на более-менее опытных программистов, уже использующих другие языки про-граммирования, но желающих понять, что же такого особенного в языке Ruby, а тех, кому вольно или неволь-но приходится изучать Ruby  — в качестве еще одного русскоязычного источника информации о Ruby. Несколь-кими словами данную статью можно охарактеризо-вать как «глубокое погружение в Ruby для тех, кто не прочитал Programming Ruby».
твоей статьей. Там во вводных частях можно большую часть абзацев сжать если не в двое, то по крайней мере на треть.

Так что кончай докапываться до чужой работы. Лучше сделай что-то сам. Хотя тебе ясно слабо. Ведь ты столько времени тратишь на злопыхания в чужой адрес.

E>Абсолютно та же самая мысль, но выраженная меньшим количеством слов, без лишнего выражения собственного отношения к факту отсутствия FoldRight. (Почему-то сокращение текста программы ты считаешь благом, а вот сокращение объема собственного словесного выхлопа -- нет).


А зачем нужно "...без выражения собственного отношения к факту..."? И почему ты пытаешся нагло и беспардонно навязать мне сухой безличностный стиль и в то же время в твоих статях мы видим ровно обратное:

Возможно, столь много времени потребовалось еще из-за того, что Programming Ruby [2] — это очень большая книга, которая посвящает читателя во все тонкости языка, но не расставляет акцентов. Однако при переходе с C++ на Ruby (как в моем случае) не столь важны конкретные особенности синтаксиса языка. Гораздо важнее осознать, как именно должно измениться мышление, чтобы при программировании на Ruby думать именно на Ruby, а не на C++. И, по-моему, мне еще не попадалась книга о Ruby, в которой делался бы акцент именно на этом.


Все те претензии, что ты в демогогичной манере высказваешь тут мне можно применить и к тебе. Зачем нужны размышления о изменении мышления? Зачем нужно было гадать о причинах размера временных затрад? Зачем эти личностные откровения про собственный случай? Можно же было сухо и коротко написать "Особенностью данной статьи является упор на переходе на Руби с С++". Или что-то вроде того. Коротко, по-сути, сухо, безличностно.

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


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

VD>>Если уж ты действительно настроен на конструктив, то вместо того чтобы критиковать мой стиль и подходы, возьми и напиши аналогичную статью, но так как видишь ее ты.


E>Нет, мне это не интересно.


То-то и оно. Ну, и кто ты после этого?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.01.09 10:13
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>По собсно статье (больше пустые придирки, не воспринимайте серьёзно):


S>В примере

S>

S>

S>var ary = new int[]{ 1, 2, 3, 4, 5 };

S>int sum = 0;
S>Array.ForEach(ary, delegate(int elem) { sum += elem; });

S>foreach (var elem in ary)
S>  Console.WriteLine(elem);
S>

S>Не совсем понял, зачем вычисляется сумма, если она нигде не используется. Если она нужна — зачем последующий перебор?

Согласен. Глупо получилось. Поправим.

S>Слегка некорректно выглядит пример с замыканиями после

S>

S> Функциональное вычисление – функция (или если быть точнее – «чистая функция», pure function) – должна принимать некоторые аргументы (входящие данные) на входе, производить вычисление и возвращать некоторый результат. При этом функция не должна создавать никаких побочных эффектов. Под побочными эффектами понимается:

S>Я-то конеш понимаю, что замыкания и pure functions — разные вещи, может стоило на принципиальной разнице остановиться подробней?

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

S>Изменение синтаксиса 3-м шарпе имхо стоит вынести в подраздел.


С какой целью? Чтобы было проще искать? Или чтобы ссылаться можно было?

S>Статья получилась слегка раздутой из-за кучи вводной информации. Стоило либо разбить на несколько: делегаты и итераторы как они есть, замыкания, внутренняя реализация -> C# 3, заимствования из ФП, лямбды и т.п. -> идеология ФП -> LINQ и ФП. Или хотя бы поставить уровень отсечения — "идите читать матчасть, потом возвращяйтесь" и сосредоточиться на последних двух частях.


На то есть оглавление. Да и статья не такая большая чтобы ее резать.
Или речь об переупорядочивании разделов?

S>Ещё стоило бы завести подраздел про то, что любая технология — не панацея и привести ситуации, когда лучше применять конкретные подходы. Привести микротесты, рассказать что вызов _одиночного_ делегата (без списка вызываемых методов) по стоимости сопоставим с virtual call, и что в худшем случае падение производительности будет в 2-5 раз (и что с каждым сп к рантайму соотношение улучшается) в лучшем — будет незаметно из-за стоимости исполнения метода.


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

S>Да! Если это серьёзная статья, постарайтесь обойтись без ехидства и левых наездов на быдлопрограммистов или на разработчиков типа "никто не знает почему". Научитесь уважать чужую работу. Особенно смешно выглядит, если читаешь блоги самих товарищей, где они подробно описывают дизайн языка и говорят что да, решение было не лучшим, но оно было оптимальным на тот момент. Вы ж не жёлтая пресса, чтобы стонать "ооо, как они неправы"


1. Это не серьезная статья. Она так задумывалась.
2. Опять же больше конкретики.

S>В принципе, статья вполне на уровне большинства русскоязычных статей по LINQ, местами куда лучше. Порадовала попытка описать LINQ глазами функционального программиста — на русском такого не попадалось.


Вообще-то я пытался не описывать LINQ глазами функциональщика, а показать людям идеологию лежащую за LINQ-ом и подтолкнуть их к более глубокому изучению того что на первый взгляд выглядит как SQL.
Другими словами я пытался на пальцах, простыми словами показать людям которые еще не плавают в ФП как рыбы те приемы и подходы которые предлагает ФП.

А взгляд ФП-шника на LINQ на самом деле мало кому интересен.

В общем, задача статьи помочь людям поменять сознание. Это все что требуется для реального понимания ФП и получения выигрыша от его применения на практике. Именно по этому у статьи не академический (не серьезный) стиль и в ней часто говорится об императивных программистах. Уверен, что если человек поймет, что это не наезды, а попытка помочь, то статья ему поможет. По крайней мере я пытался это сделать.

S>Удачи!


Спасибо.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: "LINQ как шаг к ФП". Стиль изложения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.01.09 10:24
Оценка: :))
Здравствуйте, Qbit86, Вы писали:

Q>Я не совсем по теме хочу высказаться, просто пару слов в поддержку Влада. Имхо eao197 некорректно и некрасиво наезжает. Можно было и полегче выразиться, не теряя сути претензий.


Q>Статья же отличная (несмотря на опечатки и орфошибки). Как раз собирался в понедельник среди коллег семинар по LINQ и ФП провести, теперь же достаточно просто вручить им статью 


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

В общем, разные мы люди. Не ясно только почему это должно приводить к вот такому вот маниакальному преследованию.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: "LINQ как шаг к ФП". Стиль изложения.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.01.09 12:51
Оценка:
Здравствуйте, VladD2, Вы писали:

E>>Еще раз: статья производит впечатление написанной "в один присест", без повторных вычиток.


VD>Я бы задумался над этим если бы не два небольших факта:

VD>1. Ты единственный кто высказывает эту претензию.

Так что тебя больше беспокоит: то, что я единственный это тебе сказал, или то, что это правда?

VD>2. Ты докапывашся до всех моих статей, заметок и сообщений в чем явно просматривается личная неприязнь. Короче, не объективен.


Пруфлинк, пожалуйста.

VD>Ну, ты еще пойди Толстого и Пушкина покритикуй. Они тоже порой имели весьма развесистый слог.

VD>Это мой стиль. Как хочу так и пишу.

Пушкин, Толстой, Чистяков. Никакого снобизма и элитарности.

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

VD>Если бы мне было не чем заняться, я бы провел эксперимент лингвистического сжатия с вот этой
Автор(ы): Евгений Охотников
Дата: 03.03.2007
Данный материал рассчитан на более-менее опытных программистов, уже использующих другие языки про-граммирования, но желающих понять, что же такого особенного в языке Ruby, а тех, кому вольно или неволь-но приходится изучать Ruby  — в качестве еще одного русскоязычного источника информации о Ruby. Несколь-кими словами данную статью можно охарактеризо-вать как «глубокое погружение в Ruby для тех, кто не прочитал Programming Ruby».
твоей статьей. Там во вводных частях можно большую часть абзацев сжать если не в двое, то по крайней мере на треть.


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

VD>Все те претензии, что ты в демогогичной манере высказваешь тут мне можно применить и к тебе. Зачем нужны размышления о изменении мышления? Зачем нужно было гадать о причинах размера временных затрад? Зачем эти личностные откровения про собственный случай?


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

VD>>>Если уж ты действительно настроен на конструктив, то вместо того чтобы критиковать мой стиль и подходы, возьми и напиши аналогичную статью, но так как видишь ее ты.


E>>Нет, мне это не интересно.


VD>То-то и оно. Ну, и кто ты после этого?


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: "LINQ как шаг к ФП". Стиль изложения.
От: hugo Австрия  
Дата: 16.01.09 13:18
Оценка: 41 (1) +2
Здравствуйте, eao197, Вы писали:

Любое произведение предполагает чисто субъективный взгляд автора на тему. Говорить автору, что он не правильно выразил свой субъективный взгляд, представляется мне не объективным , ибо произведение написано именно потому, что он, автор, хотел поделиться этим своим субъективным именно так, а не иначе.
Re[8]: "LINQ как шаг к ФП". Стиль изложения.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 16.01.09 13:34
Оценка: +5
Здравствуйте, hugo, Вы писали:

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


H>Любое произведение предполагает чисто субъективный взгляд автора на тему. Говорить автору, что он не правильно выразил свой субъективный взгляд, представляется мне не объективным , ибо произведение написано именно потому, что он, автор, хотел поделиться этим своим субъективным именно так, а не иначе.


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

2. Мне казалось, что статья в печатном техническом журнале должна проходить более серьезную вычитку (на предмет орфографии и других ошибок).

3. Мне казалось, что автор должен быть готов к получению различных отзывов, в том числе и критических. Любые критические отзывы так же субъективны, как и взгляд автора на тему.

Судя по поведению автора статьи и других участников форума я понимаю, что во всех трех пунктах я ошибался. Разговор на тему качества текста статьи за сим я считаю закрытым, т.к. очевидно, что это качество не подлежит сомнению.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.