Этот вопрос просто о чем я думал в последнее время. Может ли язык программирования быть написан на этом языке в качестве второй реализации? например Джава. Можно ли переписать язык программирования Java, используя язык программирования Java?
Извиняюсь, если это глупый вопрос, но мне нужно знать!
GF
Всегда. Любой язык Turing-Complete - это, ну, в общем, язык Turing-Complete. Если вы можете написать компилятор на одном полном языке, вы можете написать его на любом эквивалентном языке.
Да, это возможно. Проверьте BootStrapping .
Да для любого языка Тьюринга.Lisp приходит на ум как один из самых простых языков для написания интерпретатора / компилятора для себя.
Может.Недавним примером является то, что Python имеет pypy .Немного больше информации на странице Википедии и несколько хороших ссылок.
Конечно.
Много-много лет назад один из моих первых домашних компьютеров, Vic 20, поставлялся со встроенным интерпретатором BASIC, но это было так. Поэтому я написал первую версию ассемблера для него на бейсике. Затем я использовал свой первый примитивный ассемблер, чтобы написать лучший ассемблер.
Да. Пока язык Turing Complete, вы можете реализовать язык сам по себе.
Не только возможно, но для компиляторов с нативным кодом, это самая распространенная техника реализации . Хорошим руководством является документ Эндрю Аппеля Аксиоматическая начальная загрузка: руководство для хакеров компиляторов .
Компиляторы GCC написаны на C.
Прошло много времени с тех пор, как кто-либо собирал компиляторы C из сборки.
Есть много практических примеров этого, один из них - язык Oberon, который представляет интерес в этом обсуждении, потому что код компилятора очень читабелен, он находится в книге Project Oberon, доступной бесплатно:
http://www.oberon.ethz.ch/bibliography/publications
http://en.wikipedia.org/wiki/Bootstrapping_(compilers)
написать компилятор Java в Java - нет проблем вообще. на самом деле я думаю, что javac от Sun написан на java.
однако, «java» обычно означает больше вещей, чем просто javac, поэтому ваш вопрос не очень понятен.