___ taggcc ___ GCC - это сборник компиляторов GNU. Это де-факто стандартный компилятор C на Linux и поддерживает многие другие языки и платформы. ___ ___ Является ли qstnhdr Googles GOLANG интерпретатор или компилятор? ___ qstntxt ___

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

    
___ tagystem ___ Система может ссылаться на набор взаимозависимых компонентов; Инфраструктура низкого уровня, такая как операционная система (с высокой языковой точки зрения) или объект или функция для доступа к предыдущей ___ answer12249365 ___

Это действительно компилятор (на самом деле он содержит 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. Полный набор поддерживаемых   комбинации перечислены в обсуждении переменных среды   ниже.

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

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

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

    
___ taggo ___ Go - это язык программирования с открытым исходным кодом, первоначально разработанный в Google. Он статически типизирован с синтаксисом, слабо полученным из C, добавляя автоматическое управление памятью, безопасность типов, некоторые возможности динамического ввода, дополнительные встроенные типы, такие как массивы переменной длины и карты значений ключа, и большую стандартную библиотеку. ___

17

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

    
задан Daniel Li 03.09.2012 в 15:37
источник

1 ответ

39

Это действительно компилятор (на самом деле он содержит 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.

    
ответ дан Denys Séguret 03.09.2012 в 15:47
источник