http://habrahabr.ru/company/hexlet/blog/248397/
В последние десять лет мой стандартный ответ на вопрос «с какого языка начинать знакомство с программированием?» был прост — Python. Теперь я меняю свою рекомендацию. Python все еще хороший язык. Он позволяет сфокусироваться на задаче и не волноваться об архитектурных заморочках. О штуках, которые опытные программисты считают важными, позабыв о том, каково это — быть абсолютным новичком. Сам язык растворяется на фоне, и вместо объяснения возможностей и философий, уроки посвящены генерации музыкальных звукорядов, вычислению расстояний на стадионе в зависимости от беговой дорожки, или написанию автоматического игрока в покер или
ятцы.
И вот в один прекрасный день студент задаст невинный вопрос: «А как сделать так, чтобы симулятор покера был не в командной строке, а в окне, с кнопкой для выдачи следующих карт?»
Сложно описать сложность этого вопроса. Он заставляет рассматривать различные GUI-инструменты для Python. Оказывается,
Гвидо делает то же самое каждые пару лет: задумывается, является ли TkInter правильным выбором для IDLE, стандартного IDE для Python. Но пока это TkInter.
Спустя неделю — новый вопрос: «Как написать простую игру, с графикой?»
Пора снова изучить варианты. Pyglet выглядит многообещающе, но он не обновлялся с июля 2012 года. Есть библиотеки, которые фокусируются на чем-то конкретном и не пытаются делать все подряд, например, SplatGL, но она довольно новая и сложно найти достаточное количество примеров. PyGame вроде как популярен, есть даже книга, так что окей, давайте учиться как использовать PyGame.
Спустя месяц новые вопросы: «Как я могу поделиться своей игрой с другом? Хотя… можно ли закачать эту игру на телефон, чтобы показать всем, и чтобы им не нужно было ничего устанавливать?»
Эмм…
Все эти вопросы заставили меня отказаться от Python как языка для обучения. Конечно, всегда будут те, кто считают правильным только олдскульный путь — файлы со скриптами алгоритмов, которые генерируют монохромный текстовый вывод в терминале — но нужно понимать уровень изоляции, который сопровождает такой выбор. Это зачастую совсем не то, что хотят делать люди. Да, можно найти аддоны практически для всего, но какие из них прошли через пот и ругань серьезных проектов? Какие хорошо поддерживаются сегодня, но будут забыты завтра?
Рост популярности не-десктопов все усложняет, да. Я изучал Erlang чтобы уйти от С и С++ и изменить свой уровень мышления. Я доказал, что могу использовать Erlang и чисто функциональный подход в той сфере, которую все больше всего боятся: игры. А потом вышел Айфон и все. Erlang’у больше нет места.
Именно из-за этих мыслей и опыта теперь я рекомендую JavaScript в качестве языка для обучения. Я знаю, знаю, он причудливый и иногда просто странный, но в целом это нормальный и достаточно современный язык. Самое главное, он работает на беспрецедентно повсеместной кросс-платформенной системе для разметки, типографики и рендера. Хочешь показывать элементы интерфейса, изображения или текст? Используй HTML напрямую. Хочешь графику и анимацию? Используй canvas.
Я ожидаю реакции многих на такое изменение мышления: ужас и страх. Эти реакции не должны быть связаны с недостатками JavaScript. Они должны быть связаны с тем, что я проигнорировал кучу других языков, не взирая на их возможности, системы типизации или синтаксис, просто потому что у них нет нативной поддержки в веб-браузерах.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.