התחל במצב לא מקוון עם האפליקציה 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 סורק את האינטרנט עבור פודקאסטים באיכות גבוהה בשבילכם כדי שתהנו מהם כרגע. זה יישום הפודקאסט הטוב ביותר והוא עובד על אנדרואיד, iPhone ואינטרנט. הירשמו לסנכרון מנויים במכשירים שונים.