@Yonghwa
121

Можно ли писать server-side на нескольких языках одновременно?

What's up, программач.

Интересует именно back-end разработка.
Могу ли я писать на pyhon + go ?
Что именно я имею ввиду?
Меня оч привлекают эти 2 языка, и не хочется отказываться от какого-то в пользу другого.Я могу писать что-то на питоне, а что-то на гоу в одном и том же проекте?
Если да, то объясните, как это будет выглядеть и что для этого нужно.Спасибо<3
  • Вопрос задан
  • 1193 просмотра
Пригласить эксперта
Ответы на вопрос 4
@nirvimel
Это имеет смысл только если у вас в проекте на скриптовом языке есть критичный по производительности участок кода, который скрипт не тянет, и вам нужно переписать этот кусок на компилируемом языке чтобы скомпилировать в нативный код.

Для этого используются комбинации: Python+Cython, Python+C/C++.
Про Python+Go в продакшн я пока не слышал, но из того что я знаю о Go, если от способен компилироваться и работать на скоростях Си, то такая комбинация имеет смысл.

Если да, то объясните, как это будет выглядеть и что для этого нужно.

Со стороны Go - экспорт библиотечных функций в формате, позволяющем вызывать их из Си-кода (не знаю как это практически делается на Go или у него все экспортируемые функции имеют нативный формат вызова).
Со стороны Python - написание биндинга через cffi. Только отладка такого самописного биндинга - большое приключение. При малейшей ошибке в описании интерфейса начнутся очень странные падения с segfault, ИЧХ иногда не в момент вызова а в произвольный момент после завершения вызова. Поэтому интерфейс надо стараться делать максимально компактным и прозрачным.
Ответ написан
Комментировать
@mantyr
Пишу много Golang кода с удовольствием:)
Попробуйте микросервисы на обоих языках, а связь по REST API или net/rpc, протобуфер есть скорее всего под оба языка программирования.

В продакшине наблюдаю в разных сочетаниях Golang/PHP/Node.JS/Bash/Си/Python и ничего, нормально.
Ответ написан
Комментировать
HoHsi
@HoHsi
Да, используйте AMQP прослойку, и можете использовать хоть все доступные языки. rabbitmq
Ответ написан
Комментировать
@uelkfr
Однозначно микросервисы или агентно-ориентированные системы, с единым протоколом REST или RPC и любым транспортом HTTP или TCP (рекомендую HTTP). Для фронтовой части из ваших вариантов больше подойдет Python, для API-шных частей Go. Как говорил мой знакомый "учите протоколы, технологии, принципы и архитектуры, а не языки", не стоит любить один определенный набор языков, но и изучать все языки подряд тоже конечно не стоит.

Технологии для агентно-ориентированных систем совместимых с Вашими языками скорее всего нет, поэтому придется писать самому, да и сложнее они, поэтому лучше микросервисы. Отличие агентно-ориентированных систем, то что обмен данными идет по принципу очереди, а не простые API-вызовы, также они более живучи (high-availability), там есть процедура избрания для каждой роли (election), контроль здоровья и перезапуск на основе контроля здоровья и эскалирования ошибок. Например, DNS - это микросервис, а Consul - это уже агентно-ориентированная система.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы