C - это язык, на котором написано большинство современных операционных систем, и, таким образом, почти любой другой язык, который хочет работать в современных операционных системах и современном оборудовании, должен иметь возможность взаимодействовать с C, если он хочет взаимодействовать с остальной мир вообще. Кроме того, из-за этого компиляторы C распространены повсеместно, поэтому вы всегда можете рассчитывать на то, что компилятор C будет доступен для любой интересующей вас платформы. По этим двум причинам многие языки либо реализованы на C (по крайней мере, частично). ) или написаны для компиляции в C (так что версия, скомпилированная в C, может использоваться для начальной загрузки).
Тем не менее, есть некоторые языки, которые имеют очень мало контактов с C. Clozure Common Lisp (ранее OpenMCL, до этого Macintosh Common Lisp, до этого Coral Common Lisp) полностью написан на Common Lisp , Вам необходимо скачать двоичные файлы для какой-либо платформы, чтобы иметь возможность скомпилировать ее. Очень часто Лисп пишут на Лиспе (иногда на другом диалекте, иногда на том же самом), так как Лисп намного старше С. В 1970-х и 80-х годах было даже Лисп-машин , которые были предназначены для работы Лисп, и вся операционная система и среда разработки были написаны на нем.
Есть много языков, у которых есть компилятор и некоторые библиотеки, написанные на этом языке, в то время как некоторые библиотеки и биты времени выполнения написаны на C. Например, CMUCL (и его производная SBCL ) в основном написаны на Common Lisp, но имеют небольшую среду выполнения C. То же самое относится к GHC , компилятору Glasgow Haskell; он написан на Haskell, поэтому вам нужна существующая реализация на Haskell (обычно Hugs , так как она написана на C и, таким образом, облегчает загрузку), но у нее есть некоторый код на C во время выполнения.
Схема 48 - это Схема, написанная на PreScheme , ограниченном диалекте Схемы, который может быть скомпилирован в C, который сам написан на Схеме. Тот факт, что он компилируется в C, облегчает загрузку; дистрибутив Scheme 48 уже поставляется с кодом, скомпилированным для C, поэтому вам просто нужно скомпилировать его с помощью системного компилятора C, чтобы начать работу.
Существует множество других языков, написанных на других языках, кроме C. Существует Free Pascal , версия Паскаля, написанная на Паскале. Есть много языков, написанных на Java, хотя сама JVM в основном написана на C. Erlang изначально был написан на Prolog (что сильно повлияло на его синтаксис), но не написано на комбинация С и Эрланга.
Все языки программирования должны быть написаны на чем-то, если вы хотите, чтобы они работали на реальном компьютере. В начале единственным выбором было написание машинного кода напрямую. Вскоре после этого люди написали ассемблеры (первоначально в машинном коде, а позже сами в ассемблере), чтобы облегчить написание машинного кода. Затем последовали языки высокого уровня; Фортран, Лисп, Кобол, Алгол, а позже еще Симула, Смоллтолк, С, Паскаль, М.Л., Пролог. Каждый из них должен был быть написан в чем-то; самые ранние были написаны на ассемблере, потом некоторые были написаны сами по себе, а другие написаны на другом языке высокого уровня. К 80-м годам C был в значительной степени доминирующим языком системного программирования, и поэтому он стал выбором по умолчанию для написания нового языка; и это продолжается до сегодняшнего дня. Но вернитесь к языкам, существовавшим до этого, и вы найдете множество реализованных на других языках или даже самих себя.