Categories
*.JAR

Индусы покоряют Go

Меня не перестает изумлять способность индусов объяснить всему миру то, чего они сами не поняли.
https://golangbot.com/buffered-channels-worker-pools/
Великий исследователь придумал очень сложную concurrent задачу, которую иначе как Go не решить. Есть 100 трехзначных чисел. Для каждого нужно посчитать сумму цифр. Чтобы не было совсем скучно, каждая goroutine’а засыпает на две секунды. Если сумму цифр трехзначного числа можно посчитать за наносекунды, то секунда – это уже не один, а два порядка выше.
А теперь, внимание, фокус! Запускаем в два раза больше goroutine. Поскольку, все, что они делают 99.99% времени – это спят, конечно в два раза большее количество спящих недопотоков справилось с работой в два раза быстрей. С тем же успехом можно было бы создать их сразу сто, и получить десятикратный прирост performance’а. Вот где сила то!

Categories
*.JAR

Dependency management в Go

Дремучие Cшники считают, что dependency management не нужен. Все, что нужно – пихаешь в проект. Чужой код или свой – какая разница?
Сначала все соглашались. Google ведь плохого не посоветует. И только когда vendor’ящиеся из всех щелей проекты раздулись, некоторые стали что-то подозревать.
При этом дремучие Cшники продолжали твердить, что раз в Google это работает, то это будет работать везде. Ведь у каждого есть десять индусов, чтобы следить за dependencies.
Некоторые китайцы и прочие демократы из Сан Франциско, которых в Google не взяли, решили все же пилить свой dependency management. Был godep, на который все дружно перешли. Затем был gom, на который все опять же дружно стали переписывать свои dependencies. Наконец кто-то додумался просто украсть идею у NodeJS, а не изобретать свой одноколесный велосипед. Так появился Glide. С Glide хотя бы можно работать. Не прошло и шести лет.