"абстракция, с помощью которой можно нечистые операции ввода-вывода уложить в чистый функциональный язык" - вот тут, наверное, главная разница в подходах. А зачем что-то куда-то укладывать? Суть - в расхождении целей, в этом главном вопросе: зачем? Чего хотим? Чего ради вообще это функциональное программирование? Варианты ответов:
1. Мы-практикующие программисты, а потому хотим, чтобы инструменты соответствовали своему назначению, а не указывали нам, что чисто, а что нет. Мы занимаемся инженерной деятельностью - пишем программы, а потому все лишнее бреем по Оккаму и привет монадам.
2. Мы - практикующие программисты, а потому нам скучно, ибо задачи требуют инженерного подхода, а нам свою математическое образование девать некуда. Поэтому давайте придумаем себе хоть какое-то развлечение, а вот, кстати, и монады с приветом.
Автор (по моему, это очевидно) стоит на первой позиции. Его статья действительно не помогает осознать монады в первую очередь потому, что автор такой цели и не ставит. А твой коммент выдает приверженца второй парадигмы, и это рассуждение, конечно, тоже не новое и восходящее еще к ветхозаветным догматам о делении сущностей на чистые и нечистые :-)
Так вот. Мой опыт говорит, что самое интересное - не отстаивать какую-то из этих точек зрения, а наблюдать ситуацию сверху. Примерно с такой позиции я и смотрю на функциональное программирование (и не только на него). Мне такой взгляд нравится, отсюда зачастую интересные виды. Присоединяйся!
А мне кажется, что автор стоит на позиции "Ассемблер и монады: на хрена козе баян?". В такой постановке вопроса действительно не за чем. Монады - инструменты, сфера разумной применимости которых вполне определена. А ведется обсуждение одного лишь из аспектов их применимости, да и то в том языке, в котором этот инструмент, в общем-то, не нужен.
А насчет инструментов, которым не нам указывать. Фраза машиниста: "Да что эти рельсы! Не им указывать, куда мне ехать!" ;) Можно и без рельсов, да, но перемещение будет не так эффективно. А если по рельсам, то уж извините, только в указанном направлении. Так и с языком: принимая плюсы чистого функционального программирования, приходится принимать и его минусы. И для преодоления минусов как раз и нужны монады. А можно и без таких языков, да, но тогда к чему обсуждение монад?
Я ни против монад, ни за. Мне не нравится критикантство.
P.S.: Просто читая Хаскелл шестой год, я таки более или менее осознал, что такое монады в чистом функциональном программировании и как это можно рассказывать другим, чтобы они тоже осознали. А вот автор статьи не осознал, как мне кажется.
Автор не осознал. Более того, он не осознал, а зачем ему это осознавать! Именно об этом и статья. Спорить с этой позицией можно - но ты почему-то этого не делаешь. Он не критикует монады, он критикует тех, кто тратит время на "осознание" этой концепции и заставляет тратить на это "осознание" время других. Ну то есть да, именно тебя. Ну так ответь ему. Объясни ему, какие плюсы ты получаешь от этого осознания, а то вот он считает, что единственный твой плюс - в осознании своей "крутизны". Объясни, как на самом деле - это и будет ответ. А пока ты только иллюстрируешь его слова собственным примером, при этом называя его подход критиканством. Не логично.
И с транспортной аналогией забавно получается. У него она тоже есть, обсуждается реакция мастеров на просьбу научить водить автомобиль. Оказывается, есть вариант в ответ услышать, что поезда ходят по рельсам :-) Я не предлагаю искать тут никакого смысла, все, конечно, получилось случайно и понимаю, что соединяю в части от разных аналогий - но по-моему забавно.
> Автор не осознал. Более того, он не осознал, а зачем ему это осознавать! Совершенно верно. В Скале ему это и не нужно. Если он позволяет себе отступать от чистого функционального программирования, то имеются инструменты, менее сложные идеологически.
Еще раз, что мне не нравится в том тексте.
> Если же оставить всю эту теорию, [...] то вдруг выяснится, что понять, как водить автомобиль, не особо-то и сложно... > Собственно, именно так я сейчас поступлю с монадой.
И проблема в том, что ТАК с монадой он не поступил. Сначала он навалил много функций обработки контейнеров. Потом рассказал про цепочку вычислений с возможной ошибкой. А потом радостно заключил
> И в этом, собственно, состоит основной прикол того, что все эти люди называют «монадами».
Так это не монады :) Это именно специализированная обработка контейнера и именно специфическая организация вычислений с возможной ошибкой. И даже сам автор об этом говорит (шизофрения? две противоречивые личности в одной голове? или просто от непонимания, что такое монада). Может быть, он дальше все-таки пытается выяснить и донести до читателя, что такое монада? Тоже нет. Ну и о чем тогда статья?
А насчет ответить - очень стандартная ситуация. Действительно, монады - объекты, весьма нетрививальные идеологически. И у неофитов регулярно возникает вопрос, а что такое монада? И его задают. Но фокус в том, что ответ на этот вопрос составляет небольшую 20-30 минутную лекцию, не содержащую слова "монада". Поскольку речь идет об идеологии функционального программирования. Соответственно, неудовлетворенность слушателя может быть вызвана массой причин: - "мастер" напечатал в ответ "Не буду отвечать письменно, потому что длинно" и на этом остановился в объяснениях; - "мастер" таки устроил этот рассказ голосом - в Скайпе или при личной встрече, но слушатель среагировал на отсутствие слова "монада" и не воспринял ответ; - слушатель таки осознал ответ, но примерив к своей любимой Скале, пришел к выводу, что это все фуфло полное, пригодное исключительно для яйцеголовых и не имеющее отношения к реальности; - еще мало ли что...
И в итоге человек отвалился разочарованный и, скорее всего, так и не понявший, что такое монады и зачем они нужны. Но после этого почему-то считает вправе рассказать другим, что монады - всего лишь красивые слова, прикрывающие обработку контейнеров и цепочки вычислений с возможными ошибками. А нужно ли ему отвечать? Он ведь уже составил свое мнение?
1. Мы-практикующие программисты, а потому хотим, чтобы инструменты соответствовали своему назначению, а не указывали нам, что чисто, а что нет. Мы занимаемся инженерной деятельностью - пишем программы, а потому все лишнее бреем по Оккаму и привет монадам.
2. Мы - практикующие программисты, а потому нам скучно, ибо задачи требуют инженерного подхода, а нам свою математическое образование девать некуда. Поэтому давайте придумаем себе хоть какое-то развлечение, а вот, кстати, и монады с приветом.
Автор (по моему, это очевидно) стоит на первой позиции. Его статья действительно не помогает осознать монады в первую очередь потому, что автор такой цели и не ставит. А твой коммент выдает приверженца второй парадигмы, и это рассуждение, конечно, тоже не новое и восходящее еще к ветхозаветным догматам о делении сущностей на чистые и нечистые :-)
Так вот. Мой опыт говорит, что самое интересное - не отстаивать какую-то из этих точек зрения, а наблюдать ситуацию сверху. Примерно с такой позиции я и смотрю на функциональное программирование (и не только на него). Мне такой взгляд нравится, отсюда зачастую интересные виды. Присоединяйся!
Reply
А насчет инструментов, которым не нам указывать. Фраза машиниста: "Да что эти рельсы! Не им указывать, куда мне ехать!" ;) Можно и без рельсов, да, но перемещение будет не так эффективно. А если по рельсам, то уж извините, только в указанном направлении. Так и с языком: принимая плюсы чистого функционального программирования, приходится принимать и его минусы. И для преодоления минусов как раз и нужны монады. А можно и без таких языков, да, но тогда к чему обсуждение монад?
Я ни против монад, ни за. Мне не нравится критикантство.
P.S.: Просто читая Хаскелл шестой год, я таки более или менее осознал, что такое монады в чистом функциональном программировании и как это можно рассказывать другим, чтобы они тоже осознали. А вот автор статьи не осознал, как мне кажется.
Reply
И с транспортной аналогией забавно получается. У него она тоже есть, обсуждается реакция мастеров на просьбу научить водить автомобиль. Оказывается, есть вариант в ответ услышать, что поезда ходят по рельсам :-) Я не предлагаю искать тут никакого смысла, все, конечно, получилось случайно и понимаю, что соединяю в части от разных аналогий - но по-моему забавно.
Reply
Совершенно верно. В Скале ему это и не нужно. Если он позволяет себе отступать от чистого функционального программирования, то имеются инструменты, менее сложные идеологически.
Еще раз, что мне не нравится в том тексте.
> Если же оставить всю эту теорию, [...] то вдруг выяснится, что понять, как водить автомобиль, не особо-то и сложно...
> Собственно, именно так я сейчас поступлю с монадой.
И проблема в том, что ТАК с монадой он не поступил. Сначала он навалил много функций обработки контейнеров. Потом рассказал про цепочку вычислений с возможной ошибкой. А потом радостно заключил
> И в этом, собственно, состоит основной прикол того, что все эти люди называют «монадами».
Так это не монады :) Это именно специализированная обработка контейнера и именно специфическая организация вычислений с возможной ошибкой. И даже сам автор об этом говорит (шизофрения? две противоречивые личности в одной голове? или просто от непонимания, что такое монада). Может быть, он дальше все-таки пытается выяснить и донести до читателя, что такое монада? Тоже нет. Ну и о чем тогда статья?
А насчет ответить - очень стандартная ситуация. Действительно, монады - объекты, весьма нетрививальные идеологически. И у неофитов регулярно возникает вопрос, а что такое монада? И его задают. Но фокус в том, что ответ на этот вопрос составляет небольшую 20-30 минутную лекцию, не содержащую слова "монада". Поскольку речь идет об идеологии функционального программирования. Соответственно, неудовлетворенность слушателя может быть вызвана массой причин:
- "мастер" напечатал в ответ "Не буду отвечать письменно, потому что длинно" и на этом остановился в объяснениях;
- "мастер" таки устроил этот рассказ голосом - в Скайпе или при личной встрече, но слушатель среагировал на отсутствие слова "монада" и не воспринял ответ;
- слушатель таки осознал ответ, но примерив к своей любимой Скале, пришел к выводу, что это все фуфло полное, пригодное исключительно для яйцеголовых и не имеющее отношения к реальности;
- еще мало ли что...
И в итоге человек отвалился разочарованный и, скорее всего, так и не понявший, что такое монады и зачем они нужны. Но после этого почему-то считает вправе рассказать другим, что монады - всего лишь красивые слова, прикрывающие обработку контейнеров и цепочки вычислений с возможными ошибками. А нужно ли ему отвечать? Он ведь уже составил свое мнение?
Reply
Leave a comment