Какой язык программирования вы должны выучить в первую очередь в 2020 году? ʇdıɹɔsɐʌɐɾ: ɹǝʍsuɐ

Путь большинства людей к обучению программированию начинается с одного ночного поиска в Google.

Обычно это что-то вроде «Учись ______».

Но как они решают, на каком языке искать?

«Они всегда шутят о Яве в Кремниевой долине. Думаю, мне следует этому научиться ».

Или:

«Хаскелл. Так жарко прямо сейчас. Haskell ».

Или:

«Этот суслик чертовски милый».

А потом есть остальные из нас. Вероятно, мы будем искать что-то вроде:

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

Немногие вопросы задают настолько часто, что получают полную инфографику. Но это один из них:

Выбор первого языка программирования может быть увлекательным процессом - вроде того, «Какой вы персонаж Квентина Тарантино?» индивидуальные викторины.

Но прежде чем вы побежите изучать Ruby, потому что в детстве вам нравилось играть в Play-Doh, позвольте мне напомнить вам: ставки здесь довольно высоки.

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

Поэтому вам следует учитывать следующие факторы:

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

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

Шутки в сторону. Обратите внимание на этот драгоценный камень из прошлого месяца:

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

У Java были свои взлеты и падения.

Python постепенно стал самым популярным выбором.

Но под ними спрятан «Маленький паровозик, который мог», постепенно набирающий популярность за последние несколько лет. И этот движок - JavaScript.

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

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

Давайте начнем с изучения того, как в настоящее время преподают программирование в школе.

Компьютерные науки 101

Университеты традиционно преподают программирование под эгидой информатики, которая сама по себе часто рассматривается как расширение математики или как дополнение к степени электротехники.

Конечно, как вы, возможно, уже слышали:

«Образование в области компьютерных наук не может сделать кого-нибудь опытным программистом, точно так же, как изучение кистей и пигмента может сделать кого-нибудь опытным художником». - Эрик С. Раймонд

По состоянию на 2016 год многие университеты по-прежнему относятся к программированию как к информатике, а к информатике как к математике.

В результате многие вводные курсы программирования сосредоточены на языках с низким уровнем абстракции, таких как C, или математически ориентированных языках, таких как MATLAB.

И заведующие кафедрами обычно придерживаются этого курса, указывая на ежегодные списки лидеров языков программирования, такие как TIOBE Index или IEEE:

Большинство этих списков лидеров выглядят практически так же, как 10 лет назад.

Но перемены случаются. Даже в академических кругах.

В 2014 году Python обогнал Java как самый популярный язык обучения в ведущих программах по компьютерным наукам США.

И еще одно изменение обязательно ... рано или поздно ... произойдет.

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

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

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

Не случайно мы построили учебную программу нашего сообщества разработчиков ПО на основе JavaScript. За последние два года более 5000 человек воспользовались Free Code Camp, чтобы получить свою первую работу разработчика.

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

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

Фактор №1: рынок труда

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

Как я упоминал ранее, Java упоминается в большем количестве объявлений о вакансиях, чем любой другой язык программирования. JavaScript занимает второе место.

Но вот что касается JavaScript: хотя он существует уже 20 лет, он только недавно стал серьезным инструментом, на основе которого такие компании, как Netflix, Walmart и PayPal, будут создавать целые приложения.

В результате многие компании нанимают разработчиков JavaScript, но их не так много на рынке труда.

За каждую открытую позицию по Java соревнуются 2,7 Java-разработчика. Конкуренция за вакансии PHP и iOS столь же жестока.

Но на каждую открытую позицию JavaScript приходится всего 0,6 разработчиков JavaScript. Это в значительной степени рынок продавцов для разработчиков с навыками JavaScript.

Фактор 2: долгосрочные перспективы

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

Экосистема 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 и поделиться им где угодно.

Из-за повсеместного распространения JavaScript соучредитель Stack Overflow Джефф Этвуд придумал свой теперь известный закон:

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

И с каждым месяцем закон Этвуда остается в силе.

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

Python страдает примерно теми же проблемами:

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

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

Выучите один язык хорошо. Затем выучите второй.

Если вы продолжаете прыгать с языка на язык, далеко не уедешь.

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

Оттуда вы можете расшириться и стать более разносторонним разработчиком, изучив множество языков:

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

Но сначала изучите JavaScript.

Хорошо, теперь я попытаюсь сделать невозможное - я постараюсь предвидеть возражения из раздела комментариев.

Возражение №1: Но разве JavaScript не медленный?

JavaScript - для большинства практических целей - так же быстр, как и высокопроизводительные языки.

JavaScript (Node.js) на порядки быстрее Python, Ruby и PHP.

Он также почти так же быстр, как и высокопроизводительные языки, такие как C ++, Java и Go.

Вот результаты самого полного недавнего кросс-языкового теста:

Возражение №2: Но JavaScript не имеет статической типизации

Подобно Python и Ruby, JavaScript имеет динамическую типизацию, что удобно. Но у вас могут быть проблемы. Здесь я собираюсь exampleArrayбыть массивом. Я устанавливаю его значения, затем проверяю его длину - то есть количество содержащихся в нем элементов.

exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2

Но потом я случайно присвоил ему строку.

exampleArray = “text” -> “text” exampleArray.length -> 4

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

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

«У Typescript есть кривая обучения, но если вы уже знаете JavaScript, она будет гладкой». - Алекс Эверлоф о TypeScript

Возражение №3: Но я действительно хочу сделать мобильное приложение.

Я по-прежнему рекомендую сначала изучить JavaScript.

  1. В JavaScript есть несколько инструментов для создания собственных мобильных приложений, таких как Angular Cordova и React Native.
  2. Для того, чтобы ваше мобильное приложение действительно могло делать что-то интересное, ему, вероятно, потребуется соответствующая серверная часть, которую вы захотите создать с помощью надлежащей среды веб-разработки, такой как Node.js + Express.js.

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

Во-первых, поскольку люди используют мобильные приложения, почти половина всех вакансий разработчиков приходится на веб-разработку. Сравните это с 8% вакансий, связанных с разработкой мобильных приложений.

Великое видение «для этого есть приложение» не сбылось. Вместо этого большинство владельцев смартфонов перестали загружать новые приложения.

Конечно - они все еще используют приложения. В основном Facebook, Google Maps и некоторые другие. Таким образом, большая часть спроса на разработчиков мобильных приложений сосредоточена у нескольких крупных работодателей.

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

По состоянию на 2016 год практически вся разработка сводилась к веб-разработке. Все касается той большой платформы, которой является «Интернет». И следующая волна устройств, с которыми вы будете разговаривать у себя дома, и автомобили, которые забирают ваших детей из школы - все они также будут соединены вместе через Интернет.

А это значит JavaScript.

Возражение №4: Разве JavaScript не является игрушечным языком, который был написан за 10 дней?

У JavaScript необычная история.

Вы, несомненно, услышите, как люди шутят за его счет.

Ну, люди тоже любят ненавидеть C ++. И, как и JavaScript, C ++ добился успеха, несмотря на эту ненависть, и теперь он почти повсюду.

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

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

Я пишу только о программировании и технологиях. Если вы будете подписываться на меня в Твиттере, я не буду тратить ваше время зря. ?