Есть пожалуй два языка программирования, вызывающих у меня иррациональное раздражение. Это Perl и Go.
Ну если на Perl я забил в какой-то момент, то с Go у меня периодически возникает надежда, что я просто чего-то не понял, а на самом деле именно так и надо. Ну вот например:
* Для присваивания используется `=`, а для инициализации можно использовать `:=`. Ну я понимаю ещё, если бы наоборот. По-моему это похоже на довольно толстое глумление, не правда ли?
* С какого-то перепуга при параметризации типа `map` (и кстати при отсутствии обобщённых типов в принципе) используется такой идиотский синтаксис `map[string]float64`. Это намёк на функцию `string -> float64`, или что это за херь?
* Некоторые вещи надо делать при помощи `make()`. Вещи, вполне себе встроенные в язык. По-другому их не сделать. Нафиг тогда `make`, если для создания встроенных в язык вещей логично сделать языковые же конструкции?
При этом про Go любят говорить, что он как компилируемый статически типизированный Питон и т.д. Да Питон со всеми его косяками и общим убожеством в 10 раз ортогональнее по-моему...