Может ли вторая реализация языка программирования быть написана на этом языке? - PullRequest
7 голосов
/ 16 июля 2010

Этот вопрос просто о чем я думал в последнее время. Может ли язык программирования быть написан на этом языке в качестве второй реализации? например Джава. Можно ли переписать язык программирования Java, используя язык программирования Java?

Извиняюсь, если это глупый вопрос, но мне нужно знать!

GF

Ответы [ 13 ]

12 голосов
/ 16 июля 2010

Всегда. Любой язык Turing-Complete - это, ну, в общем, язык Turing-Complete. Если вы можете написать компилятор на одном полном языке, вы можете написать его на любом эквивалентном языке.

10 голосов
/ 16 июля 2010

Да, это возможно. Проверьте BootStrapping .

7 голосов
/ 16 июля 2010

Да для любого языка Тьюринга.Lisp приходит на ум как один из самых простых языков для написания интерпретатора / компилятора для себя.

6 голосов
/ 16 июля 2010

Может.Недавним примером является то, что Python имеет pypy .Немного больше информации на странице Википедии и несколько хороших ссылок.

4 голосов
/ 16 июля 2010

Конечно.

Много-много лет назад один из моих первых домашних компьютеров, Vic 20, поставлялся со встроенным интерпретатором BASIC, но это было так. Поэтому я написал первую версию ассемблера для него на бейсике. Затем я использовал свой первый примитивный ассемблер, чтобы написать лучший ассемблер.

3 голосов
/ 16 июля 2010

Да. Пока язык Turing Complete, вы можете реализовать язык сам по себе.

2 голосов
/ 16 июля 2010

Не только возможно, но для компиляторов с нативным кодом, это самая распространенная техника реализации . Хорошим руководством является документ Эндрю Аппеля Аксиоматическая начальная загрузка: руководство для хакеров компиляторов .

2 голосов
/ 16 июля 2010

Компиляторы GCC написаны на C.

Прошло много времени с тех пор, как кто-либо собирал компиляторы C из сборки.

2 голосов
/ 16 июля 2010

Есть много практических примеров этого, один из них - язык Oberon, который представляет интерес в этом обсуждении, потому что код компилятора очень читабелен, он находится в книге Project Oberon, доступной бесплатно:

http://www.oberon.ethz.ch/bibliography/publications

http://en.wikipedia.org/wiki/Bootstrapping_(compilers)

1 голос
/ 16 июля 2010

написать компилятор Java в Java - нет проблем вообще. на самом деле я думаю, что javac от Sun написан на java.

однако, «java» обычно означает больше вещей, чем просто javac, поэтому ваш вопрос не очень понятен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...