Go (Golang)

Продукт
Разработчики: Google
Дата премьеры системы: 2009
Дата последнего релиза: 2022/05/10
Технологии: Средства разработки приложений

Содержание

Основные статьи:

Go (часто также golang) — компилируемый многопоточный язык программирования, разработанный внутри компании Google.

2023: Способы отладки кода на языке Golang

Язык Golang еще относительно новый, и некоторые его нюансы пока не известны. Это может привести к проблемам при написании кода. Дмитрий Васянин, главный инженер по разработке ПО, рассмотрел различные способы отладки сервиса на Go перед его запуском, чтобы помочь создать надежное и бесперебойное приложение для пользователей. Подробнее читайте в статье.

2022: Релиз Go 1.18

16 марта 2022 года стало известно о том, что представлен релиз языка программирования Go 1.18, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.

Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.TrafficSoft ADC: балансировщик нагрузки с высокой скоростью работы и минимальными аппаратными требованиями

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

В версии 1.18 добавлена поддержка обобщённых функций и типов (дженериков), при помощи которых разработчик может определить и использовать функции, предназначенные для работы сразу с несколькими типами. Также предоставлена возможность использования интерфейсов для создания комбинированных типов, охватывающих несколько типов данных. Поддержка дженериков реализована без нарушения обратной совместимости с существующим кодом.

Другие улучшения:

  • В штатный инструментарий интегрированы утилиты для fuzzing-тестирования кода. В ходе fuzzing-тестировании осуществляется генерация потока всевозможных случайных комбинаций входных данных и фиксация возможных сбоев в процессе их обработки. Если какая-то последовательность приводит к краху или не соответствует ожидаемой реакции, то такое поведение с высокой вероятностью свидетельствует об ошибке или уязвимости.
  • Добавлена поддержка многомодульных рабочих пространств, позволяющих выполнять команды сразу для нескольких модулей, что позволяет одновременно собирать и запускать код в нескольких модулях.
  • Проведена значительная оптимизация производительности для систем на базе процессоров Apple M1, ARM64 и PowerPC64. Включена возможность использования регистров вместо стека для передачи аргументов в функции и возврата результата. Улучшено inline-развёртывание циклов компилятором. Полностью переделана проверка типов в компиляторе. В отдельных тестах по сравнению с прошлым выпуском отмечается повышение производительности кода на 20%, но сама компиляция стала выполняться примерно на 15% дольше.
  • В runtime повышена эффективность возвращения освобождённой памяти операционной системе и улучшена работа сборщика мусора, поведение которого стало более предсказуемым.
  • В стандартную библиотеку добавлены новые пакеты net/netip и debug/buildinfo. В клиентском коде по умолчанию отключена поддержка TLS 1.0 и 1.1. В модуле crypto/x509 прекращена обработка сертификатов с подписью на базе хеша SHA-1.
  • Подняты требования к окружению в Linux, для работы теперь необходимо наличие ядра Linux как минимум версии 2.6.32. В следующем выпуске аналогичные изменения ожидаются для FreeBSD (будет прекращена поддержка ветки FreeBSD 11.x) и для работы потребуется наличие как минимум FreeBSD 12.2.[1]

2013

В августе 2013 года стало известно о том, что Google продолжает работу над созданием языка программирования под названием Golang, или Go, который, по мнению некоторых экспертов, может полностью заменить Java.

Язык Java был создан 20 лет назад в компании Sun Microsystems, впоследствии поглощенной Oracle, и с тех пор получил самое широкое распространение, особенно в сфере промышленных информационных технологий. Однако, с момента получения Oracle полного контроля над Sun и всеми ее разработками в 2010 году, в сообществе разработчиков Java конфликтные ситуации стали нормой. В частности, Oracle критикуют за слишком медленные обновления средств разработки Java.

Интересно, что практически сразу после появления операционной системы (ОС) Google Android глава Oracle Ларри Эллисон заявил, что при создании этой ОС использованы некоторые копии языка Java. Пока никто кроме Google всерьез не рассматривает перспективы нового языка. Правда, есть одно исключение: интернет-стартап Iron.io стал первой компанией, которая приняла решение использовать язык в своих крупных проектах.

