За что мне нравится Go lang
Нравится
- Не мешает выражать то что думаешь
- Простой синтаксис
- Огромное количество библиотек на все случаи жизни
- Простая кросс-платформенная компиляция: установить в переменной окружения целевую ОС/архитектуру и на этом всё: никаких танцев с вытягиванием/подключением библиотек целевой платформы. Т.е.я разрабатывая программу на винде потом просто компилирую её на своём же компьютере под linux и вот она уже пошла работать на серверах. То же самое в обратную сторону: пишу программу для linux-сервера. Отладил и компилирую для Windows и она просто работает как работала. С другими языками для этого обычно нужно как минимум настраивать систему сборки на целевых системах или вытягивать оттуда и как-то подцеплять ключевые библиотеки.
- Благодаря повсеместному использованию gofmt все исходники оформлены единообразно.
- Встроенная система вендоринга (таскания всех зависимостей с собой) позволяет легко предотвращать ситуации когда всё накрылось из-за того что github недоступен или пакет удалился вместе со страницей автора.
- Дешевое создание легковесных потоков (горутин) и простые способы связи между потоками.
- Отсутствие средств мета-программирования направляет в русло решения собственно текущей задачи, а не построения абстрактных универсальных конструкций (которые зачастую больше не пригодятся).
- Бинарник, получающийся после компиляции содержит в себе всё что нужно – никаких дополнений с собой на целевую систему тащить/прописывать не нужно.
По выразительности (простота + количество библиотек) я его воспринимаю на одном уровне с питоном с важным дополнением, что для python много библиотек написаны на C, а для go основная масса написана на Go и ничего дополнительного не требуется. По многопоточности – рядом с Erlang.
Не нравится
- Многословная обработка ошибок
- Некоторые неочевидные способы выстрелить в ногу, например неявные переопределения уже существующих переменных через
:=
внутри вложенных блоков кода. - Отсутствие удобных библиотек для построения нативного GUI.