2012-09-03 97 views
17

He estado investigando sobre Golang y veo que está teniendo un compilador. ¿Pero está compilando en código de nivel de conjunto o simplemente convirtiéndolo en BYTECODES y luego llamando a esa compilación? Quiero decir que incluso en PHP podemos convertirlo en BYTECODES y tener un rendimiento más rápido. ¿Es Golang un REEMPLAZO para la programación y la compilación a nivel del sistema?¿Googles GOLANG es un intérprete o compilador?

Respuesta

39

Esto es realmente un compilador (de hecho, incluye 2 compiladores) y hace ejecutables totalmente autosuficientes. No necesita ninguna biblioteca adicional ni ningún tipo de tiempo de ejecución para ejecutarlo en su servidor. Solo tiene que compilarlo para la arquitectura de su computadora de destino.

De the documentation:

Hay dos cadenas de herramientas Go compilador oficial. Este documento se centra en en el compilador y las herramientas gc Go (6g, 8g, etc.). Para obtener información sobre cómo para trabajar en gccgo, un compilador más tradicional que utiliza el back-end de GCC, , consulte Configuración y uso de gccgo.

Los compiladores Go admiten tres conjuntos de instrucciones. Existen importantes diferencias en la calidad de los compiladores para las diferentes arquitecturas .

amd64 (a.k.a. x86-64); 6g, 6l, 6c, 6a Una implementación madura. El compilador tiene un optimizador efectivo (registrador) y genera un buen código (aunque gccgo puede hacerlo notablemente mejor a veces).

386 (a.k.a. x86 o x86-32); 8g, 8l, 8c, 8a Comparable con el puerto amd64.

brazo (a.k.a. ARM); 5g, 5l, 5c, 5a Admite solo los binarios de Linux. Menos utilizado que los otros puertos y, por lo tanto, no tan minuciosamente probado.

excepción de cosas como código de interfaz del sistema operativo de bajo nivel, el tiempo de ejecución apoyo es la misma en todos los puertos e incluye una marca y barrer la basura colector, gama eficaz y rebanar cuerda, y el apoyo a goroutines eficientes, como pilas que crecen y se contraen según demanda.

Los compiladores pueden apuntar a los sistemas operativos FreeBSD, Linux, NetBSD, OpenBSD, OS X (Darwin) y Windows. El conjunto completo de combinaciones soportadas se enumera en la discusión de las variables de entorno a continuación.

En un servidor, por lo general, se dirigirá a la plataforma amd64.

Tenga en cuenta que Go es bien conocido por la velocidad de compilación. Al implementar mis programas de servidor, no construyo para las diferentes plataformas en la computadora de desarrollo: despliego las fuentes y compilo directamente en los servidores de producción. Desde Go1 nunca tuve un código compilado en una plataforma y no compilando en los otros.

En Windows no tuve ningún problema en hacer un exe en mi computadora de desarrollo y simplemente envié este exe a personas que nunca habían instalado nada relacionado.

+0

Así que no es convertirlo en códigos de bytes y compilar realmente. –

+0

Sí. está compilando exactamente en el mismo sentido en que se compila cualquier programa C. Todo está estáticamente vinculado. –

+0

¿Puede generar código .S para lo que genera? – Skaperen

Cuestiones relacionadas