Холодные игрушки
Отвлекитесь от горутин и каналов. Съешьте ещё этих мягких французских булок да выпейте чаю. И почитайте июньский дайджест Evrone для Go-разработчиков.
Звёздный месяц Go
Важное событие — очередной рубеж в 100 000 звёзд пройден. Большинство из нас использует GitHub каждый день и система рейтинга вполне отражает интерес к языку. Такими темпами Go войдёт в топ-30 репозиториев. Чем выше рейтинг, тем больше людей, так или иначе, начинают интересоваться языком и этим способствуют его развитию.
Go сейчас особенно актуален, поскольку позволяет легко создавать микросервисы. Вкупе с высокой скоростью работы и простотой изучения это делает его очень привлекательным, как для клиентов, так и для разработчиков. Некоторые особенности языка, такие как отсутствие дженериков, были всё-таки исправлены в последнем обновлении 1.18.
Взгляд на Go 1.19b1
TL:DR Серьёзных обновлений не будет, язык продолжает развиваться.
Будущая версия 1.19 дебютирует на новой процессорной архитектуре Loongson 64-bit. Это такая китайская альтернатива процессорам от Intel и AMD, фактически видоизменённый MIPS. С учётом высокой популярности Go в Азии, такое развитие было вполне ожидаемым. Кстати, на RISC-V обновление также скажется благотворно. По предварительным данным производительность вырастет на 10 процентов.
Модель использования памяти будет изменена и приведена в соответствие с той, которая используется в других популярных языках: C, C++, Java, JavaScript, Rust и Swift. Обновление добавит новые типы в sync/atomic, что упростит работу с атомарными элементами.
Документация не просто важна, она необходима. Улучшение комментариев к пакетам сделает восприятие информации значительно лучше. В будущей версии появятся ссылки, списки и более четкие заголовки.
Ещё из значимых изменений появилось новое unix-ограничение сборки. В версии 1.19 оно срабатывает, если целевая операционная система соответствует одному из значений: aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd или solaris. Вероятно, в будущем появится поддержка других операционных систем.
Внедряем зависимости по-новому
Отрадно видеть, что появляется всё больше пакетов, реализованных с помощью дженериков, появившихся с версии 1.18. Для реализации паттерна внедрения зависимостей вместо традиционного uber/dig можно попробовать samber/do. Этот тулкит построен не на рефлексии, а на дженериках — следовательно типобезопасен.
Поддерживаются следующие функции служб:
- регистрация,
- вызов,
- проверка работоспособности,
- отключение.
Сами по себе службы могут быть анонимными или именованными. Поддерживаются оба способа запуска — неотложный и «ленивый». С функцией разрешения графа зависимостей и инжектором по-умолчанию такой тулкит без проблем справится со своими обязанностями. Документацию и примеры использования можно найти по ссылке.
Поймай меня, если можешь
Что-то пошло не так и дальнейшее исполнение программы потеряло смысл. Закрыть приложение? Продолжить работу и проигнорировать проблему? Решение такой задачи называется обработкой исключительной ситуации. В большинстве языков для этого предусмотрен механизм try-catch-finally. В будущей версии языка (Go 2) эту конструкцию предлагали к рассмотрению, но в итоге так и не приняли.
Философия Go декларирует важность правильной обработки ошибок, так что разработчики языка не стали их делать исключениями. Вместо этого используются множественные возвращаемые значения. С одной стороны это хорошо, ведь разработчик сможет сконцентрироваться на написании надёжного кода. Но с другой стороны это делает код более громоздким.
Не став ждать у моря погоды, некоторые разработчики решили самостоятельно реализовать библиотеку для обработки исключений в привычном стиле try-catch-finally. Так что, если вам удобнее отлавливать исключения таким способом, то можете делать это уже сейчас.
Митапы
Летний GO meetup
29 июня 2022 19:00
Рады сообщить, что у нас запланирован очередной Go Meetup, который пройдёт 29 июня . Спикеры из «Авито», «МойОфис» и «Программный регион» расскажут и на примерах покажут, как кастомизировать NeoVim, что делать с потреблением оперативной памяти, и так ли показательны бенчмарки.
Послушать доклады в прямом эфире и задать вопросы можно будет на платформе Tulula. Чтобы зарегистрироваться, нажмите на кнопку ниже.
Обучение
Курс Python в Evrone Academy
60 учебных модулей
Если вы думаете о смене работы или хотите стать частью нашей команды, но у вас недостаточно коммерческого опыта, то теперь можно учиться прямо в Evrone. А после — попасть к нам на оплачиваемую стажировку.
Основа обучения в Evrone Academy — наши высокие требования к разработчикам и опыт в проектах. Мы записали лекции, подготовили текстовые версии, добавили практические задания — это позволит вам подтянуть знания до middle-уровня. На стажировке мы дополним теорию практикой, а после — добро пожаловать на «боевой» проект.
Сейчас академия доступна в режиме early access — можно пройти базовые части по Python или Ruby. Но мы уже готовим новые материалы и практические задания, подписывайтесь на нас в соцсетях, чтобы не пропустить обновления!
Вакансии
Удаленка / Офис
Evrone
Мы открыты для новых Go-разработчиков. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.