Golang

Hes 2015 M12 1
579
0
1
0

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

Немного предыстории.

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

Go — попытка соединить легкость программирования на интерпретируемом, динамически типизированном языке с эффективностью и безопасностью статически типизированного, компилируемого языка. Он так же стремится быть современным, поддерживая сетевые и многоядерные вычисления. Наконец, Go задумывался как быстрый язык: компиляция большого выполняемого файла должна занимать не более нескольких секунд. Чтобы реализовать эти цели, нужна выразительная, но легкая система типов, конкарентность и сборка мусора, твердая спецификация зависимостей и т.д. Эти вещи не могут быть хорошо реализованы в библиотеках, нужен был новый язык.

Какова цель проекта?

За последнее десятилетие не появилось ни одного значительного системного языка программирования, но за это время компьютерная сфера сильно изменилась. Несколько трендов:

  • Компьютеры стали намного быстрее, а разработка ПО быстрей не стала.
  • Управление зависимостями стало большой частью разработки программ, а традиционные Си-подобные "заголовочные файлы" несовместимы с чистым анализом зависимостей и быстрой компиляцией.
  • Начинается бунт против громоздких языков вроде Java и C++, из-за чего люди переходят на динамически типизированные языки типа Python и JavaScript.
  • Некоторые фундаментальные концепции, такие как сборка мусора и параллельное вычисление, плохо поддерживаются популярными системными языками программирования.
  • Появление многоядерных компьютеров вызвало беспокойство и замешательство.

Корпорация Google считает, что стоит попробовать сделать новый язык, конкарентный, со сборкой мусора и быстрой компиляцией. Насчет пунктов выше:

  • Большие программы Go компилирует за несколько секунда на одном компьютере (и это действительно так, 63 Мб исходного кода компилируются на домашнем компьютере ровно 7 секунд, причем одинаково компилируется как на Windows машине, так и на Linux и Mac).
  • Go предоставляет такую модель создания программ, при которой избегаются издержки Си-подобных заголовочных файлов и библиотек, делая анализ зависимостей простым.
  • Система типов Go не имеет иерархии, поэтому не тратится время на определение зависимостей между типами. Кроме того, хотя типизация в Go статическая, язык пытается сделать так, чтобы программисты не чувствовали их громоздкость, как в типичных объектно-ориентированных языках.
  • Go имеет полноценную сборку мусора, а так же предоставляет фундаментальную поддержку конкарентного выполнения и коммуникаций.
  • В язык заложен способ создания системного ПО для многоядерных компьютеров.

Насчёт простоты кода.

Абстрактный код в вакууме представляет собой реализацию протокола Qiwi для провайдера услуг. Читается вообще без каких либо проблем. После изучения Go буквально за 1-2 дня этот код написан за 2-3 часа после работы в пятницу(!).

Интересные материалы и видео

Go success stories from around the web

Введение в программирование на Go

HighLoad++ 2012. Язык программирования Go от Google

Интерактивное изучение Golang

Интервью: Брайан Керниган и Алан Донован

Русскоязычные подкасты на iTunes

Погружение в Google Go

Видеозапись докладов конференции Golang Moscow (Digital October) (докладчики из компаний Яндекс, Openstat (Spylog), sports.ru)

Доклад Антона Поварова "Go в Badoo" на Golang Meetup

Сайт о языке программировани Go

Роб Пайк подверг критике C++ и Java

Centrifuge + Go = Centrifugo – harder, better, faster, stronger

Why is Golang popular in China?

Оцените пост

-9