Iron.io развивает облачный сервис обмена сообщениями для разработчиков мобильных приложений на базе Go. Проект стартовал в 2011 году и с тех пор обзавелся рядом влиятельных клиентов, включая Career Builder и The Motley Fool. Основатели стартапа говорят, что использование Go дает им дополнительные преимущества в сравнении с другими распространенными языками, такими как Ruby и, в особенности, Java.

Со-основатель стартапа Трэвис Ридер (Travis Reeder) заявил, что новый язык программирования дает преимущество в производительности, использовании памяти, он также обеспечивает простоту и высокое качество кода.

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

2012: Первый официальный релиз

Компания Google официально в марте 2012 года объявила о первом официальном релизе своего открытого языка программирования Go.

Открытый язык программирования Go был впервые анонсирован компанией Google в ноябре 2009 г. Go — это экспериментальный язык, который должен объединить в себе высокую производительность и безопасность C++ со скоростью динамических языков программирования, таких как Python. Проект Go включает в себя язык программирования, набор компиляторов и специальные библиотеки, которые позволяют включать в программы Go ряд встроенных функций.

«В ноябре 2009 г. компания Google анонсировала свой проект открытого языка Go. С тех пор более 200 сторонних специалистов сделали тысячи исправлений и добавлений в коде языка и документации, а также внесли свой вклад в его тестирование. Открытое сообщество стало одной из важнейших составляющих успеха Go. Сегодня мы с огромным удовольствием объявляем о том, что проект Go достиг первой стабильной версии - Go version 1», - говорится в официальном сообщении интернет-гиганта.

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

Go 1 доступен в виде бинарных пакетов для Windows, Linux, Mac OS X, FreeBSD и других платформ. Первый официальный релиз обладает целым рядом исправлений и улучшений по сравнению с рабочими версиями. Так, в нем появилась специальная утилита go fix, функцией которой является автоматизация приведения старых исходных кодов к текущему стандарту языка. Теперь разработчики при использовании языка Go могут отказаться от применения файлов Makefile и сборочных скриптов – вся нужная информация извлекается непосредственно из исходного кода программы.

Как отмечают представители сообщества создателей Go, также одновременно с Go 1 состоялся релиз новой версии набора инструментов Google App Engine SDK, предназначенного для создания приложений для App Engine, которая была переработана для поддержки новых возможностей Go 1.[2]

2009: Представление языка программирования Go

10 ноября 2009 года компания Google представила новый язык программирования — Go (Golang). Go называют одним из самых простых языков программирования и в этом его преимущество. Код понятен любому разработчику, поэтому следить за выполнением команд и вносить изменения не составляет труда. Чем проще и понятнее код, тем сложнее сделать в нем ошибку.

Языки программирования

Ссылки

Официальный сайт продукта

