разным параметрам или из опыта поделитесь почему от Java отказались в сторону golang?
C#(java) to golang проще и быстрее
Ну там джит, в джаве все тормозит, + на этих языках часто горпоротивщину клепут, и не всем это интересно
Я могу рассказать, почему мы мигрировали backend web services c .net core на go, если интересно. Но проект не слишком большой, в район мегабайта исходников.
Конечно интересно, любой опыт/причины важны
Если кратенько, то вот так: 1. У нас были дикие проблемы с deploy. Поставка не в контейнерах и в один каталог надо было складывать несколько executables, у .net с этим много сложностей, в зависимости от типа проекта нужны разные dll разных версий - бардак был перманентный. При этом на весну прошлого года single executable у них работал через раз, что-то отваливалось и падало. 2. При обновлении visual studio под капотом меняется минорная версия и самого framework, за этим надо было внимательно следить. 3. Нам хотелось больше контроля с минимумом магии. Например, в Go у нас кастомный роутер и еще кое-что, в .net core оно все из коробки и прикрутка нестандартных поведений выглядит очень магически - невнятные опции в конфигах. 4. Управление многопоточностью (как минимум в лайтовом варианте) в go нагляднее и проще, чем в C#. Да и в целом многое сделано проще и логичнее, хоть и требует больше работы. 5. Быстрая компиляция и, как следствие, очень интересный tooling. Скажем, работать с тестами стало комфортнее во много раз. Из минусов. 1. VS code после полноценной VS - шаг назад, на привыкание ушли недели. 2. Go синтаксически очень убог после C# - от отсутствия простейших тернарных операторов до невозможности ограничения доступа на поля типов (protected, private и вот это все). Без параметров по умолчанию и перегрузки имен функций в начале было тоскливо до крайности.
а вы прям переходили с одного на другое? не хотите осенью на конфе рассказать подробнее?
Да, версия типа 3 была на .net, а 4 уже на go. Какое-то время watchdog на go работал и со старым и с новым комплектом. А когда функциональность выровнялась - старый код остановили. Я даже отрасль не могу разглашать, не говоря уде про название компании.
а нас не столько отрасль и название интересует 🙂
в общем, если хотите - можно попробовать поработать, сделать доклад без того, что под NDA, но с техническими подробностями врядли они так уж привязаны к предметной области (без разглашения имени компании, конечно, бенефиты именно для компании будут минимальны)
Да в том-то и дело, что технические подробности - это следствие того, кем, для чего и как оно эксплуатируется. Иначе будет звучать как "мы приняли вот такие технически решения, но о причинах рассказать не можем". Я сам такие доклады очень не люблю.
если придумаете, зачем бы оно было вам надо - приходите, дадим вам куратора из ПК, и сделаем хороший доклад
Понял, спасибо! Подумаю над этим.
Параметры по умолчанию есть, через кучу методов ты можешь получить перегрузку функции.
А можно примеры какие-то? И, пожалуйста, без передачи args... interface{} - типизацию надо бы сохранить.
Обсуждают сегодня