Самые популярные языки программирования бэкенда: для чего они подходят лучше всего и какие компании их используют
Что такое бэкенд, на Хабре рассказывать не нужно, поэтому сразу переходим к сути статьи. В ней рассказывается о наиболее подходящих для бэкенда языках программирования. Кроме того, автор рассказывает о задачах, для решения которых эти языки идеально подходят и компаниях, которые используют их у себя.
Сложно сосчитать количество статей на Хабре, которые имеют отношение к этому языку. Это один из самых популярных языков программирования, который используется более 20 лет.
Универсальным он является благодаря виртуальной машине Java (Java Virtual Machine, JVM). Она позволяет коду на Java одинаково работать на всех совместимых платформах. JVM — своеобразная прослойка, в которой Java-программа преобразуется в код, который может выполняться на любой машине.
Несмотря на то, что Java чрезвычайно популярна среди разработчиков ПО, она сложнее для новичка, чем, скажем, Python. Тем не менее, у Java огромное сообщество, которое даст ответ практически на любой вопрос новичка или профессионала.
Что вы можете делать на Java
На PHP работает около 78.2% всех веб-сайтов. Язык впервые был представлен в 1995 году, когда для создания динамических сайтов существовало не так много возможностей.
Поскольку это динамически типизированный язык, для одной проблемы можно найти сразу несколько решений. Правда, это одновременно означает и то, что один и тот же участок когда может вести себя по-разному в зависимости от конкретной ситуации, что делает программы на PHP сложно масштабируемыми и в некоторых случаях медленными.
79.1% сайтов, о бэкенде которых известно, используют PHP
Компании, которые используют PHP
А сколько получает PHP-разработчик?
.NET (C#, VB)
Основа языка — архитектурный шаблон MVC (Model-View-Controller). В этой схеме контроллер принимает запросы пользователя и взаимодействует с моделью для обработки данных. Потом результат уже передается в представление, отображаясь в виде интерфейса веб-страницы.
C# — высокоуровневый язык программирования, на котором можно писать софт, независимый от архитектуры процессора конкретного компьютера.
C# популярен среди разработчиков благодаря некоторым преимуществам С++. При этом на нем проще писать код, избегая ошибок, которые характерны для того же С++.
Это язык программирования, который использует графический пользовательский интерфейс для работы с кодом. Это простой язык для начинающих благодаря несложному синтаксису. В целом, чаще всего он используется для прототипирования.
Недостаток VB — большой объем памяти, который необходим для установки и запуска инструментов разработки.
Ruby on Rails — веб-фреймворк на языке программирования Ruby. У него есть целый набор готовых инструментов, которые дают возможность быстро выполнять базовые задачи.
Это лаконичный язык, который не требует много года для бэкенда. Так что разработчики могут быстро создавать и запускать приложения. Также он идеален для прототипирования — примерно так же, как и Python. В начале 2000-х популярность Ruby выросла, но затем снизилась.
Достоинство Ruby в том, что это открытый язык, так что он может быть модифицирован и дополнен.
Python
За последние несколько лет он стал чрезвычайно популярным языком программирования. Язык универсален и используется как для веб-разработки, так и для создания настольных приложений. В интернете есть огромное количество различной информации об этом язык, так что он неплохо подходит для начинающих.
Более того, синтаксис языка простой и понятный, по сравнению с другими бэкенд-языками. Те, кто программирует на Питоне, говорит о коде, как об «элегантном», «читаемом» и «красивом».
Что можно делать на Python
JavaScript
Этот язык можно использовать как для фронтенда, так и для бэкенда. Это отличный язык для новичков. В нем относительно простые настройки, а код можно писать прямо в браузере.
Правда, именно из-за гибкости языка скрипты, написанные на нем, порой работают очень медленно. Кроме того, их сложно как поддерживать, так и масштабировать, как и в случае с другими динамически типизированными языками.
При этом сообщество у языка просто огромное, в Сети большое количество материалов для изучения.
Что можно делать на JavaScript
Языки, на которых пишут разработчики, принявшие участие в опросе Stack Overflow
Комментарий эксперта
Даниил Пилипенко, директор центра подбора IT-специалистов SymbioWay и евангелист бэкенд-направления онлайн-университета Skillbox, дополнил перевод экспертным мнением о востребованности самой специальности “бэкенд-разработчик”.
Спрос на разработчиков последние 20 лет продолжает постоянно расти: каждый год количество вакансий разработчиков увеличивается примерно на 15%. При этом количество самих программистов растет не более, чем на 5% ежегодно. Это приводит к постоянному росту дефицита и, соответственно, зарплат этих специалистов.
Найти хороших и сильных разработчиков становится всё сложнее. Если вы решили создать какой-то проект, лучше выбирать наиболее популярные в настоящее время технологии и языки программирования.
Часто встречаю проекты, на которых в качестве основных технологий выбирают что-нибудь очень редкое вроде Go, Erlang или Flutter, и потом месяцами не могут найти разработчиков.
Как уже было сказано в статье, самые распространённые сейчас языки для backend-разработки — это Java (для крупных решений), PHP (для веб-сайтов) и Python (для небольших веб-решений и научных задач). В случае выбора этих технологий вы сможете относительно быстро находить сильных специалистов, расширять команду и заменять тех, кто выгорел или ушёл. Благодаря этому ваш проект сможет не только появиться на свет, но и вырасти.
Очередь в backend: за чем стоим и с чего начать свой путь?
Для всех, кто не любит делать UI, «дышит» очередями и мечтает об идеальном API, в четвёртый выпуск подкаста «Сушите вёсла» мы позвали backend-разработчиков Андрея, Азата и Антона.
Железные разработчики Redmadrobot Артём и Рома записывают подкаст, где вместе с гостями обсуждают разные стороны создания ИТ-продуктов и делятся опытом в диджитале. В выпуске #4 ведущие разузнали у собеседников, с чего начинался их путь в backend, какой web-framework стоит выбрать, снится ли им верстка экранов и как объяснить маме, кем ты работаешь.
Прикладываем подкаст и ответы на несколько животрепещущих вопросов
Тайминг
01:27 — Как приходят в backend-разработку
10:33 — Что привлекает специалистов в backend
12:32 — Срыв покровов: нужны ли глубокие знания алгоритмов для тех, кто «пилит апишку»?
15:17 — Вопросики масштабирования и безопасности
16:23 — Одинаковую ли работу делают все backend-разработчики?
19:23 — Ruby on Rails, его «магия», взлёт и падение
24:23 — Как выбрать платформу?
28:06 — Зачем нужны микрофреймворки и как с ними работать?
33:55 — Что такое асинхронный сервер и для чего он нужен?
35:58 — Go: простота и архитектура
41:46 — Postgresql вместо MySQL. Почему?
44:58 — Зачем нужно изучить Docker как можно быстрее и для чего стоит поставить nginx?
50:49 — «Зелёные» разработчики: какими минимальными навыками необходимо обладать выпускникам университетов, чтобы устроиться на работу?
1:04:21 — Лучшие книги по алгоритмам
1:09:33 — Что нужно знать и что не нужно делать на собеседовании?
1:14:29 — Не хочется ли ребятам уйти из backend?
1:20:28 — И все-таки, чего не стоит делать на работе и почему «с людьми нужно общаться»?
Как приходят в backend разработку?
Несмотря на популярность мобильной разработки, остались еще те, кому милее старый-добрый backend. Среди них, разумеется, и наши гости.
Азат, например, рассказал, как он не пошел в мобильную разработку и решил, что логичнее заниматься веб-разработкой в широком смысле. А вот история Антона тесно связана с Python.
Я учился в университете и выучил Python. Он мне нравился, и мне хотелось продолжать делать что-то на «питоне». А в Белгороде, где я жил и учился, можно было найти только какую-нибудь веб-студию, которая делает сайты на CMS’ке — просто подверстывают шаблоны. Мне этим вообще заниматься не хотелось. Поэтому мы с другом нашли каких-то людей, сделали им сайт, а потом ещё кому-то сделали. И было классно, потому что я делал то, что хотел. Но хотел я, наверное, не то, что было нужно в тот момент. Но, по крайней мере, я научился делать backend и после этого нашёл нормальную работу.
Что привлекает людей в backend.
…Когда есть суперпопулярный frontend? Артём вспомнил множество собеседований, на которых соискатели рассказывали, почему они хотят строить карьеру в мобильной разработке. Просто чтобы потом похвастаться крутостью приложения. В backend с этим сложнее.
Но на самом деле, если друзья, с которыми ты делишься радостью создания backend, понимают в ИТ-разработке, то они похвалят тебя. А вот маме можно сказать, что делал сервер для мобильного приложения магазина, которым она пользуется. И даже если, что такое сервер, ей не до конца понятно, мама всё равно будет гордиться.
Плюсы Backend-разработки
Азат предположил, что людей привлекает тот факт, что не нужно верстать. Ещё есть мнение, что backend сложнее и круче, хотя каждому, конечно же, свое. После этого ребята ушли в беседу о масштабировании и безопасности. Подробнее — с 15:17.
Все ли backend-разработчики делают одну работу?
Это не так. Задачи в backend разработке бывают разными, и они зависят не от языка или платформы, а от потребностей и специфики компании, а также от уровня самого разработчика.
Иногда работа может заключаться в том, чтобы доработать уже существующий метод API или сделать интеграцию между двумя сторонними системами, а где-то может потребоваться разработать архитектуру распределенной системы с нуля.
Python, Ruby, Go, С++ и все-все-все
Ребята в студии заговорили о том, как выбрать платформу. А также о том, что Ruby «ещё живет» (Рома недавно видел доказательство), а ещё почему Антон начал учить Python, о странных именах создателей языков программирования, простоте Go, микрофреймворках (о них говорили особенно много — слушайте с 28:06), MySQL, Docker, асинхронных серверах и магии рельсов.
«Зелёные» разработчики и минимальные навыки для соискателя
Насколько глубоко должен, например, выпускник университета разбираться в backend, чтобы получить работу?
Во время обсуждения выяснилось, что он должен быть «уверенным пользователем ПК». А если серьезно, то по мнению Азата, молодой специалист обязан обладать минимальными навыками администрирования unix-систем — знать определенный набор команд: cd, ls и другие.
Также должен понимать, что такое процесс, какие есть права доступа, какая система прав Linux и как вообще в ней функционируют сети, как работает IPC (inter process communications), TCP сокеты. Для начала этого достаточно. Нужно просто уметь программировать. Вот что сказал Антон:
Есть базовые вещи, общие для любой разработки, допустим, для ООП (объектно-ориентированного программирования) есть правила написания, проектирования классов. Если это алгоритмы, нужно просто знать, как они проектируются, что там есть, динамическое программирование, ну и «использовать stack везде, где можно».
Иными словами, для начала погружаться в это с головой не нужно.
Начинающему специалисту не обязательно знать все существующие алгоритмы сортировки. Но при этом подобный вопрос встречается на собеседованиях. Нужен он для того, чтобы посмотреть, как человек мыслит и какое решение он предложит.
Какие книги по алгоритмам стоит прочитать
Андрей «топил» за Стивена Скиена и его «Алгоритмы. Разработка и применение». Антон порекомендовал книгу Томаса Кормена, в которой «есть баланс между строгостью, понятностью и простотой изложения», и ещё «Cracking the Coding Interview» — хорошее практическое руководство, чтобы быстро разобраться в алгоритмах.
Также гости посоветовали «Искусство программирования» Дональда Кнута, которая задумывалась как пособие по компиляторам, а стала настоящей «книгой книг».
В итоге, backend — да или нет?
Ребята пришли к выводу, что во всех сферах веб-разработки есть свои плюсы и минусы. И это нормально. Если вам нравится backend, алгоритмы и очереди, то вам стоит задуматься о карьере именно в нём. Это если кратко. Если же хочется вживую услышать рассуждения, то включайтесь в подкаст с 1:14:29.
Полезные материалы
Для желающих погрузиться в Python можно почитать:
Бесплатные образовательные курсы: бэкенд-разработка
Без бэкендеров не сможет нормально функционировать ни один сайт или приложение. Они проектируют алгоритмы взаимодействия сайта с пользователем и другими интернет-сервисами. Другими словами, бэкенд-разработчики создают и оживляют мозг, который принимает запросы, общается с базой данных и передает нужную информацию юзеру.
Сегодня мы отобрали 19 бесплатных курсов из раздела Образование на Хабр Карьере. Они дадут вам базовые знания о языках и технологиях, которые используются в бэкенде, и помогут определиться, нужно оно вам или нет. При выборе мы смотрели на содержание, количество выпускников и репутацию школ.
Introduction to Java Programming: Starting to code in Java · edX
Здесь вас познакомят с функциональной абстракцией, парадигмой объектно-ориентированного программирования (ООП) и АПИ. В программу заложено много интересных примеров, разбор кейсов и общение с наставниками.
Java. Базовый курс · Stepik
Курс для тех, кто начинает изучать Java, но уже знаком с такими понятиями, как «переменная», «цикл», «подпрограмма» и хоть немного разбирается в императивных языках программирования. В программе 23 урока, на которых вы узнаете о компиляции и запуске Java-программ, синтаксисе языка, системе типов и основах ООП. Для закрепления знаний заготовлены тесты и задачи.
Java для начинающих · Code Basics
Несложный базовый курс по Яве, который по полочкам разложит синтаксис этого языка, а также логику, арифметику, типы данных, строки, переменные и другие темы, которые вводят в ступор начинающих разработчиков.
1200 практических задач возрастающей сложности — как раз тот минимум, выполнив который, вы получите опыт необходимый для трудоустройства. Для поддержания «спортивного интереса» программа курса разбита на 40 левелов: вы сможете перейти на следующий, только если решили большую часть задач текущего.
PHP для начинающих · Code Basics
Самая простая и короткая часть в пути изучения языка программирования — это изучение его синтаксиса. Этот курс посвящен азам разработки программ на PHP. Он поможет заложить хороший фундамент для написания осмысленных программ.
Web-программирование на PHP 5.2 · ИНТУИТ
Компактный курс, который будет полезен для получения базовых представлений о разработке веб-приложений на языке PHP. Здесь вас познакомят с основными понятиями языка, структурным построением приложений и работой с файлами.
Python 3 Tutorial · SoloLearn
Изучите Python самым увлекательным способом — смотрите короткие уроки, соревнуйтесь и сотрудничайте с другими учениками, и проходите веселые викторины. За каждое достижение вы будете получать игровые очки, а в конце вас ждет трофейный сертификат.
Программирование на Python · Stepik
28 уроков и 70+ проверочных заданий этого курса помогут вам освоить базовые понятия программирования на Питоне. Кстати, все решения проверяются автоматически и вы получаете мгновенный фидбек и рекомендации, что ценно.
Погружение в Python · Coursera
Курс покрывает необходимые для ежедневной работы программиста темы и рассказывает о многих особенностях языка, которые часто опускают при его изучении. Лекции читают разработчики, применяющие Питон в проектах, которыми ежедневно пользуются миллионы людей.
Python для начинающих · Code Basics
Базовый курс об основах разработки на Питоне. Девять компактных модулей охватывают основные темы для изучения этого языка программирования, а практические упражнения по каждой из тем позволят закрепить полученные знания.
Как стать Python-разработчиком · Яндекс.Практикум
Даже на бесплатной вводной части этого курса вы сможете обучиться азам программирования на Питоне и оценить свои возможности и мотивацию. Вводная часть дает доступ к тренажеру, 20 часов лекций и один готовый проект. А дальше — платно.
Racket для начинающих · Code Basics
Racket относится к семейству лисп-языков, которые настолько не похожи на все остальное, что даже опытным программистам приходится изучать их с самых основ. Курс состоит из трех модулей с теорией и практическими заданиями по основам синтаксиса этого языка.
SQL Fundamentals · SoloLearn
Этот компактный курс будет полезен для получения базовых представлений о разработке веб-приложений на PHP. Здесь вас познакомят с основами языка, структурным построением приложений и работой с файлами.
Алгоритмы и структуры данных · ИНТУИТ
Из программы курса вы узнаете о базовых видах алгоритмов, их характеристиках и методах анализа. Вам покажут примеры создания алгоритмов для вычисления чисел Фибоначчи, проверки числа на простоту, для возведения числа в целую степень и многое другое.
C Programming: Language Foundations · edX
С первых секунд вы начнете практиковаться в программировании в новом браузере, разработанном специально для этого курса. А к концу курса научитесь использовать логические операторы и массивы на языке С и алгоритмы для поиска и сортировки данных, получите полезный опыт и станете на один шаг ближе к карьере в бэкенд-разработке.
C Programming: Getting Started · edX
Здесь вы познакомитесь с принципами программирования на C и начнете писать код в браузере, который мгновенно обрабатывает написанное и дает фидбек. Еще вы напишете свою первую программу, и поймете, как выполнять простые вычисления и выводить результаты на экран, как сохранять значения в переменных и как повторять инструкции с помощью циклов.
Программирование на языке C++ · Stepik
На этом курсе отдельное внимание уделяется обсуждению базовых принципов работы программ, а также процессу их компиляции. Курс покрывает небольшую часть стандарта языка C++, но пригодится тем, кто хочет узнать о его наиболее важных возможностях, чтобы начать более тщательное изучение.
Introduction to C++ · edX
Цель этого курса — познакомить вас с языком C++, который упрощает написание программ и делает этот процесс более приятным. На C++ создаются приложения, которые будут работать на самых разных платформах, таких как Windows, Linux, UNIX и Mac OS X, а также на устройствах IoT.
Основы разработки на C++: белый пояс · Coursera
Курс разработан специалистами Яндекса и преподавателями «Школы анализа данных». Вас научат использовать конструкции С++ для создания своих типов данных, разбивать программу на классы и функции. В конце программы вас ждёт финальный проект: вы разработаете простое хранилище данных с возможностью добавления, удаления и поиска.
Больше бесплатных и платных обучающих программ для бэкендеров, фронтендеров, тестировщиков, девопсов, дизайнеров и менеджеров — в разделе Образование на Хабр карьере.
Что нужно знать для backend разработки?
Добрый день. Понимаю, что вопрос максимально обширный, заезженный и кроме боли не вызывает ничего.
Я попробую уточнить его чтобы смягчить гнев.
Ситуация следующая, на данный момент я имею уровень middle во фронте, работаю с одним из фреймворков.
Нет цели сесть и выучить язык за 2-3мес и устроиться на работу.
Простой 5 комментариев
Вот пара мыслей, какие фундаментальные темы нужно усвоить для перехода в бэк, а языки и фреймворки уже в последнюю очередь пойдут:
Основы операционных систем
Основы реляционных баз данных
Виртуализация и контейнеры
Configuration management (CI\CD, IaC, ansimble, automation)
Парадигмы и основы программирования (без этого вообще никуда, я бы сказал до уровня middle во фронтенде даже без этого не дойти).
Помни о принципе единичной ответственности: в любой программе всегда должен быть только один вход
Уж простите, но это нонсенс какой-то. SRP вообще про другое.
Если взять терминологию DDD, то у нас есть 4 слоя: domain, application, infrastructure, interfaces.
Набор бизнес-сущностей (модели) и бизнес-сервисов (валидация, итд) в domain layer.
«Описание» логики работы приложения (use-cases) в application layer (может быть известен, как service layer).
Имплементация работы с базой/логгерами/3rd-party services в infrastructure layer.
И как раз веб/консоль входы в interfaces layer.
То есть, один use-case может спокойно иметь несколько входов через interfaces layer, будь это REST API, консоль, SOAP, whatever.
Бэкенд разделяется как минимум на четыре части:
— язык для программирования приложения
— администрация базы данных
— администрация сервера и операционной системы
— DevOps
Есть хороший список базовых технологий и знание куда копать: https://github.com/bzick/oh-my-backend#oh-my-backend
Сам язык там упоминается вскользь и без определенного указания предпочитаемого языка так как по факту толковому бекендеру уже всё равно на каком языке писать.
1. В вашем случае действительно лучше всего начать с Node.js + express.js + любая БД, которая будет в том видео курсе, который вы будете смотреть. Так вы сможете сделать свое первое API для фронтенда и понять, что такое бекенд. Но стоит понимать, что Node.js это нишевое решение и для большинства сайтов оно не подойдет по многим причинам.
Я 4 года был fullstack-разработчиком. Писал на PHP/CodeIgniter/Kohana/Zend/Yii1,2/Symfony/Laravel 4,5/MySql/JQuery/Vue.js. С опытом я понял, что у PHP много проблем. Развитие языка остановилось/идет не туда, сам язык плохо спроектирован. И я стал активно изучать на какую платформу/язык мне перейти.
Попробовал Java, Ruby, Objective-c/Swift, Node.js, Python.
Остановился на Python/Django framework/PostgreSQL. На Python можно писать как асинхронные приложения (здравствуй Node.js) так и синхронные (привет PHP). Django на голову выше любого PHP фреймворка, а порог вхождения ниже чем у Symfony, Zend и примерно такой же как у Laravel, Yii.
В целом Python как язык спроектирован лучше PHP, у него больше возможностей, он современнее и активнее развивается.
Переход на новый язык оказался не таким быстрым и простым, как казалось сначала). Хоть и переходил с бекенда на PHP в бекенд на Python. Кроме самого языка нужно еще освоить новый стек популярных для него фреймворков, библиотек, инструментов. А так же заново наработать портфолио. У меня выход на прежний уровень ЗП занял 2 года. Работаешь на старом стеке, что бы было что кушать, а после работы и по выходным изучаешь новый, если мотивация не закончится:)
P.S Не советую быть Fullstack-ом. Лучше стать грамотным специалистом в одной области чем недоучкой в двух. Платят middle fullstack так же как и middle frontend или middle backend по отдельности. Да, работу найти fullstack-у чуть легче но и обязаностей будет намного больше.











