LINUX.ORG.RU

Go vs Cpp для REST API

 , ,


2

7

Вобщем дело следующее. У нашего небольшого проекта, RES API - это дикая мешанина рубей и пистонов (даже, ЕМНИП, где-то и похапешное что-то завалялось). Вобщем решили мы это дело упорядочить, даже нашли «херакла», который разгребет эту авгиеву конюшню. И тут у нас начался разброд и шатание. Что выбрать в роли основного языка? По C++ я не чемпион, так, любитель. Напарник вроде рубит в C++ но на нем он только приложения лабал - с серверной частью он не очень уверен. Тут третий знакомый начал пиарить Go - вот прям ничего лучше для веб-сервиса - нету. Решили прикинуть плюсы и минусы обоих кандидатов. И что-то получается, что Go имеет абсолютно те же минусы что и C++, в принципе как и любой другой компилируемый язык. Фичи Go (channels и goroutine) можно и в Cpp состряпать если нужно. Ну а если коснуться кол-ва библиотек и средств разработки - получается для микросервисной архитектуры С++ заруливает Go в несколько оборотов.

Вобщем вопрос. Что мы могли упустить в предварительном анализе? Почему так много, вроде неглупых, людей пиарят Go как супертулзу? Или всему виной net/http из Go? Есть ли у C++ какие либо похожие фрэймворки? Пусть даже без всяких парсеров в json-ы и тому подобных.

Кстати, шутки-шутками, а go память жрет нереально.


Почему бы не оставить текущую мешанину из питонов и рубей? Работает и ладно.

Лишнее время и деньги на переписывание на язык X?

vladimir-vg ★★
()

<XXX и YYY> можно и в Cpp состряпать если нужно.

полфилософии крестанутых в одном предложении.

t184256 ★★★★★
()
Ответ на: комментарий от Stil

Web сервис на крестах? Srsly?

Кроме наличия проверенных фреймворков - различий нет. Или для сериализации/десериализации json моделей из/в BD, нужна какая-то особая магия? Единственное в чем сейчас сомнения, что хлебнем горя с поддержкой большого кол-ва соединений.

ioway
() автор топика

Это зависит от того, какие проблемы вы хотите решить сейчас в проекте и какие хотите решать в будущем. Можно спокойно и долго пойти же по пути spring+java/kotlin/scala. Или быстро и не долго на sinatra+ruby. Или ещё веселее на nodejs. Или с академическим началом на erlang,io,clojure, %any_lang%.

blan4
()
Ответ на: комментарий от vladimir-vg

Почему бы не оставить текущую мешанину из питонов и рубей? Работает и ладно.

Ну тут извини, но если дома со стен свисают древние обои и сыпется штукатурка - как бы пришла пора делать ремонт, а не сидеть и успокаивать себя тем, что «крыша не обвалилась - и ладушки».

ioway
() автор топика
Ответ на: комментарий от t184256

полфилософии крестанутых в одном предложении.

Вообще-то имелось ввиду, что буферы и каналы в Go - не архитектурная фича именно Go.

ioway
() автор топика
Ответ на: комментарий от ioway

Архитектурная фича Go — это буферы, каналы и конкурентность в компелируемом языке с динамической памятью.

Я не говрю, что это всё серебрянная пуля, но это позволяет получить рабочий, конкурентынй (в плане многопоточности) и производительный код быстро.

PS: сколько лет ты собираешься потратить на ловлю buffer overflows и thread deadlocks в C++ коде?

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от Zaskar

cppcms, silicon Но зачем насиловать себя плюсами если можно на Go?

Тут есть еще одна загвоздочка - трудно найти Go-шника, еще труднее найти Go-шника, не страдающего NIH-синдромом.

ioway
() автор топика

На крестах вот на этой штуке можно вывешивать сервисы - https://github.com/splunk/pion

Но вообще я бы сначала нашел о-очень веские причины делать что-то подобное на крестах. Вывеси на Python+flask и не занимайся ерундой.

А Go - нафига тебе еще одну инфраструктуру сборки тянуть - с крестовой проблем мало что-ли?

anonymous
()
Ответ на: комментарий от beastie

рабочий... быстро

Вот это подкупает. Но именно от такого «быстро» - эта каша и выросла. Началось все с рельсов... тогда костяк проекта собрали за несколько часов. Теперь у нас многое уже устаканилось и этап на котором нам было необходимо быстрое прототипирование мы уже прошли.

ioway
() автор топика
Ответ на: комментарий от tailgunner

Я так и знал, что поповоду велосипедистов первого пункта возражений не будет. ;)

А что в C++ треды ещё не завезли? Или где мне руки выпрямлять?

beastie ★★★★★
()
Ответ на: комментарий от ioway

Ну, там ещё было и кое-что посередине (межу этих двух квантеров).

PS: г-код на любом языке написать можно, но именно что го-код часто г-код писать не позволяет. А это тоже плюс. (Речь про документацию, golint, gofmt, go vet, go test и т.д.)

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)

Тот язык, который знаешь ты и твоя команда. Технически то, что называют REST, вполне может работать на C++, Go, Java, Scala.

Deathstalker ★★★★★
()
Ответ на: комментарий от ioway

зачем уходить от языка на котором сейчас проект реализован? Берете grape и переписываете проект с использованием этого фреймворка. С рельсами он тоже работает замечательно

