Pāriet uz galveno saturu

GO - назначение

GO - назначение

Смотреть исходное изображение
Язык Go разрабатывался как язык программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах. Он может рассматриваться как попытка создать замену языкам Си и C++.

По словам Роба Пайка[9], «Go был разработан для решения реальных проблем, возникающих при разработке программного обеспечения в Google».
В качестве основных таких проблем он называет: 
  • медленную сборку программ; 
  • неконтролируемые зависимости; 
  • использование разными программистами разных подмножеств языка; 
  • затруднения с пониманием программ, вызванные неудобочитаемостью кода, плохим документированием и так далее; 
  • дублирование разработок; 
  • высокую стоимость обновлений; 
  • несинхронные обновления при дублировании кода; 
  • сложность разработки инструментария; 
  • проблемы межъязыкового взаимодействия. 
Основными требованиями к языку стали: 
  • Ортогональность. 
  • Язык должен предоставлять небольшое число средств, не повторяющих функциональность друг друга. 
  • Простая и регулярная грамматика. 
  • Минимум ключевых слов, простая, легко разбираемая грамматическая структура, легко читаемый код.
  •  Простая работа с типами. 
  • Типизация должна обеспечивать безопасность, но не превращаться в бюрократию, лишь увеличивающую код. 
  • Отказ от иерархии типов, но с сохранением объектно-ориентированных возможностей. 
  • Отсутствие неявных преобразований. 
  • Сборка мусора. 
  • Встроенные средства распараллеливания, простые и эффективные. 
  • Поддержка строк, ассоциативных массивов и коммуникационных каналов. 
  • Чёткое разделение интерфейса и реализации. 
  • Эффективная система пакетов с явным указанием зависимостей, обеспечивающая быструю сборку.

Komentāri

Šī emuāra populārākās ziņas

Алфавит (golang)

Go — регистрозависимый язык с полной поддержкой Юникода в строках и идентификаторах. Идентификатор традиционно может быть любой непустой последовательностью, включающей буквы, цифры и знак подчёркивания, начинающийся с буквы и не совпадающий ни с одним из ключевых слов языка Go. При этом под «буквами» понимаются все символы Юникода, относящиеся к категориям «Lu» (буквы верхнего регистра), «Ll» (буквы нижнего регистра), «Lt» (заглавные буквы), «Lm» (буквы-модификаторы) или «Lo» (прочие буквы), под «цифрами» — все символы из категории «Nd» (числа, десятичные цифры). Таким образом, ничто не мешает использовать в идентификаторах, например, кириллицу.

Модули (golang)

Система пакетов Go была разработана в предположении, что вся экосистема разработки существует в виде единого файлового дерева, содержащего актуальные версии всех пакетов, а при появлении новых версий она целиком перекомпилируется. Для прикладного программирования с использованием сторонних библиотек это достаточно сильное ограничение. В реальности часто возникают ограничения по версиям пакетов, используемых тем или иным кодом, а также ситуации, когда разные версии (ветви) одного проекта используют разные версии библиотечных пакетов. Начиная с версии 1.11 в Go поддерживаются так называемые модули. Модуль — это специальным образом описанный пакет, содержащий информацию о своей версии. При импорте модуля фиксируется версия, которая была использована. Это позволяет системе сборки контролировать, удовлетворены ли все зависимости, автоматически обновлять импортированные модули, когда автор вносит в них совместимые изменения, и блокировать обновление до версий, не обеспечивающих обратной сов...

Пакеты (golang)

Любая программа на Go включает один или несколько пакетов. Пакет, к которому относится файл исходного кода, задаётся описанием package в начале файла. Имена пакетов имеют те же ограничения, что и идентификаторы, но могут содержать буквы только нижнего регистра. Любые глобальные объекты (переменные, типы, интерфейсы, функции, методы, элементы структур и интерфейсов) доступны без ограничений в пакете, в котором они объявлены. Глобальные объекты, имена которых начинаются на заглавную букву, являются экспортируемыми. Для использования в файле кода Go объектов, экспортированных другим пакетом, пакет должен быть импортирован, для чего применяется конструкция import. В ней перечисляются пути к импорируемым пакетам от каталога src в дереве исходных текстов, положение которого задаётся переменной среды GOPATH, а для стандартных пакетов достаточно указать имя. Использование импортируемых пакетов в Go контролируется строже, чем в большинстве языков. Если пакет импортирован, то в коде должно ис...