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

Нравится

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

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

Не нравится

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