И снова здравствуйте! В прошлый раз мы говорили о разных интересных новинках в Data Science, ну а сегодня обсудим новости Golang и всего, что связано с этим языком программирования. Рассмотрим не все новости за последние несколько месяцев, поскольку их много, а только за лето 2022 года. Если вдруг вам покажется, что мы пропустили нечто важное, — пишите в комментариях, обсудим. Специалисты компании Avast заявили о том, что сейчас наблюдается рост количества вредоносных и потенциально опасных программ, которые написаны на Golang. Новые экземпляры вредоносов обнаруживаются каждую неделю, но наиболее важные зловреды — бэкдор Backdoorit и IRC-бот Caligula. Оба могут работать на самых разных платформах. Сколько они существуют — сказать сложно, поскольку обнаружили их в конце апреля, когда они еще не детектировались базами VirusTotal. Что касается первой программы, Backdoorit (ну или backd00rit), то она работает как под Windows, так и под Linux/Unix. На текущий момент основная задача зловреда — воровство файлов, связанных с Minecraft, а также проектов Visual Studio и Intellij. Но это сейчас, поскольку операторы зловреда в любой момент могут его настроить на воровство любых других файлов. Кроме прочего, Backdoorit может выполнять произвольные команды оператора, загружать дополнительное ПО (естественно, не «белое») и делать по команде скриншоты экрана пользователя. Caligula — зловред попроще. Он предназначен исключительно для проведения DDoS-атак и распространяется под видом ELF-файлов. Соответственно, работает под Linux и Windows. ПО работает с такими архитектурами процессоров, как Intel 80386 32-бит, ARM 32-бит, PowerPC 64-бит, AMD 64-бит. Что касается способностей в плане выполнения DDoS, то бот может выполнять DDoS-атаки типа flood — UDP, HTTP, SYN, TCP и бомбардировка пакетами квитирования (ACK-флуд). Их немало, но для подборки мы выбрали две. Название первой «Black Hat Go: Программирование для хакеров и пентестеров», авторы — Стил Т., Паттен К., Коттманн Д.   Книга предназначена для тех, кому интересно оценить «темную сторону» популярного языка. Но не для того, чтобы писать зловреды, подобные описанным выше, а чтобы знать, как противостоять угрозам. По словам авторов книги, она предоставляет полезный арсенал различных приемов для специалистов по инфобезу и «белых» хакеров. Соответственно, представленные инструменты и технологии дают возможность тестировать системы, создавать и автоматизировать инструменты, а также знать, с какой стороны ждать беды. Начинается книга с основного обзора синтаксиса языка, после чего подаются уже примеры для разработки нужных специалистам по информационной безопасности инструментов. Читателям расскажут о тактиках и задачах, с которыми сталкиваются пентестеры, а также покажут подробности таких угроз, как кража данных, сниффинг сетевых пакетов и создание эксплойтов. Кроме того, читателей обучат криптографии, стеганографии и прочим полезным вещам. Название второй книги уже более длинное, и перевода на русский пока нет. Речь идет о Go for DevOps: Learn how to use the Go language to automate servers, the cloud, Kubernetes, GitHub, Packer, and Terraform. Авторы книги — Джон Доак (John Doak) и Дэвид Джастис (David Justice). Книга для Ops- и DevOps-инженеров, которые планируют использовать язык программирования от Google для разработки собственного DevOps-инструментария, а также для интеграции определенных возможностей, используя Kubernetes, GitHub Actions, HashiCorp Packer и Terraform. Для того чтобы ознакомиться с содержимым книги и понять его, нужен опыт программирования на Go или других языках. Здесь неплохие новости для тех, кто уже работает с этим языком либо же только собирается его изучать. Дело в том, что Go-разработчики уверенно занимают третье место по уровню зарплат среди коллег, которые используют в работе другие языки. Так, на hh.ru зарплатные предложения начинаются со 100–140 тыс. рублей и дальше только растут — конечно, в соответствии с опытом работы, знаниями и умениями программистов. Собственно, удивляться этому не приходится, поскольку язык перспективный, его можно использовать для создания широкого спектра инструментов. Многие крупные компании, включая IT-корпорации, веб-агентства, крупный бизнес, приглашают на работу Go-программистов. И да, несмотря на то, что язык существует уже больше 10 лет, на рынке до сих пор не так много разработчиков этого профиля. Ну а о дефиците IT-специалистов и говорить не приходится — он все время увеличивается. «Язык программирования Go появился в 2009 году и к настоящему времени является одним из самых популярных языков разработки backend’а веб-приложений после Java, Python и PHP. По данным аналитиков нашей компании, а также порталов HeadHunter и Хабр.Карьера, доля вакансий на Go среди всех вакансий backend-разработчиков составляет 11%. В этом году по этому показателю Go обогнал язык C#, доля которого в backend последнее время падает, и приближается к доле языка PHP, которая составляет 14%. Вероятно, в десятилетней перспективе Go может обогнать PHP, по крайней мере, в крупных проектах. Его популярность обусловлена использованием более практичных и современных подходов к программированию, которых нет в PHP. Например, статическая типизация в этом языке, которую PHP ещё не обрёл, приближает его к лидеру рейтинга Java, в которой эта особенность была с самых первых версий. Go также сильнее ориентирован на разработку веб-приложений на основе микросервисной архитектуры, которая используется в крупных и высоконагруженных проектах, что также приближает его к требованиям рынка. Если вы ещё не знакомы с языком Go, не видели его синтаксис и ничего на нём не писали, самое время попробовать и познакомиться, хотя бы ради кругозора и того, чтобы не отставать от прогресса» — прокомментировал новости Даниил Пилипенко, директор центра подбора IT-специалистов SymbioWay и программный директор факультета backend-разработки направления «Программирование» Skillbox Гоферы могут быть довольны — в конце июня был представлен предварительный релиз новой версии языка, которая порадовала нужными дополнениями и исправлениями. Так, создатели языка добавили небольшое исправление в языке, а точнее — в области действия типов в объявлениях методов. Изменены правила определения компилятором области действия параметров типа в объявлении функций и методов. Благодаря этому при компиляции теперь не будет выдаваться ошибка из-за совпадения названия типа и наименования параметра при объявлении метода. Кроме того, разработчики пересмотрели модель памяти, ее привели в соответствие с той моделью, которая используется в других языках, включая C, C++, Java, JavaScript, Rust и Swift. А еще добавлены новые типы в пакете sync/atomic: atomic.Bool, atomic.Int32, atomic.Int64, atomic.Uint32, atomic.Uint64, atomic.Uintptr, atomic.Pointer[T any]. Многие специалисты по Go ожидали этого момента — и вот он наступил, можно радоваться. Еще из важного — появление поддержки так называемого мягкого ограничения памяти программы, так что планировщик языка не будет выходить за установленные ограничения. Правда, возможны и исключения из этого правила. Ну и плюс язык оптимизирован, появились такие новшества, как выведение более простой трассировки неустранимыми фатальными ошибками. «Одной из замечательных фич Go является автоматическая генерация документации кода. Как известно, Go предлагает встроенный сервер godoc — в версии 1.19 комментарии стали ещё лучше. Основными нововведениями являются ссылки, списки и отформатированные заголовки. Ссылки заключаются в квадратные скобки и облегчают навигацию по документации. Списки представляют собой набор строк с отступами, которые повышают читаемость кода. Заголовки обозначаются символом (#) — чтобы строка считалась заголовком она должна быть без отступа и отделена от текста соседнего абзаца пустыми строками. Создание документации кода стало ещё более гибким. Нововведения помогают пользователям писать четкие комментарии к документам с удобной навигацией, особенно в пакетах с большими API», — прокомментировал новости Алексей Григорьев, студент курса «Профессия Go-разработчик» в Skillbox. На этом можно было бы остановиться, если бы не еще одна интересная новость, которая касается создателя Golang — компании Google. Напрямую с Go новость не связана, но касается она еще одного языка программирования от Google, который получил название Carbon. По словам создателей этого ЯП, его создавали в качестве преемника С++. Это не первый такой преемник. Например, Kotlin считается преемником Java, а используемый в iOS Swift — это преемник Objective-C. Разработчики языка говорят, что им удалось решить все проблемы и исправить недостатки С++, одновременно сохранив достоинства последнего. Одно из них — высокая производительность.  Важный момент: код Carbon очень сильно напоминает код С++, благодаря чему код на Carbon может быть интегрирован в код предшественника без особых проблем. Инструменты для разработчика размещены на GitHub, так что кому интересно — изучайте их вот по этой ссылочке. Ну а на сегодня все, не переключайтесь.