Какой язык выбрать новичку для изучения программирования (ответ: JavaScript)

13645
3

Хотите уйти в айти, но не знаете, с чего начать? Первый шаг самый трудный, а первый шаг для программиста — выбор самого первого языка. И к этому выбору нужно подойти со всей ответственностью, потому что от него зависит ваша дальнейшая карьера. Преподаватель по программированию во FreeCodeCamp Квинси Ларсон считает, что тут двух вариантов быть не может: JavaScript и только JavaScript. Свои доводы он изложил в колонке на Medium, перевод которой приводит AIN.UA.

Обучение программированию для большинства людей начинается с простого Google-поиска, как правило, с запросом типа: «выучить то-то и то-то». Но как решить, с какого языка начать?

«В Долине все время шутят про Java. Наверное, начну с него».

Или «Haskell. Он сейчас в тренде. Значит, Haskell».

Или «Эти суслики в Go — такая милота, черт возьми»…

А все остальные, скорей всего, делают так: «Какой язык программирования учить в первую очередь?».

Этот вопрос так часто задают, что для него даже есть специальная инфографика (теперь и на русском):

Процесс принятия решения, с какого языка программирования начать свою IT-карьеру, может быть забавным. Что-то вроде этих персональных тестов «Какой ты персонаж из фильмов Тарантино?». Но прежде чем вы броситесь штудировать Ruby, потому что в детстве вам нравилось делать поделки из пластилина, позвольте напомнить вам, что ставки довольно высоки. Вам понадобятся сотни часов практики, прежде чем вы начнете хотя бы чуть-чуть разбираться в своем первом языке программирования.

Так что учтите ряд факторов:

  • рынок труда для языка
  • перспективы языка в будущем
  • насколько язык прост в изучении
  • какие проекты можно построить в процессе обучения (и делиться с друзьями, чтобы не терять мотивацию)

Каждый год появляются новые языки программирования, а вместе с ними новые учебные материалы и новые комиксы в интернете. Когда приходит время выбрать язык программирования, с нехваткой вариантов вы точно не столкнетесь. Чтобы хоть как-то сузить круг, вот самые распространенные Google-запросы, связанные с программированием, за последние 12 лет:

У Java были свои взлеты и падения. Python постепенно растет и становится самым популярным выбором. А между ними спрятался маленький паровозик, который медленно но верно набирал популярность последние несколько лет. Это паровозик — JavaScript.

Прежде чем я начну говорить о языках программирования, позвольте прояснить:

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

Как программированию учат в школе

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

В 2016-м многие университеты до сих пор подразумевают под программированием информатику, а под информатикой — математику.

В результате большинство курсов программирования для новичков ФОКУСируются на языках низкого уровня абстракции вроде C или математического MATLAB. И заведующие кафедрами как правило указывают на языки, лидирующие в рейтингах вроде .IOBE Index или IEEE:

Большинство из этих рейтингов выглядят так же, как и 10 лет назад. Но изменения происходят. Даже на академическом уровне. В 2014 году Python обошел Java и стал самым популярным языком в образовательной системе США.

А сегодня происходит другое изменение. Если вы посмотрите на языки, которые, собственно, используются работающими программистами, то увидите совсем другую картину: с большим отрывом лидирует JavaScript, которым, по данным исследования Stack Overflow 2016, пользуется самое большое количество разработчиков.

Больше половины всех разработчиков используют JavaScript. Он жизненно важен для front-end разработки и все более актуален для back-end. И все шире используется в сферах вроде геймдева и интернета вещей.

В вакансиях JavaScript упоминается чаще любых других языков программирования, кроме Java:

Данные крупнейшего агрегатора вакансий Indeed.com

Очевидно вы уже поняли, что я с потрохами купился на JavaScript. Ради него я забросил и Python, и Ruby. И теперь оупенсорс-коммьюнити, которым я управляю, его преподает.

Но подходит ли он конкретно вам? Достоин ли он того, чтобы стать вашим первым языком программирования? Давайте пройдемся по фактам, которые я ранее упоминал.

#1: Рынок труда

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

Как я отметил выше, Java на первом месте по упоминаниям в вакансиях. JavaScript на втором с небольшим отрывом. Но вот что интересно насчет JavaScript: несмотря на то, что он существует около 20 лет, почему-то только теперь он стал серьезным инструментом, вокруг которого такие компании, как Netflix, Walmart и PayPal готовы строить свои сервисы. В результате, достаточно много компаний нанимают JavaScript-разработчиков, но при этом их не так много на рынке труда:

Данные с Indeed.com

За каждое место с Java конкурирует почти три специалиста. С PHP и iOS ситуация примерно такая же. А на каждую позицию с JavaScript только 0,6 претендентов. Так что это довольно свободный рынок для разработчиков с навыками по JavaScript.

#2: Перспективы на будущее

В среднем JavaScript-проект получает в два раза больше пул реквестов, чем проекты на Java, Python или Ruby. И что важнее, JavaScript растет быстрее, чем любой другой язык.

Статистика GitHub, октябрь 2016

JavaScript-экосистема выигрывает также благодаря огромному количеству вложений денег и инженерных талантов со стороны компаний вроде Google, Microsoft, Facebook, Netflix. Например, у TypeScript (статически типизированная надстройка JavaScript) более 100 оупенсорсных участника, большинство из которых работают в Microsoft и Google и получают зарплату за его развитие.

