×

Go дайджест #14: что будет в Go 1.15, Apple и Go

В выпуске: соместный проект Apple и Google на Go, как язык помогет разрабатывать софт для борьбы с COVID-19, результаты Go Developer Survey 2019.

Новости

Совместный проект Google и Apple по борьбе с COVID-19 написан на Go, а в этом выпуске ребята из Generic Talks разбирали его по деталькам.

Зарелизили Go 1.14.3 и 1.13.11.

Что нас ждет в Go 1.15 на слайдах от Дэниэла Марти, и еще одна статья с детальным розбором некоторых новинок.

Результаты Go Developer Survey 2019

Свежее интервью с Робом Пайком

Как уменьшить размер бинарников, жертвуя возможностью сравнения типов, от Дэйва Чейни.

Caddy 2 вот и релиз!

Анонс

GoWayFest 4.0 goway.io — 4-ая конференция в Беларуси, полностью посвященная языку Go, переходит в онлайн и пройдет 11-12 июля.

Среди спикеров этого года:

👍 Dave Cheney — раскроет тайну того, как важен нейминг для вашей кодовой базы.

👍 Ellen Körbes — поможет ускорить процесс «от изменения кода до запуска процесса» для приложений Go.

👍 Iskander Sharipov с подробным описанием внедрения эффективной VM в Go.

Читаем

Life Without Line Numbers

Отличная статья от GitHub про 3 бага в Go драйвере MySQL

Подменяем stdin и stdout в Go

Как работает инлайнинг в Go

Prometheus для начинающих

Asynchronous Preemption в Go 1.14

Как построить систему мониторинга COVID пациентов на Go и Vue за 3 дня!

Используйте последнюю версию Go

Как оформить Go GitHub репос

Go в браузере с WebAssembly и TinyGo

Broccoli: Brotli компрессия статики в Go

Код конвенции Thanos для Go

Строим свой TCP протокол

Дженерики в Go: откуда зачем и как

Statically Compiling Go Programs

Как я делал облачную игру с WebRTC и Go

Ордеринг обьектов в Go

Таймауты и отмена контекста при работе с базами

Как контрибьютить в компилятор Go

Смотрим и слушаем

Строим приложения с Go и MongoDB

Строим микросервисы Go в GoLand

A Beginner’s Guide to gRPC in Go

Щупаем

shotizam — сколько весит ваш бинарник

go-elasticsearch — клиент для elasticsearch

go-leetcode — 100 LeetCode задач на Go

gomodifytags — автозаполнение стракт тегов

pester — немного ресайленса в ваш HTTP клиент

waitabit — работаем с сигналами прерывания

go-fault — инекция ошибок в ваши хендлеры

go-tinytime — эффективная работа с time.Time

facebookincubator/ntp — библиотека для работы с ntp


← Предыдущий выпуск: Go дайджест #12.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному4
LinkedIn

Схожі статті

  • Визначаємо вартість декоратора в GolangВизначаємо вартість декоратора в Golang

    Привіт, мене звати Ярослав, займаюсь розробкою сервісу для збереження активів у криптовалюті в компанії ITAdviser, розробляємо на Go. У цій статті розглянемо декоратор, його вартість і чи варто використовувати його в розробці нових сервісів. 57

  • Приклад gRPC-мікросервісу на GoПриклад gRPC-мікросервісу на Go

    Фреймворк gRPC можна розглядати як хорошу заміну REST під час взаємодії між мікросервісами. Ярослав Характерник, Golang Developer, демонструє розробку мікросервісу для збереження статистики. 39

  • Синхронізація в Go: горутини, тести, варіантиСинхронізація в Go: горутини, тести, варіанти

    Ця стаття про синхронізацію результатів від паралельно виконаних підзадач, призначена для спеціалістів-початківців та тих, хто планує перейти на Go. Ярослав Характерник, Go-девелопер, розповідає про вартість горутини та варіанти перевірки її на швидкодію. 10




23 коментарі

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Go — еще один раздутый пузырь, как и Scala, который скоро либо лопнет, либо незаметно для всех сдуется. Если и учить что-то современное, так это Kotlin

