Какой язык используется для создания низкоуровневых языков как C++ и Java?
Как Вы могли создать первый язык без языка?
Я бы сказал, что APC или Memcached являются хорошим выбором.
-121--4144631-В контексте компиляторов эта операция часто называется загрузка . В частности, см. Раздел «Куриное и яйцо-проблема» для прямого ответа на ваш вопрос.
Очень Сначала компилятор был бы вручную написан на языке сборки. Если ваш следующий вопрос: «Как был написан первый ассемблер?» Затем ответ заключался в том, что первый ассемблер был написан вручную в бинарном машинном коде, возможно, с помощью передних панелей тумблерных переключателей . Это, несомненно, упрощение того, что действительно произошло, но концепция одинакова.
Существует также отличная статья, под названием размышления о доверенном доверии Кена Томпсона о рисках использования компилятора для языка для создания компилятора для этого языка.
Таких нет вещь как "без языка". Центральный процессор обрабатывает серию сигналов, которые мы называем битами или единицами и нулями (технически изменения в потоке электрического тока). В 50-е годы кодирование выполнялось непосредственно в том виде, в котором ЦП мог «понимать», и скорость, с которой выполнялось программирование, составляла до 20 команд ассемблера в день.
Обычно еще одна машина или другой язык используются для записи первого ассемблера и первого компилятора.
Долгое время доступен рабочее компьютер и рабочий язык, даже если она достаточно отличается, проблема может быть решена в двух этапах.
Напишите целевой язык x для компьютера Y y Z Z на компьютере (URK) A .
Напишите целевой язык x для компьютера Y на языке x . Сейчас один компиляция на A будет производить переводчик, который может работать на y , а вторым компилированием может быть затем Y с полностью загрузочной системой.
Проблема становится проще, если языки или машины не отличаются.
Загрузка также может быть выполнена постепенно, и, возможно, это было более распространенным 50 лет назад.
Что-то вроде может сделать хороший промежуточный шаг.
Большая часть такого рода вещь сделана в C.
Первый компилятор C не был написан в C; Это был ассемблер PDP-11. Другие начальные компиляторы C были написаны на различных языках ассемблера.
Но все последующие компиляторы C фактически записываются в C, основанные на раннем «портативном компиляторе C». Да, это круговой. Но компилятор версии X можно использовать для создания компилятора версии X + 1.
Как упомянуто другие плакаты, вы можете написать язык практически на любом языке, и часто одна из первых программ, написанных на языке, является компилятором для самого языка.
Однако есть некоторые языки, которые были специально разработаны для написания компьютерных языков - а именно LEX, YACC, Flex, Bison (обновленные версии LEX и YACC). Они позволяют представить лексику и грамматическую спецификацию некоторых языков (я верю LLR, или LALR) в форме, которая может быть скомпилирована в эффективное распознавание языка.
Вам все еще нужно писать другие части языкового компилятора / интерпретатора самостоятельно, то есть семантический анализ, генерация кода.
См.
Есть пара параметров, вы можете реализовать весь язык на языке, доступной на целевом хосте, как C или OCAML, что бы это ни было. После того, как у вас есть эта реализация, вы можете написать компилятор / интерпретатор на самом языке, построить его, и теперь язык работает. Этот процесс называется « загрузка ».
Вы не строим языка, но вы строите компилятор или интерпретатор ... и для этого вы можете выбрать любой язык даже даже Язык, который вы хотите скомпилировать ...
Первый самообедующий компилятор - способен набирать свой собственный источник код на языке высокого уровня - был создан для Lisp ... с 1970-х годов Это стало обычной практикой к внедрить компилятор на языке он компилируется, хотя и паскаль, так и C были популярными вариантами для Язык реализации. http://en.wikipedia.org/wiki/Compiler
Я думаю, что ключевое понимание вашего вопроса является понятие обвязки загрузки . Ссылка описывает, как язык может составить язык.
Это относительно распространено в сообществе Lisp. например Некоторые университетские классы будут использовать схему , чтобы написать подмножество языка (это не активность класса компилятора).
Это сказано, что многие компиляторы написаны на других языках. Например, мопсы (Perl 6) написано в Haskell. Ruby доступен в C или Java (AS JRUBY ).