ออฟไลน์ด้วยแอป Player FM !
Ep. 18: Тёмные стороны Go — с разработчиком GoLand | GoGetPodcast №18
Manage episode 518560475 series 3391748
Что обсуждаем:
— Nil safety в Go: почему это проблема и как с ней жить
— Слайсы: append выглядит иммутабельно, но мутирует данные
— Замыкания и горутины: классические баги с захватом переменных
— Shadowing переменных: визуально не отличить, но приводит к багам
— Data races при чтении слайсов
Выпуск вышел при поддержке AvitoTech 💙
Статья про обработку ошибок в Go: https://clc.to/U7_U_w
Telegram AvitoTech: https://clc.to/-HtbVg
Митапы: https://clc.to/vbUbyg
Состав:
- Николай Тузов
- Арсений Терехов — JetBrains, GoLand Team
- Глеб Яльчик
- Дмтрий Матрёничев
👾 Мой Телеграм-Канал с анонсами, гайдами и др.: https://t.me/ntuzov
Тайминги:
- 00:00 Вступление
- 00:27 Предыстория: вопросы от Арсения
- 02:00 Хорошая новость: новые выпуски теперь будут выходить регулярно
- 03:24 Gophercon West — как это было: 25 часов перелёта и визовый лайфхак
- 06:00 Футболки с конференций и брендинг
- 08:40 Тема #1: Nil safety — старт обсуждения
- 09:57 История: Тони Хоар, Algol и billion dollar mistake
- 11:41 Реальные кейсы: $100k loss и падение Google Cloud
- 14:52 Взгляд на проблему с экономической точки зрения
- 17:13 Nil как валидное значение указателя
- 20:05 История указателей: от ассемблера до высокоуровневых языков
- 25:04 Создатели Go: Rob Pike, Russ Cox, Ken Thompson
- 27:45 Дизайн языка — в чём идея?
- 29:33 Go пофиксил проблемы C/C++?
- 32:03 Философия Go: проверенные решения, а не новации
- 36:23 Семантика указателей в Go: nil-receiver как валидное состояние
- 39:11 Возможен nil safety с учётом рефлексии?
- 42:14 Привет бабушке!
- 42:44 Безопасен ли Go без unsafe/reflect?
- 48:34 Kotlin vs Java: где действительно есть null safety
- 51:07 Ограничения null safety: Spring, рефлексия, interop
- 53:00 Safe enough vs абсолютная безопасность
- 55:38 Итоги по nil pointer
- 59:00 Тема #2: Захват переменных — классический баг с циклами
- 01:02:28 Обратная совместимость: почему сложно что-то менять
- 01:05:23 Революция в тулинге языков программирования
- 01:07:51 Final в Java/Kotlin и почему этого нет в Go
- 01:13:11 Захват переменных в C++: явный синтаксис
- 01:16:01 Когда нужна запись в захваченные переменные
- 01:19:27 Каналы в Go: гарантии и практические сложности
- 01:25:21 Роль линтеров — go vet, staticcheck, golangci-lint
- 01:26:07 Тулинг: data-flow анализ, детектор гонок
- 01:29:21 Почему линтеры простые: философия дизайна
- 01:31:57 Тема #3: Слайсы — самая болезненная тема
- 01:32:23 Загадка про 8 слайсов и capacity
- 01:37:36 Проблемы дизайна слайсов в Go и почему так
- 01:40:15 Как работает append и реаллокация
- 01:47:03 Почему append возвращает значение?
- 01:56:52 Эволюция через тулинг: x/tools/modernize и автопочинка
- 02:00:17 Data races при конкурентном append
- 02:03:53 Тема #4: Shadowing переменных
- 02:09:54 Удобство vs однозначность кода
- 02:13:11 Философия дизайна языков и их эволюция
- 02:17:00 Выводы
- 02:22:03 Каждый новый язык лучше?
- 02:29:07 Относительность решений в программировании
- 02:33:59 Теорема Гёделя о неполноте
- 02:34:53 Аналогия с Nintendo: простота как фича
- 02:36:33 Аналогия с физикой: разные модели для разных масштабов
- 02:37:25 Заключение
18 ตอน
Manage episode 518560475 series 3391748
Что обсуждаем:
— Nil safety в Go: почему это проблема и как с ней жить
— Слайсы: append выглядит иммутабельно, но мутирует данные
— Замыкания и горутины: классические баги с захватом переменных
— Shadowing переменных: визуально не отличить, но приводит к багам
— Data races при чтении слайсов
Выпуск вышел при поддержке AvitoTech 💙
Статья про обработку ошибок в Go: https://clc.to/U7_U_w
Telegram AvitoTech: https://clc.to/-HtbVg
Митапы: https://clc.to/vbUbyg
Состав:
- Николай Тузов
- Арсений Терехов — JetBrains, GoLand Team
- Глеб Яльчик
- Дмтрий Матрёничев
👾 Мой Телеграм-Канал с анонсами, гайдами и др.: https://t.me/ntuzov
Тайминги:
- 00:00 Вступление
- 00:27 Предыстория: вопросы от Арсения
- 02:00 Хорошая новость: новые выпуски теперь будут выходить регулярно
- 03:24 Gophercon West — как это было: 25 часов перелёта и визовый лайфхак
- 06:00 Футболки с конференций и брендинг
- 08:40 Тема #1: Nil safety — старт обсуждения
- 09:57 История: Тони Хоар, Algol и billion dollar mistake
- 11:41 Реальные кейсы: $100k loss и падение Google Cloud
- 14:52 Взгляд на проблему с экономической точки зрения
- 17:13 Nil как валидное значение указателя
- 20:05 История указателей: от ассемблера до высокоуровневых языков
- 25:04 Создатели Go: Rob Pike, Russ Cox, Ken Thompson
- 27:45 Дизайн языка — в чём идея?
- 29:33 Go пофиксил проблемы C/C++?
- 32:03 Философия Go: проверенные решения, а не новации
- 36:23 Семантика указателей в Go: nil-receiver как валидное состояние
- 39:11 Возможен nil safety с учётом рефлексии?
- 42:14 Привет бабушке!
- 42:44 Безопасен ли Go без unsafe/reflect?
- 48:34 Kotlin vs Java: где действительно есть null safety
- 51:07 Ограничения null safety: Spring, рефлексия, interop
- 53:00 Safe enough vs абсолютная безопасность
- 55:38 Итоги по nil pointer
- 59:00 Тема #2: Захват переменных — классический баг с циклами
- 01:02:28 Обратная совместимость: почему сложно что-то менять
- 01:05:23 Революция в тулинге языков программирования
- 01:07:51 Final в Java/Kotlin и почему этого нет в Go
- 01:13:11 Захват переменных в C++: явный синтаксис
- 01:16:01 Когда нужна запись в захваченные переменные
- 01:19:27 Каналы в Go: гарантии и практические сложности
- 01:25:21 Роль линтеров — go vet, staticcheck, golangci-lint
- 01:26:07 Тулинг: data-flow анализ, детектор гонок
- 01:29:21 Почему линтеры простые: философия дизайна
- 01:31:57 Тема #3: Слайсы — самая болезненная тема
- 01:32:23 Загадка про 8 слайсов и capacity
- 01:37:36 Проблемы дизайна слайсов в Go и почему так
- 01:40:15 Как работает append и реаллокация
- 01:47:03 Почему append возвращает значение?
- 01:56:52 Эволюция через тулинг: x/tools/modernize и автопочинка
- 02:00:17 Data races при конкурентном append
- 02:03:53 Тема #4: Shadowing переменных
- 02:09:54 Удобство vs однозначность кода
- 02:13:11 Философия дизайна языков и их эволюция
- 02:17:00 Выводы
- 02:22:03 Каждый новый язык лучше?
- 02:29:07 Относительность решений в программировании
- 02:33:59 Теорема Гёделя о неполноте
- 02:34:53 Аналогия с Nintendo: простота как фича
- 02:36:33 Аналогия с физикой: разные модели для разных масштабов
- 02:37:25 Заключение
18 ตอน
ทุกตอน
×ขอต้อนรับสู่ Player FM!
Player FM กำลังหาเว็บ