Шаг 3.
Язык программирования Go.
Проект Go

    На этом шаге рассмотрим особенности проекта Go.

    Проект Go родился из разочарования в Google несколькими программными системами, страдающими от "взрыва сложности": устранение проблемы путем усложнения одной части системы медленно, но верно добавляет сложность в другие части.

    Проект Go включает в себя сам язык, его инструментарий, стандартные библиотеки и культуру радикальной простоты. В Go имеются сборка мусора, система пакетов, полноценные функции, лексическая область видимости, интерфейс системных вызовов и неизменяемые строки, текст в которых кодируется с использованием кодировки UTF-8.

    Однако язык программирования Go имеет сравнительно немного возможностей (отсутствуют неявные числовые преобразования, конструкторы и деструкторы, перегрузка операторов, значения параметров по умолчанию, наследование, обобщенные типы, исключения, макросы, аннотации функций и локальная память потока).

    Язык программирования Go гарантирует обратную совместимость: старые программы на Go можно компилировать и запускать с помощью новых версий компиляторов и стандартных библиотек.

    Go имеет достаточную систему типов, но она гораздо более ограниченная, чем в других строго типизированных языках программирования, так что программисты на Go не прибегают к длинным конструкциям.

    На практике Go дает программистам преимущества безопасности и производительности времени выполнения относительно строгой системы типов без излишней сложности.

    Go поощряет понимание дизайна современных компьютерных систем, в частности - важность локализации. Его встроенные типы данных и большинство библиотечных структур данных созданы для естественной работы без явной инициализации или неявных конструкторов, так что в коде скрывается относительно мало распределений и записей памяти.

    Составные типы Go (структуры и массивы) хранят свои элементы непосредственно, требуя меньшего количества памяти и ее распределений, а также меньшего количества косвенных обращений с помощью указателей по сравнению с языками, использующими косвенные поля. А поскольку современные компьютеры являются параллельными вычислительными машинами, Go обладает возможностями параллельности. Стеки переменного размера легких потоков (или go-подпрограммы (goroutines)) Go изначально достаточно малы.

    Стандартная библиотека Go предоставляет строительные блоки и API для ввода-вывода, работы с текстом и графикой, криптографические функции, функции для работы с сетью и для создания распределенных приложений. Библиотека поддерживает множество стандартных форматов файлов и протоколов.

    Библиотеки и инструменты интенсивно используют соглашения по снижению потребностей в настройке, упрощая тем самым логику программ; таким образом, различные программы Go становятся более похожими одна на другую и более простыми в изучении. Проекты создаются с помощью всего лишь одного инструмента go и используют только имена файлов и идентификаторов и иногда - специальные комментарии для определения всех библиотек, выполнимых файлов, тестов, примеров, документации и прочего в проектах; исходный текст Go содержит всю необходимую спецификацию построения проекта.

    На следующем шаге рассмотрим некоторую справочную информацию по языку Go.


Предыдущий шаг Содержание Следующий шаг