Примечания

  1. Выпуск языка программирования Go 1.18
  2. [Google выпустил первую версию своего языка программирования http://www.cnews.ru/news/top/index.shtml?2012/03/29/483532]


СМ. ТАКЖЕ (52)


Подрядчики-лидеры по количеству проектов

За всю историю
2021 год
2022 год
2023 год
Текущий год

  Солар (ранее Ростелеком-Солар) (46)
  Финансовые Информационные Системы (ФИС, FIS, Финсофт) (15)
  Форсайт (11)
  Axiom JDK (БеллСофт) ранее Bellsoft (10)
  Бипиум (Bpium) (10)
  Другие (389)

  Солар (ранее Ростелеком-Солар) (8)
  Финансовые Информационные Системы (ФИС, FIS, Финсофт) (4)
  Консом групп, Konsom Group (КонсОМ СКС) (2)
  ЛАНИТ - Би Пи Эм (Lanit BPM) (2)
  IFellow (АйФэлл) (2)
  Другие (30)

  Солар (ранее Ростелеком-Солар) (10)
  Форсайт (3)
  Banks Soft Systems, BSS (Бэнкс Софт Системс, БСС) (3)
  Cloud.ru (Облачные технологии) ранее SberCloud (2)
  КРИТ (KRIT) (2)
  Другие (13)

  Солар (ранее Ростелеком-Солар) (6)
  МТС Exolve (Межрегиональный ТранзитТелеком, МТТ) (4)
  Unlimited Production (Анлимитед Продакшен, eXpress) (4)
  РЖД-Технологии (3)
  Robin (Робин) (3)
  Другие (23)

  Unlimited Production (Анлимитед Продакшен, eXpress) (3)
  Солар (ранее Ростелеком-Солар) (3)
  МТС Exolve (Межрегиональный ТранзитТелеком, МТТ) (2)
  Axiom JDK (БеллСофт) ранее Bellsoft (1)
  Banks Soft Systems, BSS (Бэнкс Софт Системс, БСС) (1)
  Другие (9)

Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2021 год
2022 год
2023 год
Текущий год

  Солар (ранее Ростелеком-Солар) (2, 48)
  Microsoft (41, 47)
  Oracle (49, 26)
  Hyperledger (Open Ledger Project) (1, 23)
  IBM (33, 18)
  Другие (595, 304)

  Солар (ранее Ростелеком-Солар) (1, 8)
  Финансовые Информационные Системы (ФИС, FIS, Финсофт) (1, 4)
  Microsoft (4, 3)
  Oracle (2, 3)
  SAP SE (2, 2)
  Другие (16, 19)

  Солар (ранее Ростелеком-Солар) (1, 11)
  Banks Soft Systems, BSS (Бэнкс Софт Системс, БСС) (1, 3)
  Форсайт (1, 3)
  Cloud.ru (Облачные технологии) ранее SberCloud (1, 2)
  Сбербанк (1, 2)
  Другие (9, 9)

  Солар (ранее Ростелеком-Солар) (1, 6)
  Unlimited Production (Анлимитед Продакшен, eXpress) (1, 6)
  МТС Exolve (Межрегиональный ТранзитТелеком, МТТ) (1, 4)
  Мобильные ТелеСистемы (МТС) (1, 4)
  РЖД-Технологии (1, 3)
  Другие (14, 24)

  Мобильные ТелеСистемы (МТС) (2, 3)
  Солар (ранее Ростелеком-Солар) (1, 3)
  Unlimited Production (Анлимитед Продакшен, eXpress) (1, 3)
  МТС Exolve (Межрегиональный ТранзитТелеком, МТТ) (1, 2)
  Сбербанк (1, 1)
  Другие (12, 12)

Распределение систем по количеству проектов, не включая партнерские решения

За всю историю
2021 год
2022 год
2023 год
Текущий год

  Solar appScreener (ранее Solar inCode) - 48
  Hyperledger Fabric - 23
  Windows Azure - 20
  FIS Platform - 15
  Форсайт. Мобильная платформа (ранее HyperHive) - 12
  Другие 324

  Solar appScreener (ранее Solar inCode) - 8
  FIS Platform - 4
  Турбо X - 2
  Siemens Xcelerator - 2
  Java - 2
  Другие 22

  Solar appScreener (ранее Solar inCode) - 11
  Форсайт. Мобильная платформа (ранее HyperHive) - 3
  BSS Digital2Go - 3
  Cloud ML Space - 2
  Axiom JDK (ранее Liberica JDK до 2022) - 1
  Другие 8

  EXpress Защищенный корпоративный мессенджер - 6
  Solar appScreener (ранее Solar inCode) - 6
  МТС Exolve - 4
  Форсайт. Мобильная платформа (ранее HyperHive) - 3
  РЖД и Робин: Облачная фабрика программных роботов - 3
  Другие 14

  EXpress Защищенный корпоративный мессенджер - 3
  Solar appScreener (ранее Solar inCode) - 3
  МТС Exolve - 2
  Naumen Platform - 1
  Газпром: Ивентум Конструктор приложений для организации и управления мероприятиями - 1
  Другие 9