Организовать что-то подобное для Java сложнее из-за Oracle, которая завладела Java после покупки Sun Microsystems и часто судится с компаниями, которые пытаются наложить на него руки.

#3: Простота в изучении

Большинство программистов подтвердят, что скриптовые языки высокого уровня сравнительно просты в изучении. JavaScript подпадает под эту категорию наряду с Python и Ruby. Даже несмотря на то, что в университетах до сих пор изучают языки вроде Java и C++ в качестве первого языка, они значительно более сложны для новичка.

#4: Проекты, которые можно делать

А вот тут JavaScript впереди планеты всей. Он работает на любом устройстве, на котором есть браузер, прямо в браузере. Вы можете построить что угодно с помощью JavaScript и опубликовать где угодно. Благодаря вездесущности JavaScript, сооснователь Stack Overflow Джефф Атвуд ввел свой ставший знаменитым закон:

«Любое приложение, которое можно написать на JavaScript, рано или поздно напишут на JavaScript».

И с каждым месяцем закон Атвуда крепчает.

Когда-то Java тоже обещала, что будет работать везде. Может, помните Java Applets. Oracle официально убила их ранее в этом году.

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

Для контраста вот несколько приложений, которые члены нашего оупенсорс-коммьюнити построили в своих браузерах на CodePen. Вы можете пощелкать ими прямо у себя в браузерах:

Сперва выучите один язык. Потом переходите ко второму

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

Язык С хорош для понимания принципов работы компьютеров с точки зрения управления памятью. Он также полезен для высокопроизводительных вычислений. C++ отлично подходит для разработки игр. Python великолепен для науки и статистики. Java очень важен, если вы хотите работать в крупных IT-компаниях.

Но сперва изучите JavaScript.

А сейчас я попробую сделать невозможное — заранее ответить на возражения в комментариях.

Возражение #1: Но JavaScript слишком медленный, разве нет?

Для большинства практических целей JavaScript так же быстр, как и другие высокопроизводительные языки. JavaScript (Node.js) на несколько порядков быстрее, чем Python, Ruby и PHP. Он также почти столь же быстр, как и C++, Java и Go.

Вот результаты самых последних межъязыковых тестов:

Возражение #2: Но JavaScript не статически типизирован

Как Python и Ruby, JavaScript динамически типизированный, и это удобно. Но можно попасть впросак. Здесь я установил exampleArray как массив. Установил его значения, после чего проверил его длину  — то есть число элементов, которое в него входит.

А потом я внезапно назначил exampleArray как строку.

Такие ошибки в динамически типизированных языках происходят постоянно. Большинство разработчиков делают проверки на месте, чтобы их предотвратить, и пишут соответствующие тесты.

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

«Typescript не так прост в изучении, но если вы уже знаете JavaScript, он дастся вам легко», — говорит о TypeScript Алекс Эвелёф.

Возражение #3: Но я очень хочу делать мобильные приложения

Я все равно рекомендую начать с JavaScript.

JavaScript объединяет в себе несколько инструментов для создания нативных мобильных приложений, например, Angular Cordova и React Native. Чтобы ваше приложение могло делать разные интересные фокусы, ему, очевидно, понадобится достойный back end, который вы, скорей всего, захотите построить на достойном фреймворке, например Node.js + Express.js.

Также следует отметить, что лучшие дни разработки мобильных приложений вполне могут быть позади. Для новичков: как бы много людей не пользовались мобильными приложениями, почти половина всех вакансий в области разработки — за веб-девелопментом. Несравнимо с 8% предложений, для которых нужно уметь программировать приложения.

Предсказание «для этого есть специальное приложение» так и не сбылось. Наоборот, большинство владельцев смартфонов перестали загружать новые приложения. Конечно, они все еще пользуются ими. В основном, Facebook, Google Maps и парочкой других, которые всегда под рукой. Посему основная масса мобильных разработчиков сконцентрирована в нескольких крупных компаниях.

Перспективы труда в области мобильной разработки трудно прогнозировать. Большинство аспектов разработки, обслуживания и распространения мобильных приложений проще с JavaScript. Поэтому компании вроде Facebook и Google не жадничают, когда речь идет об инвестициях в новые инструменты для разработки с помощью JavaScript.

В 2016 году большинство разработчиков — веб-разработчики. Все пересекается с этой большой и всеобъемлющей платформой под названием «сеть».

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

Возражение #4: А разве JavaScript не игрушечный язык, написанный за 10 дней?

У JavaScript пестрая история. Вы точно услышите немало шуточек в его адрес. Но знаете, некоторым людям также нравится ненавидеть C++. И так же, как JavaScript, C++ добился успеха, несмотря на ненависть, и сегодня он тоже довольно-таки распространен.

Так что если кто-то будет издеваться над вами за то, что вы изучаете JavaScript вместо какого-то трендового-языка-недели, просто вспомните знаменитые слова парня, который создал C++, Бьерна Страуструпа:

«Есть два типа языков программирования: те, которые люди постоянно бранят, и те, которыми никто не пользуется».

Оставить комментарий

Комментарии | 3

Поиск