2010-07-25 2 views
39

Я думаю, что название самоочевидно.На каком языке написан язык программирования Go?

+14

Вы имеете в виду «Какой язык является компилятором Google для языка программирования Go, написанным на»? Языки не написаны на языках. Реализации. –

+6

Да, я прошу прощения за неопределенность, но я думаю, что мы знаем ответ на принятый ответ, который разъясняет все то, что вы говорите, в любом случае. – digiarnie

+2

Вместо того, чтобы быть понятным, название концептуально запутано. –

ответ

102

Языки программирования - это не программы, поэтому они не «написаны» на любом языке. Они часто описываются формальными грамматиками (например, BNF).

Переводчики и компиляторы для языков программирования являются программами и поэтому должны быть написаны на каком-либо языке программирования.

Go имеет как минимум два компилятора, gc и gccgo. Первое было написано на C, но теперь оно написано в самом Go. Хотя последний является gcc-интерфейсом, написанным в основном на C++. Библиотеки Go находятся в Go.

+1

Собирают ли они компилятор, написанный на сборке? Я знаю, что C близко к сборке, но с точки зрения производительности, не мог бы полностью написать его в сборке с нуля, чтобы быть лучшим? – Cocksure

+5

@Cocksure Добавленная производительность не стоила бы удара в maintanability. И каким бы то ни было, единственное, что ускорилось, это время компиляции. – litelite

87

Look at the source and C for yourself, если можно сказать.


EDIT Команда Go объявила в декабре 2013 года, что they will be transitioning the compiler to Go. По состоянию на февраль 2015 года компилятор является исключительно самостоятельным хостингом, поскольку реализация C была deleted. Новый компилятор отправлен в первый раз с Go 1.5.

+21

+1 или -1 для стонара? –

+9

+1 для стонаря. Без колебаний. –

+0

как кто-то может писать в go – shortCircuit

8

Это написано на C. Библиотеки написаны самим Го.

Редактировать: Теперь компилятор был переписан в Go, поэтому он полностью поддерживает хостинг.

+0

Я действительно ожидал, что он будет написан на Go после будучи скомпилированным в первый раз. – cregox

+1

@Cawas Скомпилирован первый раз на что? Прежде чем вы сможете скомпилировать любую программу, написанную на X, включая компилятор для X, у вас должен быть компилятор для X, написанный на каком-то другом языке. В этом случае этот язык был C. Учитывая компилятор для Go, написанный на C, зачем писать другой в Go, особенно когда этот компилятор должен быть изменен при изменении языка? Go по-прежнему является экспериментальным, неустойчивым и неполным языком - не хорошо для языка, на котором можно писать compielrs. –

+0

@ Jim, что вы подразумеваете под чем? Это все, как ты сказал! Вы просто ответили мне на свой вопрос. Но я не знал, что он был таким ребенком. Я никогда не использовал его и просто энтузиаст чего-либо Google. – cregox

Смежные вопросы