Сколько языков программирования вы знаете? Согласно нашему недавнему опросу, около 80% читателей знают как минимум двоих. Более половины из вас используют PHP на регулярной основе, и я готов поспорить, что значительное количество людей начали веб-разработку с этим языком, как и я.
Недавно я решил, что пришло время подумать о добавлении другого языка в мое резюме (как будто у меня уже не было достаточно в моем списке «учиться»). Я закончил работу над онлайн-учебником по Scala. Для тех, кто не знаком с ним, Scala — это скомпилированный язык общего назначения (например, Java, он компилируется в переносимый байт-код) со статической типизацией. Хотя, как и JavaScript, это многопарадигмальный язык, он имеет много продвинутых функций функционального программирования (FP), которые можно найти в чисто функциональных языках, таких как Haskell. Если популярность FP в последнее время вызвала у вас отклик, в Scala есть много того, чем можно заняться.
Вы можете подумать: «Почему я хочу начать изучать другой язык сейчас? Я планирую работать с JavaScript в обозримом будущем! »У вас, вероятно, также есть подробный список вещей, связанных с JavaScript, для изучения. Однако есть несколько веских причин для изучения нового языка. Хороший способ по-настоящему разобраться с такими понятиями, как статическая типизация или парадигмы программирования, такими как FP, — это работать на языке, который заставляет вас использовать эти вещи. Гибкость JavaScript является частью его привлекательности для многих людей, но также позволяет обойти определенные проблемы. Обучение написанию идиоматического кода для этого языка научит вас различным способам рассмотрения и решения проблем, которые изменят способ написания JavaScript. Кроме того, ограничение языка программированием в определенном стиле действительно поможет вам понять его сильные и слабые стороны.
Воздействие этих новых парадигм, концепций и стилей программирования может быть особенно полезным для тех из нас, кто самоучка и не имеет никакого формального обучения. Выпускники информатики, вероятно, увидели многие из этих идей как часть своих исследований. Чтобы получить максимальную выгоду, подумайте об изучении языков, которые сильно отличаются от JavaScript.
Стоит также упомянуть, что некоторые популярные в настоящее время библиотеки и шаблоны основаны на идеях, взятых из других языков. Redux, библиотека управления состояниями для React, основана на системе потоков данных в Elm. Сам Elm — это язык, который можно перенести на JS, вдохновленный Haskell! Изучение других языков может помочь вам лучше понять эти библиотеки и концепции, лежащие в их основе. Находясь в зоне комфорта JavaScript, вы полагаетесь на то, что другие извлекут эти идеи из других языковых экосистем и представят их в удобной для восприятия форме.
Изучение новых языков также может повлиять на то, как вы видите свой основной язык. Когда я начал изучать португальский язык, это изменило мой взгляд на английский. Когда вы сталкиваетесь с различными способами ведения дел, это заставляет вас задуматься о том, как эти вещи работают на вашем родном языке. Вместо того, чтобы принимать вещи как должное, вы начинаете спрашивать, почему все делается так, а не иначе. В зависимости от языка вы можете увидеть сходство; с португальским и английским некоторые глаголы достаточно близки, чтобы вы могли легко угадать значение благодаря их латинскому происхождению. То же самое относится и к языкам программирования, особенно если вы все еще на первом. Знакомство с другими языками поможет вам подумать о выборе дизайна, который был сделан при разработке JavaScript. Конкретным примером этого является изучение языка, который поддерживает классическое наследование и может сравнивать и противопоставлять прототипную объектную систему JavaScript.
WebAssembly (WASM), экспериментальный низкоуровневый язык, скоро начнет продаваться в браузерах. Языки более высокого уровня, такие как C и C ++, смогут компилироваться в WASM и получать выгоду от меньших размеров файлов и лучшей производительности, чем код, написанный на JavaScript. Это откроет браузер для других языков, и вы можете поспорить, что скоро многие из самых популярных из них смогут скомпилироваться в WASM. Создатель JavaScript Брендан Эйх недавно заявил, что может предвидеть возможность устаревания JavaScript в какой-то момент в будущем. По всей вероятности, JavaScript будет оставаться важным в течение многих лет, но наличие другого языка под вашим контролем, безусловно, не повредит вашим перспективам трудоустройства и может помочь избежать того, что вы будете укрываться голубем как разработчик JavaScript.
Если у вас действительно нет времени посвятить изучению нового языка, вам не нужно слишком далеко уходить от JavaScript, чтобы получить некоторые из упомянутых мной преимуществ. На прошлой неделе мы опубликовали вторую часть нашего учебного пособия по Angular 2 , полностью написанного на TypeScript. TypeScript — это расширенный набор JavaScript, поэтому большинство из того, что вы знаете, все еще применяется. Он добавляет статическую типизацию и такие понятия, как интерфейсы и декораторы (последний войдет в будущую версию JavaScript). Если вы потратите некоторое время на эксперименты с TypeScript, вы поймете разницу между статически и динамически типизированными языками и расширит свои знания и возможности для работы на JavaScript. Будучи языком по умолчанию для разработки Angular 2, перспективы трудоустройства хорошие, а изученные вами концепции помогут в будущем выбрать язык, такой как Java или Scala.
Вы можете программировать на языке, отличном от JavaScript? Что бы вы посоветовали в качестве хорошего второго языка для разработчика JavaScript? Изменит ли WebAssembly игру? Я хотел бы услышать ваши мысли, поэтому оставьте мне комментарий ниже!