Бэкенд разработка: основные языки программирования и их особенности
В ситуации когда разработка делится на фронтенд и бэкенд, встает вопрос на чем писать бэкенд? Опишем основные варианты решений и их особенности.
JavaScript
Начнем пожалуй с самого универсального и популярного языка. Сегодня многие начинающие программисты пробуют свои силы именно в нем.
Его преимущества в том что можно писать бекенд, фронтенд и фулстек.
Причем можно писать как веб-приложения, так и мобильные приложения.
Есть большое сообщество и много готовых решений.
Что можно делать на JavaScript
С JavaScript создаются веб-приложения и программное обеспечение, а именно:
- фронтенд и бэкенд веб-сайтов;
- мобильные приложения;
- настольные приложения;
- игры;
- веб-серверы;
- презентации;
- и многое другое.
Минусы
Если брать бэкенд и NodeJS, то там очень много асинхронных механизмов. Это хорошо когда нужно делать многопоточный REST API, но не так круто если вам нужно сделать маленький блог, сайт или магазин.
Для старта и более простых сайтов часто выбор падает в сторону PHP.
Для высоких нагрузок берут что то типа Go или Rust.
Однако все зависит от команды, существующих компетенций и наработок. Если команда есть, есть компетенции и наработки, то можно пробовать стек JS/NodeJS.
PHP
Это язык, на котором написана большая часть Интернет. Можно быстро запускать веб-приложения с использованием готовых платформ типа WordPress, Laravel, Symfony.
Можно писать бекенд с REST API, где хорошо себя показывает Symfony или Headless WordPress. Laravel тоже вполне себе подходит, если есть нужные разработчики.
PHP — отличный язык для начинающих по ряду причин:
- он прощает ошибки: вы можете запустить программу, и она будет выполняться, пока не достигнет участка с проблемным кодом;
- у языка большое сообщество, а для новичков доступно много обучающих материалов. Язык постоянно обновляется, поэтому убедитесь, что изучаете последнюю версию;
- установить и настроить PHP достаточно легко по сравнению, например, с Ruby on Rails. Вы можете скачать MAMP (для Mac) или WAMP (для Windows), и всё будет готово к работе через 5 минут.
Ничего не мешает вырости до больших сайтов и нагрузок, как в случае с Facebook, Avito, Badoo, WordPress.com.
Что можно делать на PHP
Согласно официальному сайту PHP, вы можете:
- собирать данные форм (ввод логина/пароля и прочее);
- создавать динамический контент на страницах;
- отправлять и получать куки;
- писать скрипты в командной строке;
- выполнять сценарии на стороне сервера;
- разрабатывать настольные приложения.
Минусы PHP
Этот язык часто критикуют за отсутствие асинхронности и event loop. Хотя стоит отметить что это не его территория. На нем обычно пишут бизнес логику и там это скорее плюс чем минус.
Однако построить на нем высоконагруженный REST API микросервис достаточно сложно. Можно конечно использовать дополнительные компоненты типа PHP Swoole или PHP RoadRunner, но иногда все таки лучше смотреть в сторону NodeJS, Golang или Rust.
Тут выбор также очень сильно зависит от тех команд что есть в компании и от их компетенций.
Java
Java — один из самых популярных языков программирования. Он универсален и используется уже более 20 лет.
Универсальность обеспечивается виртуальной машиной Java (Java Virtual Machine, JVM). Во многих языках во время компиляции программа переводится в код, который может работать по-разному на разных устройствах или платформах. В Java этой проблемы нет. JVM играет роль промежуточного уровня — из программы на Java она делает код, который может выполняться на любом компьютере независимо от того, где код был скомпилирован.
У Java большое сообщество, и в интернете можно найти ответы практически на любые вопросы о языке.
Что можно делать на Java
Технологии Java могут использоваться для многих задач, среди которых:
- разработка мобильных приложений под Android;
- разработка бэкенда веб-сайтов;
- разработка API для работы с базами данных;
- цифровая обработка изображений;
- создание настольных приложений;
- программирование сетевых задач.
Какие компании используют Java
Яндекс, Airbnb, Uber, Pinterest, LinkedIn, Groupon, eBay, Evernote, FitBit, Hubspot.
Python
Python стал очень популярным языком программирования. Он используется как для веб-разработки, так и для создания настольных приложений. В Сети можно найти огромное число обучающих сайтов, учебных пособий и руководств по Python, что делает его доступным языком для новичков.
Кроме того, синтаксис Python прост и лёгок для понимания по сравнению с другими языками. Python поддерживает объектно-ориентированное, функциональное и аспектно-ориентированное программирование, а также это динамически типизированный язык с открытым исходным кодом.
Что можно делать на Python
Некоторые из наиболее популярных применений Python:
- Data Science, Machine Learning.
- веб-разработка;
- кроссплатформенные shell-скрипты;
Какие компании используют Python
Uber, Pinterest, Mozilla, Spotify, Quora, Pandora, Netflix, Asana.
Go
Go (часто также Golang) — компилируемый многопоточный язык программирования, разработанный внутри компании Google. Язык Go разрабатывался для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах.
Go — язык со строгой статической типизацией. Имеет достаточно лаконичный и простой синтаксис, основанный на Си, но существенно доработанный, с большим количеством синтаксического сахара.
Что можно делать на Go
- писать сетевые инструменты;
- разрабатывать ПО для распределённых систем;
- писать ПО, обрабатывающее большие объёмы информации.
Какие компании используют Go
Dropbox, SoundCloud, Docker, CloudFlare, Alibaba, Xiaomi, Domino’s Pizza, Gett, Avito, Mail.ru, Tinkoff, 2GIS.
C# .NET
Фреймворк с открытым исходным кодом ASP.NET от Microsoft используется для создания веб-сайтов с помощью таких языков, как Visual Basic (VB), C#, F# и других.
Эта платформа обычно применяется в компаниях где есть завязка на технологии Microsoft.
Выложенный в открытый доступ в 2016 году, .NET может интегрироваться с iOS, Linux и Android через .NET Core. Он очень стабилен и надёжен, что делает его популярным выбором для бизнеса. Поскольку .NET — продукт Microsoft, у него достаточно хорошая поддержка.
C# — высокоуровневый язык программирования. Это означает, что разработчики могут писать на нём программы, независимые от архитектуры процессора конкретного компьютера.
C# популярен среди разработчиков, потому что он обладает некоторыми преимуществами C++, но на нём проще писать код и избегать при этом грубых ошибок.
Что можно делать на .NET
С помощью .NET вы можете:
- создавать настольные приложения;
- создавать мобильные приложения;
- создавать веб-приложения и игры;
- работать с большими данными;
- и ещё много чего.
Какие компании используют .NET
Microsoft, Starbucks, Docplanner, StackOverflow.
Минусы .NET
Обычно это сильно дороже чем опенсорсные проекты на JavaScript & PHP. Но если есть команда с сильными навыками в этом стеке, то это может быть выгодным решением.
Ruby + Ruby on Rails
Ruby on Rails — это веб-фреймворк на языке программирования Ruby. Ruby on Rails имеет набор готовых инструментов, которые позволяют быстро выполнять базовые задачи.
Ruby достаточно лаконичный и не требует много кода для бэкенда, что позволяет разработчикам быстро создавать и запускать прототипы (этим Ruby похож на Python). Популярность Ruby выросла в начале 2000 годов, но с тех пор заметно снизилась.
Ruby — язык с открытым исходным кодом, а значит его можно модифицировать и дополнять.
Что можно делать на Ruby
Ruby позволяет:
- автоматизировать повторяющиеся задачи;
- создавать веб-приложения;
- писать мобильные приложения и игры;
- создавать прототипы.
Какие компании используют Ruby
Airbnb, Codecademy, TaskRabbit, Kickstarter, RapGenius, Scribd, AngelList.
Минусы
Хайп по этой платформе был где то в начале 2010х годов. С тех пор хайп ушел. И сегодня все сложнее найти программистов на этот стек.
Многие ушли в NodeJS, Golang & Rust.
Заключение
Выбор стека для бэкенд разработки редко зависит от преимуществ самого языка. Они все достойно справляются со своими задачами.
Важнее и чаще всего выбор зависит от ряда других факторов:
- наличие нужных компонентов, например если задачи по ИИ то для Python будте больше компонентов
- если вы на старте, то найти программистов на PHP будет проще, и запустить какие то типовые решения типа магазина, блога или сайта тоже проще
- в других кейсах выбор чаще всего зависит от наличия компетенций и команды. Если у вас команда с навыками C# и стеком Майкрософт, то будет странно пытаться делать продукт на Java.
Также очень часто не бывает 1го языка на все случаи жизни. Язык выбирается под задачи. Например сайт компании многие делают на PHP & WordPress, микросервисы на Симфони, Golang или NodeJS.
Хотя ничего не мешает сделать высокопроизводительный REST API на WordPress или Интернет магазин на Symfony или CRM-систему на базе Python если у вас есть команда с нужными компетенциями, адекватным мышлением и наработками.
В любом случае результат чаще всего зависит от бизнеса, идеи и продукта, а также от команды и ее навыков.
Если бизнес и идеи ок, и команда хорошо знакома со своим стеком, то любые задачи будут решены, а продукт получится достойного качества.
По материалам: