GO (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего.Для вката в Go читай Донован, Керниган "Язык программирования Go", https://www.golang-book.com/, книги из списка https://github.com/dariubs/GoBooks, а также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSwПэкеджи можно искать тут https://github.com/avelino/awesome-goЖивем в ожидании Go2, пробрасываем ошибки, смеемся над джавистами, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики, ждем, когда нам подвезут аналоги эксепшенов и дженериковПредыдущий: >>1482493 (OP)
>>1563445 (OP)> Живем в ожидании Go2Ультрагоднота, если как на пике. И нахуй раст.> не могут жить без ексепшеновif err != nilif err != nilif err != nilif err != nil> дженериковinterface{}> размазанной бизнес-логики$ wc -l main.go100500 main.go
>>1563553>УльтрагоднотаНикакой годноты. Был минималистичный тупой язык, который могла взять любая обезьяна и хуяк-хуяк заклепать свою недотулзу или микросервис, а будет обычный говноязык коих миллион.> if err != nilГовноед.> interface{}Типобезопасность? Не, не слышал.> $ wc -l main.go> 100500 main.goNot sure if trolling or just php-makaken.
>>1563445 (OP)На сколько имеет смысл аплаиться на вакансии, где требуеться 1-2 года комерческого опыта на го, с учетом того что у меня его нет, но есть 2.5 года на бекенде на ноде? Проблема в том, что других вакансий, где готовы взять тело, которое понимает в предметной области, но для реализации прежде использовало другой ЯП, просто нет.
>>1566213я чейтал на linux.org.ru, там был похожий вопрос, шо в принципе нет разницы, на собесе скажешь шо у тебя есь год работы
>>1566391А прямо сказать - мол, не работал с го, но прочитал книгу и сделал пару проектов для себя и мне понравилось - это очень плохой вариант?
>>1566434Сходи уже на собес, аПокажешь проекты сразу заберут, если за код пояснишьСобес тебе все покажет, если не возьмут, то ты будешь знать что тебе нужно изучить
>>1563553> размазанной бизнес-логики>$ wc -l main.go>100500 main.goЛол, когда узнал что го "победил" рекурсивные импорты (причем непонятно зачем, если у них нормальная GC), сразу пришла мысль, что либо они будут раздувать файлы, либо писать все в одну область видимости (папку), потому что это писос для статического языка.
>>1563445 (OP)>Живем в ожидании Go2Го уже задизайнен ужасно, что-то добавить туда без боли и не получить очередной костыль, нереально.Когда его писали, либо очень торопились, либо вообще не парились.Не устаю удивляться что гугл так и не может в норм инструменты.Самое забавное в го то, что он весь такой асинхронный и простой (казалось бы непочатый край для оптимизации), но в реле ели поспевает в тестах на жабе. Где должен просто рвать её в клочья. Я про те тесты, где сравнивают веб фреймворки, а не числа с массивами дрочат
>>1566462> очередной костыльЛучше уж костыль, потому что без костылей этим пользоваться очень больно. Даже сейчас используют костыли в виде кодогенерации, чтобы добавить генерики, аннотации, исключения и прочие "ненужные" фичи.> гугл так и не может в норм инструментыНе может, да. Хотя, вроде, гугл изначально создавал го исключительно для своих внутренних нужд.> тесты, где сравнивают веб фреймворкиПотому что через жопу сделаны все эти фреймворки. Вообще, есть мнение, что они вовсе не нужны, потому что удел Go - микросервисные апишки.
>>1566471>Лучше уж костыль, потому что без костылей этим пользоваться очень больно.Зачем? Сейчас почти каждый язык может в асинк-авейт, который и не всегда прям нужен (на практике бэкенд со всеми плюшками ускоряется где-то только раза в два, выгодно только если отдаешь маленькие json'ы прям из памяти).>кодогенерацииЖуть.>Не может, да. Неожиданно, другая корпорация добразла может в хорошие языки.>удел Go - микросервисные апишки.Еще один язык для супер узких задач, ну нехара свой мозг насиловать очередным узким языком, который еще как назло наделал много привычных вещей по своему.
>>1566914На геймдеве простому смертному не заработать. Это всё равно что учить раст с целью найти работу.
>>1566457Практически ни разу не понадобились рекурсивные импорты. Репозитории имеют ветвистую структуру, всё по DDD.ЧЯДНТ?
>>1566457Так и есть. Предлагается делать гигантские пакеты с одной областью видимости, либо выносить взаимозависимые определения в один пакет типа "common". А ещё здесь не считается плохим хранить глобальное состояние (функция init). В результате проекты даже среднего масштаба выглядят ну очень коряво.Вообще, складывается впечатление, будто Go специально проектировали так, чтобы его идеи плохо вписывались в реальный мир, и чтобы он мог решать только очень узкий класс задач.
>>1566959Если у тебя есть взаимосвязанные определения, то это значит, что они из одной области видимостиТак что все твои проблемы из-за неумения построить нормальную архитектуру приложения
>>1566981А вот нихуя. От того, что иерархия определений не древообразная, в других языках не страдают. И только в го особый путь, из-за которого приходится бороться с языком. Потому что это ограничение надумано.
>>1566946Потому что все скрипты в одной папке. Для человека, любящего сортировать по папочкам, а не говно складировать - быстро словишь рекурсию (очень быстро, потому что статика)
Почему? Кому должны?В общем, мой совет - почитай про архитектуру приложений, к примеру Clean Architecture, и не говори глупостей
>>1567037Додик, есть архитектуры с рекурсивным импортами. Классическая MVC архитектура, это как раз из таких (контекст инициализируется сервером и передается в контроллер, контроллер зависит от того что инициализирует сервер).
>>1567031Тут предлагают нарезать архитектуру не вдоль (все контроллеры в одном каталоге, все модели в другом, конфигурация в третьем), а поперёк (в одном каталоге контроллеры/модели/etc, связанные с одной сущностью, в другом - с другой и т.д.).А ещё тут ненавидят MVC.
>>1567063Но ведь в твоем примере очевидно, что зависимость нерекурсивная, потому что контроллер не вызывает методы сервиса.
>>1567068Оба подхода могут быть реализованы на го. Другой дело, что в го стараются разделять по доменам, поэтому второй способ приоритетнее.
>>1567068Никак у тебя классическая MVC не получиться, режь ты там или не режь. Надо промежуточное говно натягивать (то есть через костыли).В общем, это жопа когда язык тебя ограничивает, особенно когда становится ясно, что надо рефакторить все.>А ещё тут ненавидят MVC.Я вот за трендами не успеваю, на что там зумеры дрочат MVVC? Или MVVVVVC?Суть MVC - чтобы ты в свои html'ки бизнес-логику не сувал
>>1567077Ты своими ответами напоминаешь старика, брюзжащего на лавочке:"А вот в мое время все хотели стать космонавтами, интернетов ваших не было, всё по MVC делали">>1567077>Я вот за трендами не успеваюЕсли ты чего-то не понимаешь, это не значит, что что-то неправильное.
>>1567081С MVC 10 лет назад носились как с серебряной пулей, но в реале суть была проста - отделить мух от котлет, что как бы профессиональные программисты делали и так, но маркетинг было уже не остановить.Не удивительно, спустя какое-то время, на базе предыдущего опыта завезли какой-то новый базворд, чтобы протолкнуть очередную свою йобу. Старость тут не причем, это зрелость прекращай мысли биполярно, после юности идет зрелость
>>1567101Есть собственный пример такого выхода? Даже для дс-1 200к - это в лучшем случае очень сильный мидл, как минимум, да ещё и в довольно большом проекте. С нуля даже за год плотного кодинга будет тяжело выйти на такой уровень.Зп в го такие же, как и в той же джаве. Единственное - это куда меньшее кол-во вакансий для джунов по сравнению с джавой, например. Особо никому не нужны они тут. Поэтому именно для вката я бы точно не советовал го, но как второй-третий язык после вката - отлично.
>>1567025Приведи пример. Я вот не ловил ни разу или почти ни разу. Рекурсия в связях между компонентами - это обычно признак логической ошибки в архитектуре системы.
>>1566970А как иначе свое говно инитить, не прокидывая его до main (не нарушая абстракции)? Лениво через sync.Once что-ли хуярить?
>>1567278А в чем проблема дизайна, когда один пакет содержит интерфейс, и связанную с ним логику, в то время как имплементации интерфейса вынесли в кучу других пакетов, которые ничего не экспортят, но регестрируют свой вариант имплементации через init? sql, image, и, вроде, compress поступают именно так.
>>1567180То-то и оно, что высрали.>>1566970Поддвачну, ini'ы и глобальные переменные - это ну крайне узкий кейс и с базой данных он не связан.
Аноны, привет всем в треде.Я бумер-вкатывальщих из своей профессии (erp) в программирование.В прошлых тредах, да и вообще в /pr встречал, что GO вроде хорошо, но не для вката. работы мало и прочее. Однако, судя по обзорам, на нем чуть ли не самые высокие зп (понимаю, что это не из-за рашки). Так вот, стоит ли все же изучать, как первый ЯП?Проблемес в том, что по текущей работе могу перебраться в гейропку, а после искать работы на ЯП там, либо оставаться в рашке и менять на ЯП тут.В общем, благодарю.Про GO вообще говорил бывший коллега, который его вохсвалял, хотя сам до знакомства с ним пару тройку лет пилил на джаве и питоне
>>1567562Вкатываешься во что-то более лайтовое с неплохой зарплатой(js, php). 1-2 года работаешь и потом перекатываешься куда хотел вначале.
>>1567510При создании инстанса, который имплементит интерфейс, нужную реализацию выбирают при помощи параметра-стринга в конструкторе. Как пример - https://golang.org/pkg/database/sql/#Open
>>1567652Не нужно так делать!Просто делайте две разные функции-конструктора.CreateMysqlDatabase и CreatePostgresDatabase, их потом и юзайте.Магические стринги, константы и всё такое здесь излишне.
объясните пожалуйста почему это в блоки суют? это распростроненные поттерн? var x type{x = a()x = b(x)}
>>1567949Не особенно, просто способ сделать чуть более симпатично, если у тебя код вида `foo := A(B(C(D(E(F()))))`
>>1567949В данном случае, наверное, излишне, но я часто вижу блоки кода в фигурных скобках в случае больших функций/методов, где объявляют несколько временных переменных, а затем результат присваивают переменной с облостью видемости на уровне всего метода.
>>1570155Логгер, например. Хотя некоторые упоротые предлагают плодить сервисы на ровном месте: авторизация отдельно, таблица1 отдельно, таблица2 отдельно, бизнес-логика отдельно.
>>1570175Твой вопрос звучит как:"Можно пример типикал продукта, для нарезания которого подходит нож?"
>>1570292О, ты из тек, кто берёт языки под задачи? Это хорошо, но что новичку-то делать, который ещё не знает, для чего какие языки предназначены?
Учить целый язык, с неадекватным поведением и неадекватными либами, ради только микросервисов (хотя жаба рвет и тут) - это лол
>>1570364Го заявляется как простой для изучения. Но вот на деле нихуя.>>1570365Раст оч сложный и с сомнительными перспективами. На го хотя бы работа есть.
>>1570371>Го заявляется как простой для изученияДа не бывает простых языков.Я вчера на питоне скрипт писал, синтаксис частично помню, но постоянно нырял на stackoverflow. В итоге простая задача на простом языке превратилась в часовую рутину (потому что свои нюансы, свои библиотеки и все это окружение знать надо в любом языке и это не бесплатные знания).
>>1570445В хотя бы был Object, когда не было генериков. Здесь же приходится обмазываться interface{} и рефлексией.
>>1570445Вот видите, в 2004 году на жабе говнокодили обжектами, значит и в 2020 нам эти ваши дженерики не нужны сосите кодогенирацию
>>1570450Но ведь получается и без дженериков нормальноПочему вас так бомбит от го языка? Го-разрабы отбирают вашу работу? Вас убрали с проекта, потому что проект перешел на го, а вы не смогли выучить? Вы завидуете, что го развивается и набирает популярность?В чем смысл бомбить от того, чем ты не пользуешься?
>>1570677Без генериков терпимо, но не "нормально","Мы" не бомбим, а недоумеваем, почему этим кто-то пользуется при очевидных изъянах, и пытаемся понять, почему эти изъяны не спешат исправить.
>>1570698Потому что это не "очевидные" изъяны. Языком вполне удобно пользоваться. Ты из той категории людей, что в чужие огороды лезут?
>>1570698Вот заебали с этим "без дженериков"Дженерики в голанге есть: мапы, массивы, слайсы, мессаджи - все дженерик.В голанге нет возможности определять новые дженерикиИ да, это достает, но эта не проблемы типа как в древнеджаве.
>>1570823В свою очередь заебали с этим "голанг сам использует генерики, а нам не даёт". Нет в голанге генериков ни в каком виде. Или по вашему возможность объявить массив любого типа или возможность создать структуру с произвольного типа полями - это тоже генерик? Ну тогда такие "генерики" есть и в сишке, блеать.
>>1570843До всех языков доебались. Гошка же особенна тем, что повторяет ошибку старых языков, которую в 2020 можно было бы и учесть.
>>1570843Например где? Если речь о динамико-параше, то там по умолчанию все дженерик, потому что типы становятся известны только в рантайме.
>>1570828> Нет в голанге генериков ни в каком виде. Смотри:m = make(map[string]Vertex)Видишь тут `make` ?Он дженерик. Это не хорошо, не плохо, а просто дженерик.
Суп гаоч.Я фуллстэк веб макака (питон + жс). Всегда хотел кодить только бэк. Вот у меня встал вопрос. Сразу учить пщ, или сначала всё-таки паттерны+алгоритмы ебануть, а уже после начать язык изучать?
>>1571005Учишь такой паттерны и алгоритмы. @Умеешь дерево переворачивать одной рукой@Фибоначчи уже пишет код сам за тебя на собесах.@И теперь ты готов вкатиться в тяп-ляп го!
>>1571070Помню когда-то умные люди говорили, что обобщенное программирование (дженерики ваши) не является частью статически типизированных языков (что кстати правда). но го - говно.
>>1571091Если ты зайдешь в другие треды, то там даже хейтеров нет, одни вкатывальщики, так что тут хоть какое-то разнообразие
>>1571129Ну бля, из того, что (предположим) обобщенное программирование есть только в статически типизированных языках, никак не следует то, что Си -- не статически типизированный язык.
Как же меня умиляют маня-программисты, для которых наличие ФАТАЛЬНОГО НЕДОСТАТКА мгновенно делает язык непригодным к использованию. Более того, замечу, что если бы го, как языку, действительно были нужны дженерики, их бы уже давно впилили.И да, посмотрев, насколько много дичи творят говнокодеры, когда им даёшь обобщённое программирование, я начинаю понимать, что его отсутствие в гошечке - не такая уж и плохая идея.Не совсем в тему, но недавно я читал на хабре статью про rx и наткнулся на следующее:> А это значит, что, разобравшись с асинхронными вещами, мы можем начать использовать RxJS для обработки абсолютно синхронных данных, например, пометить жирным все внешние ссылки:> Rx.Observable.from(document.querySelectorAll('a')) .where(el => el.getAttribute('href').indexOf('http') === 0) .subscribe(el => el.style.fontWeight = 'bold')Представляете, они создают потоки данных и обрабатывают их не из необходимости, а просто потому, что хочется применить их сраный rx ещё где-нибудь!!1 При том, что достаточно одной строчки ванильного вызова селекторов! То-то лендосы уже тормозят и жрут, как ААА-игры.>>1568116Потому, что во-первых, init-ы это зло. Они действуют на уровне подключения пакета, то есть однократно, неизвестно когда, неявно и неповторяемо.Во-вторых, нет ничего более явного, понятно и тестируемого, чем простой, без магии, вызов функции `mypackage.Foo()`.В-третьих, передавать строку можно, но это означает, что ты усложняешь процесс создания объекта. Потом у тебя появятся какие-нибудь Options, которые нужно передавать после строки, потом нужно будет сравнивать, какие options с какими строками можно передавать, а какие-нет. Потом ты вдруг начнёшь отлавливать в рантайме баги типа person.Create('male', femaleOptionA, femaleOptionB). Намного проще описать CreateMale(MaleOptionA, MaleOptionB), CreateFemale(FemaleOptionA, FemaleOptionB) и тем самым получить статическую гарантию валидности кода на уровне компиляции.Я не говорю, что сложные фабрики делать плохо, я говорю о том, что сложные фабрики делать нужно тогда, когда без них не обойтись. Если у тебя <5 типов сходных объектов с +- различными алгоритмами их порождения, то проще вынести их по разным конструкторам, потом по необходимости сведешь в фабрику, когда это будет НЕОБХОДИМО.
>>1571412> Потому, что во-первых, init-ы это зло. Они действуют на уровне подключения пакета,init-ы не добро и не злоони просто действуют на уровне подключения пакета> $ /usr/local/go/src % grep -r 'func init()*' /usr/local/go/src |wc -l> 306Что-то имеешь против - пиши разрабам голанга, что они дибилы
>>1571550Ну если ты сейчас будешь настолько придираться к словам, то я скажу, что да, бывают случаи, когда init'ы подходят для удобного решения какой-то залачу, но их очень часто используют для чего-нибудь навроде конфигурирования консольного приложения и даже хуже, что является скорее плохой практикой. Поэтому init'ы это очень специфическая штука, которая чаще используется вовред системе и лучше стараться её избегать.А авторы го не всегда являются 100% авторитетами, апеллировать к тому, что оно используется в стандартной библиотеке и поэтому "оно" есть хорошо и правильно - глупо. В стандартной библиотеке и баги бывают, знаешь ли - и что, нам теперь всем их повторять или перестать тестировать свой код?
>>1571577> А авторы го не всегда являются 100% авторитетами, апеллировать к тому, что оно используется в стандартной библиотеке и поэтому "оно" есть хорошоА ты какой иной критерий "хорошо" предлагаешь?Почитать высеры на medium?Стандартные либы - единственный критерий в голанге определения что хорошо, а что плохоБез фанатизма канешн
>>1571908Если тебе нужен sync, reflect, кодеры-декодеры, копаться в асте, да банальный fmt - ты никуда не уйдешь от interface{}
Господа, 2 года работаю Го девом полет нормальный, но я понял что жаба, например перспективнее го.Ну вот например:1/ жаба сложнее2/ на жабу больше вакансий Есть у кого кейсы смены стека в таком виде ?Или придется с самого начала подниматься ?
>>1572136Учишь го до приемлемого уровня, потом на работке говоришь "Пыха говно, давайте новый проект на го писать, он модный, молодежный" Если получится протолкнуть проект - вот ты и гофер
>>1572142>>1572143какую книгу посоветуете для вката, если ты уже опытный бекендер? ту из ОП-поста всё-таки?Ну и вообще, есть ли жизнь помимо микросервисов? Не скучно?
>>1572168Если ты опытный, то берешь какую-нибудь стандартную бэкенд задачу из пхп и пилишь ее аналог на го, ну и гуглишь бест практис
>>1571888Единственный адекватный критерий "хорошо" - это "подумать". Ошибки, плохие решения, опечатки, баги, уязвимости и тд бывают везде и у всех, поэтому никакой код по умолчанию не считается абсолютно правильным, даже если он успешно отработал и отправил Армстронга в космос, к примеру.Взять те же init'ы. Скорее всего в стандартной библиотеке они используются для предварительных расчётов, инициализации каких-нибудь глобальных служебных неизменяемых структур типа мапы keywords в token'е. И это вполне нормально, потому что заранее генерируется служебная фигня, чтобы не генерировать её потом, во время работы. хотя можно было бы поспорить на тему "предварительный расчёт vs ленивый расчёт", ну да ладноА вот если взять базы данных, то там авторы го спроектировали всё так что ты должен сделать sql.Register("mysql", &MySQLDriver{}), а потом во время Connect("mysql", dbConnString) произойдёт магия сравнения по ключу, если ты успел подключить этот пакет. В чём здесь боль? А в том, что они требуют неявно подключать пакеты, в итоге у меня нет никакой гарантии, что Connect не вызовется когда-то раньше, к примеру. Я также не узнаю о том, что я забыл неявно подключить пакет my-sql-driver, пока не получу в ошибку в сраном рантайме. Причём, что забавно, интерфейс driver.Driver у них уже есть. Поэтому я считаю, что с их точки зрения было бы правильнее просить передать в Сonnect сразу драйвер, тогда вызов был бы явным и статически проверяемым: sql.Connect(mysql.CreateDriver())А если бы операция создания драйвера оказалась тяжелой, я бы и сам догадался уже самостоятельно написать init и вызвать CreateDriver там.И к сожалению, когда простые разработчики используют init, чаще они лепят что-то вроде второго случая, когда он не нужен и скорее вреден, чем полезен.
На Go лучше всего писать самый скучный и банальный софт, когда ты не хочешь инвестировать ни грамма души, просто хочешь покончить с этой задачей в разумные сроки с удовлетворительными результатами.
>>1572978Сюрприз, это то, что от тебя требуется на работе. Совсем айтишники зажрались уже, душу им вкладывать надо, творчество проявлять.Делай нормальное качество, в нормальные сроки и так, чтобы это было легко поддерживать после того, как ты умрешь уйдешь. Всё.мимо
>>1572978>просто хочешь покончить с этой задачей в разумные срокиБойлерплейта больше чем в ваших джавах, половина либ чистейшие недо-велосипеды (за то реально туча звезд).В итоге часть вторичного софта приходится писать самим (умножая безумие недо-велосипедов)Что питонщик делал за день, гофер дрочит неделю-месяц.Да, побыстрее закончить.https://www.youtube.com/watch?v=wtsLoRnNq-Y
>>1573063Про недо-велосипеды - ложь, пиздёж и провокация.И да, если ты сравниваешь питон с го, то почему бы не сравнить его с ассемблером? Или понятие "разные инструменты для разных задач" для тебя слишком сложное?Питон нужен для CIных скриптов, ML или опционального говнокода.Джава нужна чтобы корпоратить бизнес-логику.Гошечка нужна чтобы писать какие-то конкретные места, высокопроизводительные сервисы, потому что она была, есть и будет производительнее, но при этом не настолько сложная, чем кресты или раст. А если ты хочешь писать всё на одном языке, то ты или пишешь что-то простое, или долбоёб.
>>1573086Предупреждая будущие срачи про производительность - джава не поддерживает толком настолько эффективную многозадачность (грин треды ещё не подвезли, планировщик и сборщик там работают на других принципах) и жрёт намного больше памяти.
>>1573086> Гошечка нужна чтобы писать какие-то конкретные места, высокопроизводительные сервисы, потому что она была, есть и будет производительнее, но при этом не настолько сложная, чем кресты или раст.Гошечка нужна чтобы писать какие-то конкретные узкие места, высоконагруженные сервисы, потому что она была, есть и будет производительнее, но при этом не настолько сложная, чем кресты или раст.Самофикс
>>1573086>>1573089> гошечкаАнончик, завязывай с приставочками Это призначек, что с головочкой не в порядочке
>>1573188Анончик, завязывай привязываться к словам.Мне нравится называть го гошечкой, с++ крестами, джаву джавой, php пыхой, js говном, а ts типизированным говном.Если тебе не нравится, то можешь пройти нахуй не читать.
>>1573086>высокопроизводительные сервисыМедленнее (местами на ровне) с жабой. "В - высокая производительность". Я уже видел барана который переписал с пхп на го свой пет-проект, но после замеров оказалось что 90% (до го и после) времени занимает база.Откуда вы такие высокопроизводительные лезете? Ну ок, хочется минимальной абстракции, но не язык же с ГЦ брать? Накати ты там плюсы или раст.
>>1573086>Питон нуженИспользую его везде где он суется. Были пару узких мест в проекте, переписал модуль на си (за это питон и люблю).Я больше чем уверен что больше половины пишут тут CRUD-проекты - какую там производительность вы ищите? хотя не важно, судя по отсутствие компетентности, ответ будет такой же
>>1573635> Откуда вы такие высокопроизводительные лезете?Известно откуда. Цикл от 0 до ста тыщ мильёнов выполняется в N раз быстрее, вот и делаются выводы.
Новичку имеет смысл вкатываться в GO, как в первый язык? Или работу никогда не найду? Я так понимаю, что люди в основном с других языков на этот переходят? Просто чет вакансий в моем городе(дс2) вообще нет, в основном ищут сениоров-мидлов.
>>1573904>С каких пор жява производительнее го?Например - всегдаhttps://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=query&l=zijo8v-fя даже не выкинул низкокачественные микрофреймворки такие как fasthttp, но они все равно сосут асинхронно жабе, почти в два раза
>>1573803Лучше не стоит, мало вакансий для джунов и нет фреймворков, облегчающих жизнь. Го обычно берут вторым языком к какому-нибудь мейнстриму типа пхп/джава/etc>>1573639>>1573635Для формошлёпства действительно подойдёт что угодно. А если ты, к примеру, делаешь чат, то тебе нужно держать непрерывные соединения по 10/100к на инстанс и эффективно их обрабатывать. Удачи сделать это на ваше пыхе или питоне, лол.На джаве можно, но скорость будет такая же или медленнее (зависит от реализации), а потребление ресурсов будет 100% больше.>>1573933Ты видимо не понимаешь. Джава всегда будет жрать больше памяти, потому что jvm.Джава и го будут всегда +- с одинаковой скоростью обрабатывать что-то в последовательное типа циклов и рекурсии, потому что го компилируемый, а у джавы сработает JIT. Будут тонкости типа оптимизации кода компилятором (оптимизации хвостовых рекурсий, к примеру) и оптимальности компиляции JIT'ом под конкретную машину.Го будут эффективнее джавы на особо многопоточных алгоритмах, пока в джаве не появится поддежка грин тредов (а после этого надо будет смотреть реализации планировщика).Эти все выводы можно сделать основываясь на дизайне языков. Да, где-то будут удачнее реализации сервера, драйверов, компилятора, планировщика, сборщика и они будут выигрывать какие-то микросекунды. Но в целом ситуация была и будет такая.Конкретно этот бенчмарк какой-то пиздец сомнительный.Почему-то в го они не прогрели гц перед стартом.Почему-то они не используют то, в чём го силён (многопоточность), выполняя 500 ПОСЛЕДОВАТЕЛЬНЫХ никак не связанных запросов в базу, хотя напиши они `go` перед вызовом fetchRandomWorld ситуация резко стала бы иной.И так далее.Всё как обычно, какие-то пидорасы решили, что будут сравнивать языки и решат, наконец, что круче, но при этом знают из всех языков, очевидно, только джаву. Ну ок, чё. Очередной говнобенчмарк, который не даёт выводов кроме КГ/АМ.
>>1573959>Джава всегда будет жрать больше памяти, потому что jvm.Это ты не понимаешь (послушай дядьку).Джава разменивает ресурс недорогой памяти, на ресурс дорого процессора. Это основная фишка, даже классы в памяти выравниваются по кратности слова.Еще в жабе используется вид спекулятивной jit-компиляции, которая недостижима при обычной компиляции (нужен сбор данных во время работы).Так же надо учесть, сколько бабла было влито в jvm и jit.У команды го не хватит ни ресурсов ни времени (и может даже ума), чтобы даже из простого го (при создание которого вообще не парились), сделать что-то, что догоняло бы джаву.Забавное даже было то, что после релиза даже раст в дробилках был чуть быстрее жабы (потом, конечно, они пофиксили, или подогнали, лол).Все эти тесты показывают важные вещи, что для бэкенд разработки, по сути не надо даже натягиают плюсы или раст или го, простая джава идет на ровне.Но ни жаба ни го тут половине разработчиков и не нужен
>Почему-то в го они не прогрели гц перед стартом.Лол, или я что-то пропустил из мира го или ты тот еще фантазер. Расскажи, зачем греть ГЦ?
>>1574010>Почему-то они не используют то, в чём го силён (многопоточность)Хотя с тобой все ясно, надо было сначала пост прочитать.
>>1574012Го запускает гц, когда превышается лимит по памяти. К примеру, го занял 100 мб, они запустили чистку, выставили лимит в 200 мб. Дошло до 200 -> запустили гц, выставили лимит до 400. И так далее.С этим работают двумя способами, первый - настраивается множитель для лимита, второй - после старта приложения инициализируют и очищают что-то большое, чтобы лимит сразу был побольше.>>1574010> Но ни жаба ни го тут половине разработчиков и не нуженЭто правда> Еще в жабе используется вид спекулятивной jit-компиляцииВсё так, именно поэтому я написал, что > Джава и го будут всегда +- с одинаковой скоростьюи специально сказал про jit. jit может помочь, а может и не особо. Гошный компилятор может что-то оптимизировать, а может нет. Но это тонкости, в итоге всё равно и там, и там, выполняется скомпилированный код, поэтому работать они будут +- одниково, без отличий на порядки.> У команды го не хватит ни ресурсов ни времени (и может даже ума), чтобы даже из простого го (при создание которого вообще не парились), сделать что-то, что догоняло бы джаву.Это сомнительное утверждение, будь так, никогда бы не появился C (все писали бы в машинных кодах), smalltalk, java и так далее.А так как ты опускаешься до того, чтобы утверждать, что команде пиздец каких умных, образованных и так далее чуваков из гугла, с научными степенями в IT и многолетним опытом работы на пиздец каких сложных задачах (включая java) не хватает ума, то разговор с тобой можно прекращать и больше никогда не заводить, тут явно манямирок и самооценка, размером с Москва-сити.
>>1574012https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap-26c2462549a2/Сделаешь на жяве чат-сервис с нагрузкой уровня твитча и задержкой GC в <1ms? Удачи. Сколько Раджешей понадобится?
>>1574010>Забавное даже было то, что после релиза даже раст в дробилках был чуть быстрее жабы (потом, конечно, они пофиксили, или подогнали, лол).Что, простите? Раст и должен в дробилках быть быстрее почти чего угодно.
>>1574029>Го запускает гц, когда превышается лимит по памяти...Это не прогрев, это особенность работы ГЦ, джава тоже делает много работы (и тоже увеличивает память) в том числе поколения копирует и заодно дефрагментирует, но мы же не будем это ждать?Прогревание в жабе это реальный технически достижимый процесс в 10К итераций (и речь про код, а не данные). Работа ГЦ непонятная когда достижима и можно всегда кудахтать что плохо погрели, надо было 3 часа ГЦ погонять.В общем, это чистой воды подражание терминологии жабы (если уж и доставать линейки, у жабы там сложнее ГЦ и тем более нет value type).>поэтому работать они будут +- одниковоНе факт, го полностью асинхронный, он должен утилизировать ресурсы максимально. В том числе у него сразу асинхронная работа с бд. Но что мы видим? Даже с синхронным бд (но асинхронной io) жаба работает лучше, почти в два раза. Просто потому, что драйвер к бд качественные (как, кстати, качественный у пхп, как бы там смешно не было, просто удачные сишные обертки).По всем параметрам го должен рвать жабу, в го нет виртуальных методов, нет исключений и прочей абстракции. Просто у жабы качественная VM (и jit).Как собственно успешно вкладывались и пилили до блеска V8.
>>1574058Чувак, что ты несешь??Какой нахуй jit? И с чего ты решил, что jit - это всегда хорошо??Какое нахуй подражание джаве?Кому оно нахуй нужно?> Даже с синхронным бд (но асинхронной io) жаба работает лучше, почти в два раза. Чего лучше?? В два раза? Может в три?
>>1574043У жабы есть реалтайм гц с гарантированным времени отклика, для какой-то йоба-экзотики, но ты школота с твичей о таком и не слышал.Ну и уже давно завезли обычные гц с минимальными паузами (не вспомню сейчас это ебанутое название). Запомни простое правило, что все эти микропаузы они не даются даром, не зря у жабистов тонна рычагов, которые они могут подвигать чтобы достичь наилучшего результата между паузами и производительностью (я в свое время память для пет-проекта докупал, чтобы ГЦ реже срабатывал, т.е. чтобы больше процессорного времени уходило на сервис и чистый кэш)У гоферов вообще нет никакой возможности, что-то там подкрутить, подвигать нормально. Кушай что завещал Роб Пайк (а будешь возмущаться, тебе статью напишут, мол это не язык плохой, это ты не так думаешь)>Сделаешь чат-сервис>задержкой GC в <1ms?Я бы тебя только за одну мысль написать чат с тиком меньше 1мс уволил бы.
>>1574058> Это не прогрев, это особенность работы ГЦТем не менее, заранее инициализировать память, например, в кеше на программерском жаргоне издревле называется прогревом, жава тут не при чём.> Не факт, го полностью асинхронный, он должен утилизировать ресурсы максимально.Невозможно утилизировать абсолютно синхронный код, именно поэтому я написал, что > Почему-то они не используют то, в чём го силён (многопоточность), выполняя 500 ПОСЛЕДОВАТЕЛЬНЫХ никак не связанных запросов в базу, хотя напиши они `go` перед вызовом fetchRandomWorld ситуация резко стала бы иной.В синхронном режиме го и джава будут соревноваться в удачности компиляции и оптимизации библиотек, всё так, я об этом написал ещё здесь>>1573959и разница здесь не особо велика> работать они будут +- одниково, без отличий на порядкиЯ уже устал повторять одни и те же аргументы, давай что-нибудь новое обсудим. >>1574067> У гоферов вообще нет никакой возможности, что-то там подкрутить, подвигать нормально. Кушай что завещал Роб Пайк (а будешь возмущаться, тебе статью напишут, мол это не язык плохой, это ты не так думаешь)Это так, и сделано осознанно, чтобы не сделать хуже. Есть вполне объективные доводы, почему авторы го решили никаких рукояток юзерам не давать.И да, не то, чтобы это было очень плохо, потому что gc в го и так пиздец быстрый, лимиты настраивать можно, работать через unsafe без гц работать можно, памяти требуется на порядки меньше за счёт более простого рантайма (нету такой тяжелой VM) и так далее.Вечный баланс между автоматизацией и контролем. Ручной управление памятью vs сборщик мусора, ручное управление потоком выполнения vs планировщик и всё такое, аргументы обеих сторон почти не меняются от срача к срачу.
Зачем вообще сравнить энтрпрайз ублюдка типа Java, и маленькую уютную быструю писечку Го, которая великолепно работает там где она нужна. Никто не ставил задачу написать очередного интырпрайз ублюдка.
>>1574067> У гоферов вообще нет никакой возможности, что-то там подкрутить, подвигать нормально. Кушай что завещал Роб Пайк (а будешь возмущаться, тебе статью напишут, мол это не язык плохой, это ты не так думаешь)Сверхразум, ты? Статья как раз о том, как они подкрутили гц под себя.> Я бы тебя только за одну мысль написать чат с тиком меньше 1мс уволил бы.Что несёшь? Я про stop-the-world паузы. Жява-токсики не умеют читать?
>>1574594Потому что многие тут не выбирают инструменты под задачи, а натягивают задачи на один конкретный язык и искренне удивляются, почему на остальных кто-то до сих пор пишет. Кто-то вон предлагает писать веб на сишке, и даже не хайлоад.
>>1573803Вообще-то зависит от того, что тебя именно интересует. На Go мало вакансий, его в основном слишком уверенные в себе конторы используют. Вкатываться стоит только если ты уже знаком с каким-нибудь яп.
>>1574805Выход за пределы сегмента. Выход за пределы массива (за пределы сегмента не вышел, но данные всё равно похерил). Куча тонких случаев с UB, которые влекут вообще что угодно. Таких случаев много, даже банальный плюс при signed integer overflow влечёт это. В общем, хватает проблем, которые даже в плюсах не решили полностью.
>>1574603>Что несёшь? Я про stop-the-world паузы. Жява-токсики не умеют читать?Был бы настоящим программистом, знал бы что даже тик в 500мс для чата это уже много. Они хвастаются гц в чате, потому что, видимо, реальное высоконагруженгое на го побоялись написать.Это очередное событие, когда отделу программистов разрешили поиграться с языком, а не реальные исследование и последующее решение.
>>1575028Блядь, что ты несёшь, клоун? Я в курсе что 500 мс это много. И я тебе пишу, что у твитча 1мс (ОДНА МИЛЛИСЕКУНДА). 1 мс это меньше 500 мс, ты это понимаешь? Они как раз написали высоконагруженное приложение с исследованием и последующим решением. Я не понимаю, это троллинг тупостью?Почему некомпетентные люди так любят первыми включать токсиков на пустом месте? Я просто кинул статью твитча, меня назвали школьником ни за что, а ещё и начали серить под себя после этого.
>>1574043>Сделаешь на жяве чат-сервис с нагрузкой уровня твитча и задержкой GC в <1ms? Удачи. Сколько Раджешей понадобится? На жяве, напомню, сделана одна известнейшая раковая реалтаймовая игра для школоты с огромным самогенерируемым разрушаемым миром.Которая прекрасно летает при херовейшем коде и однопокпоке.
>>1575134> Сделаешь на жяве чат-сервис с нагрузкой уровня твитча и задержкой GC в <1ms? Удачи. Сколько Раджешей понадобится? > в <1ms> Которая прекрасно летает при херовейшем коде > Minecraft's game loop normally runs at a fixed rate of 20 ticks per second, so one tick happens every 0.05 seconds. An in-game day lasts exactly 24000 ticks, or 20 minutes. > However, if the computer is unable to keep up with this speed, there are fewer game ticks per unit time. As the vast majority of actions are timed based on tick count rather than on wall clock time, this means that many things take longer on a slower computer.> One thing that does not happen as part of a tick is drawing graphics. Rendering happens after updating. This is why a varying frame rate does not affect the tick rate, which prevents video performance from affecting game mechanics. https://www.youtube.com/watch?v=Aj2CvNIVqpI
Вот и сравним майнсруфт на го с майнсруфтом на жабе:https://github.com/icexin/gocraftАлсо, в добавок развлекуха на покодить дома, прикрутить к вот этой хуитке шагающие кубачи и SVO.
>>1575165>Вот и сравним майнсруфт на го с майнсруфтом на жабеОгрызок низкого качества, где даже деревья сливаются в "не-разбери-пойми-что". Как можно сравнить поделку вида "поигрался в opengl и ушел делать уроки" с полноценной игрой со 100500 элементами игрового процесса?Хотя холивар бессмысленен (что го говно что жаба, в сравнение с шарпом и юнити).
>>1575193Там вообще смешная история вышла, ваыложить сорс в общедоступный паблик по лицензии ЕУЛА, что бы потом подгореть что все пиздят, собирают свои клиенты да еще и пулревесты издевательски шлют.
>>1575195Там никто не подгорал, просто у них куча сторонних анальных поделок с NDA используется и, кажется, после перехода на 64бит онли анальные лицензии им запретили полногстью выкладывать код, по причине линковки и применения анальных поделок.
Сложно с питона перекатиться? Хочу написать свою ASCII mmorpg, но питон для этих задач медленное говно
>>1575404Ты написал игру и увидел что тормозит или тебя ойтишники на ютубе сказали?У питона там половина либ в сишечку завернуто. Тебе уже сказали - только юнити, только .net core
>>1575450Я глубоко изучал эту тему, но сам не пробовал, конечно. Просто не хочется получить готовый продукт, понять что это - тормозное говно напоминаю, игра - ммо и переписывать его под другой язык. А про юнити - игра то текстовая, аля MUD
>>1575402Пиздец как. А самое главное, что времени и капец каких дорогих человеческих ресурсов на это уходит порядочно.
>>1575402Очень трудно и болезненно. Если в какой-нибудь жабке в случае ошибки максимум вылетит исключение с подробным стектрейсом, и ошибку находишь сразу, то на сишке у тебя тупо внезапно завершится программа, а среда плюнет в консоли лаконичное "Ошибка сегментирования", и всё. И приходится обмазываться дебаггером, логами, дизассемблером и линтером.
>>1575518>>1575613Если все так плохо, то почему популярные языки продолжают быть небезопасным говном, падающим в рантайме? Почему не используют OCaml, который не падает?
>>1575713Всё плохо только в сишке. Исключения (или их сабжевый аналог error) хотя бы можно перехватить и обработать. А вот с сегфолтом ничего не сделать.А у окамла, видимо, своих проблем хватает. Например, отсутствие инструментов и большого коммунити.
>>1575713Потому что всё предусмотреть невозможно и вся разница в том, что С - это ещё более небезопасное говно чем та же джава
>>1575724>Потому что всё предусмотреть невозможноС исключениями тоже самое. Все предусмотреть нельзя банально из-за того, что люди, в большинстве своем, плохие программисты. Нам нужны безопасные языки, в которых тайпчекер будет ебать за любую хуйню (это не поможет от логических ошибок, но мы ведь не про это спорим).
>>1575735Так бы оно так, но проблема в том, что за безопасность приходится платить, так или иначе. Или накладными расходами (сборщик мусора) или временем и сложностью языка (rust), или ещё чем-нибудь.Всегда важен баланс.
>>1575753>акладными расходами (сборщик мусора)А в джаве, го, с# его нет? Реальных отраслей, где каждый байт памяти на счету, не так уж и много.
>>1575753> Всегда важен баланс.Есть Dlang. Он с gc, но его можно отключить. Для безопасности есть SafeD: https://dlang.org/articles/safed.html
>>1575793Ну, хз. Говорят, что проще C++ и подавно проще rust. Может, чуть сложнее go, я не видел сравнений сложности между ними. А ты в чём видишь его сложность?
>>1575459>Я глубоко изучал эту темуНу опять же, ты не тестировал и не собирал какие-то сборки не сравнивал, а тупо шарился по форумам и читал мнение ваннаби программистов, которые говорили - "даааа питон тормозноооой".Динамические и интерпретируемые языки действительно в простых тестах будут медленно в плане сравнения. Но в плане человеческого восприятия это все равно быстро.Еще как пример на какой-то юнити есть возможность писать на питоне и дергать скриптами api юнити. Вроде бы казалось тормознутые скрипты и в сердце проекта.Но на самом деле это нормальная практика, когда тяжелыми вещами (например отрисовкой графики и прочими числодробилками) занимается какой-нибудь нативный компилируемый код, а бизнес логика пишется на простом языкекстати, на го нельзя писать число дробилки. На самом деле можно, но ручками придется вызывать диспетчер, иначе половину горутин угробишь. Это проблема асинхронных решенийВ любом случае ты сможешь профилировать проект и какие-то узкие модули переписывать на си или скорее юзать pypy.Тем более у тебя нет графики. Работать с текстом я бы кроме питона вообще бы не стал ни с чем
>>1575788D хорош, но за ним не стоят гиганты и гиганты его не двигают.Проще не насиловать себе свой мозг и сразу на С++ сеть.Идеальная связка Си + Питон (на сях пишешь реально тяжелое говно, на питончике логику и всякие CRUD-вещи)
>>1576130> D хорош, но за ним не стоят гиганты и гиганты его не двигают.https://dlang.org/orgs-using-d.htmlЗато эти компании его используют. Может так случиться, что выложат какие-то наработки. К примеру, netflix использует непопулярную freebsd и недавно выложила свои наработки для неё: https://www.opennet.ru/opennews/art.shtml?num=51463Также по верхней ссылке есть какие-то наработки тех компаний, но их не так много.> Проще не насиловать себе свой мозг и сразу на С++ сеть.Наоборот же. C++ менее безопасен и насилия над мозгом будет больше.> Идеальная связка Си + ПитонСи? Самый небезопасный язык. Речь не про уязвимости, если кто не понял, а про возможность отстрелить ногу, утечки памяти, неопределённое поведение и тд.
>>1576139Компании вечно там что-то используют. Вообще уже не показатель.Топовый слой С++ сейчас в геймдеве, вот взяли бы и флагман какой-нибудь написали типа движок Dunity.Сейчас языки без флагман проектов (главное нужных) - не интересны (зажрались, да, но такая вот реальность)
>>1576142>языки без флагман проектов - не интересныНазови несколько таких флагман проектов для разных языков, вижу ты в этом разбираешься.
>>1576206Новых? Вот именно что нет. Возможно только у дарта, поэтому он из пепла почти котлин уже догнал.А так у рубей были рельсы.
>>1576211>Как сказал один разработчик в Яндексе, у меня слишком плохая память, чтобы писать на динамически типизируемом языке.Динозавры на vim'е.Давно уже были докстринги во всех языках завезли и потом уже даже хинты завезли. Оказалось что кроме автокомплита (и чтобы IDE подсвечивала ошибку) - больше статическая типизация и не нужна (всякие auto, var, let - это доказывает).Я реально еще на 2009 году вел на говно-динамике проект, где все типы были в докстрингах (вся эта херня типа @param), писал по ощущениям как на жабе. Причем в 90% случаях даже нетбинс автоматом выводил типы.Потом эти динозавры напишут такой язык как го и будут говорить что все нормально (это не мы не осилили, это вы нас не поняли)
>>1576218У меня сейчас небольшой питонячий проект, там типизация (за счет хинтов) сильнее чем у го с его interface{}.Причем когда проект прототипировал, мне типы только мешали (я уже потом все по мере необходимости расставил или переписал участки)
>>1576223>>1576222>>1576210>>1576206И да, под флагманским проектом я понимаю не программу, типа у го там докер или раста браузерного что-то там. А именно инструмента облегчающего работу с чем-то.
>>1576226https://github.com/zhaopuming/awesome-d/blob/master/README.mdhttp://dlang.ru/links> D для чего?
>>1575788Я сам на нём не писал, поэтому могу наврать, но вроде бы как там есть серьёзные проблемы со сборщиком мусора, а его отключение вообще делает невозможным использование 99% всех библиотек.Ну и да, он скорее мертв, чем жив.>>1575780Никто не спорит.
>>1576267Чет проиграл.>They are written as the average software developer>JIT warming up is applied when necessary.То есть, если жаба была очень быстра, то мы исключали JIT :)Было лень график нарисовать что ли, вот глазами ебаться в цифры, то еще удовольствие.>>1576265>три компилятора: dmd, ldc и gdc.То-то головняка не хватало, еще и между компиляторами холиварить.А вообще идея и язык неплох. Я за любую вменяемую замену С++
Пока холиварите, там новый язык запилилиhttps://concurnas.com/This is actually a quite interesting language offering a unique combination of features for a statically-typed, object-oriented language:dead easy concurrency via isolates and actors, which can be "trivially" used in a distributed setup.reactive refs (i.e. change of a value causes auto-modification of dependent values, like in Excel).vectorization (efficient and easy matrix operations).GPU Programming.language extensions (basically, embed code in other languages).union types, which they actually call multitype (as in TypeScript).off-heap memory.Object providers (Dependency Injection at the language level).more basic features, but cool to have: pattern matching, tuples, null safety, extension functions, serialization for everything out-of-the-box, list comprehensions, ranges, a REPL...
>>1576299>Дальше можно не читать.Когда ты это прочитал про "pattern matching", ты уже почти все прочитал.
>>1576302Попытки подражать хаскеллю почти всегда превращают язык в уродливое, ебически сложное и нежизнеспособное нечто
>>1576321Лафтаймы и владение (чекер и в целом синтаксис) - это сложнее чем прямое управление памятью. То есть, язык снимает одну нагрузку С++ и вещает другие, не менее сложные.Можно конечно натренироваться и использовать язык для компенсации и последующего демонстрации собственного достоинства, но для таких понтов уже есть хаскель.Язык никак нельзя назвать прагматичным. Очередная экзотика для поиграться.
>>1576388У крестов и так теперь на замену ручному управлению памятью есть std::unique_ptr, std::shared_ptr, и std::move. Но и там нужно быть осторожным, а то легко наступить на UB.
>>1576343Сырые строковые типы. Они реально поток байт выдавали за фичу. Но чтобы реально работать с полноценным utf-8 надо перегнать в руны (название тоже доставляет)Обработку ошибок вообще нет. Изначально вообще предлагали просто конкатенировать строку и потом вверху там разбирать. Сейчас вроде какой-то костыль придумали.Со слайсами вообще радость (реально магическая бага), когда неожиданно можешь получить два разных слайся (когда в один добавляешь больше чем у него там капасити). Думал у тебя один ссылка на один слайс, а в реале уже два разных.и т.д.Язык просто на отъебись
>>1566462у нас на работе на ноде был сервис, как-то связанный с конвертацией валют, точно не знаю, я тогда еще не работал там. Переписали этот сервис на го. Прогнали тестики и получили в 1000 раз больше обрабатываемых запросов в секунду.
>>1567562на го очень мало вакансий. На джунов я вообще очень редко вижу. Попробуй на ноде/пхп/джаве/шарпах в бек залезть, а оттуда и в го. Также часто видел вакансии го прогеров, в которых писали, что рассмотрят челов с опытом на пыхе
>>1576526Скорее всего код на ноде был плохо написан. Это не упрек, такое явление не редкость. С джавы на джаву переписывали полностью проект, получили производительность больше (была бы какая-нибудь скала или котлин или еще что там, сразу бы субъективно посчитали что дело в языке, а не архитектуре).
>>1570698у нас миграция на го вызвана проблемой производительности. Легаси код на ноде и пхп не вывозит нагрузок, отчасти потому что сам код говно. На выбор было два стула: го и плюсы. Быстрее гохи только кресты будут, но пересадить команду на них пиздец сложно. И в целом время разработки увеличится в сотни раз. А го относительно простой(с пыхи наша команда легко перешла) и дает весомый буст в производительности лично в нашем случае.
>>1576526Когда нода только пиарилась, молодой "тимлид" неделю мне зачесывал про то какая нода офигенная. А потом оказалось что она у них в одном экземпляре на 4 ядрах работала.Так что js-разработчики те еще мастера своего дела. У меня даже больше вопрос - как вообще пришла мысль для финансовых расчетов взять javascript? Это такая специальная олимпиада или что?
>>1576570это говно индусы писали(или тайцы). Потом этот проект перешел в нашу компанию, нагрузки со временем увеличились, нода стала дохнуть. Решили переписывать на го
>>1576547Всегда проигрываю с этой маняфантазии, что если мы возьмем язык Х код у нас будет работать быстрее в 100 раз!!Во-первых - писать быстрый, то есть оптимизированный код, надо еще уметь (это не хилый скилл и вчерашняя макака на пхп или ноде на вряд ли умеет).Как пример, писал часть некоторые оберток встроенных пхп функция на си, оказались что мой вариант тормозил в разы. Залез в сорцы и охерел как там оптимизировано написано (я так никогда не написал бы точно)Во-вторых, даже в фейсбуке и вк не переписывали все на си или подобное, местами все равно остается пхп, потому что там где он отрабатывает - это экономия на спичках. Вы конечно же не искали узких мест подсказка, у вас она будет в базе данных, если это ваш первый затупВ-третьих, как и писал, реальный прирост с CRUD минимальный, обычно решает кэш (можно вспомнить жабу, где она упаковывает и упорядочивает объекты в памяти, но в реале даже грамотный кэш на пхп может зарешать).В-четвертых, если сравнивать все говно на статике и динамике (реальные проекты, а не перегонка в цикле листов), то динамика в реале просидает не боле так 10-20 не более (а порой меньше). Но реального вклада и денег статика требует больше (в том числе и на поиск спецов, на С++ вы на вряд ли найдете годных спецов, а если найдете, то завтра у вас их сразу же уведут)
>>1576579какие маняфантазии? У нас был сервис на ноде, который не справлялся с нагрузками, теперь есть такой же на го, который все спокойно вывозит на проде. Ну и у нас этот сервис с финансовыми расчетами связан, на го априори эти вычисления будут быстрее. А ноду мы не выбирали - это подарок от предков.
че нынче спрашивают на собесах синьор гошников? пишу 4 года на питоне и все это время немного пописываю на го, думаю полностью перекатиться
>>1576535То есть на ноде чтобы проект писать иделаьно, наняв 300к в сек сеньора, когда одна го-обезьяна напишет тот же проект, на отъебись и получит тот же результат?))
>>1576704Готовься серьезно отвечать на вопросы о паралелльном программировании, конкуренси и прочего горутинного говна. Почти никто не спрашивает базовые вещи.Прошел-около-5-го-собеседований-в-скайпах
>>1576587>финансовыми расчетамиУ тебя много коннектов, скажем 4 ядра и 100.000 горутин.Одна горутина занимается расчетами, значит ~25.000 горутин зависли и ждут.Асинхронный язык идеален для "получть-положить", "взять-отдать", любые вычисления вешают весь поток/процесс. Не удивлюсь что вы и сейчас вешаете что-то, просто более мозговитый шедулер го - более грамотно старается распределить по свободным потокам (может даже создает еще).
>>1576267Как понять, что некоторые тесты плохо написаны? Очень просто, когда какой-нибудь язык опережает Си.
>>1577228Чел, я не читал вашу дискуссию. Но ты пишешь в треде самого хайпового языка современности про то что нужен тред о маргинальных языках. Кого ты хочешь тут найти? Подними лисп тред для начала попробуй. Про nim и прочие подобные найти тут собутыльников вероятность крайне мала.
>>1577252>Но ты пишешь в треде самого хайпового языка современностиНе вникал в вашу дискуссию, но прости, ты не в питон треде.Ты же в курсе, что даже дарт обогнал по интересам го?
>>1577266>хайпового языка>питонНу раз вы считаете меня троллем, то, скажем так, ЯЗЫКИ РАЗМЕТКИ НЕ В СЧЁТ
>>1577277>Топ ML язык>Основной язык используемый в науке и анализе данных>Numpy опережающий по скорости языки Си>...язык разметки>Пук, среньк, потёк из треда
>>1577450Поэтому число-дробилки и пишут на сях. Что касается CRUD - то между питоном и сями ты даже не почувствуешь разницу.В этом и прелесть, что питон такая "обертка" на сями, даже не знаешь когда работаешь с питон-модулями или сишными.А в го? В го ты пишешь перманентно бойлерплейт.
>>1577228Двачую адеквата. Мне Nim побольше D понравился, т.к. почти все киллер-фичи D переняли в новых стандартах C (к примеру, анонимные юнионы, стракты и enum'ы в C11). Питону дает за обе щеки, т.к. по сложности синтаксиса и возможностям метапрограммирования он к нему близок, но при этом полезных конструкций в языке побольше. А по скорости даже Go даст пососать, т.к. она близка к C, к тому же есть линкер (ибо бинарники по 50 KB куда приятнее, чем по 5+ MB).
>>1577478> почти все киллер-фичи D переняли в новых стандартах CОпциональный GC тоже переняли? А SafeD? D позиционирует себя как по умолчанию безопасный, дающий возможность играться на небезопасном уровне или не беспокоиться о нём. Си не добьётся этого никогда.
>>1577630Пили теперь тред по нему, борщехлебам он понравился. Можешь сразу с другими переосмыслениями C (Nim, Fantom, Zig, Pike или даже D) тред объеденить, как в раст-треде предлагалось. Если соберется больше, чем полтора аутиста - можно будет либы пописать и специальную олимпиаду устроить.
>>1577678Отлично, надеюсь взлетит. Много языков не бери, главный приоритет - V, Nim, D, Zig (самые большие комьюнити). Тэг можешь взять /clike/, если ничего лучше не придумаешь.
> Nim, Fantom, Zig, Pike, D, VНахуй нужны все эти близнецы-уродцы?>>1577678Уверен ты даже сравнительный анализ по ним дать не сможешь.
>>1577696>Нахуй нужны все эти близнецы-уродцы?А нахуй вообще ЯП нужны? Пиши прямиком на машинных кодах, и ассемблером не пользуйся, ибо их там тоже пара десятков реализаций (nasm, fasm, tasm, masm, *asm). А если серьезно, киллерфичи языков обычно подробно расписаны на их сайтах, которые запросто находятся по запросу %название_языка% lang. Для большинства это простота и безопасность по сравнению с C, но у каждого свои фичи - D себя позиционирует как переосмысление крестов, V имеет невероятно быстрый компилятор и встроенный менеджер зависимостей, Nim (и не только он, кажется) умеет транспилироватся в JS.
>>1577711Имеется в виду на фоне уже имеющихся языков. Менеджер зависимостей это не фича нихуя, он и так должен быть у любого промышленного языка, и вообще похуй встроенный он или нет. Транслятор в жс это тоже не фича языка, любой production-ready имеет минимум один транслятор в js, тоже мне блять достижение. «Переосмысление крестов» вообще охуеть, а что конкретно делает его настолько непохожим на остальные языки или те же кресты чтоб он был прямо интересной альтернативой?
>>1577696> Уверен ты даже сравнительный анализ по ним дать не сможешь.И не собирался. Для этого будет тред, а не шапка. Для сравнения нужно иметь опыт на этих языках. И не на одном.
>>1577722>транслятор в jsУ них теперь специальная олимпиада, кто лучше оттранслируется в жс. А по факту это просто кукаретики, которые насочиняют непойми чего и думают что они охуеть какие молодци, а если рядом найдётся ещё какой нибудь менее квалифицированный энтузиаст, то может образоваться петля с автоподдувом. Что в общем то и наблюдается почти с любым языком в индустрии. Для себя решил, что на таких фантазёров просто нет смысла время тратить.
>>1577722Я уже написал тебе, как найти информацию о киллер-фичах этих ЯП. Для большинства вышеупомянутых ЯП там весьма неплохо перечислены отличия от C. Go, кстати, точно такой же наследник C, но с поддержкой крупной копропорации.>>1577733В этом тысячилетии ЯП вряд ли способен взлететь чисто за счет удобного синтаксиса/семантики и прочих приятностей вроде скорости компиляции. Для взлета в этом миллениуме нужна либо поддержка от крупных игроков рынка (Go, C#), либо популярный софт, который вытянет язык (Ruby с рельсами, обертки для нейросетей на Python), либо эксклюзивность для платформы (Java/Kotlin для Android). У этих языков пока ничего такого нет.
>>1578129Да, именно. Я пишу уже шапку пол часа, а завтра вставать рано. Так что, тред будет завтра. Не, я не забрасываю.
>>1578146Nim сейчас двое человек делают, не считая всяких контрибьютеров с гитхаба. Их даже какая-то компания начала спонсировать, чтобы они круглосуточно писали. Релиз 1.0 уже был. Так что, есть пример языка, который смог, не смотря на маленькое сообщество.
>>1578148Не думаю что выстрелит. Идея то не плоха, но все языки имеют фатальный недостаток - они не принадлежат какой-то топ компании. Это го или раст можно до посинения пытаться натянуть на рынок, а такие языки никому не нужны, потому что нельзя управлять комьюнити.Nim имеет шанс потому, что он выглядит как питон на стероидах.
>>1578153>работающий языкТам был какой-то момент, не помню точно, в 1.5 они переписали ГЦ, сделали его "быстрым" за счет процессорного времени и естественно многие схватили падение до 30% процентов (для пет проекта это может незаметно, но многие ощутили).Или случай с алиасами, или что там было. Они просто взяли и решили по-своему.То есть, ребята двигают продукт как им надо, это уже плохой звоночек.
>Nim Было бы офигенно если бы они убрали двоеточие после if, for и функций, сделав просто обязательный перенос строки.>>1578147Пока ты там шапку нашиш, приходится nim обсуждаться в го треде.
>>1578156Где-то читал, что гугл изначально создавал го для решения своих внутренних задач, и ему, в общем-то, должно быть плевать, что кто-то ещё захотел это использовать.
>>1578161> обязательный перенос строкиОхуеть, и в ниме синтаксис зависит от форматирования? Всё, вычёркиваю из своего списка "интересных языков".
>>1578167да, это требует линкера или IDE вменяемое, чтобы не страдать. Но после питона привык настолько, что даже скобки в if с трудом уже пишу
>>1578153Кривая и нестабильная реализация vs работающий язык с неизвестным будущем.Я бы 10 раз подумал, прежде чем начинать работать с гугловой инфраструктурой.Конечно, если что, язык высрится в опенсорс, но по честному, это будет свалка истории.Эти парни вообще не парятся тому факту, что их продукты не выстреливают потому, что они их закрывают постоянно. Это уже замкнутый круг.https://www.reddit.com/r/programming/comments/ept5c1/google_is_finally_killing_off_chrome_apps_which/Котлинисты сейчас тоже напряглись
>>1578174Теперь мне кажется так-же.Груви жалко, он мог бы стать моим топовым скриптовым инструментом. Но приходится душить змею.
>>1578172Как думаешь, что более вероятно: язык В станет относительно стабильным vs разработчику надоест им заниматься и он его бросит ?>>1578174Судьба котлин зависит от судьбы андроида. Если гугл разработает свою операционку взамен андроида или какой-то новый язык, то котлин легко станет языком, который никому не нужен
>>1578181> Если гугл разработает свою операционкуFuchsia.> или какой-то новый языкDart. На Go для той операционки сетевой стек был написан.
>>1578184>Fuchsia.Если она дойдет до готовности и гугл начнет ее пропихивать. Правда, пока не ясно, заменит фуксия андроид полностью, или станет 3 системы
>>1578184>>1578188Только сейчас им показали как гугл очередной проект закрыл. Они сидят о фуксии мечтают.>>1578181>относительно стабильным vs разработчику надоест им заниматься и он его бросит?Никто не говорит перекатываться на кустарные проекты, есть такая стадия освоение языка "слежу за проектом" (или "играюсь с языком"). Этого для таких проектов достаточно.
>>1567068>Тут предлагают нарезать архитектуру не вдоль (все контроллеры в одном каталоге, все модели в другом, конфигурация в третьем), а поперёк (в одном каталоге контроллеры/модели/etc, связанные с одной сущностью, в другом - с другой и т.д.).Проблемы вебмакак.
>>1578203Чем больше ты нарезаешь папок, тем вероятнее ты словишь циклический импорт, где-то на 10 вложении.
>>1578334Почему тупые-то, V действительно лучше Go. Если бы Go не форсился корпорацией добра, его бы никто в руки не взял просто посмотрев на синтаксис.
>>1578202И поэтому приходится вручную прокидывать ошибки наверх, потому что почти всегда на текущем уровне её не обработать. Из-за этих if err != nil { return nil, err } код разбухает в несколько раз. В джаве вон тоже изначально пытались бороться с игнорированием ошибок, высрав checked exceptions. Не прокатило, практика показала, что далеко не всё можно обработать здесь и сейчас.А причин-то не добавлять эксепшены и нет, просто goвноеды из принципа упёрлись.
>>1578345Спасибо за ваше мнение. Мы его учтем и непременно добавим в Go2 эксепшены, ведь про это нам сказал анон с двача.
Не надо ничего менять, го эталон мерила некомпетентности, я потом перестану так быстро ваннаби программистов отсеивать.
>>1578358Если потихоньку пинать разрабов пока ещё молодых языков в нужном направлении, то может наконец-то получиться если не убийца крестов, то хотя бы сишки.
>>1578361Там где-то в сети гуляет статья, что го не ваш язык, а гугла.В этом вся суть, хера кого-то ты там распинаешь.
>>1578384Мыши продолжали писать на других языках с мыслью перекатиться на го, когда он станет достаточно годным.
>>1576211> Плюса у С++ только два. Минусы стремятся к бесконечности Проиграл.Вообще давно хотел попробовать D. Время пришло.
>>1578932Вы двинутые что-ли? Зачем пробовать мёртвый язык? Как бы хорошо он не был написан, ему уже 10 лет и он не взлетел. Всё, тема закрыта. Хочется чего-то нового, берите scala, rust, haskell, erlang, на худой конец, nim.
>>1579052Думаю это тот же самый анон, который ним предлагал. Предлагаю укатывайться в V тред, как раз для маргиналов.
>>1579052>Зачем вы пробуете мертвый язык>Лучше попробуйте эти мертвые языкиЕсть только один язык и имя ему pythonhttp://pypl.github.io/PYPL.html
>>1579171Это у которого вышли три ломающие версии и каждая последующая с апокалипсисом всей предыдущей скодобазы?
>>1579218Почему три и кто тебе вернул твой 2008?Почему ты решил что гугл не сломает если захочет? Язык его, а не комьюнити. Но вот питон такое уже явно не будет делать.Я вообще бы на месте гугла го закрыл (отдал в опенсорс), а сам бы на базе полученных данных от этого затянувшегося эксперимента запилил бы новый язык.
>>1579238И ведь ломает, причём достаточно активно. Выпиливает фичи от версии к версии, что-то переделывает. Синтаксис, к счастью, не меняется так радикально.Вообще не представляю, как на таком языке долго поддерживают что-то большое.
>>1579258O_oМы, видимо, слишком разные.Казалось бы, нет карьеры и хорошей работы - ну так заведи её. Выучи любой действительно востребованный язык (джаву, пыху, гошечку, да даже джаваскрипт) и найди на нём работу.Но вместо этого ты хочешь тратить время на то, что принципиально не способно решить твою проблему (не гуглив, уверен, что во всём СНГ ты не найдёшь ни одной вакансии на D или этом V).
>>1579294Ну да, фичи объявляются депрекейтед и выпиливаются. Других причин выпиливать и нет. А легаси ведь так мгновенно переписывается, что можно вообще об этом не париться.> vendoring> binary only packages> go tool yacc
>>1579309А ты про го? Го вообще прелесть, вроде и обновления маленькие, но реально может что-то сломаться.Хз, имел бы я легион хомяков бесплатных, я бы тоже на них тестировал.
>>1579315Что конкретно в го поломали? Максимум, что-то задепрекетили (и это нормальный процесс).Что vendor, что yacc можете использовать совершенно свободно, они будут работать. vendor вообще в go modules нативно поддерживается.
>>1579378Хз у знакомого там что-то упало, в принципе и при джаве не торопятся обновлять обычно. В общем, парни поигрались, потом откатились до обратно до жабы не без помощи участия начальства.Давно было, тут половина еще в школу ходила.
>>1579405Звучит, как "одна бабка сказала", я про джаву могу тоже очень много негативных слухов припомнить.
>>1579437Ну может есть тут кто не пет-проекты тискает и между версией встрял. Мне лично хватило когда они просто взяли и в пользу своего модного ГЦ мое процессорное время разменяли.Попробуй так в джаве сделай.
>>1579474Лолчто? И го и джава одинаково жертвуют процессорным временем для гц во имя упрощения работы с памятью. Гошный и джавовый гц немного по-разному работают, конечно, но это довольно специфичные материи и в 99% проектах эта специфика бесполезна.гошные хейтеры такие хейтеры
>>1579486Читаешь попой да?Это было когда ввели микропаузы в 10 мс. И это уже была как минимум 1.5 версия (вроде), то есть люди активно пилили тырпрайз и они просто взяли и херанули.Я знаю, ты не оч умен. Поэтому просто объясню, они походу заебались с ГЦ (или их заебали с ГЦ) и они тупо выкрутили на максимум. Ну и конечно натянули токсичный маркетинг, мол, как теперь стало круто у го. Но оказалось это дается не бесплатно и кто-то хапнул на железках падение 20-40% (что в моих 70-80% было критично кстати).Как потом оказалось, что в мире ГЦ не сложно достичь низких пауз, но достигается это не бесплатно, а самим дорогим ресурсом (нет, не ОЗУ мой юный друг) - а процессоромНу и конечно они там не дали никакого ключа типа "хочу как раньше". Они просто сделали как пожелали и клали на все.
>>1579520Мне кажется что работой жц в го можно таки управлять.>>1579474>Попробуй так в джаве сделай.Жаба это страшный жирный как твоя мамка монстр, там изначально так было.
А меня одного бесит гошная УТИНАЯ ТИПИЗАЦИЯ? Казалось бы, круто - но меня дико бесит, что, когда начинаешь в интерфейс добавлять новые методы, то хер проссышь, где там имплементации этого интерфейса были.
>>1580061А IDE тебе на что дана? Там все подобные действия уже давно реализованы, одной горячей клавишей всё везде поменять можно.
>>1579607>Мне кажется что работой жц в го можно таки управлять.Два состояния в го:1) Блин, тут наверное должно быть какое-то решение, не может же это быть так глупо сделано.2) Бля...
>>1580305Я не го программист но за 5сек нагуглил это https://golang.org/pkg/runtime/Можно установить процент, можно запускать вручную. Стандартно всё. Почему хуйню несёш ты, а стыдно мне?Убей себя.
>>1579520>Как потом оказалось, что в мире ГЦСпешите видеть, эксперт в программировании с двача открыл для себя автоматическое управление памятью. Ещё немного и начнёт откровения ООП раскрывать.
>>1580309>Можно установить процент, можно запускать вручную. Тебе сказали, что накатили другую модель ГЦ за счет железа (денег) пользователя, без возможности заюзать старую модель. Что ты там по-подергать собрался, суслик? Не оторви себе.Похожий момент был с алиасами, я уже выкатился и не помню точно. Но помню что гуглу нужно было какой-то сахар заюзать срочно, который вообще добавляет магию и неопределенность в код. Но комьюнити встало на дыбы. И тогда го-разрабы добавили это как-то постепенно, не так резко, со смазкой, с последующей версией. Суслики проглатили.У гугла мона репа именно поэтому они так неохотно ели пакетный менеджер и высирали статьи "ненужно" (до сих пор там лажа какая-то).Очевидно что го какой-то внутренний язык для узких задач, который выкатили чтобы на халяву получить опенсорс труд.Я застал реинкарнаций 5-10 тредов по го (застал даже Илюшу), все эти треды жили на хейте и лулзлах над фанатиками.Есть, конечно, очень маленькая доля рынка, где го просто был идеален в свое время, но сейчас, когда запихнули зеленные потоки async await даже в те языки где он не нужен, надо быть отбитым чтобы брать го.
>>1580330Да толком ничего (или я забыл).-Сайт с тортами или объявление тортов (жена пекла, может ИП).-Мухосранск-Ну что чел шизик (причем какой-то реально невменяемый).Дианон в /pr уныл и беспощаден (там были какие-то данные, можно было погуглить, напрячься, но я ленивая жопа).Вообще, были мемные события, особенно того же Илюши, которого полностью дианонили и лулзовали как могли, даже в го чате. Но никто это не увековечил даже в лурке, а Илюша вырос и стал музыкантом ушел из го. хотя вроде пытался пилить свой го, с блекджеком и дженериками, но увы, малолетний долбаеб, хотя вроде и умный
>>1580353То есть, ты только что заявил, что деанонимизировал кого-то, и тут же признался что не деанонимизировал никого?Тебе сколько лет?
>>1580315> Тебе сказали, что накатили другую модель ГЦ за счет железа (денег) пользователя, без возможности заюзать старую модель.Ну а пруфы, пруфы-то где?
>>1580378Дополню вопрос, в то, что они улучшили gc - я верю, это легко гуглится. Где пруфы, что это так сильно влияет на ресурсы процессора?
>>1580378>>1580381Суслики, вы совсем охуелиhttps://github.com/golang/go/issues/14189https://lmgtfy.com/?q=go+1.5+performance+degradation
>>1580368Сдеанонили шизика по тортам.@Нашли объявление жены, фирму, номера телефонов, мухосранск@Анон не легион он один, забил тупо болт@Шизик обосрался и залег на дно реально срал в каждом треде@Смысл лулзов пропал вообще@Торто-куколд сейчас радуется что его не сдеанонили до соцсетей "ко-ко-ко" это не считается.Ты не расслабляйся, вдруг треды в архивах.
>>1580391Пока что я могу сказать, что судя по гитхабу, проблемы с деградацией решили где-то в go1.8, там в каждой версии, начиная с 1.5 были улучшения на эту тему.Более того, быстрый гуглинг по статьям говорит, что он gc в го схожс jdk-шным, вроде бы даже реализован тем же разработчиком, но позже, с какими-то улучшениями.Не могу квалифицированно сказать, что там конкретно поменялось, но вроде как они изменили архитектуру gc и это в ряде случаев начало вызывать проблемы.Что сказать, да, они пидорасы, что выкатили настолько странную новую версию, которая вызывала такие проблемы. Хорошо, что потом это починили.Ты это хотел услышать?
>>1580394А ты чего ожидал? Что ему под дверь насрут?>легион>шизик>куколд>лулзыНе поверю, что это может писать человек старше 20 лет
>>1580397У нас уже получается гуглить. Это хорошо. Тонна говна тогда выложили (лично читал боль в гугл группах), даже вроде в релизе говорили про цену в 10-20%Но смысл, еще раз не в этом, даже срать починили они или нет никто там не починит, такая модель ГЦ просто. Где-то даже в подкастах на джаве умные люди на пальцах объясняли. Кстати, и не починили скорость компиляции, динозавры помнятРечь про то, что они взяли продакшен-реди продукт и навернули как им пожелается. Случись такое где-то в жабе, говно до сих пор бы на вентиляторах вертелось.Конечно, все на базе синтаксиса видели, что они делают как захотят высирая классическое ненужно, но никто не думал что они будут рантайм шатать.Конечно, для среднего васяна тут вообще пофиг, но для нас это был звоночек и мы слезли с го. Судя по тому что местные даже нагуглить не могут, не то что помнят сию трагедию, это можно уже считать мифом. Так что забей, кушайте кактус.
>>1580421Да не обращайте на него внимания, он ебанутый. Сказки рассказывает какие-то про 80% деградацию, про какой-то деанон рассказывает. Сидимо, у первокурсника каникулы начались, вот и в свободное время засирает интернеты.
>>1580315> Есть, конечно, очень маленькая доля рынка, где го просто был идеален в свое время, но сейчас, когда запихнули зеленные потоки async await даже в те языки где он не нужен, надо быть отбитым чтобы брать го.И поэтому сейчас его начали использовать в Авито, Озоне, Мейлру, Тинькове и т.д.? Ну тупые, ведь анон с двача скозал что только отбитые так делают.
>>1580391>>1580415Джава-ретард, ты? Начинай оправдываться.https://blog.twitch.tv/en/2016/07/05/gos-march-to-low-latency-gc-a6fa96f06eb7/Starting with Go 1.5 in August of 2015, Go’s garbage collector is mostly-concurrent and incremental, meaning that it no longer requires the application to be entirely stopped while it does the bulk of its work. Aside from relatively short setup and termination phases, our program can continue to operate while garbage collection is underway. Upgrading to Go 1.5 immediately led to a 10x improvement in the length of GC pauses in our chat system, with pause time on a heavily-loaded test instance shrinking from 2 seconds to around 200ms.We’d endured the multi-second GC pauses of Go 1.2 through 1.4. Go 1.5 brought them down to around 200ms, and Go 1.6 cut it further to around 100ms. Now with pauses generally less than 70ms, we can claim an improvement of more than 30x.With pre-release Go 1.7 from June 2016, the GC pause times are better than ever with no manual tuning required. Typical pause times for our chat server are close to 1ms out of the box — a 10x improvement over the tuned Go 1.6 configuration!Profiling and tuning gave our application a 10x improvement in pause time with Go 1.5 and 1.6, but between Go 1.5 and Go 1.7 the runtime team was able to turn that into a 100x improvement in pause time for all apps like ours.
>>1581004В 2020 удивляться что крупные компании могут позволить себе взять и поиграться в очередной язык чтобы пропиарить себя в узкой группе разработки (ты же их запомнил, умница) и чтобы избежать текучку кадров, тем самым дав поиграться очередным своим макакам.У нас так и руби был, нода, го, котлин даже тискали. Сейчас одна команда сидит и заливает как им очень нужен раст (они же постигали в свое время говно).
>>1581185А зачем кому-то поддерживать узкие группы разработки по "плохому" языку? Зачем вкладывать ресурсы? Или ты думаешь, там тупые люди сидят, один ты тут такой умный - срыватель покровов с го?
>>1581016Гоферы на все блестящие ведутся, думать не хотят совсем.Парням очень важны были эти паузы, вместо того чтобы взять С++ или раст они тупо дрочили эти паузы и радовались.Важны ли эти паузы тебе? В 99% нет.Ладно, распишу для самых маленьких.У тебя есть некий язык и у него есть два варианта использования:1) У тебя есть сайтик, который раз в 5-10 минут делает stop-the-world в 200мс. Естественно, это незаметно для клиентов вообще.2) У тебя есть сайтик, который очень часто делает stop-the-world, но всего лишь 10мс, плюс отнимает 20-40% процессорного времени. Естественно, тоже незаметно для клиентов вообще.Какой вариант выберешь? Да никакой не выберешь у тебя нет выбора в го. У тебя есть только возможность читать очередные истории успеха, от которых приторно стало еще в 2015 году агрессивный и слащавый маркетинг это плохо
>>1581189Ты тупой? Тебе там сразу написали.1) Пиар. Потом хомяки бесплатно произносят твою фирму при холиваре. А так же пиар на конфиренциях.2) Уменьшить текучку кадров, позволяя программистам во что-то новое поиграть. В условиях микросервисной архитектуры - это ничего не стоит.
>>1581004>>1581189>Авито, Озоне, Мейлру, Тинькове Вот пример, казалось бы не особо то продвинутые айти компании. Но суслик уже преподносит это как плюс. На халяву пиаря компании.Мы в свое время на какой-то конфе чела отправляли, чтобы просто нашу ноуй-нейм фирму хотя бы услышали (а потом может узнавали). Вроде было про нод.жс, потом эту каку конечно выпилили потому что бывшие фронтент разработчики не очень то подходят для бэка
Есть приложение на Го и это приложение хочет базу. Но базу оно хочет не абы какую, а Постгрю, что, учитывая масштабы применения приложения выглядит ебанутым проектированием скейлинга ради скейлинга. Короче, как с минимумом усилий подменить для Go-приложения postgres на sqlite3?
>>1581229>Есть приложение на Го и это приложение хочет базу. Но базу оно хочет не абы какую, а Постгрю, что, учитывая масштабы применения приложения выглядит ебанутым проектированием скейлинга ради скейлинга. Короче, как с минимумом усилий подменить для Go-приложения postgres на sqlite3? Без анализа того что именно и как твоё приложение делает - никак.Или ты о чем вообще?Что если оно жс запускает на стороне базы данных?
>>1581227> Авито, Озоне, Мейлру, Тинькове> Вот пример, казалось бы не особо то продвинутые айти компанииТолсто.> бывшие фронтент разработчики не очень то подходят для бэкаЭто почему? Я сам из фронта в бек выкатился и вполне успешно.
>>1581190Успокойся уже, не отнимает он столько процессора. В 1.5 версии был конкретный баг (точнее, недоработка) связанный с конкурентной обработкой горутин, находящихся в паузе, сборщиком. Её пофиксили, теперь не только паузы маленькие, но и процессор он не жрёт. А ты сиди дальше на своей джаве, жирной, как твои наезды на гошечку.
>>1580394>Сдеанонили>НашлиТы же говорил что сам лично сдеадонил.>Анон не легион он одинХм.>Нашли объявлениеА деадон то был?>Ты не расслабляйся, вдруг треды в архивах.Требую деадона.
>>1581285Не верю в такие кулстори. Это как с гомоеблей, если даже и прекратишь - то пидором быть не перестанешь. С фронтендом та же история.
>>1581274>теперь не только паузы маленькие, но и процессор он не жрёт.Гоферы изменяют физику. Ты думаешь нету реалтайм ГЦ? Есть, но оно оч дорогое по ресурсам.Вам тупо "ползунок" выкрутили в одну сторону есть мнение что их запарило бороться с минутными паузами для 50гб систем.Проблема то не в этом. У гоферов нет выбора, вот мне не нужны паузы в 10мс, я хочу себе throughput поднять, в жабе я могу сделать выбор, в го я могу только пукать в треде.
>>1581293Ты глупенький что ли? Он не реалтайм, он с паузами, его там оптимизировали (добавили конкурентную разметку, как я понимаю), чтобы паузы минимизировать. Да, это имеет некоторый оверхед, но он совсем не такой, как ты описываешь.То, что ты пишешь - это какие-то сказки.
>>1581296Кто сказал что го реалтайм?Реалтайм ГЦ это крайняя степень, когда занижают throughput ради маленькой и стабильной latency.Реалтайм показывает, что делать так можно, но не нужно.
>>1581288>>1581289Почему не веришь? Такое нередко случается. Был фронтендером с некоторым знанием бекенда. Постепенно знание росло, достигло примерно 50/50 со знанием фронтенда, выполнял задачи как фуллстек разраб. Ну и дальше со временем все больше знаний становилось в бекенде, так и выкатился.
Гоу в "шарфик", я создал.https://trends.builtwith.com/frameworkhttps://w3techs.com/technologies/overview/programming_language
>>1584147Поймал шизика схватил обнял.Ути пути какой смешной ты у нас.Держи тортик, вкусный тортик?Как там диодон? Скоро уже? Давай диадон, а я тебя тортиками накормлю.
>>1581294>Целый день искал в архивах те темы.>@>Не нашелШизя, я тебе архивы принёс.https://2ch.hk/pr/arch/2017-06-14/res/973015.htmlДавай уже диадонь скорее, у меня для тебя целая гора тортиков.>>1584179>Вы тут ебанулись?В треде орудует шизик, любитель сладких тортиков, срет тут с 2017.
https://bradfitz.com/2020/01/27/leaving-googleИз гугла ( и скорее всего го тимы) уходит разраб, который 4ый по количеству коммитов в го репу
>>1584286Заглянул неделю назад, обрадовался шизику.>ахаха ты тут сидишь так долго я не шизикВсё ещё жду деадона. Если не будешь стараться не получишь тортиков.
>>1589894А что не так? Тебе не нравится, что джава-треды перекатывают после 1000? Так это фича такая.
>>1590149У таких интерфейсов есть и плюсы. Можно объявить интерфейс и принимать его на вход функции, которой передавать уже существующий тип.
>>1589894Зашел в джава тред, там все обсуждения - это как настроить иде и как сделать лабу по программированию
Мне одновременно интересен Эрланг и ОКамл. У Эрланга многопоточность, у ОКамла её нет, но зато там стронг статик. Как мне совместить эти две вещи в одном языке, чтобы не распыляться на два фронта?
>>1590618Ну местные же по многопоточности специализируются, тут часто мелькала в треде другая функциональщина.
>>1590607>Мне одновременно интересен Эрланг и ОКамл. У Эрланга многопоточность, у ОКамла её нет, но зато там стронг статик. Как мне совместить эти две вещи в одном языке, чтобы не распыляться на два фронта? Ada
>>1567737Мимо реактообезьяна, пилить интерфейсы заебало. Я тоже хочу на бекенд, хоть куда. Дай наставлений, анон?
>>1591045>В го нет потоковКу-ку дядя. Если горутина делает блокирующий системный вызов, то рантайм создаёт/берет из пула новый поток, а блокированный отправляет в пул.
>>1591073ТС знаю достойно, а на ноде смогу написать небольшой сервер или утилиту. Есть чуть больше года опыта фронта и немного бекенда. Монго на уровне "добавь комментарий в блог". Представляя собеседование на бекенд позицию пугают вопросы про алгоритмы, SQL и паттерны / бест практисы (нихуя из этого не знаю). Как дальше поступать?
>>1591107>Как дальше поступатьЯ на интервью сразу говорю, что с sql неочень, т.к. у меня есть дба и они бля, да и вообще идите вы нахуй.Все время спрашивают какую-то хуйню - вы умеете проектировать бд? Да хуле там проектировать, чертила, таблица хуяк хуяк нормализация.
>>1591086Ну раз такой умный, помести мне эвент-луп tcp-сервера в отдельный сетевой неймспейс, оставив мейн-тред в текущем.
>>1591119Да у них каждый первый язык, где есть функции, функциональный. Скоро и сишку будут классифицировать как функциональщину.
>>1591142>отдельный сетевой неймспейсЯ тут мимопроходил.Первый раз такое услышал.Это что-то из POSIX socket API ? Я с системщиной неработал никогда, но на уровне пользования апи ос из тех-же сей никогда о таком не слышал, или я забыл просто?
>>1591159Это фича ядра линукс, которая сегодня в основном используется для создания контейнеров. Она позволяет содавать отдельные области видимости для разных ресурсов системы, изолируя процессы друг от друга по ресурсам (не по ядру).Сетевой неймспейс изолирует видимые сетевые девайсы, и соответсвенно даёт свою таблицу марштрутизации, цепочки в iptables и т.д.https://www.youtube.com/watch?v=j_UUnlVC2SsНапример внутри докера ты можешь как угодно сломать сеть и маршруты, и при этом в другом контейнере сеть будет нормально работать дальше, потому что это другой сетевой неймспейс.Go позволяет запускать процессы в отдельных неймспейсах - тут хороший список примеров в нескольких статьях:https://medium.com/@teddyking/linux-namespaces-850489d3ccfПроблема той задачи выше в том, что нейспейс - это свойство потока в ОС, но Go очень сильно абстрагирует работу с потоками и не позволяет заиметь два пула потоков с разными свойствами, делая задачу "жить в двух неймспейсах одновременно" нетривиальной и настолько неудобной, что проще просто запустить отдельный процесс.Т.о. в Go есть пул потоков, но сами потоки как объекты ОС го пощупать не даёт и не может дать - он сам ими управляет и сам шедулит горутины на потоки из пула.Есть правда одно исключение - runtime.LockOsThread, оно позволяет решить часть задач, но он не позволяет указать несколько горутин которым разрешено сесть на текущий тред, только одну.
>>1591172> сами потоки как объекты ОС го пощупать не даётПлохо выразился. Пощупать даёт, но с костылями (см. репу coreos) и одноразовыми тредами.
>>1591172Окей.Как в C# в одном приложении один поток в один неймспейс а другой в другой запихнуть?Это вообще где-то кроме Сях можно сделать? Ведь нужно напрямую команды ядру ОС посылать, верно?>Проблема той задачи выше в томЯ вроде понял, но это тяжело назвать "не работает с потоками". Я первый раз в жизни слышу, чтобы кто-то делал подобное отдельно для отдельных потоков в одном процессе. Обычно всякие сгрупс распространяются на процесс.Задача интересная конечно, очевидно ГО предлагает в таком случае выносить функционал в отдельный процесс.
>>1591192Я видел как на отдельный тред вешали секкомп профиль. с неймспейсами не помню такого, но api позволяет. И есть всякие пруфы что это возможно вроде - https://unix.stackexchange.com/questions/494195/is-there-a-file-that-associates-a-thread-to-its-network-namespaceили man setnsВообще и в го это можно - надо только забить на гошный шелуллер и сделать врапперы для pthreads. Насчёт других языков - в принципе, если треды под капотом держат нативные треды ОС, то всё сводится либо к вызову unshare и спауну нового треда, или к вызову clone с кастомными параметрами для создания нового треда.Мне аж стало интересно запилить такое для ждавы с native threads
>>1591198Будем надеяться что никто этим всерьёз заниматься не будет.Не хочу такую хуйню в проекте встретить.
gовноедов снова прокинули через хуй, дискорд съёбывает с gовна на Rust, кек.https://www.reddit.com/r/rust/comments/eytyug/why_discord_is_switching_from_go_to_rust/inb4 только выиграли, хипстеры нинужны, дискордом никто не пользуется
>>1591915>TLDR: Rust is faster and just as safe, Golang has GC lag spikes.>>It's interesting though because they are using a Cassandra database, which is pure Java and needs a lot of GC tuning to maximize performance, but it's still a very fast database.Тут 2 момента: во первых разные GC это серьезное преимущество. Во вторых Cassandra более scalable чем fast.
>>1591963Что они и делают:> Post author here. Agreed Cassandra has issues due to GC too. We've been switching over to Scylla, which is a C++ database that is a drop in replacement for Cassandra. Scylla does not suffer from GC.
>>1591915Как же я лолирую с комментов гугл-фанбоев ->Тесты не тесты!>А пачиму старый гоу, мммм?!!! В новом гоу все хорошо!!!>Руст - это сложно, гоу - хорошо!!
>>1591915А что у них вообще на говне было написано?Бенкенд у них на Elixir со вставками на Rust в местах требующих оптимизации. Фронт вроде на реакте.
>>1590746Она же с динамической типизацией.>>1591915Вывод такой, что настоящая годнота — Elixir.>Our core services aren’t written in Rust, they are Elixir-based.>11kk concurrent connections
>>1592060>>1592068>>1592090>мам шизик)Это всё что могут высрать goвноеды? Ни аргументации, нихуя, просто называй всех шизиками, так победим!Признайте уже, что эксперимент "goвно" провалился, и идите писать на нормальных языках.
>>1592135>Scala>Она же с динамической типизацией.Лол. Нет конечно.Более того там система типов по уровню фич сопоставима с Haskell. Хуй знает может ты с Groovy перепутал.
>>1590607>Как мне совместить эти две вещи в одном языке, чтобы не распыляться на два фронта? Легко, берешь F# и получаешь OCaml с развитыми многопоточностью, асинхронностью, и даже с моделью акторов как в Эрланге, плюс развитая экосистема .NET Core, в которой есть все что нужно для жизни, чего ты не найдешь в Эрланге и в Окамле.
>>1592383Щас бы следить за тем что делают в дискорде, и делать тоже самое. А если они завтра говно начнут жрать, ты тоже подтянешься??? Уверен что да.
>>1592394Наркоман что ли? Во-первых - это практически мёртвый проект. Во-вторых никакой многопточки и грин тредов как в эрланге там нет, только убогие жвм либы.
>>1593315>Во-вторых никакой многопточки и грин тредов как в эрланге там нет, только убогие жвм либы. Чаво? Clojure один из strong concurrent/multithreading language. Clojure один из редчайших языков, в который встроена STM, - транзакционная память, в само ядро языка, а не в сбоку.
>>1593797кожура - претенциозное тормозное говно.strong concurrent/multithreading language - не более чем просто слова, язык всегда живёт в экосистеме, так вот - экосистема жвм это всякое легаси говно, построенное на различных велосипедах или вовсе на блокирующем IO. Хуй там все клали на твои strong concurrent/multithreading.
>>1594042Ебать ты олень. NIO это что блять? А Netty? Clojure стабильно находится в лидерах по производительности, как и джава впрочем. Только дебилы могут говорить, что в Джаве нет конкурентности и многопоточности. Я хоть джаву как язык терпеть не могу, но JVM это сила, это нельзя отрицать.
>>1596216О, жвм петух опять фантазирует. У тебя весь бек на го, ты оподливился, даже твои убогие сервисы работают в докере, который оркестрируется кубером. Аналоги тоже на го, типа номада и консула. Рыночек доказал, что го лучше жвм-чиркашей, иначе бы всё было на них, но они не годны не для чего кроме поддержки обоссаного легаси.
>>1594170И да, кордевы утверждали, что им не нужен gc с поколениями.Вот их и ткнули носом, что при большом хипе все скатится в говно.
>>1599449> gorm медленное говноВся суть ORM.>Что есть ещё?Говнецо одно есть. ORM очень хуёво ложится на скудные фичи го. Самое годное - это> Raw SQL
>>1599449Есть еще всякие sql-builder, поищи.Но вообще, raw sql - нормальное решение. В случае фейла запроса, лучше видеть, в каком он был виде, а не гадать, что же на самом деле вызывалось
>>1599683> Но вообще, raw sql - нормальное решениеВся суть просто. Господи, goвнина это просто язык для поржать, заходишь ИТТ или на реддит, и настроение подняли на весь день.
>>1600256Авотхуй, SQL-фобов это не обязательно энтерпрайз-кабанчик, это может быть один из создателей очередного интернет-магазина на Джанге или рельсах
Есть одна функция рекурсивная, принимает указатель и возвращает тоже указательreturn findNode( node.left ) || findNode( node.right ) одна из строчек из-за которой не собиралась программаНо оказывается в го нельзя так сравнивать указатели или если можно, то как это сделать?
А на го есть какие-нибудь production-ready фреймворка для реалтайм stream аналитики?Нужно вставить что-то после Кафки и перед кликхаусом, что бы показывать реалтайм статистику и триггерить события при аномалиях.
>>1600955> return findNode( node.left ) || findNode( node.right )в го хоть что-то кроме булов поддерживает || ?
Хаю хай это тупой уебан. Подскажите как можно в Го-реверсПроксиСервере оранизовать дальнейшее раскидывание по проксям подключенных клиентов?
Насколько раз слышал, что что-то делать осознанное на пщ можно уже через пару дней.Что я должен прочитать чтобы сделать это? Пишу на питоне и жс