Зачем делают backend на разных языках?

Доброго часа.
Подскажите зачем пишут backend на нескольких языках? Я понимаю что в больших проектах java и с++ это замена классическому php но нельзя ли реализовать например backend только на java или c++? Зачем писать на двух языках?

Например backend
MSN.com написан только на ASP.NET
YouTube.com написан на C, C++, Python, Java, Go

За что отвечает например C++, JAVA и GO на YouTube?
Понимаю, вопрос общий, но все же, хотя бы в теории объясните.

Спасибо!
  • Вопрос задан
  • 2926 просмотров
Пригласить эксперта
Ответы на вопрос 5
@InoMono
Возьмем например Дропбокс.

Изначально был написан на Python - это быстрее для прототипирования.
Потом был переделан на Go - для предсказуемости и скорости. Но зачем переделывать полностью? Многие куски на Python существуют там до сих пор. И работают.
И маааалюсенький кусочек был переделан на Rust - для ускорения самого узкого места.

Вот вам и 3 языка работающих одновременно в Дропбоксе на бэке.

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

Или такова была особенность задачи. Пример с комбинацей Rust/Go выше приведен. Где то может быть лучше один язык, где то другой.

А если мы вспомним, что проект не только пишется, а еще и готовые компоненты применяются - то автоматически к любому почти проекту добавляются С/С++ те что в БД к примеру и пр. и пр. SQL - тоже язык бэкенда. И пр. и пр.

Вы преувеличивайте значение языка. Это всего лишь инструмент программиста. Такой же как клавиатура. Опытный программист за долгие годы изучает не меньше десятка языков, а кто то и намного больше. Ничего такого в этом нет.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Пишут, наверняка не с нуля, а дорабатывают какое-то существующее решение.
Яндекс как-то рассказывал, что они сперва пишут на чем побыстроее-попроще, типа питона или даже перла, а когда (если) модуль дорастает до определенного порога, переписывают на что-то более производительное.
Ну и разные команды разработчиков могут больше уметь в тот или иной язык.

Язык это не идол для поклонения, а инструмент. Можно же построить дом одним лишь топором, но обычно строители используют десятки инструментов, потому что ими быстрее и удобнее.
Ответ написан
Nipheris
@Nipheris Куратор тега C++
Подскажите зачем пишут backend на нескольких языках?

Почему-то никто не сказал главный аргумент - в больших проектах понятие бэкенда весьма условно. В больших проектах уже нет одного веб-приложения, которое написано на одном языке и выполняется на одном-двух серверах. В больших проектах бэкенд - это уже набор сервисов, зачастую разнородных, иногда даже не общающихся между собой, а работающих непосредственно с клиентом (гуглите микросервисную архитектуру). Пример из нашей компании:
- веб-приложение на джанге, отдающее html-контент - тут авторизация юзеров, хранение пользовательских настроек и данных;
- сервис данных чарта - написан на Erlang для предельной стабильности и предсказуемости, а также из-за легковесных потоков (в BEAM неплохой вытесняющий планировщик);
- сервис расчёта фин. индикаторов - написан на Java, данные отдаёт через сервис на Эрланге;
- сервис сканирования бирж - написан на Go (много новых сервисов на нём пишем).
- и ещё несколько более мелких сервисов.

Каждый из этих сервисов - это даже не отдельные люди, это целые команды со своей историей, со своими требованиями к надёжности и производительности и со своей культурой в конце-концов. Сервисы очень крупные, даже если что-то не устраивает и хочется переписать на другой платформе (например, с Эрланга на Го), никто не будет этого делать просто потому что хочется, это огромные деньги и куча человеко-лет.
Ответ написан
Комментировать
@pfg21
ex-турист
тот же контактик был написан на php.
когда встала проблемма тормознутости php был написан инструмент kphp по переводу php в С++ с последующей компиляцией.
скорость работы пот очетов админов контактика выросла в два (!!) раза, для высоконагруженного сайта это очень много, в том числе и в денежном эквиваленте.
фейсбук тоже сделал подобное штуковину. это про пыха.

а вообще каждый инструмент удобен в том варианте использования, для которого он изначально задуман.
какой-то язык упрощает/убыстряет написание в нем рабочего кода, берет на себя кучу тонких нюансов.
какой-то предоставляет функционал качественной проработки кода, но требует долгого ковыряния и многих знаний.
Ответ написан
Adamos
@Adamos
C++, Java, Go, PHP, Python.
Это популярные в вебе языки, выстроенные по принципу "сначала самый эффективный, но сложный в разработке и поддержке код, в конце - самый легкий в написании и правке, но наименее эффективный".
Нет никакого смысла писать весь проект на С++ - затраты будут дикими, и тебя просто обгонят конкуренты, состряпавшие работающий чуть хуже аналог из говна и палок.
Нет ничего страшного в проекте на Python - пока он не ложится под нагрузкой, и переписать часть сервиса на С++ оказывается дешевле, чем покупать новые сервера.
Вот так и получается смешение языков. Благо принципы эффективного общения отдельных сервисов друг с другом давно известны, и что у сервиса "под капотом" - совершенно не играет роли в общей архитектуре.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы