2010-07-25 20 views
39

Penso che il titolo sia auto esplicativo.In quale lingua è scritto il linguaggio di programmazione Go?

+14

Intendi dire "quale lingua è il compilatore di Google per il linguaggio di programmazione Go scritto in"? Le lingue non sono scritte in lingue. Le implementazioni sono. –

+6

Sì. Mi scuso per l'indeterminatezza, ma penso che sappiamo la risposta a questa risposta accettata che chiarisce tutto ciò che stai dicendo comunque. – digiarnie

+2

Piuttosto che essere auto esplicativo, il titolo è concettualmente confuso. –

risposta

102

I linguaggi di programmazione non sono programmi, quindi non sono "scritti" in nessuna lingua. Sono spesso descritti da grammatiche formali (ad esempio BNF).

Interpreti e compilatori per i linguaggi di programmazione sono programmi e quindi devono essere scritti in una sorta di linguaggio di programmazione.

Go ha almeno due compilatori, gc e gccgo. Il primo è stato scritto in C, ma ora è scritto in Go stesso. Mentre quest'ultimo è un front end gcc scritto principalmente in C++. Le librerie di Go sono scritte in Go.

+1

Stanno per mettere fuori un compilatore scritto in assembly? So che C è vicino al montaggio, ma dal punto di vista delle prestazioni, non lo scriverebbe completamente in assembly da zero? – Cocksure

+5

@Cocksure La prestazione aggiunta non varrebbe la pena di essere manutenuta. E in ogni modo, l'unica cosa che accelererebbe è il tempo di compilazione. – litelite

87

Look at the source and C for yourself, se posso dire.


EDIT Il team Go annunciato nel dicembre 2013 che they will be transitioning the compiler to Go. A partire da febbraio 2015, il compilatore è esclusivamente auto-hosting, in quanto l'implementazione C era deleted. Il nuovo compilatore è stato spedito per la prima volta con Go 1.5.

+21

+1 o -1 per il gemito? –

+9

+1 per il gemito. Senza esitazione. –

+0

come può qualcuno scrivere andare in – shortCircuit

8

È scritto in C. Le librerie sono scritte in Go stesso.

Modifica: ora il compilatore è stato riscritto in Go, quindi è completamente self-hosting.

+0

Mi aspettavo davvero che fosse scritto in Go, dopo essere compilato per la prima volta – cregox

+1

@Cawas Compilato per la prima volta da cosa? Prima di poter compilare qualsiasi programma scritto in X, incluso un compilatore per X, devi avere un compilatore per X scritto in un'altra lingua. In questo caso, quel linguaggio era C. Dato un compilatore per Go scritto in C, perché scrivere un altro in Go, specialmente quando quel compilatore dovrebbe essere modificato quando la lingua viene cambiata? Go è ancora un linguaggio sperimentale, instabile e incompleto - non va bene per una lingua in cui scrivere i complici. –

+0

@Jim cosa vuoi dire con cosa? È tutto come hai detto tu! Hai appena risposto alla tua domanda. Ma non sapevo che Go fosse un ragazzo. Non l'ho mai usato e sono semplicemente un appassionato di qualsiasi cosa su Google. – cregox

Problemi correlati