Стоит ли давать Haskell школьнику в качестве первого языка?

Доброго дня! Есть смышлённый девятиклассник, который весьма интересуется программированием.
Идея — научить его чему-то особенному, чтобы он не повторял стандартный путь самоучки, а изучил что-то более интересное под руководством наставника.
Я всерьёз подумываю рассказывать ему про Haskell и функциональное программирование.
Доводы за:
+ про C++, Pascal, php и прочих он еще успеет познакомиться и без моей помощи
+ Haskell после привыкания к «классическому» подходу воспринимается тяжелее, а здесь «чистый лист»
+ человек получит дополнительный полезный навык, который выгодно его будет отличать от сверстников
+ сам, наконец, выучу Haskell

Доводы против:
— изучение языка только «для собственного развития». Вряд ли он сможет его использовать в школьных и институтских проектах.
— знание функциональной парадигмы может навредить дальнейшему обучению, могут быть конфликты с дуболомными преподавателями

Сложность изучения — не довод. Не потянет — ок, значит, не потянет.

Что скажет хабрасообщество?
  • Вопрос задан
  • 10058 просмотров
Пригласить эксперта
Ответы на вопрос 15
leventov
@leventov
Такой опыт был — OCaml точно, Хаскель, кажется тоже. В качестве первого языка в классе школы, в России. Результаты хорошие, вроде. Погуглите.

Могу по опыту сказать, что знакомство и даже тяготение к функциональной парадигме при разработке на мейнстримных языках — это только плюс.
Ответ написан
Комментировать
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Возможно прозвучит глупо, необдуманно и слишком сложно: раз уж девятиклассник смышленный — то может попробовать дать ему сразу несколько ЯП? Пускай попробует решать задания разными способами — сначала с помощью одного ЯП, потом с другого ЯП. Пускай сравнит их в деле — это даст возможность выбрать то, что ему действительно интересно. Или, например, один ЯП — для разминки мозгов, а другой — для.
Ответ написан
iAmDanny
@iAmDanny
Я сам, собственно, десятиклассник, и может быть, моё мнение будет полезно, как взгляд с той стороны, над которой Вы хотите провести эксперимент)
Вообще, я сам недавно начал учить Haskell, и он мне нравится. Ещё мне нравится пробовать использовать функциональные плюшки в Python. Вполне возможно, что и Вашему девятикласснику понравится функциональщина. Но, честно говоря, мне кажется, что в качестве первого языка Haskell будет сложноват. Лучше начать с какого-нибудь Pascal (так как на его примере отлично видно, что представляют из себя различные типы данных), потом, например Python (и тут уже можно даватьь потихоньку функциональные плюшки питона), и потом, наконец, если интерес не пропадёт, можно дать Haskell. Мне кажется, так проще будет понять его.
Ответ написан
Комментировать
@65520
> Не потянет — ок, значит, не потянет.
Если вам заранее не важен результат, то можно учить чему угодно — не вижу смысла искать какие-то логические доводы «за» и «против» ;)

А так, Python, как тут уже сказали — один из лучших вариантов. Или просто лучший.

Простите, промазал по кнопке и нагадил в уточнениях :(
Ответ написан
@mayorovp
Haskell — язык математиков. Уверены ли вы, что ваш девятиклассник достаточно хорошо знает математику?

Если уверены — учите Хаскелю смело.
Ответ написан
Комментировать
Antares19
@Antares19
весьма интересуется программированием


Можно просто его спросить, как он сам видит программирование, что бы хотел разрабатывать и как.
Это и будет вам ответом :)
Ответ написан
Комментировать
EugeneOZ
@EugeneOZ
Вряд ли он сможет его использовать в школьных и институтских проектах.

Школа и институт — временное явление. Если Вы вправите ему мозги так, что он потом будет бесполезен в мэйнстрим прогораммировании…
Хаскелу можно только параллельно с мэйнстрим-языком учить. Java, например.
Ответ написан
m08pvv
@m08pvv
Если школьник сам захочет учить Хаскель, то ок.

Если смышлёный, то можно его обучить ассемблеру и си под микроконтроллеры — в Питере, ФМЛ №30 школьники довольно успешно на кружке осваивают изготовление плат и написание кода под микроконтроллеры.
Ответ написан
Комментировать
AxisPod
@AxisPod
Имхо функциональные языки надо давать вместе с глубоким изучением математики, ибо тут можно раскрыть их потенциал. А в первую очередь лучше давать процедурные языки. Из процедурных я бы тоже посоветовал Python, всё же прост в понимании и при этом сразу приучит правильно оформлять программный код. Но так же как вариант может двинуть в сторону ЯП+GUI, в этом случае я бы посоветовал .NET C#, большое кол-во компонентов (хоть для windows forms, хоть для wpf), высокая гибкость, большое кол-во литературы, распространенность. Да и потом можно двинуть к примеру на Unity3D.
Ответ написан
wiz
@wiz
Ортодоксальный хаскелит

Стоит. В языке и батарейках всё есть для обучения на простых, понятных и интересных ребёнку примерах.

Ответ написан
Комментировать
machine_messiah
@machine_messiah
http://CodeFlex.co
1. Стоит спросить самого подопытного.
2. Можно показать две концепции - скажем Java и Haskell, или С# и SCHEME или LISP.
А затем пусть сам выбирает, a всякие там догмы заумные это понты для приезжих
Ответ написан
Комментировать
@makondo
Где-то я читал, что в России была группа лингвистов, которая экспериментировала на собственных детях — обучала с рождения искуственному языку.
Ссылку найти не могу, нашел только статью про ифкуль
Ответ написан
Комментировать
bukrat
@bukrat
Лансер
Думаю стоит дать, но при этом очень важно не просто дать язык, а дать через конкретные проекты. С другой стороны, а вообще... ему это нужно? Может есть необходимость ему дать более популярные языки, типа С++?
Ответ написан
Комментировать
rumkin
@rumkin
Я бы не стал давать какой-то конкретный язык, а порекомендовал бы дать каждого по чуть-чуть, это даст ему представление о разнообразии языков и о языке как инструменте, а не самоцели. Пускай попробует реализовать одну и ту же задачу средствами разных языков, постепенно увеличивая сложность. Так вы избежите ситуации, когда ваше желание изучить Хаскел, повлияет на его выбор и дадите ему мощную платформу для дальнейшего самообразования.
Мне в свое время пришлось очень долго переучиваться с PHP на другие "нормальные" языки, да и по началу было страшно менять уже знакому среду. Так что пусть в омут с головой, если это его — ни чем не остановите.
Вообще первым языком высокого уровня я бы рекомендовал ruby — он прост и пластичен, с ненавязчивым ООП, имеет обширное сообщество и развитую инфраструктуру, с малых лет научится переиспользовать код, писать тесты и доки. Хотя синтаксис его после семейства C, D, Obj-C, PHP, JS, Dart мне кажется почему-то "детским".
Что не рекомендовал бы так это PHP и JS — слишком своеобразная судьба у языков и слишком много неучей в сообществе.
Ответ написан
Комментировать
@VovaOne
Я учась в универе видел что делают на js (web) и не понимал зачем java. Изучать нужно с общего. Узнать где какой язык применяют и даже количество вакансий посмотреть. Пусть выбирает сам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы