Info21 писал(а):
Алгоритмический стиль мышления -- он и юристам, и медикам (с чем я вот столкнулся), и многим прочим.
С черепашкой мы его развиваем для масс.
С ФЯ -- массы за бортом.
Ну да, вот он, миф, снова. Тот самый про который я говорил чуть выше.
ФЯ обычно проще чем ИЯ, ФП проще чем ИП. Проще и доступней для понимания не профессионала. По собственному опыту репетиторства знаю, что весьма сложно бывает объяснить, почему вот тут вот у нас a = 5, а чуть ниже, буквально через пару строк, уже сразу a = 7. Хотя, быть может у меня выборка весьма не ровная -- это обычно были старшекласники у который была неплохая математика в школе, и, по сути, никакой информатики. Возможно да, слишком хорошая математика в школе мешает императивному мышлению. Но, думаю, это не проблема, качество преподавания математики в школе неуклонно снижается, часы сокращают, быть может вообще сделают как в США -- запихнут всякие математики, физики и прочее в один курс. Назовут как-нибудь вроде "естественные науки" или "точные науки", дабы не мешать развитию креативного мышления. И вот тогда-то и будет всем для развития хоть какой-то алгоритмики, простейших навыков автоматизации рутины, черепашка в 11м классе, а то и на третьем курсе ВМК.
Возвращаясь к ФЯ: вы возможно судите о сложности ФЯ и ФП по таким языкам как Haskell, и, возможно, Lisp (если конечно судите, а не как частенько бывает на этом форуме -- не читал, не видел, не щупал, но осуждаю). Это не слишком правильно. Посмотрите на, скажем, erlang. Сложность ерланга относится к сложности хаскеля, примерно также, как сложность КП к сложности Ады. Язык очень простой. И при этом, функциональный, что позволяет ему быть, кстати, проще. Берем обычного заинтересованного студента (не вырощенного в пробирке информатики-21) без (существенног -- пара лаб в вузе не в счет) опыта программирования. Обычно через пару недель изучения и практики erlang'а он уже выдает код промышленного качества. Замечу, что эти две недели не на изучения самого языка, это на изучения erlang+OTP, т.е. библиотек, идеалогии и проч.
Также примечательно, что erlang это чисто промышленный язык с долгой историей развития. И на протяжении всего своего существования он использовался для создания больших промышленных систем (десятки миллионов строк кода). Так что все шансы стать жирным монстром у него были. Однако не стал. Потому как простота языка -- было одно из основных требований при его создании и развитии. Потому как оная простота позволяет существенно экономить при разработке продукта. Язык очень прагматичный. Замечу, что если бы он был не ФЯ а ИЯ, то простота языка не означала бы простоту разработки.
Да, этот язык является мейнстримом в телекоме, и его крайняя простота это конкурентное преимущество. Не типично для того мейнстрима, который тут привыкли всячески склонять, не правда ли?
Кстати, erlang не сидит в своей теплой и уютной телекомной нише, он таки довольно успешно лезет например в веб и другие сферы. Скажем в нише xmpp-серверов (jabber), ejabberd -- один из самых популярных, полностью писан на erlang'e.
Так вот, ничто не мешает появлению функциональной черепашки вместо императивной. И они, возможно, уже есть.