это вы зря
у Go есть куча уникальных черт, которые делают его лучшим выбором для ряда задач.
Go с нами надолго и всерьез.

а вот у Скалы и Котлина таких черт поменьше
Вернее — у Скалы они есть, но очень сурово академические.

А Котлин...
Пока гугл не закопали Dart, будущее Котлина под вопросом.

Было бы интересно выслушать аргументы.

Я не против Go или любого-другого языка программирования. У каждого есть своя ниша и свои поклонники. Но когда постоянно слышишь от Go-разработчиков, что Go — это новый мессия, который сметет все существующие топовые языки, то это просто смешно. Если не ошибаюсь, Go придумали в 2009 году, и несмотря на его «уникальность и перспективность», его сейчас используют 1.5-2% разработчиков. dou.ua/...​language-rating-jan-2020 Как только хайп вокруг у него угаснет и интерес остынет, про него забудут, как и про многие другие подавашие надежды.

Но когда постоянно слышишь от Go-разработчиков, что Go — это новый мессия

новый мессия это Rust
Go уже не новый, и не мессия :D

Как только хайп вокруг у него угаснет

хайп уже ушел. Вы напрасно судите по этой теме

и интерес остынет, про него забудут, как и про многие другие подавашие надежды.

а вот это — нет.

вы просто не в том стеке работаете.
на Go уже нередко части систем на PHP, Pythоn и даже Ноды пишутся, или переписываются.

Erlang так точно он вышиб окончательно в «маргиналы». Там где он и был.

Погодите, тут только холивар насчёт дженериков намечается)

IT рынок Украины это очень не репрезентативная выборка, что бы на ее основе делать такие выводы. С учетом того, что большая часть этого рынка представлена аутсорсом и аутстафом, который берет проекты по накатанной, на «стабильном стеке», что бы в любой момент быстро заменить потери в команде (привет текучка) и не просесть по срокам в проекте. Мировые IT тренды наш рынок догоняет очень медленно.

Смотрите шире. :)

Go это не очередная хайповая поделка, это язык который поддерживается Google, Amazon, Microsoft, IBM, и вот теперь и Apple. Во всех мажорных облаках есть поддержка Go. Docker, Kubernetes, gVisor, CocroachDB, весь HashiCorp стек, и еще многое в сфере облачных технологий и инфраструктуры сейчас написано на Go.

Повторюсь, Kubernetes это второй по размеру OpenSource проект в мире, и он написан на Go.

Уже сотни и тысячи глобальных мировых бизнесов уехали в контейнеры и Кубер, и еще больше больших бизнесов в процессе переезда.

Если что, то Kubernetes это второй по размеру OpenSource проект после Linux 😉

ХАХАХАХАХАХАХАХАХАХААХАХАХ, хорошая шутеечка.

Apple і го тема не розкрита. Це ж ти про те що кампоя захайрили чи про те що вона разом з гуглом по ковіду щось там напиляли? (сорян я не читав перше посилання часу взагалі нема, але Франсеск в твітері хвалився)

Да Кампоя туда наняли, и еще с десяток крутых спецов из околоконтейнерной тусовки. Наряду с этим Apple проинвестировала миллиард в свои собственные датацентры, и начинает уходить от аутсорсинга своих бекенд сервисов. Плюс сотрудничество с Google над сервисом.

Все это внушает надежду, что вскоре в нас может ждать много интересного от Apple в плане Go

Спасибо за обзор, очень полезно!

Дженерики це добре, але прототип дійсно сирий

 func (a Array(T)) Map(type X)(mapper func(T) X) Array(X) { 

panic: main.go2:9:53: unexpected type string character ’₄’ in „Xyu₄”

goroutine 1 [running]:
go/go2go.(*translator).instantiatedName(0×8bdac0, 0×0, 0×80aa80, 0×824f50, 0×1, 0×1, 0×80a820, 0×845580, 0×103c0055, 0×8bd410)
/Users/chris/repos/go.googlesource.com/go/src/go/go2go/names.go:59 +0×54

Але дякую що хоч постарався :-)

