🦾 IT-Качалка Давида Шекунца 💪
2023-10-20 06:14
Vassiliy ИТК Kuzenkov
1. низкоуровневые вещи мешают с высокоуровневыми (выразительных средств не хватает для хороших, обобщенных абстракций)
2. подход «собери все сам» работает в го плохо. отсутсвие главенствующего фреймворка, конвенций, не самый простой клей и отсутсвие четких подходов вместе с несколько проблемным менеджментом зависимостей (тут не то, чтобы вкусовщина, просто есть где это сделано хорошо - Cargo или Lein, например).
3. инжереная культура кода. да, тут у ребят обычно все хорошо со знанием базы и они предпочитают прям вот фигачить как есть. тут и сложное тестирование (подгтовка окрудения, см 1 пункт), и любовь к преждевременным оптимизациям, и забивают на другие процессы, вроде документации (фиксится в крупных компаниях, но для них го обычно как раз хороший выбор, для фигачки микросервисов и тулзов для инфраструктурной части)
4. из всего этого выливается боль в сопровождении кода - фичи релизятся долго (даже с Rust’ом лучше - при том, что он намного низкоуровневее и из другой оперы + нужно быть «умнее» - выше порог входа, да)
5. головная горутина разрабочиков ))) - везде и все на го-блоках.
1. Можешь дать пример? Не совсем понимаю "низко" / "высокоуровневность" и "обобщенные абстракции" в данном контексте
2. "Главенствующий фреймворк" – дело вкуса, я как раз ЗА подход "научись на фреймворк, а потом собери все сам", потому что чаще всего чем больше фреймворк дает, тем намного больше он забирает.
Отсутствие конвенций? О каких конвенциях речь? Дело в том, что в Го их как раз очень много
"несколько проблемным менеджментом зависимостей" – я кстати выпал из Го на 3 года и вернувшись импорт по ссылке репы и go vendor меня полностью удовлетворили, какие в нем остались проблемы? Я помню, что что-то было не так, но не помню что именно
3. Имеешь ввиду документацию кода приложения или кода библиотеки? Если про второе, то пока ни разу не видел кодовой базы без нее, если про первое, то я всегда придерживался тактики "код должен быть самодокументируемым" и этой технике достаточно просто следовать на Go из-за максимальной прямолинейности ("тупости") кода
Про преждевременные оптимизации – в данном контексте я вижу, что речь идет не о конкретных индивидах, а про Go-коммьюнити в целом, поэтому хочу уточнить примеры преждевременных оптимизаций, которые свойствены Go коду? Мне интересно, что можно преждевременно оптимизировать в процедурном языке с GC и конкуренцией из коробки на Scheduler (до которых доступа напрямую у разработчика нет)
4. Очень интересный пункт, на моей личной практике и с тем, с чем я сталкивался в media на Go как раз можно очень быстро написать и зарелезиться, а в дальнейшем сопровождать код (потому что там самый минимум магии и 2 самые сложные темы взяли на себя GC и Scheduler)
5. Да, несомненно когда даешь что-то разработчику он с гигантским удовольствием этим злоуботрбит) Но с наличием async preemption даже если сделать перебор в горутинах сам scheduler не позволит им работать секциями более 10-20 мс, поэтому в итоге твой код останется максимально бысрым (такого я не видел из коробки в других языках)