Возврат к списку

Языку программирования Go исполнилось 10 лет

14.11.2019     
3

Десять лет назад компания Google представила многопоточный компилируемый язык программирования Go, или Golang. Разработчики не рассчитывали на успех предприятия, но надеялись привлечь внимание к особому способу структурировать выполнение кода. 

Рассказываем, как развивался Go, и почему стоит его изучить. 

Как все начиналось

Язык программирования создали разработчики Кен Томпсон, Роб Пайк и Роберт Гризмер внутри компании Google. Томпсон внес огромный вклад в разработку языка С, а также в создание ОС Unix. Пайк написал для Unix графический терминал Blit, а также в соавторстве с Брайаном Керниганом выпустил фундаментальные книги «Практика программирования» и «UNIX. Программное окружение». 

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

Особенности языка

Go – язык с С-подобным синтаксисом и строгой типизацией. Для пользовательских типов используется неявная «утиная типизация», как в Python, JavaScript или Ruby. В Go можно использовать указатели, но без адресной арифметики для них. Реализованы готовые динамические массивы, срезы, хеш-таблицы. Есть циклы для обхода коллекций и строковый типы с интегрированной поддержкой юникода.

Формально Go – объектно-ориентированный язык, но наследовать здесь можно только интерфейсы. Так что правильнее считать его языком процедурным, но с поддержкой интерфейсов. Кроме того, в Go доступны средства функционального программирования – передача функций как параметров, возврат функциональных значений, замыканий и неименованные функции. 

Главная особенность Go – горутины. Горутины – потоки, встроенные в язык, с которыми можно взаимодействовать через каналы. Реализованы и другие инструменты для многопоточного программирования. Благодаря горутинам язык успешно справляется с многозадачностью и позволяет масштабировать приложения при росте количества ядер процессора. Новые потоки эффективно используют память. Миллионы горутин можно прокручивать вместо потоков. Они быстрее и безопаснее обмениваются данными, позволяют обойтись без блокировки мьютексов. К тому же одна горутина может запускаться в нескольких потоках. Также горутины можно объединять в небольшое количество потоков операционной системы. 

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

На Go сложно «выстрелить себе в ногу»: от всего потенциально опасного разработчики отказались. Например, убрали переопределение функций и методов, затратные вставки элементов в середину массива, отрицательные индексы, наследование реализаций и др. Наконец, Go запускается прямо на железе. С одной стороны, это низкоуровневый язык с максимальной производительностью и отличным сборщиком мусора. С другой – он простой и безопасный, поэтому код на Go легко поддерживать. 

Поддержка Go 

Для Go создали набор инструментов разработки gc, который уже поддерживают Windows, Linux, macOS, Android, а также FreeBSD, OpenBSD, DragonFly BSD и другие системы. В наборе – средства компиляции, тестирования и управления пакетами, а также вспомогательные утилиты. Набор компиляторов gcc поддерживает новый язык, причем существует несколько независимых реализаций. Есть компилятор gccgo с рекурсивным парсером, который совмещен со стандартным бэк-эндом gcc. 

Развиваются и независимые проекты. К примеру, на самом Go сделали прослойку llgo для компиляции Go в llvm. Google поддерживает проект gollvm для компиляции Go через систему компиляторов LLVM. Запускать программы на Go также можно с помощью интерпретатора SSA interpreter.

Более современный вариант – IDE (интегрированные среды разработки). Помимо проприетарной GoLand, которую на платформе IntelliJ разработала компания JetBrains, есть бесплатная LiteIDE. Кроме того, поддержку Go внедрили в популярные среды Eclipse, NetBeans, IntelliJ, Komodo, CodeBox IDE, Visual Studio, Zeus и т.д. Подсветка синтаксиса добавлена в Emacs, Vim, Notepad++, jEdit и других.

Официальный блог Go

Часто задаваемые вопросы по языку


Автор:
Ксения Шестакова Обозреватель


Комментарии
Избранное Подписка Сортировка: Дата
1. DmitryKSL 152 14.11.19 12:37 Сейчас в теме
Для Go создали набор инструментов разработки gc, который уже поддерживают Windows, Linux, macOS, Android

Для Android все печально, как там вообще разрабатывать полноценное приложение?
Да и для других ОС GUI это боль.
2. VmvLer 14.11.19 14:07 Сейчас в теме
Миллионы горутин можно прокручивать вместо потоков. Они быстрее и безопаснее обмениваются данными

10 лет назад на хр и ие7 все летало и качалось без единого разрыва, а сейчас каких-то горгулий запилили и интернеты могут "сдохнуть" когда смотришь всего-лишь котика.

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

