Подтвердить что ты не робот

Является ли googles GOLANG интерпретатором или компилятором?

Я изучаю Golang, и я вижу, что у него есть компилятор. Но компилирует ли он код уровня сборки или просто преобразует его в BYTECODES, а затем вызывает эту компиляцию? Я имею в виду, что даже в PHP мы можем преобразовать его в BYTECODES и иметь более высокую производительность. Является ли golang ЗАМЕНА для программирования и компиляции системного уровня?

4b9b3361

Ответ 1

Это действительно компилятор (на самом деле он содержит 2 компилятора), и он делает полностью самостоятельные исполняемые файлы. Вам не нужна никакая дополнительная библиотека или какая-либо среда выполнения для ее выполнения на вашем сервере. Вам просто нужно скомпилировать его для вашей целевой компьютерной архитектуры.

Из документации:

Существуют две официальные цепочки инструментов компилятора Go. Этот документ фокусируется на компилятор gc Go и инструменты (6g, 8g и т.д.). Информацию о том, как для работы с gccgo, более традиционным компилятором, использующим задний конец GCC, см. настройка и использование gccgo.

Компиляторы Go поддерживают три набора инструкций. Существуют важные различия в качестве компиляторов для разных архитектуры.

amd64 (a.k.a. x86-64); 6g, 6l, 6c, 6aЗрелая реализация. компилятор имеет эффективный оптимизатор (регистратор) и генерирует хорошие кода (хотя иногда gccgo может заметно улучшить).

386 (a.k.a. x86 или x86-32); 8g, 8л, 8с, 8аСравнение с портом amd64.

arm (a.k.a. ARM); 5g, 5l, 5c, 5aПоддерживает только двоичные файлы Linux. Менее широко используется, чем другие порты и, следовательно, не прошли тщательную проверку.

За исключением такие как код интерфейса операционной системы низкого уровня, время выполнения поддержка одинакова во всех портах и ​​включает мусор маркировки и разметки коллектора, эффективного массива и нарезки строк и поддержки для эффективные горуты, такие как стеки, которые растут и сокращаются по требованию.

Компиляторы могут ориентироваться на FreeBSD, Linux, NetBSD, OpenBSD, OS X (Darwin) и операционных систем Windows. Полный набор поддерживаемых комбинации перечислены в обсуждении переменных среды ниже.

На сервере вы обычно нацеливаетесь на платформу amd64.

Заметим, что Go хорошо известен скоростью компиляции. При развертывании моих серверных программ я не создаю для разных платформ на компьютере разработки: я развертываю источники и компилирую непосредственно на производственных серверах. Начиная с Go1, у меня никогда не было компиляции кода на одной платформе, а не для компиляции на других.

В Windows у меня не возникло проблемы с созданием exe на моем компьютере разработки и просто отправкой этого exe людям, которые никогда не устанавливали ничего связанных с Go.