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
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.
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.
Quindi non lo converte in bytecode e in realtà lo compila. –
Sì. si sta compilando esattamente nello stesso senso in cui è compilato un programma C. Tutto è staticamente collegato. –
Può emettere il codice .S per ciò che genera? – Skaperen