28 апр. 2016 г.

За что мне нравится Go lang

  1. Не мешает выражать то что думаешь
    1. Простой синтаксис
    2. Огромное количество библиотек на все случаи жизни
  2. Простая кросс-платформенная компиляция: установить в переменной окружения целевую ОС/архитектуру и на этом всё: никаких танцев с вытягиванием/подключением библиотек целевой платформы. Т.е.я разрабатывая программу на винде потом просто компилирую её на своём же компьютере под linux и вот она уже пошла работать на серверах. То же самое в обратную сторону: пишу программу для linux-сервера. Отладил. Компилирую для Windows и она просто работает как работала. с другими языками для этого обычно нужно как минимум настраивать систему сборки на целевых системах или вытягивать оттуда и как-то подцеплять ключевые библиотеки.
  3. Благодаря повсеместному использованию gofmt все исходники оформлены единообразно.
  4. Встроенная система вендоринга (таскания всех зависимостей с собой) позволяет легко предотвращать ситуации когда всё накрылось из-за того что github недоступен или пакет удалился вместе со страницей автора.
  5. Дешевое создание логических потоков (горутин) и простые способы связи между потоками.
  6. Отсутствие средств мета-программирования направляет в русло решения собственно текущей задачи, а не построения абстрактных универсальных конструкций (которые зачастую больше не пригодятся).
  7. Бинарник, получающийся после компиляции содержит в себе всё что нужно – никаких дополнений с собой на целевую систему тащить/прописывать не нужно.

По выразительности (простота + количество библиотек) я его воспринимаю на одном уровне с питоном с важным дополнением, что для python много библиотек написаны на C, а для go основная масса написана на Go и ничего дополнительного не требуется. По многопоточности – рядом с Erlang.

Из минусов:

  1. Многословная обработка ошибок
  2. Некоторые неочевидные способы выстрелить в ногу, например неявные переопределения уже существующих переменных через := внутри вложенных блоков кода.
  3. Отсутствие средств для работы с GUI.