Продолжаем знакомить вас с современными технологиями, некоторыми кроссплатформенными фреймворками, а также различными подходами в разработке. Сегодня мы расскажем о языке программирования Go, чья популярность стремительно растет, как и число проектов, реализованных с помощью него. Среди них Docker, Kubernetes, CloudFlare и др.
Почему Go?
Golang – это статически типизированный, компилируемый, императивный язык программирования, разработанный в Google для решения проблем, возникших в условиях огромных масштабов компании.
Go – очень простой язык программирования. Грамматика языка содержит 25 ключевых слов (для сравнения: C99 имеет 37, C++11 около 84). Все выразительные возможности языка ортогональны друг другу, оператор цикла – и тот один. Спецификация языка настолько короткая, что есть люди, которые прочитали ее полностью.
Gofmt and tooling
В Go есть почти все, что необходимо для качественной разработки. Например, gofmt – инструмент автоматического форматирования исходного кода, который устанавливает единый формат, что исключает целый класс споров между разработчиками. Наличие канонической формы также упрощает создание инструментов автоматического рефакторинга (codemod’ов).
В отличие от С#, C++, Java и многих других языков программирования в Go отказались от системы наследования и параметрического полиморфизма и оставили только композицию типов, которые реализуют интерфейсы. Построение систем при помощи иерархий типов требует проектирования на ранних этапах. В результате этого разработчик пытается учесть все возможные варианты использования, что ведет к перепроектированию. Проектирование при помощи композиции небольших интерфейсов помогает добиться линейной формы роста системы, увеличивает адаптивность.
Модель конкурентного исполнения
В Go реализована простая и мощная модель конкурентного исполнения на основе CSP. Она позволяет разбивать код на блоки, которые могут выполняться независимо друг от друга, координируя свою работу при помощи каналов. Кроме того, особенности языка Go дают возможность проще и быстрее контролировать все процессы, связанные с использованием и освобождением памяти.
Сборщик мусора
В Go реализован сборщик мусора, который берет на себя роль по освобождению памяти. Для системного языка программирования это довольно противоречивое решение, однако на практике оно совершенно оправданно. В условиях многопоточности затраты на ручное управление ресурсами превышают накладные расходы сборщика. К тому же, особенности языка позволяют избежать лишних аллокаций, а сами задержки были значительно уменьшены к 2018 году.
Хочешь познакомиться с Go поближе или узнать о других популярных технологиях и фреймворках? Звони (383) 332-44-29, пиши jobs@technologika.ru, подписывайся и следи за обновлениями в наших соцсетях: ВК и FB, Instagram.