love5an: (Default)
Dmitry Ignatiev ([personal profile] love5an) wrote2011-11-01 03:05 pm

Небольшой ответ на ответы на мои "наезды" на хаскель

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


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

В истории классической промышленности были периоды когда всё делали единично и ручками. Я мог бы сравнить такие периоды с ранним развитием IT. Со временами расцвета UNIX или DOS. С языками вроде Си.

Потом были периоды рабовладельческого строя и раннего капитализма, когда любую задачу закидывали необходимым количеством человеков. Я бы сказал, что сейчас в IT-индустрии как раз такой подобный период, со всеми этими Java и PHP.

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

И IT-индустрию ждет когда-нибудь то же самое, то есть массовая автоматизация, программы которые пишут программы(понимаете, к чему я клоню, да?), и это неминуемо.

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

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

Кстати, скоро напишу на хабр статью о макросах и метапрограммировании в лиспе, как только продумаю её.

[identity profile] thesz.livejournal.com 2011-11-01 07:52 pm (UTC)(link)
Вот Джоэль Спольски считает, что настоящего программиста от просто программиста отличает умение и понимание работы с указателями.

Может и с рекурсией то же самое?

[identity profile] 9zloy.livejournal.com 2011-11-01 08:29 pm (UTC)(link)
Я бы рискнул предположить что да. Если человек не может написать функцию для подсчета факториала через рекурсию - то это крайне плохо.

[identity profile] thesz.livejournal.com 2011-11-01 08:46 pm (UTC)(link)
Замечательно. Я рад, что мне удалось перевести плоскость дискуссии из "человек лучше воспринимает" в наличие или отсутствие конкретных способностей у конкретного человека.

Далее я выдвину тезис, что практически любые способности тренируются. Вы согласны?

[identity profile] 9zloy.livejournal.com 2011-11-01 08:48 pm (UTC)(link)
Насчет любых, я бы не стал утверждать :) Но научить понимать рекурсию, думаю, можно любого. Ее сложность не связана с чем-то трасцендентным, просто мозги по дефолту не заточены ее воспринимать.

[identity profile] thesz.livejournal.com 2011-11-01 10:13 pm (UTC)(link)
О, тренируемость человека поразительна.

И насчёт "мозгов по дефолту" я тоже не согласен.

Всего 30% из тех, кому нравится программирование (выбирают эту стезю), способны программировать.

http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html

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

[identity profile] 9zloy.livejournal.com 2011-11-02 11:00 am (UTC)(link)
>Всего 30% из тех, кому нравится программирование (выбирают эту стезю), способны программировать.

Это похоже на такие высказывания.
"30% из художников способны рисовать" или "30% из писателей способны писать".
Давайте уж определимся с терминологией. Что значит "программировать"?

Вот с чем я согласен, так это с тем, что только ~20% программистов умеют программировать классно. 80% могут программировать, но только посредственно.

Заточены ли мозги под математику? Или под физику?

[identity profile] thesz.livejournal.com 2011-11-02 11:21 am (UTC)(link)
>Давайте уж определимся с терминологией. Что значит "программировать"?

Там по ссылке есть "определение". Можно взять "способны справиться с тестами по курсу программирования на 4 и выше".

Или вы не читали пост по ссылке и статью по ссылке из поста?

Если не читали, я, пожалуй, устраню себя из дискуссии.

[identity profile] 9zloy.livejournal.com 2011-11-02 12:31 pm (UTC)(link)
Какое отношение студенты имеют к профессиональным программистам? Понятно, что не все из них станут программистами. Научить программировать на каком-то уровне можно любого. Как и научить рисовать или играть на пианино. Другой вопрос, как это будет получаться? Если нет слуха, видно будет не очень получаться. Но как-то будет.

[identity profile] tomcatkins.livejournal.com 2011-11-01 10:44 pm (UTC)(link)
А скобки в лиспе не это ли самое и делают - представляют рекурсию в удобном мозгу виде?

К примеру, рекурсивное определение натурального числа (единица или единица плюс натуральное число) я так и представил себе - в виде единицы, инкрементально обрастающей скобками и новыми единицами.

Типа скормил вывод вводу, ушел спать. Десять негритят пошли купаться в море.

[identity profile] 9zloy.livejournal.com 2011-11-02 08:16 am (UTC)(link)
Вполне возможно. По крайней мере в Scheme как-то рекурсию проще понимать, чем в Java