2012-09-03 17 views
17

Ho fatto ricerche su Golang e vedo che sta avendo un compilatore. Ma lo sta compilando in codice di livello Assembly o semplicemente convertendolo in BYTECODES e poi chiamando quella compilazione? Voglio dire anche in PHP siamo in grado di convertirlo in BYTECODES e avere prestazioni più veloci. È golang a REPLACEMENT per la programmazione e la compilazione a livello di sistema?Googles GOLANG è un interprete o un compilatore?

risposta

39

Questo è davvero un compilatore (in realtà incorpora 2 compilatori) e rende eseguibili totalmente autosufficienti. Non hai bisogno di alcuna libreria supplementare o qualsiasi tipo di runtime per eseguirlo sul tuo server. Devi solo averlo compilato per l'architettura del tuo computer di destinazione.

Da the documentation:

Ci sono due catene di utensili compilatore Go ufficiale. Questo documento si concentra su sul compilatore e sugli strumenti gc Go (6g, 8g ecc.). Per informazioni su come funzionare su gccgo, un compilatore più tradizionale che utilizza il back-end GCC, vedere Impostazione e utilizzo di gccgo.

I compilatori Go supportano tre set di istruzioni. Esistono importanti differenze nella qualità dei compilatori per le diverse architetture .

amd64 (a.k.a86-64); 6g, 6l, 6c, 6a Un'implementazione matura. Il compilatore ha un efficace ottimizzatore (registratore) e genera un buon codice (sebbene gccgo possa fare sensibilmente meglio a volte).

386 (a.k.a86 o x86-32); 8g, 8l, 8c, 8a Paragonabile alla porta amd64.

braccio (a.k.a ARM); 5g, 5l, 5c, 5a Supporta solo i binari di Linux. Meno ampiamente utilizzato di le altre porte e quindi non così accuratamente testato.

Tranne cose come basso livello di codice interfaccia del sistema operativo, il runtime supporto è la stessa in tutti i porti e comprende un mark-and-sweep garbage collector, matrice efficiente e tranciatura stringa e sostegno goroutine efficienti, come pile che crescono e si restringono su richiesta.

I compilatori possono utilizzare come destinazione FreeBSD, Linux, NetBSD, OpenBSD, OS X (Darwin) e sistemi operativi Windows. Il set completo di combinazioni supportate è elencato nella discussione delle variabili di ambiente di seguito.

Su un server di solito si targetizza la piattaforma amd64.

Nota che Go è ben noto per la velocità di compilazione. Quando distribuisco i miei programmi server, non creo per le diverse piattaforme sul computer di sviluppo: distribuisco le fonti e compilo direttamente sui server di produzione. Dal momento che Go1 non ho mai avuto un codice che compili su una piattaforma e non compaia sugli altri.

Su Windows non ho avuto problemi nel creare un exe sul mio computer di sviluppo e semplicemente inviando questo exe a persone che non hanno mai installato nulla.

+0

Quindi non lo converte in bytecode e in realtà lo compila. –

+0

Sì. si sta compilando esattamente nello stesso senso in cui è compilato un programma C. Tutto è staticamente collegato. –

+0

Può emettere il codice .S per ciò che genera? – Skaperen

Problemi correlati