Comments 13
Хочу вторым языком выучить go, как для точки входа, очень даже полезная статья для новичков. Класс, жду продолжения 🦾
Я вот не понимаю, уже который год на Хабре обсуждают нейронки, и хейтят нейрослоп, в чем смысл на хабр лить статьи из ChatGPT? Минусы получать?
Главная проблема новичка сейчас это старые учебники. Классический «Effective Go» писали в 2009-м, там нет ни модулей, ни дженериков. Учить по нему Go всё равно что учить JS по учебникам времен ES3.
Если учить методом копипасты, то да - старые учебники есть проблема. Но тогда "сейчас" неуместно - так всегда было и всегда будет, не только с Go но и со всем остальным что не сдохло и меняется пока учебник пишут. А приверженность методу копипасты - сама по себе проблема больше, чем не самый свежий учебник.
Effective Go из 2009 - это действительно перебор, но почему бы не взять Mastering Go? Четвёртое издание - Go 1.22, на дворе - 1.25. Нужно только прочитать 3 release notes, и все проблемы с несовременностью решены. Автор там, кстати, пишет - предыдущие идания не устарели, за исключением первого. То есть учебник по Go 2018 года устарел, а 2019 года - ещё нет.
Как по мне, учить по тому, где чего-то нету, не страшно - об отсутствующем можно узнать потом, всех издержек - будешь знать как обойтись без тех самых, например, дженериков и редко пользоваться этим знанием. Неприятно учить о том, чего уже нет, тут выученное действительно вредит и печалит при выбрасывании, но как раз Go явно гарантирует отсутствие таких случаев. Go Compatibility Promise называется. На уровне best effort гарантирует, естественно, и у меня есть ровно один пример - всё, что кто-то постиг про core types изучая спецификацию языка - псу под хвост, это оказалась плохая идея.
Первое, что нужно забыть, это
GOPATH. В прошлом Go требовал, чтобы весь ваш код находился в одной глобальной директории$GOPATH. Эта эра закончилась. Начиная с Go 1.14, Модули Go (go.mod) являются стандартом. Теперь вы можете создавать проект в любой папке, точно так же, как вы это делаете сnpm init.
Зачем забывать про GOPATH? Она никуда не делась и бесценна для тех новичков, что предпочитают учиться путём дурацких экспериментов. Кстати, лучшая структура для новичков - go.mod, и то опционально, в корне и всё остальное разбросанное по папкам в художественном беспорядке - в go run можно просто перечислить нужные файлы с единственным ограничением нахождения их в одном каталоге, что легко обходится ссылками. И если обращаться именно к новичку, то рассказывать про go.work нужно раньше, чем про go.mod...
Основная проблема новичка в Go в том, что он не может понять границы того, что вознамерился изучать. На сколько хороши Андроид приложения на Go? Можно ли сделать сайт на Go без знания JavaScript? Какие игры можно делать на Go? Ставить Code или настраивать Neovim или пользовать Helix что работает с gopls из коробки? Вот это всё, чтобы не было ни "где же я был, раньше надо было учить" ни "лучше бы я Rust учил". А вспомогательная - манера сайта go.dev устроить множество точек входа в примерно два текста, из-за чего у новичка глаза разбегаются.
Что-то не понял. При чем тут js/ts девелоперы...
Когда я вижу ИИ-статьи, я сразу иду читать комменты. Комментаторов такие статьи стимулируют писать очень интересные вещи, зачастую круче самой статьи, так что спасибо :)
Почему "в Go этого нет" преподносится как фича?! Не видел еще ни одной статьи про Go без этой фразы.
ЗЫ. Подожду, когда в Go наконец будет всё, пока так и не убедили (ведь в этом был посыл статьи, да?)
Если библиотеки ставятся глобально, могут разные проекты иметь в зависимостях разные версии этих библиотек? Лучше бы наверное как в pnpm сделали
Я не понимаю зачем писать такие заголовки. Все кому не лень сейчас зовут всех в Go. Пусть каждый выбирает то, что ему нравится. А то звали так всех в Frotnend, результат мы видим. Сейчас та же ситуация с Go. Если пишите, пишите просто о языке, о его плюсах, а не сравнивайте его с frontend.
Бросаем Event Loop, переходим на Горутины: Go для JS-девелоперов (Часть 1)