С помощью каких языков программирования создаются интернет приложения
Программирование постепенно подминает под себя одну индустрию за другой: ещё не так давно вызов такси казался абсолютно офлайновым процессом, а теперь в Uber работает множество разработчиков. Глядя на это (а также на уровень зарплат специалистов), даже далёкие от программирования люди задумываются: «А не попробовать ли и мне».
Часто от подобной мысли сразу отпугивает многообразие языков программирования: приходится выбирать из множества не совсем понятных вариантов. Чем различаются языки и почему не существует одного лучшего и универсального, за какой из них браться в первую очередь и для каких задач?
Выбор языка во многом зависит от того, что предполагается сделать с его помощью. Самые популярные сейчас применения языков — веб-разработка, мобильная и игровая разработка. Веб-разработка, в свою очередь, делится на фронтенд (то, с чем напрямую взаимодействует пользователь) и бэкенд (незаметная пользователю, но необходимая «техническая» часть).
Фронтенд
HTML и CSS — лицо сайта
Используемые в связке, HTML и CSS по сути не являются языками программирования. Они определяют не то, как будет действовать сайт, а лишь то, как он будет выглядеть. Если написать сайт, применяя только HTML и CSS, он окажется набором статических страниц, где единственными интерактивными элементами будут ссылки.
Однако сайты не обходятся без HTML, поэтому его базовое знание необходимо каждому, кто планирует заниматься веб-разработкой. И владение CSS может быть вполне ценным навыком: задача «правильно расположить элементы» не всегда оказывается тривиальной.
JavaScript — чтобы научить сайт понимать вас
JavaScript стал главным языком фронтенда и сейчас переживает настоящий пик популярности: интерес к нему растёт, а в JavaScript-мире постоянно появляются новые инструменты. Нюанс в том, что для разработчика постоянное появление чего-то нового — не всегда плюс: приходится часто переучиваться, и новое не всегда работает стабильно, вызывая неприятные сюрпризы. Однако никто не запрещает использовать стабильные и популярные инструменты.
Помимо этого, существует платформа Node.js, которая позволила использовать JavaScript и в бэкенде. В отличие от фронтенда, там он не является лидером и конкурирует с целым рядом других языков.
Веб-разработка: бэкенд
Java — надёжный, как дедушкин сюртук
Хотя название порой путают с JavaScript, Java — не просто другой язык, а почти противоположность JavaScript: это более консервативный выбор, проверенный годами. Его предпочитают использовать в бэкенде тех проектов, для которых надежность куда важнее веяний моды, — например, банковских систем. В рейтинге популярности языков TIOBE Java занимает первую строчку, а это значит, что в мире есть миллионы рабочих мест Java-разработчиков.
Молодые разработчики зачастую считают Java скучной и устаревшей, а её сторонники отвечают, например, такой GIF о том, что никакой Node.js не сравнится с ней по мощи:
Python — прогрессивный и популярный
Если сравнивать Python с Java, то он будет выигрывать в объёме кода, но проигрывать в скорости выполнения. Для большого высоконагруженного проекта, где важна производительность, Python будет не лучшим выбором. Язык отлично подойдёт для стартапа: например, чтобы показать инвестору прототип до того, как закончатся все инвестиционные деньги.
В 2016 году язык неожиданно получил ещё одно преимущество: на нём удобно писать ботов для мессенджеров.
PHP — популярный и относительно несложный
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++.
Разумеется, список языков не ограничивается упомянутыми: кто-то предпочитает молодой Kotlin, созданный в Петербурге, а кто-то с 1980-х привык к Smalltalk. И круг задач тоже не ограничивается перечисленными: есть и «низкоуровневые», такие как написание драйверов.
Однако всё то, что не вошло в список, обычно либо узкое и нишевое (Smalltalk-вакансии в дефиците), либо плохо подходит начинающим (низкий уровень требует серьёзной подготовки). Поэтому в первую очередь стоит обратить внимание на перечисленные языки, а потом нетрудно будет разобраться и с остальным.
Довольно популярное мнение среди разработчиков, что уровень квалификации и зарплата зависят от количества языков программирования, которыми разработчик владеет.
Конечно, это не значит, что надо ограничивать свой кругозор единственным языком. На мой взгляд, секрет успеха в том, чтобы стать профи в чем-то одном, а затем осваивать смежные области, которые будут дополнять друг друга и двигать в направлении одной цели. Например, если вы занимаетесь Web-разработкой, будет плюсом знать какой-то язык для бэкэнда и JavaScript для фронтэнда. Но если я буду учить С++ для бэкэнда, то знания JavaScript для фронтэнда мне ничего не даст, потому что я никогда не буду использовать их вместе.
Рынок вакансий диктует условия
Если осваивать программирование с целью карьеры, а не в качестве хобби, ориентироваться надо на рынок вакансий. Идем на HeadHunter и видим такую картину
Зеленым выделены языки с положительной динамикой вакансий. За год Kotlin и Go впервые оказались в этом списке. Красным выделен Ruby — для него число вакансий сокращается, и возможно, скоро из топ-10 его вытеснит какой-нибудь другой перспективный язык.
Может показаться, что если выбрать что-нибудь экзотическое, у вас будет меньше конкурентов, а значит проще найти работу. Это не совсем так. Работодатели тоже идут на hh, смотрят кандидатов и решают, на чем запускать проекты, под которые реально собрать команду. Замкнутый круг. Поэтому мой совет с точки зрения развития карьеры: выбирайте популярный язык, при этом ориентируйтесь на спрос на рынке труда, а не по каким-то другим рейтингам.
Вместо того, чтобы обсуждать актуальность отдельно взятого инструмента — а именно этим являются языки программирования — я рассмотрю их в разрезе 4-х направлений разработки и составлю наборы навыков, необходимых для решения разных задач.
Web-разработка
Здесь больше всего вакансий, но и сильнее конкуренция среди специалистов, т.к. направление развивается уже много лет. Web-разработка состоит из Frontend — визуальная часть сайта, то, с чем взаимодействуют пользователи, и Backend — серверная часть сайта.
Начальный маршрут для фронтендера:
HTML, CSS — языки верстки
JavaScript — для интерактивных элементов
ECMAScript / Typescript — расширения JavaScript, дающие больше возможностей
Опыт работы с одним из фреймворков: React / Angular / Vue
Как правило, выбор фреймворка не столь принципиален: работодатель готов рассмотреть кандидата с опытом в любом из трех, т.к. довольно быстро можно пересесть на нужный специально под проект.
Для бэкендера есть несколько вариантов. Каждый пункт в списке — пара из языка и его фреймворков:
PHP + Laravel / Yii 2 / Symphony
Javascript + NodeJS (Express.JS, Nest.js, TypeScript, GraphQL, Apollo)
Каждый из наборов актуален для написания серверной части сайтов, поэтому можно выбрать на свое усмотрение. В любом случае понадобится овладеть еще и этими знаниями:
HTML & CSS — понимание верстки сайтов
SQL (PostgreSQL / MySql) — работа с базами данных
Архитектуры и паттерны — как писать код, который легко поддерживать и масштабировать
В большинстве случаев это необходимый минимум, джентельменский набор для бэкенд-разработчика, работающего над сайтами. Далее, можно развиться как разработчик в 2 разных направлениях: начать осваивать технологии из списка фронтендера, т.е. стать Fullstack-разработчиком, или углубиться в бекенд и хайлоад. Выбрав второй путь, будет полезно освоить следующие технологии:
NoSql (MongoDB, Reddis, Cassandra)
Мобильная разработка
Более молодое направление, в котором меньше вакансий, но пока наблюдается дефицит кадров. Языки программирования выбираются в зависимости от того, под какую платформу вы будете создавать приложения.
Android-разработчик:
В большинстве проектов нужно знать и Java и Kotlin
Новый код чаще пишется на Kotlin, однако очень много кода, который нужно поддерживать, написан на Java
Kotlin молодой, но очень перспективный язык, созданный питерской компанией Jetbrains в 2016 году. Он полностью совместим с Java, но примерно на 40% короче его, что значительно ускоряет разработку. Кроме того, в какой-то момент Google, устал от исков со стороны правообладателей Java за использование кода в Android и назвал Kotlin предпочтительным языком для Android-разработки. Сейчас все чаще приложения пишут на нем. Однако на текущий момент все еще очень много проектов, написанные на Java, которые нуждаются в поддержке и развитии. Поэтому Android-разработчику надо знать оба языка, чтобы уметь читать и вносить изменения в старый код.
iOS-разработчик:
Достаточно знать Swift
Старый код написан на Objective-C
Легкий и простой Swift пришел на смену и значительно потеснил первый iOS-язык Objective-C. Эти языки несовместимы, поэтому новые проекты начинают на Swift и его вполне достаточно для разработки на платформе. А Objective-C остается актуальным только для старых больших проектов, которые не решились переписывать на Swift.
Что касается востребованности, то Java и Kotlin универсальные языки, которые используют не только для мобильной разработки и под различные платформы. А вот Swift подходит исключительно для мобильной разработки под iOS и десктопной разработки под MacOS.
Еще один путь мобильного разработчика — освоить библиотеку ReactNative для JavaScript. Она устроена таким образом, что написанный код работает под все платформы. С одной стороны это очень удобно. Однако нередки случаи, когда появляется необходимость прописать нативный код для каждой платформы, а это значит нужно иметь наготове знания и Kotlin, и Swift.
Серверные приложения
Путь разработчика серверных приложений во многом похож на бэкендера, разрабатывающего сайты. Во-первых, надо выбрать и изучить один из языков. Сейчас в ТОП-е по количеству вакансий на российском рынке:
Во-вторых, как и бэкендеру, для большинства задач вам понадобятся навыки работы с базами данных и умение писать качественный код. Тут вам пригодятся:
SQL (PostgreSQL / MySql)
Архитектуры и паттерны
Дальше можно изучить:
Алгоритмы и структуры данных
NoSql (MongoDB, Reddis, Cassandra)
Из этого самый сложный пункт — выбор языка. Я подготовил сравнительную таблицу:
C++, на мой взгляд, один из самых сложных в освоении язык, подходящий в основном для серверных, десктопных программ и игр, реже — для Data Science. Разработка на нем занимает значительно больше времени, но дает программисту огромные возможности. C++ используют для программ, требовательных к быстродействию, например, Photoshop, или масштабных игр, так как с его помощью можно контролировать и распределять нагрузку на «железо».
Golang (Go) появился как более простая версия С++. Его легко освоить, и он заточен под высокие нагрузки и многоядерные процессоры, но имеет очень ограниченный функционал, например, нет дженериков, исключений и т.д., которыми обладают другие языки программирования. В первую очередь его целесообразно использовать для консольных утилит и highload бэкенда. Вакансии разработчика на Go открывают преимущественно крупные корпорации, хотя в последнее время спрос на разработчиков Go начал появляться и в проектах поменьше.
Разработка игр
Выбор языка во многом определяет платформу, на которой вы сможете писать игры:
C++, Unreal Engine — PC, обычно используется для масштабных игр, требовательных к быстродействию «железа»
Если по выбору языка какие-то моменты не осветил, задавайте вопросы — отвечу.
Прикладные протоколы, веб-браузер и гипертекст – что это такое
PHP – самый распространенный в мире язык программирования сайтов
Сайты пишутся в готовых интегрированных средах, которые используют для создания пользовательских шаблонов язык PHP. Это довольно простая и самая распространенная среда для создания веб-приложений различной функциональности. Для обычного пользователя не имеет смысла писать интегрированную среду «с нуля», а стоит воспользоваться готовой cms-системой (системой управления сайтами), позволяющей написать собственную адаптацию сайта на выбранном «движке». Этого достаточно и для создания сайтов на русском языке.
Самой распространенной средой для сайтов является Wordpress, Joomla, более простой – Wordstat и другие. Каждая из этих систем поддерживает написание шаблонов в HTML, PHP, Java, C++ и на других языках (указаны по степени популярности в прикладных средах).
Особенностью современных языков программирования является использование высокоинтегрированныхсред для создания приложений. То есть программисты обычно не пишут код, как говорится, руками. Им даже достаточно составить UML-сценарии, а среда их преобразует в конечный результат на выбранном языке.
По этому принципу работают и интегрированные среды систем управления сайтами. Wordpressпозволяет создавать и переделывать сайты в удобных редакторах. И только некоторую функциональность пользователь может добавить путем внесения изменений в исходный код (таблица CSS-стилей и пользовательский Function.php). Опять же из среды можно получить доступ к этому разделу и написать короткое дополнение или функцию. Важным замечанием является тот факт, что PHPработает на стороне сервера, то есть не требует установки приложений на стороне клиента.
Языки для создания сайтов и высоконагруженных проектов
Как выяснили, задача языка программирования для сайта состоит в том, чтобы создавать тем или иным способом описание страницы. Язык гипетекста достаточно простой, к сайтам добавляется графика, функции и возможности, это делается с помощью специализированных языков программирования:
Из приведенного списка видно, что языки программирования ориентированы на разные запросы пользователей и разработчиков, пытающихся создать сайт. Профессиональные среды подразумевают создание уникальных веб-сервисов с широкой функциональностью. Это избыточно для обычного пользователя, планирующего написать свой сайт.
Какой язык выбрать для сайта?
Для создания собственного веб-сайта нужно подобрать систему управления сайтами CMS. Адаптация своего ресурса предполагает доработку готового шаблона. В Wordpress шаблоны называются темами. Для этих целей потребуется разработать собственные функции. Чтобы создавать сайт, достаточно двух языков программирования PHP и JavaScript. Для оформления текстов, конечно, необходимо знать синтаксис HTML&CSS.
От автора: если ранее вы думали, что за трендами следят только в мире моды, значит, вы не так близко знакомы с разработкой сайтов и приложений. В этой сфере следить за тенденциями развития приходится более тщательно, чем в любой другой. В этом маленьком исследовании мы рассмотрим, насколько востребованы различные языки программирования для веб-разработки и установим, какой из них является наиболее популярным в 2018 году. Оставайтесь с нами, если не хотите остаться за бортом!
Не только для веба!
Почти все PL (здесь и далее — programming language) которые мы вспомним сегодня, не предназначались для потребностей сайтов и веб-приложений. Что уж говорить, если на момент создания самых популярных из них, Интернет был инструментом в руках самых продвинутых, а эпоха динамических страниц была далеким будущим. Но время диктует свои правила, и те средства, что предназначались для разработки программного обеспечения, сегодня обслуживают потребности пользователей сети.
Некоторые ресурсы для разработчиков создают ранжированные списки, но мы не пойдем по этому пути. Ведь то, что мы назовем самым популярным сегодня, может оказаться невостребованным завтра. Для того, чтобы информация всегда была свежей, мы рассмотрим каждый из них объективно, лишь упоминая о рейтингах.
JavaScript для старта!
Как правило, те кто приходят в веб-разработку и успевают быстро освоить разметку и описания внешнего вида, решают, что пришла очередь освоить сценарии. Для машины клиента, они создаются на JavaScript и производных. Характерна стандартизация ECMAScript, благодаря которой применение становится легче.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Разработчики создавали язык для веба, чтобы дизайнеры страниц, не обладающие глубокими познаниями в программировании, могли создавать шедевры в сети. Скрипты можно встраивать прямо в HTML-код при помощи специального тега, прописывать внутри документа или просто создавать ссылку на другой документ.
Сегодня с JavaScript могут работать даже те, кто не имеет навыков программирования. Долгий опыт работы веб-мастеров по всему миру позволил создать библиотеки с готовыми решениями: кликами, переходами, интерактивными меню.
Одним из основных преимуществ JavaScript разработчики называют выполнение сценария в браузере пользователя. Таким образом снижается нагрузка на сервер, и экономятся ресурсы хоста. JavaScript уже много лет занимает лидирующие позиции по используемости. Несмотря на «заточенность» под веб-приложения, его применяют и в других сферах. Например, работа банковской системы, которая реализована на JS, отличается скоростью и стабильной работой.
PHP нельзя не вспомнить
Конечно, сегодня все камни летят именно в этот PL, ведь он стал основой для множества некачественных бэкендов. Но «правильные» программисты забывают о том, что сам по себе PHP не может быть в этом виноват.
Среди преимуществ — простота, что означает популярность среди начинающих создателей веб-решений. И именно из-за того, что на нем пишут новички, он получил славу «языка багов». Однако при владении PHP на высоком уровне, можно решать множество разных задач. И хоть скорость у PHP ниже, чем у С-подобных, само создание требует меньше времени и ресурсов.
PHP интенсивно используется в создании веб-приложений, когда нужно разгрузить пользовательский девайс, ведь «гипертекстовый процессор» работает на серверной стороне. Программа, написанная на PHP, отдает пользователю лишь готовый результат. Также, к преимуществам PHP следует отнести непрерывное развитие. Последняя версия PHP 7: 7.2.8 вышла 17 июля 2018 года.
Все, что начинается на С
Один из самых старых PL, если говорить о веб-разработке. Создан еще в 1972 году. Если вы знаете об ассемблере, то код на С покажется вам весьма похожим. Все близко к аппаратному, что делает его не столь применимым в создании веб-решений: большинство специалистов здесь предпочитают более адаптированные варианты.
Objective-C соревнуется с Swift
Эти два стали популярными благодаря тому, что их взяли на вооружение разработчики для платформ Apple. Если говорить о первом, то он является прямым потомком С и Smalltalk.
Objective значительно старше своего соперника, но по-прежнему удерживает позиции. Во многом благодаря тому, что разработчики не хотят переходить на облегченную версию. Прибавляет популярности и то, что программы, написанные на С, работают с Objective-C.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Оценив, насколько серьезным влиянием обладает Objective-C, компания Apple решила создать свой, более легкий и современный аналог. Как говорят сами создатели, начало разработки было заложено еще в 1989 году, когда начались реализации операционной системы NeXT. Но представлен был только в 2014 и почти сразу обрел популярность.
Swift проще в освоении и устойчив к ошибкам. Подобное вы могли видеть в плохо написанных HTML-разметках: почти все неправильно, но все равно работает. Кстати, Swift работает и с рантаймом Objective-C, что делает переход менее болезненным. Кстати, преимущества Swift признала даже компания Google, заявив о том, что будет использовать в создании своих веб-приложений.
Go-go-go!
Go полностью создан компанией Google и является альтернативой С и другим. Был создан для решения ряда проблем, которые преследовали компанию при создании различных продуктов. Среди них:
отсутствие единого стандарта разработки. Все программисты компании работали на разновидностях С, что провоцировало проблемы с совместимостью;
трудности с читабельностью кода.
В просторечии, «питон»
Python — яркий пример PL общего назначения, который обрел популярность среди веб-разработчиков. Все потому, что люди это, как правило, творческие. Веб-мастер ищет средство, которое поможет ему создать качественный продукт с наименьшими затратами.
Не был столь известным, пока им не заинтересовалась компания Google, которая и профинансировала дальнейшее развитие и популярность. Сегодня множество веб-сайтов созданы на основе Python, например, Instagram — одна из самых популярных социальных сетей. В то же время, приложения для Android и iOS на нем пишут редко. В целом, это возможно при подключении специальных библиотек, но готовый продукт получается увесистым и медленным. Вместе со стремительным развитием производительности мобильных устройств, ожидается, что Python получит еще большую популярность.
Существует реализация, которая адаптирована специально под разработку веб-приложений. Так как сам по себе CPython (основная реализация) довольно медленный в выполнении, было придумано несколько более легких вариантов:
QPython — вариант для Android. Пока еще на тестируется, но основными библиотеками уже наделен. Это вариант для тех, кто хочет создавать Android-приложения, избегая той медлительности, которая характерна для оригинальной реализации.
Java: 30 лет в топе популярных
Несмотря на то, что был создан в 1990 году, до сих пор является одним из самых используемых в веб-разработке. Несмотря на сходство в названии, имеет мало общего с JavaScript («скриптовому» дали такое название, чтобы сделать узнаваемым). Полностью объектно-ориентирован.
Взирая на сложность и большие возможности, программисты Java востребованы на рынке. Также, преимуществом является кроссплатформенность. Написав на нем программу, вы можете быть уверены в запуске на всех основных операционных системах. Интерес к Java подогревается тем, что является основным в плане разработок приложений для Android.
Так быстро подошел к концу наш обзор! Без внимания осталось еще множество достойных, но для рассказа обо всех нужна книга. Если вы размышляете о том, какой из них выбрать для карьеры веб-разработчика, помните, что любой принесет вам успех, если овладеть программированием в совершенстве.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Читайте также: