См. загрузочные компиляторы . Первый компилятор Паскаля был написан на Фортране, который использовался для компиляции компилятора Паскаля, который был написан на Паскале.
C ++ - это супер-набор C, поэтому базовый компилятор C ++ может быть написан на C, а затем улучшен с использованием специфических функций C ++ (и скомпилирован с использованием предыдущей версии самого себя).
Я не знаю, на каком языке написаны компиляторы MS, но я не удивлюсь, если бы они были на C ++. Clang от Apple находится на C ++ и нацелен на LLVM, который также написан на C ++.
Кроме того, многие языки Lisp могут компилироваться самостоятельно.
Некоторые компиляторы используют C как переносную версию сборки, но это только для удобства.