http://www.ruby-grape.org/

anonymous
()
Ответ на: комментарий от anonymous

вдогонку - ruby 3 версии обещают сделать в несколько раз быстрее, это если беспокоит производительность

anonymous
()
Ответ на: комментарий от beastie

Я так и знал, что поповоду велосипедистов первого пункта возражений не будет. ;)

Там просто спорить лень. Люди вроде тебя, не знакомые с Си++, с места в карьер начнут путать buffer overflow с выходом за границы массива, а заниматься вашим обучением мне лень.

А что в C++ треды ещё не завезли?

Видишь ли, треды не являются причиной дедлоков.

Или где мне руки выпрямлять?

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

tailgunner ★★★★★
()
Ответ на: комментарий от beastie

Треды завезли, а вот тредпулов человеческих не завезли и не предвидится.

ТС: если все же захочется странного^W C++, вот ссылка на обсуждение С++ веб-сервисов - c++ http server library (так правда как обычно все свелось к варианту «модуль nginx на ragel»).

anonymous
()
Ответ на: комментарий от hlebushek

Not Invented Here — «Изобрели не здесь (не мы)»

Twissel ★★★★★
()

Перепишите на перле FTGJ

annulen ★★★★★
()

Потому что склепать REST API с json можно быстро, на стандартной библиотеке. Если сделано пряморуко, то будет работать и кушать не просить. Чтобы написать аналог на плюсах, потребуется более сильный разработчик (чтобы одновременно следил за data race и за утечками памяти. В Go утечки более редки, а для предотвращения data race есть встроенные примитивы) и больше сил на развитие и поддержку.

anonymous
()
Ответ на: комментарий от Deleted

По теме скорости руби - http://lists.ruby-lang.org/pipermail/jruby/2015-December/000262.html

Коротко - в Oracle Labs (бывшие Sun Labs, аналог Microsoft Research) прикрутили специально приготовленные куски JVM Hotspot к Ruby и получили ускорение в 100500 раз.

anonymous
()

синтаксис go - это симбиоз луа и паскаля. Адд. PS: корпорация добра таки умеет насаждать свои продукты на пользователей

bryak ★★★★
()
Последнее исправление: bryak (всего исправлений: 1)
Ответ на: комментарий от Deleted

жраби

В сортах пускалок для рельсов не разбираюсь

anonymous
()
Ответ на: комментарий от Deleted

Хитрожопый азиат все обещает, а рабисты ждут, разинув рты.

Да ладно, и без азиата справятся. Кроме jruby9000 есть еще и crystal. Это конечно не совсем ruby, но код можно портировать в лоб с минимальными правками. Короче, эффективные реализации дело наживное. JS тоже когда-то считался чемпионом тормозов.

anonymous
()
Ответ на: комментарий от tailgunner

заниматься вашим обучением мне лень.

И писать rest сервисы ты не пойдешь. Поэтому ТС возьмет студентов за доширак, которые обстучат лбами все плюсовые грабли и через пару лет свалят, оставив неподдерживаемое забагованное наследство. И будет новая тема на лоре или статья на хабре: Почему C++ худший выбор для rest сервисов.

anonymous
()
Ответ на: комментарий от Kilte

А оно уже готово разве?

Пока пилят. Надежда есть, что взлетит.

anonymous
()
Ответ на: комментарий от anonymous

JS тоже когда-то считался чемпионом тормозов.

Что-то изменилось? Или щас начнутся мантры про JIT?

Deleted
()
Ответ на: комментарий от anonymous

И писать rest сервисы ты не пойдешь.

Не пойду.

Поэтому ТС возьмет студентов за доширак

Мне показалось, что ТС собирается сделать работу сам или достаточно разумен, чтобы не поручать студням за доширак писать на языке, которого они не знают.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Мне показалось, что ТС собирается сделать работу сам

По C++ я не чемпион, так, любитель.

ЛОЛ. Ну хорошо, обстучит все грабли и свалит сам ТС.

anonymous
()
Ответ на: комментарий от Deleted

Или щас начнутся мантры про JIT?

И шо ви имеете против ЖЫД? Ви таки антисемит?

anonymous
()
Ответ на: комментарий от anonymous

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

Так будет с любым ЯП, тем более сейчас у ТС именно такая картина. Чтобы такого не было нужно иметь достаточного опытного тимлида на N вот таких пожирателей доширака.

mashina ★★★★★
()
Ответ на: комментарий от mashina

Ну вот у ТС сейчас такая картина (маслом) с питонами, а он хочет C++. Не факт что вообще получится заметно что-то ускорить, зато багов вагон добавится точно. Не говоря уж про то, сколько времени и усилий на это уйдет.

anonymous
()
Ответ на: комментарий от Deleted

А если Linux завтра умрёт, что ты будешь делать?

beastie ★★★★★
()

Кстати, шутки-шутками, а go память жрет нереально.

Взял весь топик жиром залил.

BigAlex ★★★
()

Cpp для REST API

И сразу нет. Если только ты не яндекс/гугл.

mix_mix ★★★★★
()

Ха-ха-ха
Golang vs C++ для веб
Конечно же Golang, ибо он для этого и создан был, хоть и можно прикладные вещи писать
А C++ - вообще не подходит

mystery ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.