В наш великий ВУЗ последние несколько лет с завидной частотой приглашают всяких дяденек прочитать лекцию на не то, чтобы на очень сильно ограниченные темы
( Read more... )
Поначалу мне как раз всякие ADT, тайпклассы и т. п. казались частными перестановками фич обычных ООП-языков. Натурально, то, что делают при помощи замыканий/adt/typeclasses/etc тривиальным образом (см. Паттерны) реализуется на простой и понятной любой кухарке Jave.
То, что паттерны и ОО-проектирование преподносят как священную корову - лишь вот это излишнее. А так че там с ООП: классы да [виртуальные] методы, ничего концептуально сложного. А паттерны: ну в хаскелле тоже ведь есть всякие общеупотребительные трюки, стили. Преимущество ФП в том, что его концепции хорошо и просто математически формализованы. В этом, мне кажется, большое преимущество. А вообще для обладателя Абстрактного мышления по-моему ООП не сложнее ФП.
Впрочем, отдельно скажу, что теперь, когда у меня концепции ФП правильно уложились в голове, мне их не хватает в работе. Может, это и свидетельствует о простоте ФЯ :)
> проблемы системы образования в части правильного обучения программированию - не проблема «правильных» программистов. У меня стойкое чувство, что с ФП как с утятами. Что первое увидели - то и мама. То есть если начать программировать с Хаскелля, ФП будет просто и естесственно. А вот менять подход сложно.
По последнему: нет, я пишу на плюсах. Не хватает общеизвестных штук из функциональщины, хотя бы лямбд, тайпклассов, частичного применения, нормального Maybe, а лучше монад вообще. Что-то в С++ можно изобразить, но у нас не принято таким баловаться :)
Тем, что хотя бы 20% этого самого ООП я могу понять и применить.
Понять же Хаскелл и прочие функциональные языки я не в состоянии. Я не математик и стать математиком никогда не смогу.
Да, математики вроде тебя - высшая каста/раса/whatever, но зачем постоянно об этом на всех углах-то кричать?.. Нам, идиотам-гуманитариям с интуитивно-ассоциативным образом мышления и подсознательной выборкой, обидно, когда нас постоянно называют идиотами.
Я искренне считаю, что дело не в мозгах, а в образовании и окружающих условиях. Лямбде можно и совсем детей научить (Крокодильчики!), ЛИСПом давно пора заменить Паскаль в школьной программе, Хаскель совсем не страшный, если не слушать всяких идиотов, кричащих о том какая непонятная штука монады или ещё там чего-то, а просто выкинуть на время все свои предвзятости и привычки по поводу кодинга и взглянуть на происходящее в текстовом редакторе с логической точки зрения, а не «сначала в эту ячейку памяти пишу это, потом в ту то».
ООП, кстати, тоже можно просто понятно учить (если не начинать пытаться выражать в нём плохо для него подходящие вещи, возводить эти костыли в ранг библии и молиться на них как на рокет-сайнс), показав как все механизмы типа наследования и виртуальных функций работают на самом деле, а не тупым зазубриванием фактов, и не разводя филососфию о том как что надо укладывать на «язык предметной области».
Нет, ну я верю, что бывают люди с проблемами в элементарной логике (однажды видел такую тётю в троллейбусе), но обычно все «не могу» - это «не хочу» или «боюсь». Двигать вперёд теорию категорий никто не заставляет же, а элементарный минимум просто и непринуждённо осваивается практикой.
Comments 24
То, что паттерны и ОО-проектирование преподносят как священную корову - лишь вот это излишнее. А так че там с ООП: классы да [виртуальные] методы, ничего концептуально сложного. А паттерны: ну в хаскелле тоже ведь есть всякие общеупотребительные трюки, стили. Преимущество ФП в том, что его концепции хорошо и просто математически формализованы. В этом, мне кажется, большое преимущество. А вообще для обладателя Абстрактного мышления по-моему ООП не сложнее ФП.
Впрочем, отдельно скажу, что теперь, когда у меня концепции ФП правильно уложились в голове, мне их не хватает в работе. Может, это и свидетельствует о простоте ФЯ :)
Reply
Reply
У меня стойкое чувство, что с ФП как с утятами. Что первое увидели - то и мама. То есть если начать программировать с Хаскелля, ФП будет просто и естесственно. А вот менять подход сложно.
По последнему: нет, я пишу на плюсах. Не хватает общеизвестных штук из функциональщины, хотя бы лямбд, тайпклассов, частичного применения, нормального Maybe, а лучше монад вообще. Что-то в С++ можно изобразить, но у нас не принято таким баловаться :)
Reply
В 0x, или как оно там называется, обещают вроде.
Reply
Тем, что хотя бы 20% этого самого ООП я могу понять и применить.
Понять же Хаскелл и прочие функциональные языки я не в состоянии. Я не математик и стать математиком никогда не смогу.
Да, математики вроде тебя - высшая каста/раса/whatever, но зачем постоянно об этом на всех углах-то кричать?.. Нам, идиотам-гуманитариям с интуитивно-ассоциативным образом мышления и подсознательной выборкой, обидно, когда нас постоянно называют идиотами.
Reply
Лямбде можно и совсем детей научить (Крокодильчики!), ЛИСПом давно пора заменить Паскаль в школьной программе, Хаскель совсем не страшный, если не слушать всяких идиотов, кричащих о том какая непонятная штука монады или ещё там чего-то, а просто выкинуть на время все свои предвзятости и привычки по поводу кодинга и взглянуть на происходящее в текстовом редакторе с логической точки зрения, а не «сначала в эту ячейку памяти пишу это, потом в ту то».
ООП, кстати, тоже можно просто понятно учить (если не начинать пытаться выражать в нём плохо для него подходящие вещи, возводить эти костыли в ранг библии и молиться на них как на рокет-сайнс), показав как все механизмы типа наследования и виртуальных функций работают на самом деле, а не тупым зазубриванием фактов, и не разводя филососфию о том как что надо укладывать на «язык предметной области».
Reply
Reply
Reply
Leave a comment