Найти в Дзене
5 подписчиков

#РазмышленияВслух. Продолжая начатую здесь тему.

Хочу сегодня порассуждать на тему функциональных языков в роли первых языков программирования.

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

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

И для меня пока открытым остается вопрос - данная неспособность постичь функциональный подход связана с привычкой или устройством мозга? То есть, удалось бы побороть эту неспособность, если бы первым языком был функциональный, и была бы столь же выражена в этом случае неспособность постичь императивный подход? Не знаю, но очень интересно. Делитесь мыслями на этот счет.
А пока несколько слов про известные мне функциональные языки.

Haskell. Это моя вторая любовь (после C#). Возможно, причина в том, что мне попался хороший учебник (Уилл Курт, "Программируй на Haskell" - образец учебника по программированию, имхо), но более вероятно другое. Haskell - это лаконичный, последовательный, строгий, изящный и в то же время богатый язык. Программировать на нем - как обедать в хорошем ресторане. Вряд ли удастся делать это часто, но однажды попробовав, ты захочешь повторить. И я думаю, что Haskell может стать хорошим первым языком, при наличии грамотного преподавателя.

Lisp. Надеюсь, среди читателей не слишком много адептов данного языка (если вы есть, то не кидайтесь сильно тапками (я конечно потерплю (при условии, что вы не отпишитесь (но это не точно)))).
А если серьезно, мне импонирует идеология Lisp (как ее понимаю я (все есть список (простите, я опять не удержался))), но уж очень он недружелюбен к программисту. Может это у меня так сложилось, но для меня кодить на лиспе - боль (при всей моей глубокой симпатии к языку). Но, если рассматривать его как первый язык, то это может стать хорошей школой, при наличии грамотного наставника. К тому же, он может воспитать хорошее чувство структуры кода, а этого многим неофитам не хватает. Так что Lisp как первый язык - may be.

Вот такой получился спич. Готов к конструктивной критике и диалогу в комментариях. 🤝
2 минуты