на фига козе баян?
3. vpaoli 29 14.11.19 14:21 Сейчас в теме
(2)
котик
о кроликах слышал, а котики - это кто? ))
4. lmnlmn 58 14.11.19 14:30 Сейчас в теме
Руки чешутся опробовать этот GoLang, да задачи пока не подвернулось.
Только вот стремно что освоишь язык, а управители наши интернет огородят и скажут что суверенное, отечественное ПО надо писать только в отечественной ОС, на отечественном языке программирования под отечественный процессор.
5. RaHit 20.11.19 18:44 Сейчас в теме
Только язык РАЯ ! :)
Советую с ним ознакомиться.
Оставьте свое сообщение

См. также

В России появится «медицинский» ИИ на отечественных нейропроцессорах  1

Новость Искусственный интеллект Медицина Нейросети

Российские разработчики создадут программно-аппаратную базу для системы искусственного интеллекта, которую планируется использовать в медицине. Для ее создания задействуют отечественные нейропроцессоры.

вчера в 14:30    249    user1015646    2       

Amazon представила библиотеку для создания приложений с применением ИИ 6

Новость Amazon Искусственный интеллект

Чтобы создать приложение с помощью ИИ, разработчику достаточно написать всего три строки кода. 

16.01.2020    948    AnastasiaKl    7       

Microsoft предложила купить новый ПК вместо обновления старого до Windows 10 3

Новость Microsoft

Поддержка Windows 7 прекращается 14 января. Microsoft напоминает пользователям, что их устройство может не поддерживать «десятку», и рекомендует вместо обновления купить новый компьютер. 

14.01.2020    1322    VKuser24342747    18       

Российский программист создал сервис, который может продолжить любую историю за рассказчика 4

Новость Искусственный интеллект Маск Нейросети

Разработчик Михаил Гранкин создал сервис «Порфирьевич», который умеет дописывать тексты на русском языке. Гранкин взял за основу нейросеть GPT-2 компании OpenAI. Один из основателей компании – Илон Маск, создатель Tesla и SpaceX. 

09.01.2020    7950    user1015646    15       

Apple отключила чип для Bluetooth в российских iPhone 11 из-за запрета Роскомнадзора 1

Новость Apple Роскомнадзор

Apple попросила Роскомнадзор выдать лицензию на частоты, необходимые для использования новой технологии беспроводной передачи данных. Из-за отказа ведомства компания отключила в России чип, необходимый для этой функции. 

24.12.2019    2228    VKuser24342747    38       

Система госзакупок засбоила после перехода на свободное ПО 2

Новость Госзакупки Мобильные приложения Тендер

Модуль в системе госзакупок, который отвечает за взаимодействие с электронными площадками и внешними решениями, решили перевести на ПО с открытым исходным кодом. В результате перехода система больше суток работала со сбоями.

23.12.2019    1358    user1015646    6       

Путин подписал указ о переводе российских больниц на электронный документооборот 5

Новость Здравоохранение, медицина, стоматология Путин Цифровая экономика

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

19.12.2019    1834    user1015646    8       

Экспертный совет: «Яндекс» значительно обновил поисковую систему 3

Новость Интернет Яндекс

«Яндекс» представил обновление «Вега» для своей системы поиска. В сервисе появилось более 1500 нововведений и улучшений. Главная особенность – функция экспертного поиска. 

19.12.2019    1537    VKuser24342747    4       

ИИ от Amazon освободит врачей от бумажной работы и поможет пациенту прочесть рецепты 2

Новость Amazon Искусственный интеллект Нейросети

Разработчики представили нейросеть Transcribe Medical. Она слушает беседу врача и пациента и помогает вести медицинские записи.

19.12.2019    1280    user1015646    1       

Russian AI Cup 2019: стартовал чемпионат Mail.Ru Group по программированию искусственного интеллекта 5

Новость Искусственный интеллект Нейросети

Участвовать в Russian AI Cup 2019 могли все желающие – от студентов профильных вузов и фанатов передовых технологий до профессиональных разработчиков.

17.12.2019    1567    user1015646    14       

Вот так сюрприз: в самом копируемом фрагменте Java-кода нашли ошибку 7

Новость Языки программирования

Сайт StackOverflow – популярная система вопросов и ответов о программировании. Но не все советы коллег одинаково полезны: в самом цитируемом куске кода на Java, представленном на StackOverflow, обнаружили серьезный баг.

16.12.2019    2826    user1015646    3       

Команда из России превратила Python-хакатон в свой мастер-класс 5

Новость Языки программирования

