дело в том, что помимо того, что код надо читать, его надо еще и писать - и то, что я на C# заверну 'нудную' реализацию в функцию с читабельным именем никак мне не облегчит саму задачу написания кода
проблема в стрессе, который возникает после написания N тысяч строк такой вот нудной реализации чувствуешь себя человеком-компилятором, а не программистом
да им и так страшно будет, доделывать чужой код работа неблагодарная, на чём бы и как бы этот код ни писался
кроме того, в крупных проектах используются mainstream-технологии (а не Haskell) и применяются определенные policy при кодировании, что облегчает задачу
для моей больной головы лучше Haskell, т.к. мне во многих случаях удобнее думать на нём
а для решения конкретной задачи может вообще так оказаться, что лучше вообще не писать код самому, а отдать его индусу на аутсорс
индус за $500/month лучше Haskell'а, да
собственно, статья не про это
а всё благодаря тому, что Microsoft знает, кого нанимать на ключевые посты
у LINQ ноги растут из Haskell
то был ответ автора некоторым личностям из комментариев к оригинальной статье
дело в том, что помимо того, что код надо читать, его надо еще и писать - и то, что я на C# заверну 'нудную' реализацию в функцию с читабельным именем никак мне не облегчит саму задачу написания кода
проблема в стрессе, который возникает после написания N тысяч строк такой вот нудной реализации чувствуешь себя человеком-компилятором, а не программистом
цикл там парой строк ниже приведён
еще один горе-комментатор
кроме того, в крупных проектах используются mainstream-технологии (а не Haskell) и применяются определенные policy при кодировании, что облегчает задачу
стресс - это объективный критерий
если я мыслю задачу в терминах списков и свёрток, то транслировать это в циклы и состояния при кодировании на C# - больно
хорошо лишь тем, кто по-другому кроме как в императивных терминах думать не умеет
и покажите мне пальцем на того, кто не шизанется написать пару сотен таких вот реализаций на x86
а так да, всего-то лишь символов больше
видите ли, программы пока еще пишут люди :)
вообще-то это была иллюстрация "как не надо делать в C#" статью, вы, похоже, не читали (много букв?)
и, btw, не вижу ничего примечательного в унылом managed-враппере над Direct3D и D3DX
myDescriptions = map description >>> delete "" >>> List.intersperse "\n" >>> concat
это практически человеческое объяснение того, что нужно сделать:
сравните это с унылым циклом:
Оккам был бы недоволен
когда вы пишете цикл, вы говорите, как нужно сделать
когда вы пишете list comprehension или даже map/filter (как в примере) вы говорите, что нужно сделать
семантика разная, а не внешний вид
foreach
- это совсем другие тапки, в функциональных языках этого не существует (т.к. понятиеforeach
неприменимо в функциональной терминологии)fold