Закодируйся: обзор языков программирования для начинающих
Программирование постепенно подминает под себя одну индустрию за другой: ещё не так давно вызов такси казался абсолютно офлайновым процессом, а теперь в Uber работает множество разработчиков. Глядя на это (а также на уровень зарплат специалистов), даже далёкие от программирования люди задумываются: «А не попробовать ли и мне».
Часто от подобной мысли сразу отпугивает многообразие языков программирования: приходится выбирать из множества не совсем понятных вариантов. Чем различаются языки и почему не существует одного лучшего и универсального, за какой из них браться в первую очередь и для каких задач?
Разобраться в этом помогают такие курсы, как «Основы программирования», где можно определиться, с какими перспективами ИТ лучше всего соотносятся ваши интересы. На vc.ru — разбор базовых направлений в помощь начинающим.
Материал подготовлен при поддержке GeekBrains.
Выбор языка во многом зависит от того, что предполагается сделать с его помощью. Самые популярные сейчас применения языков — веб-разработка, мобильная и игровая разработка. Веб-разработка, в свою очередь, делится на фронтенд (то, с чем напрямую взаимодействует пользователь) и бэкенд (незаметная пользователю, но необходимая «техническая» часть).
Фронтенд
HTML и CSS — лицо сайта
Используемые в связке, HTML и CSS по сути не являются языками программирования. Они определяют не то, как будет действовать сайт, а лишь то, как он будет выглядеть. Если написать сайт, применяя только HTML и CSS, он окажется набором статических страниц, где единственными интерактивными элементами будут ссылки.
Однако сайты не обходятся без HTML, поэтому его базовое знание необходимо каждому, кто планирует заниматься веб-разработкой. И владение CSS может быть вполне ценным навыком: задача «правильно расположить элементы» не всегда оказывается тривиальной.
JavaScript — чтобы научить сайт понимать вас
Язык JavaScript отвечает за интерактивность и динамически меняющуюся информацию на страницах сайта. Например, когда вы вводите в форму сайта номер телефона в неверном формате или забываете о значке @ при вводе электронного адреса, JavaScript позволяет сайту моментально об этом узнать и подсветить поле красным. А вот счётчик просмотров этой страницы, меняющийся в реальном времени: на HTML-сайте можно было бы показать только статическое число.
…JavaScript стал главным языком фронтенда и сейчас переживает настоящий пик популярности: интерес к нему растёт, а в JavaScript-мире постоянно появляются новые инструменты. Нюанс в том, что для разработчика постоянное появление чего-то нового — не всегда плюс: приходится часто переучиваться, и новое не всегда работает стабильно, вызывая неприятные сюрпризы. Однако никто не запрещает использовать стабильные и популярные инструменты.
Помимо этого, существует платформа Node.js, которая позволила использовать JavaScript и в бэкенде. В отличие от фронтенда, там он не является лидером и конкурирует с целым рядом других языков.
Веб-разработка: бэкенд
Java — надёжный, как дедушкин сюртук
Хотя название порой путают с JavaScript, Java — не просто другой язык, а почти противоположность JavaScript: это более консервативный выбор, проверенный годами. Его предпочитают использовать в бэкенде тех проектов, для которых надежность куда важнее веяний моды, — например, банковских систем. В рейтинге популярности языков TIOBE Java занимает первую строчку, а это значит, что в мире есть миллионы рабочих мест Java-разработчиков.
Молодые разработчики зачастую считают Java скучной и устаревшей, а её сторонники отвечают, например, такой GIF о том, что никакой Node.js не сравнится с ней по мощи:
pic.twitter.com/O8COQGR8bD
— Phil Webb (@phillip_webb) July 29, 2016
Python — прогрессивный и популярный
Если сравнивать Python с Java, то он будет выигрывать в объёме кода, но проигрывать в скорости выполнения. Для большого высоконагруженного проекта, где важна производительность, Python будет не лучшим выбором. Язык отлично подойдёт для стартапа: например, чтобы показать инвестору прототип до того, как закончатся все инвестиционные деньги.
В 2016 году язык неожиданно получил ещё одно преимущество: на нём удобно писать ботов для мессенджеров.
PHP — популярный и относительно несложный
Популярность PHP бесспорна: его используют Facebook, «ВКонтакте», «Википедия» и, к слову, vc.ru. На нём также основана система WordPress, под управлением которой работает около четверти всех сайтов.
PHP лёгок в освоении, однако у него спорная репутация, и две эти вещи связаны. Из-за простоты языка в индустрии появилось много новичков с непреодолимым желанием профессионально заниматься PHP-разработкой, не вникая в детали. Так появилось много плохого PHP-кода. Именно из-за этого одни люди критикуют PHP, а другие возражают, что в умелых руках он показывает себя только с лучшей стороны.
В списке вариантов есть и несколько менее популярные альтернативы — от Ruby до набирающего обороты Go.
В программе GeekBrains » Веб-разработчик» собраны вместе и фронтенд в виде HTML с CSS и JavaScript, и бэкенд, представленный PHP. А по Java и Python есть отдельные курсы.
Мобильная разработка
Android: Java — для приложений и ботов
Если в веб-разработке можно выбрать любой понравившийся язык, то в случае с Android-приложениями всё намного однозначнее: их пишут на Java. Теоретически альтернативой могут выступать Java-совместимые языки или связка JavaScript и HTML —, но ни то, ни другое пока не стало массово популярным, поэтому в вакансиях Android-разработчиков обычно указывается требование знать один конкретный язык.
Android-разработка на Java заметно отличается от разработки бэкенда на том же языке, и при попытке перейти от одного к другому придётся многому учиться. Однако возможность сменить область деятельности без того, чтобы начинать всё с нуля, оказывается ещё одним аргументом в пользу Java.
iOS: Swift и Objective-C — только для Apple
Долгие годы единственным языком разработки iOS-приложений был Objective-C. В 2014 году Apple представила Swift как «усовершенствованный Objective-C», и сейчас писать для iOS можно на обоих языках. Пока что Swift ещё довольно молод, но его перспективы выглядят радужными: вероятно, в ближайшие годы он станет основным языком iOS-разработки. Впрочем, многие считают, что сперва стоит изучить Objective-C.
Недостаток Swift в том, что он ограничивается разработкой для iOS и macOS: в других областях он сейчас не применяется. Достоинство языка в том, что он был создан с расчётом на новичков, так что в качестве первого языка может оказаться проще многих других. Недавно Apple выпустила для iPad детское приложение Swift Playgrounds, призванное обучать языку буквально с пелёнок.
Программа » Mobile-разработчик» на GeekBrains включает в себя сразу и Java для Android, и Objective-C со Swift для iOS. Если есть желание изучать Android или iOS по отдельности, то курсы обеспечат и это.
Разработка игр
Разработка игр с их требованиями к производительности и необходимостью взаимодействовать с «железом» — довольно непростая сфера. Игры писали даже на C и C++.
Со временем появились популярные движки, к примеру Unity: при создании игры он возьмёт на себя самые тяжелые задачи. Разработчику в это время можно будет сосредоточиться на решении более доступных проблем. Отпала необходимость писать на языке C, который появился ещё в 1970-е годы — вместо этого подойдёт более высокоуровневый C#, который некоторые называют «ответом Microsoft на Java», или уже упоминавшийся JavaScript.
C# используют и для многих других задач: от приложений для Windows до того же бэкенда и разработки мобильных приложений. Поэтому если изначально язык необходим для создания игр, то при смене направления полученные знания точно не пропадут.
На GeekBrains есть курсы по разработке игр на Unity и C# и даже целый комплекс курсов по профессии «Разработчик C#».
Разумеется, список языков не ограничивается упомянутыми: кто-то предпочитает молодой Kotlin, созданный в Петербурге, а кто-то с 1980-х привык к Smalltalk. И круг задач тоже не ограничивается перечисленными: есть и «низкоуровневые», такие как написание драйверов.
Однако всё то, что не вошло в список, обычно либо узкое и нишевое (Smalltalk-вакансии в дефиците), либо плохо подходит начинающим (низкий уровень требует серьёзной подготовки). Поэтому в первую очередь стоит обратить внимание на перечисленные языки, а потом нетрудно будет разобраться и с остальным.
© vc.ru