С чего начать учить бэкенд
Бесплатные образовательные курсы: бэкенд-разработка
Без бэкендеров не сможет нормально функционировать ни один сайт или приложение. Они проектируют алгоритмы взаимодействия сайта с пользователем и другими интернет-сервисами. Другими словами, бэкенд-разработчики создают и оживляют мозг, который принимает запросы, общается с базой данных и передает нужную информацию юзеру.
Сегодня мы отобрали 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-разработчиком с нуля?
Backend-разработчики отвечают за внутренние процессы сайтов и приложений, выстраивают обмен данными, подбирают системы для хранения и управления информацией, обеспечивают максимум производительности при минимуме сбоев. Рассказываем, какими навыками должен обладать хороший специалист и в каком порядке их стоит изучать.
1. Определитесь с языком программирования
В отличие от frontend-разработчика, которому достаточно владеть HTML/CSS и JavaScript, backend-девелоперу приходится сделать непростой выбор. Языков много, одни развиваются более активно, другие применяются для узких задач.
Разработчикам-новичкам подходят скриптовые языки, например Python. Во-первых, он действительно относительно несложный, его синтаксис легко читать, а значит вы сможете искать решения для своих вопросов и учиться по чужому коду. Во-вторых, в той же веб-разработке позиции Python крепнут с каждым годом. Если вы планируете погрузиться в создание интернет-ресурсов, этот язык обеспечит вам поток интересных проектов.
Cогласно исследованию The State of the Octoverse, Go входит в топ-10 языков с самым быстро растущим комьюнити. Кроме того, в 2020 году он занял первое место в списке самых высокооплачиваемых языков. В backend-разработке он нужен для создания микросервисов и высоконагруженных проектов, где много пользователей одновременно работают с сайтом или приложением.
PHP не сдает позиции одного из самых популярных языков интернета, Ruby и Node.js также предлагают отличные возможности для тех, кто их изучает. Когда вы освоите базовые правила и возможности выбранного языка, сразу опробуйте их на практике. Пишите маленькие приложения, которые будут собирать веб-страницы по заданному тегу, автоматизируйте свои ежедневные задачи, придумывайте цели и выстраивайте пути к ним.
2. Познакомьтесь с пакетными менеджерами
Когда вводная часть позади, а список базовых приложений выходит за 5-10 позиций, переходите к следующему шагу. Освойте пакетные менеджеры (package manager) — специальные утилиты, которые позволяют добавлять в приложения сторонние библиотеки, чтобы расширять свои возможности и создавать новые функции. При помощи них вы также сможете предлагать свои библиотеки для использования другим разработчикам.
Пакетный менеджер у каждого языка свой. В Python он называется pip, в PHP — Composer, в Ruby — RubyGems. К этому моменту вы поймете, чего недостает вашим предыдущим продуктам, улучшите их работоспособность и поставите перед собой новые цели.
Освойте программирование на Go и backend-разработку высоконагруженных приложений, чтобы стать незаменимым специалистом в команде. Дополнительная скидка 5% по промокоду BLOG.
3. Приобщитесь к лучшим практикам
Главный навык любого программиста — это умение искать информацию. Изучайте опыт других разработчиков на Github и других профильных сайтах, ищите отраслевые стандарты. Некоммерческая организация OWASP (Open Web Application Security Project) регулярно обновляет правила для создания безопасных веб-приложений.
Когда вы разберетесь с пакетными менеджерами и усвоите общепринятые принципы разработки, вы сможете создавать более сложные программы. Поищите открытые проекты на GitHub, разберитесь в их устройстве, попробуйте сделать нечто похожее и добавить свои функции. Не стесняйтесь задавать вопросы, но помните, что ответы на многие вопросы уже есть на форумах.
4. Тестируйте свой код
Умение тестировать свой код и вычищать в нем баги входит в must-have любого разработчика. Разберитесь, как строится процесс тестирования, какие бывают тесты для приложений и как их нужно писать.
Попробуйте создать такой тест и испытайте его на своих ранних программах. Помните, что от ваших усилий на этом этапе зависит то, как в будущем к вам будут относиться другие участники проектной команды — разработчиков с чистым кодом ценят везде.
5. Переходите к базам данных
Работа backend-разработчика часто ассоциируется с реляционными хранилищами данных, потому что именно они и составляют backend сайта или приложения. А SQL-базы остаются одной из ключевых технологий как в программной разработке, так и в веб-девелопменте.
Это обширная тема, разобраться в которой может быть даже сложнее, чем выучить тот же Python. Сам по себе язык структурированных запросов (SQL) освоить нетрудно — в 70-х годах его придумали как раз для тех специалистов, которым для работы необязательно знать программирование. Однако простые на вид процессы обработки запросов в базе данных скрывают множество хитростей, так что будьте готовы отложить обучение до тех пор, пока не начнете заниматься рабочими проектами. А пока выучите базовые принципы и термины — ключи, индексы, нормализация и т.д.
После этого вы сможете создавать многопользовательские приложения с возможностью сохранять данные в базе. Попробуйте написать мини-платформу для онлайн-дневников. Ее возможности обязательно должны включать функции регистрации и авторизации, создание новых записей, просмотр и удаление старых постов, а также разграничение доступа к отдельным публикациям. Когда закончите с кодом, обязательно испытайте свою программу на специально написанных тестах.
6. Изучите фреймворки
Фреймворки объединяют набор технических средств, которые упрощают выполнение какой-либо задачи. По сути, это мини-платформа разработки, направленная на узкий спектр целей.
Если вы работаете над средними или крупными проектами, без фреймворков не обойтись. Изучайте форумы, читайте документацию, экспериментируйте с инструментами. Когда почувствуете, что разобрались, примените новые знания на приложениях из предыдущего шага — попробуйте улучшить их производительность и набор функций с помощью тех фреймворков, с которыми успели познакомиться.
7. Углубляйтесь в базы данных
От реляционных баз данных переходите к нереляционным. Эта тема чуть сложнее, поскольку решений для работы с неструктурированными данными очень много, и у многих из них своей собственный, уникальный язык. Новичку стоит разобраться с MongoDB, Cassandra, RethinkDB и Couchbase. MongoDB набирает все большую популярность у разработчиков, так что ее нужно сделать приоритетом.
8. Расширяйте набор умений
К этому моменту вы овладеете базовыми техническими средствами, которых достаточно для запуска веб-ресурса или программы средней руки. Теперь вам нужно научиться эффективной разработке; примерный план обучения такой:
Программная разработка постоянно меняется, так что успешный профессионал постоянно следит за новыми технологиями и применяет их в деле.
Освойте программирование на Go и backend-разработку высоконагруженных приложений.
Очередь в 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 можно почитать:
Очередь в backend: за чем стоим и с чего начать свой путь
Для всех, кто не любит делать UI, «дышит» очередями и мечтает об идеальном API, в четвёртый выпуск подкаста «Сушите вёсла» мы позвали backend-разработчиков Андрея, Азата и Антона.
Железные разработчики Redmadrobot Артём и Рома записывают подкаст, где вместе с гостями обсуждают разные стороны создания ИТ-продуктов и делятся опытом в диджитале. В четвёртом выпуске ведущие разузнали у собеседников, с чего начинался их путь в 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. Среди них, разумеется, и наши гости.
Азат, например, рассказал, как он не пошел в мобильную разработку и решил, что логичнее заниматься веб-разработкой в широком смысле. А вот история Антона тесно связана с Python.
Я учился в университете и выучил Python. Он мне нравился, и мне хотелось продолжать делать что-то на «питоне». А в Белгороде, где я жил и учился, можно было найти только какую-нибудь веб-студию, которая делает сайты на CMS — просто подверстывают шаблоны. Мне этим вообще заниматься не хотелось.
Поэтому мы с другом нашли каких-то людей, сделали им сайт, а потом ещё кому-то сделали. И было классно, потому что я делал то, что хотел. Но хотел я, наверное, не то, что было нужно в тот момент. Но по крайней мере я научился делать backend и после этого нашёл нормальную работу.
…Когда есть суперпопулярный frontend?
Артём вспомнил множество собеседований, на которых соискатели рассказывали, почему они хотят строить карьеру в мобильной разработке. Просто чтобы потом похвастаться крутостью приложения. В backend с этим сложнее.
Но на самом деле, если друзья, с которыми ты делишься радостью создания backend, понимают в ИТ-разработке, то они похвалят тебя. А вот маме можно сказать, что делал сервер для мобильного приложения магазина, которым она пользуется. И даже если ей не до конца понятно, что такое сервер, мама всё равно будет гордиться.
Азат предположил, что людей привлекает тот факт, что не нужно верстать. Ещё есть мнение, что backend сложнее и круче, хотя каждому, конечно же, свое. После этого ребята ушли в беседу о масштабировании и безопасности. Подробнее — с 15:17.
Это не так. Задачи в backend-разработке бывают разными, и они зависят не от языка или платформы, а от потребностей и специфики компании, а также от уровня самого разработчика.
Иногда работа может заключаться в том, чтобы доработать уже существующий метод API или сделать интеграцию между двумя сторонними системами, а где-то может потребоваться разработать архитектуру распределенной системы с нуля.
Ребята в студии заговорили о том, как выбрать платформу. А также о том, что Ruby «ещё живет» (Рома недавно видел доказательство), а ещё почему Антон начал учить Python, о странных именах создателей языков программирования, простоте Go, микрофреймворках (о них говорили особенно много — слушайте с 28:06), MySQL, Docker, асинхронных серверах и магии рельсов.
Насколько глубоко должен, например, выпускник университета разбираться в backend, чтобы получить работу?
Во время обсуждения выяснилось, что он должен быть «уверенным пользователем ПК». А если серьезно, то? по мнению Азата, молодой специалист обязан обладать минимальными навыками администрирования Unix-систем — знать определенный набор команд: cd, ls и другие.
Также должен понимать, что такое процесс, какие есть права доступа, какая система прав Linux и как вообще в ней функционируют сети, как работает IPC (inter process communications), TCP сокеты. Для начала этого достаточно. Нужно просто уметь программировать.
Есть базовые вещи, общие для любой разработки, допустим, для ООП (объектно-ориентированного программирования) есть правила написания, проектирования классов. Если это алгоритмы, нужно просто знать, как они проектируются, что там есть, динамическое программирование, ну и «использовать stack везде, где можно».
Иными словами, для начала погружаться в это с головой не нужно.
Начинающему специалисту не обязательно знать все существующие алгоритмы сортировки. Но при этом подобный вопрос встречается на собеседованиях. Нужен он для того, чтобы посмотреть, как человек мыслит и какое решение он предложит.
Андрей «топил» за Стивена Скиена и его «Алгоритмы. Разработка и применение». Антон порекомендовал книгу Томаса Кормена, в которой «есть баланс между строгостью, понятностью и простотой изложения», и ещё “Cracking the Coding Interview” — хорошее практическое руководство, чтобы быстро разобраться в алгоритмах.
Также гости посоветовали «Искусство программирования» Дональда Кнута, которая задумывалась как пособие по компиляторам, а стала настоящей «книгой книг».
Ребята пришли к выводу, что во всех сферах веб-разработки есть свои плюсы и минусы. И это нормально. Если вам нравится backend, алгоритмы и очереди, то вам стоит задуматься о карьере именно в нём. Это если кратко.
Если же хочется вживую услышать рассуждения, то включайтесь в подкаст с 1:14:29.
Для желающих погрузиться в Python можно почитать:
Подборка для будущих джедаев REST:
QA для начинающих: как протестировать ракету или самолёт.
Забегайте обсудить выпуск в Telegram-чат.
На backend? Ну, это, практически, в коммерческих проектах не используется.
Доли процента. Если интересно, есть статьи на хабре. Например, https://habr.com/ru/company/yandex/blog/339572/
Я три года уже использую свифт на бэке в продакшене, до этого использовал node.js, а еще раньше php 🤷♂️ Прошел пусть с Vapor фреймворком со второй версии до текущей четвертой. Написал кучу библиотек и активно их развиваю https://github.com/MihaelIsaev
На удивление вокруг серверного свифта собралось очень доброе и отзывчивое комьюнити, токсичность отсутствует. Особенно это актуально для Vapor’овского сервера в Discord https://discordapp.com/invite/vapor
Для энтерпрайза может пока и не годится из-за малой популярности, но для стартапов лучше выбора и быть не может. Все-таки свифт красив и быстр. По производительности это практически как писать бэк на Си. А по красоте свифт вобрал в себя все лучшее из разных языков.
Экономичность использования ОЗУ вас приятно удивит, например, Vapor приложение при запуске кушает всего 12Мб. А значит можно его хоть на 256Мб машине поднять запросто, но если БД будет Postgres, то лучше минимум 512Мб.
Свифт сейчас используют уже повсюду, и в IoT, и на распберри. Readdle давно пишет мост для Android. Свифт уже достаточно хорошо портирован на винду. Только IDE пока нормально его не поддерживают, так что тут ограничение на Xcode.
Основой для бэка все популярные фреймворки сейчас использую NIO которую пишет и развивает Apple, а это очень круто. https://github.com/apple/swift-nio
Если есть интерес, то присоединяйтесь 🙂 Мне можно в дискорде писать в личку @iMike#3049 всегда помогу чем смогу, поделюсь опытом 🙂
Сравнить libreator c swift-nio = это я не знаю, надо суметь.
Компилится он в нативный машинный код силами LLVM, и можно напрямую использовать Си код, так что сделать можно все что душе угодно.
То, что фреймворки не выдают производительность сопоставимую с libreactor думаю тут трейдофф за красоту свифта и всякие удобства вроде JSONEncoder/Decoder.
Бенчмарки по JSON это взгляд однобокий, лучше сравнивать по разным сценариям и смотреть конечно не только на скорость ответа, но и на прожерливость.
В любом случае я предпочту использовать Swift нежели node.js или питон, потому что скорость и приятность разработки для меня на 1 месте.
Питон, кстати, скриптовый язык и считается очень медленным. По заверениям эпл, которые легко гуглятся, свифт в 8.4x раз быстрее питона 🤷♂️
Сам я пару лет назад поднимал простой сценарий для теста собственноручно: поднимал пустой сервер на пустом дроплете DO отдельно под node.js, отдельно под python, отдельно под vapor 3. Каждый сервер обслуживал только один просто эндпоинт который возвращает plain text: Hello world. С аналогичного дроплета я поочереди для каждого сервера запускал утилиту wrk которая ломилась на тот простой эндпоинт. Результаты были:
30k rps у python.
Вот старая статейка с бенчем https://medium.com/@codevapor/server-side-swift-vs-the-other-guys-2-speed-ca65b2f79505 тут еще Vapor2.
От себя могу добавить, что Vapor2 был без NIO и был по каким-то причинам быстрее, чем Vapor3+NIO1. Сейчас Vapor4 на NIO2 и все говорят, что производительность выросла, много всего пофиксили и оптимизировали, но я сам еще не тестировал.
Swift еще в начале своего пути на бэке и тут сейчас очень интересно, потому что еще есть, что создавать 🙂 и для начала пути он очень хорош, а дальше думаю будет только еще лучше 🙂
Статья устарела. Латтнер поднимает в гугле бекенд для TensorFlow заместо пайтона (уже в бете). Так что Swift на беке теперь вполне норм. А учитывая еще возрастающие усилия и роадмап на swift.org = вполне можно новые проекты начинать на нем.
только если пет проекты
(так и делаю сам)