Что бы вы выбрали между Python и Go? Если у вас есть более глубокое понимание Go (Golang), вы обязательно выберете GO в первую очередь. Если вы не уверены, вы выберете Python. Тогда давай обсудим это. Выбирая партнера Python, вы можете выбрать Go по 5 причинам. Давайте вместе прочитаем статью. Верно!

«Python очень мощный, особенно Python 3 имеет асинхронные возможности, но GO полностью заменит его присутствие на крупных предприятиях…»

Если вы действительно понимаете цитаты, вы можете попробовать язык программирования Go. Я считаю, что Go - очень простой язык программирования, который адаптируется к любой среде приложений, даже проще, чем программирование на Javascript. Возможно, поэтому язык программирования GO стал популярным в последние годы.



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

  • представление
  • Масштабируемость
  • Практическое применение
  • способ исполнения
  • Библиотека программ
  • Читаемость кода

Домашняя страница и API веб-сайта TreeScale.com представляют собой веб-приложения, основанные на некоторых инструментах анализа. Вот их стек технологий:

Домашний интерфейс React.js

Серверная часть домашней страницы Django Python и служба аутентификации

Сервисы API Node.js

База данных PostgreSQL, система журналов Cassandra

Пользовательский реестр контейнеров использует язык Rust

Python

Repustate - это почти полностью магазин Python. Они используют Django для реализации API и веб-сайта. Итак (в настоящее время) разумно использовать Python для реализации арабского движка эмоций, чтобы код оставался согласованным. Python - хороший выбор только для прототипирования и реализации. Его выразительные возможности очень мощные, сторонние библиотеки классов и т. Д. Также очень хороши. Если вы работаете с веб-сервисами, Python идеально подходит. Но когда вы выполняете низкоуровневые вычисления и сильно полагаетесь на хэш-таблицы (типы словарей в Python) для сравнения, все становится медленным. Мы можем обрабатывать около двух-трех арабских документов в секунду, но это слишком медленно. Для сравнения, их английский движок эмоций может обрабатывать около пятисот документов в секунду.

Из вышесказанного вы можете видеть, что базовая структура полностью основана на разделении микросервисов и логики (разделение внешнего и внутреннего интерфейса) и даже на совершенно другой технологии для его достижения.

Основная причина, по которой они интегрировали службы API и бэкенды в один проект, заключается в том, что они во многих местах похожи и кодируются с помощью нескольких языков или технологий, а также существует много повторяющегося кода. В конце концов, им нужно потратить много времени на персонализацию сервисов API Django, особенно на настройку ответов JSON.

Я считаю, что когда вы разрабатываете некоторые обычные приложения, использование Django - это здорово, но когда вам нужна более высокая производительность и некоторые персонализированные модули, использование Django усложнит задачу.

Почему стоит выбрать программирование на Go?

1. Скомпилируйте в один двоичный файл

Golang - это скомпилированный язык, и разработчики Googe приложили немало усилий. Он использует статическое связывание для фактического объединения всех зависимых файлов библиотеки и модулей в один двоичный файл в зависимости от типа операционной системы и среды, что также означает, что если вы хотите скомпилировать свои серверные приложения для своей операционной системы Linux и в X86- на базе ЦП, вам нужно только загрузить скомпилированное двоичное приложение на сервер, и тогда внутреннее приложение может работать, не требуя никаких зависимых файлов.

2. Система статического типа

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

Django завершит процесс из-за этого def some_view (request): user_id = request.POST.get (‘id’, 0)

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

3. оптимизация

Удивительно, но Go быстрее Python (версии 2 или 3) в большинстве сценариев приложений. Результаты сравнения можно увидеть в игре Benchmarking Game, что, конечно, несправедливо, это зависит от типа приложения и варианта использования пользователем.

В нашем случае Go получил лучшую производительность за счет собственного многопоточного модуля и масштабируемости ЦП. Всякий раз, когда нам нужно выполнить какие-то внутренние запросы, мы можем использовать Goroutine для их отдельного выполнения, что более чем в десять раз менее ресурсоемко, чем потоки в Python. Благодаря этим встроенным языковым функциям мы можем сэкономить много ресурсов (памяти и процессора).

4. Go больше не требует веб-фреймворка.

Это очень крутая вещь для языков программирования. Создатели и сообщество языка Go имеют множество встроенных собственных инструментов, поддерживаемых основным языком, и в большинстве случаев вам больше не нужны сторонние библиотеки. Например, он имеет встроенные шаблоны Http, JSON и HTML. Вы даже можете создавать очень сложные службы API, не беспокоясь о поиске сторонних библиотек на Github.

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

5. улучшенная поддержка и отладка IDE

Поддержка IDE - одно из самых важных соображений, когда вы пытаетесь изменить язык программирования. Дружественная IDE может сэкономить вам в среднем 80% времени программирования. Плагин Go для JetBrains IDEA также предоставляет другую поддержку, такую ​​как (Webstorm, PHPStorm и т. Д.). Этот плагин предоставляет любые услуги, необходимые при разработке проекта. Мощная JetBrains IDEA может сделать вашу разработку еще более мощной.

Выбираете Go или просто идите домой?

Mozilla внутренне переключает свою массивную базовую архитектуру журналирования на Go, отчасти из-за мощных [горутин]. Язык Go был разработан людьми в Google, и поддержка параллелизма была главным приоритетом в начале разработки, а не добавлением ее постфактум, как в различных решениях Python. Итак, мы решили перейти с Python на Go.

Хотя код Go еще не является официально запущенным продуктом, результаты очень обнадеживают. Теперь мы можем обрабатывать тысячу документов в секунду, использовать меньше памяти и нам не нужно отлаживать проблемы, с которыми вы сталкиваетесь в Python: уродливая многопроцессорность / событие / «почему Control-C не может убивать процессы».

Почему нам нравится GO?

Любой, кто хоть немного понимает, как работают языки программирования (интерпретируемые или скомпилированные, динамические или статические), скажет: Разумеется, Go быстрее. Да, мы также можем все переписать на java, и мы можем видеть аналогичные и более быстрые улучшения, но не поэтому язык Go побеждает. Код, который вы пишете на Go, кажется правильным. Я не знаю, что происходит, но как только код будет скомпилирован (высокая скорость компиляции), вы почувствуете, что код будет работать (не только без ошибок, но и логически корректным). Я знаю, что это звучит не очень надежно, но это так. Это очень похоже на Python с точки зрения избыточности (или отсутствия избыточности). Он принимает функции в качестве первой цели, поэтому функциональное программирование будет легко понять. И, конечно же, потоки и каналы go упрощают вашу жизнь, вы можете значительно повысить производительность за счет статической типизации и более точно контролировать выделение памяти, но вам не нужно слишком много платить за выразительность языка. Стоимость.

Основываясь на нашей статистике кода, мы написали на 64% меньше кода после переписывания проекта на Go.

Вам не нужно отлаживать несуществующий код. Чем меньше кода, тем меньше ошибок!

в заключение

Go предоставляет нам большую гибкость. Один язык может использоваться во всех пользовательских сценариях, и он хорошо работает во всех пользовательских сценариях. В наших сервисах Backend и API мы получили оптимизацию производительности на 30%. И теперь я могу обрабатывать журналы в режиме реального времени, преобразовывать их в базу данных и обрабатывать одну или несколько служб через Websocket! Это очень мощная функция, предоставляемая функциями языка Go.