Дженерики в go нафиг не нужны, т.к. они принесут намного больше вреда, чем пользы. Недостаточно квалифицированные программисты станут пихать эти дженерики везде, где только получится. В итоге типичный код на go превратится в нечитаемую и неподдерживаемую кашу из дженериков, как в C++ с stl и boost. Предлагаю всем, кому не хватает дженериков в go, перейти на C++ и прочиттать до дыр книжку про аспектно-ориентированное программирование от Александреску.

Недостаточно квалифицированные программисты станут пихать эти дженерики везде, где только получится

Звучить наче го — це обрізана мова для нубів.

В итоге типичный код на go превратится в нечитаемую и неподдерживаемую кашу из дженериков, как в C++ с stl и boost.

Чувак, _всі_ мови окрім го підтримують дженерики, і круто живуть.

Як на мене, що насправді нечитабельно так це постійні

a := make([]int, len(ss))
for i, s := range ss {
    a[i] = len(s)
}
замість няшної
a := ss.map(s => len(s))
що досягається саме дженериками.
Звучить наче го — це обрізана мова для нубів

Открою секрет — большинство программистов — нубы. Поэтому Go — это идеальный язык программирования, ориентированный на большинство программистов.

Чувак, _всі_ мови окрім го підтримують дженерики, і круто живуть

Экосистема Go без дженериков тоже круто живет и развивается. Количество популярных репозиториев на Go уже превышает суммарное количество репозиториев для всех языков с дженериками на github.com, за исключением java. Но этот недостаток будет исправлен в ближайшие годы.

Поэтому Go — это идеальный язык программирования, ориентированный на большинство программистов.

Ну ідеальним він буде лише для нуба ;-)
Якщо програмер володіє інтелектом вищім за імперативний копіпаст, і здатен осягнути такі речі як дженерики/алгебраїчні типи/тайпкласи/іммутабельність/функції вищого порядку/curring, то го викликатиме в нього кров з очей, бо він розумітиме як зробити більшість з речей краще та елегантніше.

. Количество популярных репозиториев на Go уже превышает суммарное количество репозиториев для всех языков с дженериками на github.com, за исключением java

Можна статистику?
І не назвивав би розповсюдженість знаком якості. Вінда та пхп теж огого як популярні ;-)

Якщо програмер володіє інтелектом вищім за імперативний копіпаст, і здатен осягнути такі речі як дженерики/алгебраїчні типи/тайпкласи/іммутабельність/функції вищого порядку/curring, то го викликатиме в нього кров з очей, бо він розумітиме як зробити більшість з речей краще та елегантніше

«Программисты», пытающиеся впихнуть вышеперечисленный матан во все щели, чтобы показать, какие они умные, приносят больше всего вреда разрабатываемым проектам. К счастью, на Go таким «программистам» сложно наговнокодить свой матан, в котром черт ногу сломит.

Можна статистику

Статистика вот тут — github.com/...​q=language:go stars:>1000

Як на мене, що насправді нечитабельно так це постійні

a := make([]int, len(ss))
for i, s := range ss {
a[i] = len(s)
}
замість няшної
a := ss.map(s => len(s))
що досягається саме дженериками.

Первый вариант кода намного читабельней второго варианта, т.к. там четко видно, что происходит. Во втором варианте же происходит какая-то магия.
Также первый вариант кода позволяет легко переиспользовать слайс `a`, чтобы избавиться от лишних выделений памяти и ускорить код.
Еще один момент — компилятору легче оптимизировать явный цикл из первого варианта, чем пытаться заинлайнить callback и оптимизировать спрятанный цикл из второго варианта.

Я конечно на Go не пишу, но, может там конечно свой дивный новый мир, но... реально для Go разработчиков обычная лямбда — это уже магия?

Анонимные функции иногда могут быть полезными. Поэтому в Go они есть. Но злоупотреблять ими не нужно.

Отличный обзор, большое спасибо !

Підписатись на коментарі