M>>Читая эту книгу я периодически забываю даже то, что никогда не знал про Хаскель
К>Т.е. у тебя появляется убеждённость, что ты его всегда знал чтоли?
Есть фраза, что, мол "забыл больше, чем когда-либо знал". В том плане, что забыл все напрочь. Вот у меня такое же ощущение, когд эту книгу читаю Особенно когда добрался до типов, классов типов и их экземпляров Каждый раз пытаюсь мучительно вспомнить/заново понять, что это такое, не вдаряясь в рассуждения о том, насколько это правильно реализовано с точки зрения лямбда-исчисления
M>Один из примеров — представление чисел не помню кем не помню зачем Зачем? Читая эту книгу я периодически забываю даже то, что никогда не знал про Хаскель А я еще до монад не добрался...
ИМХО целевой аудиторией этой книжки являются аспиранты в CS. Как учебник по Хаскеллу для программистов она явно не удалась.
. Вою волком. У мнея математика закончилась лет пять тому назад, не успев начаться Лямбда исчисление я ни сном ни духом А там — только оно. Ыыыыы.
Мне кажется надо отдавать себе отчёт в том, что эта книга не ставит своей целью научить программировать на хаскеле, а донести что такое ФП на примере хаскеля, дать ообщую картину, исторический контекст. Я вот после неё писать на хаскеле не научился, но автор и соавторы работают над новой книгой, которая как раз имеет более практический уклон. Черновики можно получить, если написать ему (он в обмен на прочтение хочет замечания и здоровую критику). Так, что ты можешь реально повлиять на то, какой будет следующая книга о хаскеле на русском языке.
В его блоге есть все необходимые координаты для связи.
M>Один из примеров — представление чисел не помню кем не помню зачем Зачем? Читая эту книгу я периодически забываю даже то, что никогда не знал про Хаскель А я еще до монад не добрался...
Нумералы Черча? Я тоже долго вкурить не мог. Для общего развития, чтобы комфортнее было всякие умные блоги и статьи читать
BTW: У меня как раз песня играет, характеризующая моё состояние при первых прочтениях
now playing: Future Prophecies — Mentally Destroyed
Здравствуйте, Курилка, Вы писали:
К>Т.е. у тебя появляется убеждённость, что ты его всегда знал чтоли?
Не. Это другое. Просто в процессе увлекательного чтения подобной литературы многие начинают невольно спрашивать проходящих мимо людей — как пройти в библотеку — попутно помышляя чем бы их убить.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Знаешь, временами,говоря с тобой, у менся складывается ощущение полнейшего абсурда.
Это всё от недосказанности , я тебя тоже часто не понимаю.
Если не лень разверни мысль подробнее — обсудим.
Я действительно не понял, что тебя так развеселило.
Здравствуйте, VladD2, Вы писали:
VD>Вот только нужно бы найти добровольцев на которых поэсперементировать с доступностью материала.
я первый. туупой блин. если меня научишь — каждый поймет
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, FDSC, Вы писали:
FDS>>Думаю, у всех по началу с процедурным программированием тоже возникали трудности, хотя мышление у человека такое, что можешь хоть прямо сесть и писать процедурами прямо из головы.
К>Согласно каким фактам ты утверждаешь выделенное? К>То, что 99% программных решений сделаны императивно, не говорит о том, что само мышление человека обязательно императивно, имхо.
Бог его знает, какое мышление у человека. То ли это машина Тьюринга, то ли решающую роль в нем играет квантовая когерентность, то ли еще что. Но, как я понял, FDSC, утверждал только, что человеку проще описать последовательность действий, приводящих к решению задачи в терминах процедур и функций, чнежели в терминах лямбда-исчисления. Доказать строго это вряд ли возможно, но косвенное свидетельстватаковы: (1) название топика [как я понял, у апологетов ФЯ не возникает проблем с императивными языками, поэтому программирование на ФЯ представляется более сложным] (2) значение 99% [человек для решения задачи использует те средства, которые позволяют ему проще получить результат] (3) житейский опыт [объяснения, как приготовить гороховый суп, как пройти на пл. Незалежностi, как играть на гитаре и т. д. все-таки императивны]
. Вою волком. У мнея математика закончилась лет пять тому назад, не успев начаться Лямбда исчисление я ни сном ни духом А там — только оно. Ыыыыы.
M>Один из примеров — представление чисел не помню кем не помню зачем Зачем? Читая эту книгу я периодически забываю даже то, что никогда не знал про Хаскель А я еще до монад не добрался...
Здравствуйте, Mystic, Вы писали:
M>Бог его знает, какое мышление у человека. То ли это машина Тьюринга, то ли решающую роль в нем играет квантовая когерентность, то ли еще что. Но, как я понял, FDSC, утверждал только, что человеку проще описать последовательность действий, приводящих к решению задачи в терминах процедур и функций, чнежели в терминах лямбда-исчисления.
Как-то очень давно мне приходилось работать с людьми, для которых было проще создать массив байт, высчитать в нём все нужные смещения и каждый раз делать преобразования к тем типам, которые фактически хранились в этом массиве, например, к double. Это было проще, чем просто объявить структуру и работать непосредственно с ней. Объяснить что это сложнее и можно всё сделать не так у меня не получалось, т.к. те люди просто не хотели понять, не верили, что тоже самое может за тебя сделать компилятор.
Так и с ФЯ. Нужно просто понять что такое указатель на функцию. Всё. Этого понятия достаточно, чтобы оперируя им можно было понять всё остальное. А примеров указателей на функцию и императивщиков предостаточно. Взять хотя бы ту же виртуальную функцию.
Те же кто понимает что это такое, но не понимает ФЯ, либо всё же не понимают что такое указатель на функцию, либо им просто никто не объяснил ФП, либо, скорее всего как те ребята с массивами, они просто этого не хотят из-за собственной костности мышления и упёртости.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Это все мифы
M>Бог его знает, какое мышление у человека. То ли это машина Тьюринга, то ли решающую роль в нем играет квантовая когерентность, то ли еще что. Но, как я понял, FDSC, утверждал только, что человеку проще описать последовательность действий, приводящих к решению задачи в терминах процедур и функций, чнежели в терминах лямбда-исчисления. Доказать строго это вряд ли возможно, но косвенное свидетельстватаковы: (1) название топика [как я понял, у апологетов ФЯ не возникает проблем с императивными языками, поэтому программирование на ФЯ представляется более сложным]
У большинства россиян с русским языком проблем не возникает, а вот на английском говорят далеко не все и с трудом. Следует ли из этого, что русский язык более естественный и простой для человека. Вряд ли. Так же и с императивными языками. У большинства (если не 100%)программистов императивный язык программирования был первым языком, который он изучил и использовал на практике. В психологии же известен факт, что первое мнение на какую-либо тему производит на человека на порядок большее воздействие и противоречащие первому впечатлению последующие мнения воспринимаются им с большим трудом.
(3) житейский опыт [объяснения, как приготовить гороховый суп, как пройти на пл. Незалежностi, как играть на гитаре и т. д. все-таки императивны]
Покажите пальцем, где там императивность. Например, есть рецепт приготовления супа. Кажется, что это последовательность указаний — типа императивный алгоритм. Но на самом деле, чтобы приготовить суп нужно выполнить большое количество других действий, которые явно в рецепте не указаны. Там не сказано, что нужно сделать, чтобы включить плиту, что значит помешивать ложкой, как выглядит кипение и т.п. Процесс реализации рецепта выглядит в итоге следующим образом — человеку необходимо выполнить шаг рецепта, это задает цель. Далее он пытается ее достичь, конкретизируя ее в более мелкие подцели, которые тоже разбиваются на подцели и т.д. Я бы не стал сравнивать этот процесс с выполнением императивной программы.
Здравствуйте, Quintanar, Вы писали:
Q>Покажите пальцем, где там императивность. Например, есть рецепт приготовления супа. Кажется, что это последовательность указаний — типа императивный алгоритм. Но на самом деле, чтобы приготовить суп нужно выполнить большое количество других действий, которые явно в рецепте не указаны.
Дык это не потому что он декларативен, а потому что это спецификация, т.е. не полный алгоритм, а приближение к нему.
Q>Там не сказано, что нужно сделать, чтобы включить плиту, что значит помешивать ложкой, как выглядит кипение и т.п.
Как же это? Часто написано "поставить на медленный (круто, кстати, звучит ) огонь и варить (внимание!) до готовности 10-15 минут ( ) помешивая...". Так что вполне себе императивная спецификация.
Вот если бы там было сказано сварить кортофельный суп, тогда да...
Q> Процесс реализации рецепта выглядит в итоге следующим образом — человеку необходимо выполнить шаг рецепта, это задает цель. Далее он пытается ее достичь, конкретизируя ее в более мелкие подцели, которые тоже разбиваются на подцели и т.д. Я бы не стал сравнивать этот процесс с выполнением императивной программы.
Чесно говоря декларативный стиль в ФП всегда мне казался маленьким обманом. Ведь по сути цикл, проверки и т.п. никуда не деваются. Они просто записываются по другому. Вот Пролог это уже ближе к реальной декларативности, так как там именно что идет постановка задачи.
Так что вопрос этот филосовский. По мне так не главное императивно или нет написан код. Важно, чтобы он был понятен и до разумных пределов краток.
В ФП иногда краткость и выразительность достигается применением мощьных встроенных вязык паттернов и сахара. Вот тут да. Декларативность выше. Скажем паттетрн-матчин действительно декларативен (особенно навороченный).
Но главное в программах это грамотный выбор абстракции. Тот же ООП позовляет создать хорошую абстрацию на уровне всех программы, но практически не имеет сахара для реализации на урове тел методов. Вот лямбды с замыканиями и функциями высшего порядка позволяют асбрагировать код. И это дает отличный результат. Но декларативность ли это? Как посмотреть... Можно сказать — да. А можно сказтать, что это грамотная декомпозиция кода.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.