🧙 Тёмные стороны Go — Обсуждаем с разработчиком GoLand
Ну что, 18-й выпуск GoGetPodcast, да? 🙃
Трансляция будет 01.11 (в эту субботу), а через пару дней выйдет запись в хорошем качестве и аудиоверсия, как обычно..
🟢Не забудьте подписаться на новый канал подкаста, ему сейчас очень нужна ваша поддержка.
————
Недавно у нас был выпуск с Арсением, где он рассказал много интересного про разработку GoLand. Получилось очень круто, я даже сам потом пересматривал
Во время разговора выяснилось, что у Арсения есть много вопросов к дизайну Go. Не абстрактных, а самых что ни на есть конкретных — про те места, где разработчики регулярно стреляют себе в ногу спотыкаются: nil-указатели, замыкания в горутинах, слайсы с их коварным append.
Эти темы не вписались в тот выпуск, но они явно заслуживали отдельного разговора, который сулил стать новым крутым выпуском. Особенно если позвать Глеба и Диму — наших постоянных гостей, с которыми мы недавно обсуждали Go v1.25. Мало кто может так же глубоко ответить на такие вопросы.
Да, критики Go хватает, все темы давно изъезжены. Но кто обычно критикует? Сами Go-разработчики которые давно уже привыкли и приняли правила игры? Или разработчики с других платформ, которые Go знают поверхностно?
А вот у Арсения — уникальная позиция. Он опытный инженер, но пишет на Kotlin. При этом работает над IDE для Go, то есть погружён в язык глубже многих гоферов и видит, где они чаще всего наступают на грабли. Ведь его работа — помогать им этого избегать. При этом он сохраняет свежий трезвый взгляд и спрашивает: «А почему вообще так устроено?»
Идеальная комбинация: глубокое знание языка и независимый, непредвзятый взгляд.
Что будем обсуждать:
— Nil safety в Go: почему компилятор не защищает и где это стреляет в проде (кстати, в недавнем выпуске Арсений рассказывал про новую фичу GoLand, которая помогает с этим бороться)
— Слайсы: append выглядит как иммутабельная операция, но мутирует данные
— Замыкания в горутинах: почему они ловят переменные по ссылке и как это приводит к классическим багам
— Shadowing переменных: визуально не отличишь, а линтер не всегда спасает
— Data races при чтении слайсов — да, даже при чтении
— Практические советы: как жить с этим в реальных проектах
И другое
⚠️ Важно:
Это не подкаст про хейт Go и не холивар «Go vs Kotlin».
Это честный технический разговор о трейдофах в дизайне языка — о местах, где Go поможет выстрелить в ногу, и о том, как этого избежать.
Ведь хороший инженер спрашивает не «почему тупые авторы этого не предусмотрели?», он спрашивает «ради чего они решили пойти на эту жертву?».
Состав:
- Николай Тузов
- Арсений Терехов — JetBrains, 👩💻 GoLand Team
- Глеб Яльчик
- Дима Матрёничев
💁♀️ Во время трансляции можно будет задавать вопросы в чате. Если есть что спросить прямо сейчас — пишите в комментах, мы возьмём самые интересные вопросы в эфир.
————
Предупреждение: после этого разговора ваши код-ревью станут более параноидальными. Но это к лучшему 😩
Заваривайте кофе, будет интересно ☕️
#golang #gogetpodcast