Python vs. Go: почему компании переходят от первого ко второму

Если вы в ходе работы встречали разработчиков, мигрирующих с Python на Golang, и задумываетесь о переходе, то эта статья для вас.

33К открытий38К показов
Python vs. Go: почему компании переходят от первого ко второму

Python и Go (также известный как Golang) — это два разных языка программирования, каждый со своими уникальными особенностями и применениями. Если вы в ходе работы встречали разработчиков, мигрирующих с первого ЯП на второй, и задумываетесь о переходе, то эта статья для вас. Вот некоторые ключевые различия между языками:

1. Создание и разработка

Python был создан в 1980-х как интерпретируемый язык, в котором код читается не самой машиной, а специальной предваряющей программой – интерпретатором. Go, в свою очередь, создали в Google в 2007 году. Это компилируемый язык, нацеленный быть быстрее Python. Во втором случае машина “переводит” код самостоятельно, что и добавляет скорости.

Python vs. Go: почему компании переходят от первого ко второму 1
Создатели языка (слева направо): Роберт Гризмер, Роб Пайк, Кен Томпсон на Google I/O, 2012

2. Производительность

Согласно статьe doit.software, Go быстрее в 30 раз. Привычная построчная обработка записей – вырезка подстрок, удаление разметки и т.д. – часто “вешают” питонический ноутбук на все два часа, пока условный Colab хранит сессию открытой. Golang здесь даст приятный прирост. В моем случае вместо 40 минут на предварительную подготовку данных потрачено 27 минут. Инвестиция временем создателей окупается сторицей у пользователей ЯП.

3. Параллелизм

Go имеет встроенную поддержку конкурентности и параллелизма с использованием goroutines (легковесные потоки), что делает его отличным выбором для разработки многопоточных приложений. Python также может поддерживать параллелизм, но это обычно сложнее реализовать и часто подвержено «Global Interpreter Lock» (GIL), то есть пресловутой блокировке одним потоком.

4. Синтаксис и удобство использования

Python известен своим простым и понятным синтаксисом, который делает его особенно полезным для новичков в программировании. Go также стремится к простоте и предсказуемости, но его синтаксис может быть менее интуитивным для новичков.

Python vs. Go: почему компании переходят от первого ко второму 2
Переменная a эквивалентна i; b – j.

Сравните, сколько строк потребовалось для вывода суммы двух переменных в случае Python и Go на изображении выше. Но все же легкочитаемостью кода жертвуют, чтобы пользователь получил возможность взаимодействовать с продуктом, завязанным на больших данных.

5. Сообщество и экосистема

Python имеет одно из самых больших и активных сообществ программистов с огромным количеством сторонних библиотек и фреймворков. Go также имеет активное сообщество, но оно меньше, чем у Python.

Для сравнения, у Python более 8,2 миллионов активных пользователей (источник – zdnet.com), у Go – 1,1 миллиона (jetbrains.com).

6. Области применения

Python широко используется в научных вычислениях, анализе данных, машинном обучении и веб-разработке. Если компания занимается развертыванием облачных сервисов, то большее предпочтение отдаст Golang.

Заключение

На мой взгляд, перед нами только начинает разворачиваться эта интереснейшая битва языков-гигантов. Пройдет еще десяток-другой лет, и мы, скорее всего, увидим еще больший расцвет обоих технологий в разных областях.

В случае моей компании, переход на Golang пока не имеет смысла: с большими данными мы пока не работаем. С нашими датасетами из текста объемом до 3 гигабайт каждый Python справляется достаточно быстро. К примеру, в условиях теста уже пятой по счету ML-модели, классифицирующей обращения пользователей “без учителя”, гораздо проще и быстрее вырезать небольшой слайс, чем при сотом запуске прогонять весь набор данных через какую-нибудь медленную функцию на каждый ряд.

В общем, выбирая ЯП, учитывайте объем данных, с которыми работаете, “соприкасается” ли этот код напрямую с конечным пользователем или же остается в рамках, скажем, аналитического проекта. Немаловажно наличие у вас и команды желания осваиваться на новом поприще – такие апгрейды требуют немало времени.

Какой язык будет жив спустя 20 лет?
Python
Golang
Оба останутся на плаву
Следите за новыми постами
Следите за новыми постами по любимым темам
33К открытий38К показов