В Бахрейне прошел ИТ-марафон GeoHack-2019. Команды должны были создать нейронные сети для обработки данных с месторождений нефти.

13.12.2019    1876    user1015646    3       

Google начал учитывать контекст слов при русскоязычном поиске 3

Новость Google Интернет Нейросети

Компания Google обновила алгоритмы для поиска по русскоязычным сайтам. Это крупнейший апдейт системы за последние пять лет. Его главная цель – улучшить результаты выдачи. 

13.12.2019    1356    VKuser24342747    3       

Аэропорт «Внуково» отказался от электронных посадочных талонов из-за законодательства 1

Новость Законодательство Цифровая экономика

«Внуково» перестал пускать в самолеты пассажиров с электронными посадочными талонами. Остальные российские аэропорты по-прежнему используют цифровые билеты. 

11.12.2019    2092    VKuser24342747    5       

У кроссплатформенной библиотеки разработки Qt появился свой магазин модулей и дополнений 2

Новость Языки программирования

Qt Company запустила официальный магазин дополнений и модулей для Qt: популярный фреймворк используют для создания ПО на С++, но существуют привязки решения к другим языкам.

11.12.2019    1605    user1015646    5       

Apple изменит политику презентации моделей 1

Новость Apple Гаджеты

С момента выпуска первого смартфона – в 2007 году – Apple презентовала свои новинки раз в год. В агентстве JP Morgan предположили, что к 2021 году стратегия изменится: компания начнет презентовать новинки дважды в год.

10.12.2019    1336    Bukaska    2       

Nvidia не будет поддерживать macOS в следующем обновлении CUDA 4

Новость Apple MacOS Видеоигры

Новую версию платформы параллельных вычислений CUDA нельзя будет установить на macOS. Nvidia приняла решение, которое в перспективе может повлиять на качество работы программ с тяжелой графикой и сложными вычислениями на компьютерах Apple. 

09.12.2019    1450    user1015646    2       

Свой Space, свои правила: JetBrains представил новый сервис для командной работы 6

Новость git Управление проектами

Компания JetBrains анонсировала новый сервис для организации командной работы. Продукт от разработчика с российскими корнями получил название Space.

09.12.2019    1717    user1015646    13       

Huawei Mate 30 стал первым телефоном компании без деталей из США 2

Новость Android Гаджеты

Компания Huawei выпустила первый смартфон, собранный без американских комплектующих. Тем не менее, компания все еще продолжает бороться против санкций США. 

09.12.2019    1632    VKuser24342747    1       

Инфостарт и electroNeek запускают программу роботизации процессов для малых и средних предприятий 19

Новость Автоматизация Инфостарт

Инфостарт заключил партнерский договор с компанией electroNeek – разработчиком  программного обеспечения для автоматизации повторяющихся бизнес-задач. Наша цель – сделать роботизированную автоматизацию процессов (RPA) доступной. 

06.12.2019    2499    user997184    7       

Проект Verona: Microsoft перепишет часть Windows на новом языке 6

Новость Microsoft Языки программирования

Microsoft запустила экспериментальный проект по разработке собственного языка программирования Verona, основанного на Rust.

05.12.2019    2109    user1015646    6       

Nokia создала ПО для программирования интернете вещей на базе Tarantool 3

Новость СУБД Mail.Ru Инновации

Модуль позволит разрабатывать ПО для систем промышленного интернета вещей. Он включает инструменты для управления интеллектуальными средами и обеспечивает взаимодействие IOC с граничными облачными приложениями. 

02.12.2019    1443    user1015646    6       

Google пожаловался на разработчиков игр из-за неудачного старта сервиса Stadia 2

Новость Google Видеоигры

Облачный сервис Google Stadia не оправдал ожидания игроков. Он не позволяет запускать игры в разрешении 4K, имеет большую задержку ввода и приводит к перегреву плеера Chromecast.

02.12.2019    1739    VKuser24342747    5       

В России и Европе закончились адреса IPv4 4

Новость Интернет

«25 ноября 2019 года, мы сделали окончательное распределение / 22 IPv4 по последним оставшимся адресам в нашем доступном пуле. Теперь у нас закончились адреса IPv4», – сообщает один из пяти глобальных интернет-регистраторов RIPE NCC. 

28.11.2019    2057    user1015646    0       

Российский офисный пакет исключили из реестра отечественного ПО за плагиат  3

Новость Госзакупки Импортозамещение

Пакет офисных программ AlterOffice исключили из Реестра российского программного обеспечения. В нем нашли признаки клонирования зарубежного аналога LibreOffice с открытым исходным кодом.

27.11.2019    2694    user1015646    9