Язык, который не использует «С»? - PullRequest
11 голосов
/ 16 ноября 2009

Просто любопытно. Я могу ошибаться, но, насколько я знаю, большинство языков создано с использованием 'C' источников.

Например: perl , php , python , Java (?), go ...

Есть ли язык, который не использует C в качестве интерпретатора / компилятора низкого уровня? (Фортран?)

Ответы [ 19 ]

4 голосов
/ 16 ноября 2009

См. загрузочные компиляторы . Первый компилятор Паскаля был написан на Фортране, который использовался для компиляции компилятора Паскаля, который был написан на Паскале.

C ++ - это супер-набор C, поэтому базовый компилятор C ++ может быть написан на C, а затем улучшен с использованием специфических функций C ++ (и скомпилирован с использованием предыдущей версии самого себя).

Я не знаю, на каком языке написаны компиляторы MS, но я не удивлюсь, если бы они были на C ++. Clang от Apple находится на C ++ и нацелен на LLVM, который также написан на C ++.

Кроме того, многие языки Lisp могут компилироваться самостоятельно.

Некоторые компиляторы используют C как переносную версию сборки, но это только для удобства.

3 голосов
/ 17 ноября 2009

Существует даже современный компилятор C, изначально не написанный на C

Я полагаю, что Green Hills Software C компилятор был впервые написан в начале 1980-х годов на Паскале. В настоящее время компания является крупным поставщиком встраиваемых компонентов для аэрокосмической и милотехники, и вполне возможно, что компилятор все еще находится на Паскале. Но потом, я думаю, у них также есть переводчик с Паскаля на С, так что я думаю, что они могли бы мигрировать.

UCSD Pascal

В P-системе использовался компилятор, который генерировал код для виртуальной машины. Я считаю, что сам компилятор был написан на языке Паскаль. Вы можете перенести все это, просто перенеся виртуальную машину. Эта система повлияла на последующую разработку Java / JVM.

Все остальные старые вещи

C существует только с начала 1970-х годов и был популярен только с начала 1980-х годов. Все ранее должно было быть связано с чем-то другим, что было раньше, или загружаться само по себе.

3 голосов
/ 16 ноября 2009

Да ..... PL / 1 старая мэйнфреймская программа IBM (PL / 1 означает язык программирования 1)

Есть и другие: Ассемблер?

С уважением, Sigersted

2 голосов
/ 16 ноября 2009

Из того, что я знаю о gcc, большинство компиляторов переходят из java / fortran / ada / что угодно в объектный код, затем все они используют один и тот же компоновщик. Я полагаю, что компоновщик находится в C, но ассемблер, вероятно, нет.

2 голосов
/ 16 ноября 2009

Было реализовано несколько проектов для реализации Perl 6, отличающихся прежде всего выбором языка реализации. Первоначально основной претендент (имя которого ускользает от меня) было написано на Perl 5. В настоящее время основное внимание в Perl 6 уделяется Rakudo, который реализуется поверх Parrot с использованием, как я понимаю, языка PIR. (Я предполагаю, что Parrot написан на C и не знает, использует ли Rakudo C вместе с PIR или нет; всем, кто занимается разработкой Perl 6, предлагается отредактировать мой ответ и заполнить эти данные.)

В принципе, любой язык, полный Тьюринга, может использоваться для написания собственного компилятора. Хотя это было сделано не во всех случаях, похоже, что это было сделано для большинства, хотя бы «потому что мы можем».

2 голосов
/ 16 ноября 2009

Компилятор Dylan написан на Dylan.

2 голосов
/ 16 ноября 2009

JRuby - это реализация Ruby, которая использует виртуальную машину Java. Можно сказать, что виртуальная машина Java написана на C, C ++ или каком-либо другом низкоуровневом языке, но в конечном итоге все, что напрямую связано с оборудованием, написано на C, C ++, Assembler или каком-либо другом низкоуровневом языке.

1 голос
/ 28 июня 2010

Вам нужно определить, что вы подразумеваете под «низким уровнем». Почти все языки будут использовать C косвенно, потому что большинство операционных систем написаны на C или C ++. Для выполнения любых системных вызовов (открытие файлов, сетевые сокеты) вам придется взаимодействовать с C.

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

Конечно, это было сделано в Лиспе (машины Google Лисп).

Таким образом, Lisp был бы наиболее заметным (не мертвым) языком, который преуспел без C.

1 голос
/ 16 ноября 2009

PyPy - это реализация Python, написанная на Python.

...