Не паникуйте — Go устранил C только в том смысле, что он больше не использует C в своем собственном коде. Да, с его последним выпуском альтернатива Google языку C, наконец, освобождается от C.
Go 1.5 является самостоятельным хостингом в том смысле, что вся цепочка инструментов — компилятор и т. Д. — Теперь написана на Go. Хотя Go предназначен для того, чтобы быть альтернативой C как лучшему языку систем низкого уровня, вам нужно с чего-то начать, и самый простой вариант-написать свои ранние компиляторы на существующем языке, и C-хороший выбор. Однако, как только у вас есть компилятор, вы можете начать конвертировать код на язык, который вы реализуете, и в конечном итоге получить компилятор на новом языке. Передайте это через ваш существующий компилятор, и вы можете выбросить его и его исходный код и написать компилятор Go только в Go.
Преимущество этого заключается в том, что теперь у вас есть инструменты, которые написаны на языке Go и, следовательно, могут быть изменены программистами Go. Более того, это отличный тестовый стенд — теперь мы знаем, что Go-это достаточный язык для написания компилятора и всего дополнительного кода.
Другие улучшения в версии 1.5 в основном связаны с реализацией языка.
Сборщик мусора был полностью переработан, в результате чего были сокращены паузы в выполнении из-за запуска сборки мусора.
Учитывая хорошие возможности многопоточности Go, всегда было загадкой, почему максимальное количество одновременных гороутов было установлено равным единице. Теперь планировщик был написан, и теперь можно установить максимальное количество доступных процессоров по умолчанию .
Конечно, вы должны иметь в виду, что язык Go чаще всего рассматривается как замена не имеющих потоков или необходимость в сборке мусора из коробки. Если вы хотите, чтобы эти функции были в C, вы должны рассматривать их как дополнения.
Улучшения в инструментах включают в себя:
«Поддержка «внутренних» пакетов позволяет обмениваться деталями реализации между пакетами. Экспериментальная поддержка «вендоринга» внешних зависимостей-это шаг к стандартному механизму управления зависимостями в программах Go. Новая команда «go tool trace» позволяет визуализировать трассировки программ, созданные новой инфраструктурой трассировки во время выполнения. Новая команда «go doc» является заменой оригинальной «godoc», которая обеспечивает улучшенный интерфейс командной строки.»
Также улучшен диапазон поддерживаемых ОС и архитектур. Теперь у нас есть darwin/arm, darwin/arm64 и linux/arm54. Существует также экспериментальная поддержка PowerPC, хотя она должна быть миноритарной. Новая поддержка ОС/платформы помогает в проекте Go mobile исследовать, может ли Go быть полезен в качестве языка для разработки Android и iOS.
Существует ряд улучшений в стандартной библиотеке, включая новый тип с плавающей запятой произвольной точности.
Go начинает выглядеть зрелым, но все еще есть жалобы на то, что ему не хватает функций — дженерики возглавляют список. Go также нуждается в сложной и стандартной IDE, чтобы сделать ее более привлекательной для обычного пользователя. Другие утверждают, что язык прост и не нуждается в раздувании, таком как перегрузка операторов.
Только время покажет, какой лагерь правильный.