Курс по Go от Василия Романова

· автор BaRoN · На чтение уйдёт 3 минуты · (635 слов)

Так получилось, что обычно меня привлекают какие-то профильные курсы, записи с конференций (например, Joker, JPoint, да и у питерской и эстонской JUG бывают интересные материалы на русском). На английском иногда попадаются интересные материалы (а потом их привозят и на Joker :D). Мне нравятся материалы от Atlassian (не только лишь все знают, что я немножко пишу для Atlassian и Atlassian Cloud). Это может быть даже что-то вроде AWS Invent, хоть и не про Java, но всё равно интересно. Даже конференции по Groovy и Kotlin, вроде как, в тему моей основной работы. Но вот дёрнула меня нелёгкая, записался я на курс “Программирование на Go” на Coursera и слегка подзалип.

Сразу скажу, что Go для меня не новый язык, но область его применения я вижу весьма ограниченной. Где-то он может пытаться бороться за место под солнцем с C/C++, однако часто эту войну будет проигрывать. Где-то - бороться с perl/python (хотя и там всё непросто). Непосредственно для меня, у которого все компьютеры работают под Linux/x64, Go подходит довольно хорошо: perl я подзабыл, на python писал поменьше, чем на perl, да и ставить все эти модули тот ещё геморрой. Вот так и получилось, что небольшие утилитки для командной строки чуть сложнее чем несколько строчек shell-скрипта, теперь я пишу на perl.

Надо куда-то подключиться по WebDAV? Если не хватает командной строки cadaver, полезем в Go. Хитрая синхронизация избранных файлов с конфигурированием профилей? Снова Go. Но в общем-то все мои программы на Go не длиннее нескольких сот строчек, отсутствие ООП и нормальной модульности не очень-то способствуют созданию больших приложений. Как-то пробовал большие фрэймворки, Revel и какой-то китайский - для меня это оказалось вообще ужасным ужасом из ужасов. Но вот наткнулся на два курса от Василия Романова и решил посмотреть, а вдруг это я балбес и чего не знаю?

Не могу сказать, что качество моих знаний о Go улучшилось радикально, хотя некоторые полезности я для себя и вынес. А потом понадобилась мелкая утилитка и я таки решился попробовать её сделать на Go. В принципе, оказалась нормальная такая тема. На условном PHP такое напишешь через пень-колоду, а тут вполне себе нормально. Программка заходит в игру, собирает там цены на ресурсы, и записывает их в память. А время от времени и на диск кэширует (чтобы сразу после старта было чего отдавать). Причём программа фактически работает на паре “горутин” (лёгких потоков), один из них время от времени опрашивает игру, ну а второй разруливает работу с клиентами. Отклик получился как я люблю (1мс), держит порядка 3000 RPS на моём ноутбуке (хотя в жизни, честно говоря, нагрузка около 10 запросов в час).

При всём при этом приложение умеет отдавать данные в XML и JSON, в русском и английском форматах чисел (разделители «,» и «.»). Игрушка не отдаёт данные через API, то есть по сути пришлось писать простенький игровой клиент (и, конечно, парсить HTML). Это кстати самый большой класс и “весит” он 120 строчек. Последующее изучение материалов курса ещё и привело к избавлению от небольшой утечки памяти (теперь программа “вечно” потребляет 15 Мб, а до этого за несколько дней разрасталась до 22). В общем-то, если хочется экономить память - можно смело идти в Go. Микросервисы и маленькие веб-приложения таки тоже можно делать, хоть это и не так удобно, как например в Java, зато памяти надо меньше :D

Писать, кстати, пробовал на GoLand (бывший GogLand) и VS.Code, GoLand больше понравился. Подражая Василию, попробовал было VS.Code, но не понимаю, как в нём можно работать. Как по мне, хоть GoLand и обладает минималистичным набором возможностей, всё равно он куда приятнее VS.

Словом, курс я рекомендую всем, кто хочет поучиться что-то писать на Go, ознакомиться с курсами. Это не реклама, разумеется, а просто отзыв от практикующего программиста :D. За курс платить необязательно, но если не платить - не получите сертификат о завершении курса. Честно говоря, мне он и не нужен - думаю, это скорее для тех, кому обучение оплачивает работодатель, сгодится для отчётности.

Полезное