Я решил изучать Go

Недавно я решил изучать язык программирования Go (или Golang), и должен признаться — мне этот язык нравится. Хотя я работал с разными языками, Go приятно удивил своей простотой, скоростью и практичностью. Чем больше я с ним работаю, тем больше он мне нравится.

Изучение основ и синтаксиса прошло очень даже гладко, потому что много в Go похоже на C.

Причём я не просто изучаю Go, а документирую весь процесс и выкладываю его здесь. Таким образом все могут увидеть, как я изучаю новые языки и технологии.

В этой статье хочу поделиться, почему именно Go меня зацепил, и какие преимущества я в нём вижу.

Одним из авторов Go является Kenneth Lane Thompson, который в своей жизни создал несколько языков программирования, в том числе и С. Это человек с огромным опытом в ИТ и он явно знает, как должно что-то выглядеть. Языки программирования - это дело вкуса, но тот вкус, которые задал Kenneth в C до сих пор используется в различных языках. 

Он другой

Что нравится в этом языке мне, так это то, что он другой. В нём по новому посмотрели на асинхронность. В нём по другому посмотрели на ООП. И лично мне это нравится. Это не просто новый Си подобный язык, где всё работает уже знакомым мне образом, здесь всё другое. Отчасти мне поэтому нравился Objective-C. Он был ужасным с точки зрения чтения кода, но он был прикольным. И вот эта уникальность меня купила и я каждую неделю трачу хотя бы пару часиков на то, чтобы изучить что-то и попробовать. 

Простота и лаконичность

Одно из первых впечатлений от Go — это его удивительная простота. Синтаксис минималистичный, легко читается и почти не требует пояснений. Здесь нет лишней «магии», которая часто встречается в других языках. Всё чётко, понятно и прозрачно.

При этом Go — строготипизированный язык, что делает код надёжнее, а ошибки ловятся ещё на этапе компиляции.

Огромным плюсом Go является наличие сборщика мусора. Это реально упрощает разработку. 

Высокая производительность

Go компилируется в нативный код, а значит, работает быстро. Это особенно важно для серверных приложений и микросервисов. Производительность Go сопоставима с C, но при этом он в разы проще в использовании.

Я в интернете видел несколько тестов, в которых Go проигрывает C, но при этом значительно обходит C#.

Встроенная поддержка параллелизма

Одна из «фишек» Go — это горутины. Это лёгкие потоки, которые позволяют легко реализовывать конкурентные вычисления. Встроенный планировщик и канал связи между горутинами (через channel) позволяют писать многопоточные приложения почти так же просто, как однопоточные.

Когда я изучал горутины, то я не ожидал, что можно сделать что-то проще, чем async/await. Но Go меня реально смог удивить. Запустить что-то в параллельно с основной горутиной очень просто, хотя вот ожидание уже чуть сложнее на мой взгляд.

Быстрая компиляция

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

Простой деплой

Go создаёт статически слинкованные бинарные файлы, которые не требуют дополнительных библиотек или среды выполнения. Это значит: написал, скомпилировал, отправил бинарь на сервер — и всё работает. Это просто мечта для DevOps.

Где применяется Go?

Go активно используется в крупных проектах и компаниях. Его выбрали Google (создатели языка), Docker, Kubernetes, HashiCorp, Cloudflare, Twitch и многие другие. Он отлично подходит для написания микросервисов, API, CLI-инструментов, сетевых утилит и даже кроссплатформенных приложений.

Я пока не решил, что именно сделать на Go, но следующий проект точно нужно будет реализовать на нём.

Что мне не понравилось

Но не всё так идеально, мне не очень понравилось, как реализован доступ. Доступ на уровне пакета - это минус. За доступ отвечает первая буква. Если имя функции начинается с большой буквы, то она открытая, если с маленьеой, то закрытая. Если кто-то в пакете захочет поменять уровень доступа, то простое несоответствие имени приведёт к тому, что код не будет компилироваться. Придётся исправлять поиском и заменой и это боль.

С точки зрения красоты кода это также выглядит на мой вкус не очень хорошо. Одна функция с большой буквы, другая с маленькой и этот зоопарк только из-за того, что у функций разный доступ. 

Комментарии

Паника, что-то случилось!!! Ничего не найдено в комментариях. Срочно нужно что-то добавить, чтобы это место не оставалось пустым.

Добавить Комментарий

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне