1 Что вы узнаете из этой главы?
- Происхождение Go: когда и кем он был создан.
- Мотивы создания Go.
- Каковы основные характеристики языка?
2 охваченных технических концепции
- Время сборки
- Статически типизированный язык
- параллелизм
- Уборщик мусора
- Программная зависимость
3 Миф о творении
Существует миф о создании Go. Язык родился в офисе Google, и это произошло во время очень долгой сборки, которая заняла 45 минут.
Эту историю рассказал Роб Пайк. Это дает нам ценную информацию о мотивах создания Go. Время сборки было слишком долгим и болезненным... им нужно было найти способ избежать этого; это была точка входа Go Genesis.
Роберт Гриземер, Кен Томпсон и Роб Пайк — разработчики, которые начали работу над Go еще в 2007 году. Роб Пайк утверждает, что к середине 2008 года язык «в основном был разработан, а реализация (компилятор, среда выполнения) начала работать. ». После этого в 2008 году к команде присоединились Ян Лэнс Тейлор и Расс Кокс.
Go — это язык программирования с открытым исходным кодом, поддерживаемый его сообществом и основной командой разработчиков, работающих в Google. 16 марта 2011 года — дата первого релиза Go. (Он был назван « r56 »). Первая версия Go была выпущена 28 марта 2012 года.
4 мотивации
Go (или Golang) был создан Google для решения проблем компании. Чтобы лучше понять причины, стоит прочитать основной доклад Роба Пайка.
Каковы проблемы программного обеспечения в крупных мировых компаниях?
- Кодовая база сервисов Google огромна. У Google миллионы строк кода.
- Эти строки написаны на разных языках: C, C++, Java и других.
- Время сборки этих приложений «растянулось на многие минуты, даже часы».
- Обновления некоторых частей приложения могут быть дорогостоящими.
Цель первого Gophers состояла в том, чтобы облегчить жизнь разработчиков за счет:
- Значительно сократить время сборки программ.
- Разработка языка, который легко изучать, читать и отлаживать для молодых разработчиков, знакомых с C, C++ или Java.
- Разработка эффективной системы управления зависимостями .
- Создание языка, который может создавать программное обеспечение, которое хорошо масштабируется на оборудовании.
4.1 Определение некоторых понятий
- Время сборки : количество времени, необходимое компилятору для создания машиночитаемого исполняемого файла.
- Статически типизированный язык : давать точное определение этой концепции сейчас преждевременно. Мы рассмотрим этот термин в следующих главах.
- Зависимость : часть программного обеспечения, которое используется другим программным обеспечением.
- Масштабируемость : способность программы справляться с растущим количеством задач, которые необходимо выполнить. Например, веб-сайт называется масштабируемым, если он может принимать увеличивающееся количество запросов без простоев или увеличения задержки загрузки.
5 ключевых функций Go
Создатели Go сосредоточили свои усилия на нескольких важных вариантах дизайна. :
- Компилируемый язык
- С семантикой легко понять и изучить
- Статически типизированный
- Со встроенным параллелизмом система, над которой легко работать разработчикам
- С надежным управлением зависимостями
- С сборщиком мусора
Основная цель, как заявил Роб Пайк, заключалась в том, чтобы дать разработчикам простой в освоении язык для «разработки крупных программных проектов».
5.1 Некоторые концепции
- Параллелизм : программа является параллельной, когда задачи могут выполняться не по порядку или в частичном порядке 2 .
- Сборщик мусора (часто называемый GC): когда мы создаем программы, нам нужно хранить данные и извлекать данные из памяти. Память не бесконечный ресурс. Поэтому разработчик должен следить за тем, чтобы неиспользуемые элементы, хранящиеся в памяти, время от времени уничтожались. Помещение некоторых данных в память называется размещением; обратное действие, заключающееся в удалении данных из памяти, называется освобождением памяти. Роль сборщика мусора заключается в освобождении памяти, когда она больше не используется. Когда в языке нет никакого сборщика мусора, разработчику приходится собирать свой мусор и освобождать память, которая больше не используется... Случайно в Go есть сборщик мусора.
6 Состояние Go
- Проект рос очень быстро, и сейчас насчитывает более тысячи участников.
- На момент написания статьи (8 января 2020 г.) последней версией Go была 1.15.6.
- Go нужен разработчикам: в 2018, 2019 и 2020 годах в опросе разработчиков Stackoverflow Go входит в тройку самых востребованных языков программирования.