Может вторая реализация языка программирования быть записанной на том языке?

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

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

GF

7
задан Carl Smotricz 15 July 2010 в 21:04
поделиться

13 ответов

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

10
ответ дан 6 December 2019 в 04:51
поделиться

Да для любого языка Turing Complete. На ум приходит Лисп как один из самых простых языков для написания интерпретатора / компилятора для себя.

7
ответ дан 6 December 2019 в 04:51
поделиться

Это может. Недавний пример - python имеет pypy. Немного больше информации есть на странице Википедии и несколько хороших ссылок.

6
ответ дан 6 December 2019 в 04:51
поделиться

Конечно.

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

4
ответ дан 6 December 2019 в 04:51
поделиться

Не только возможно, но для компиляторов машинного кода это наиболее распространенный метод реализации . Хорошим практическим руководством является статья Эндрю Аппеля Axiomatic Bootstrapping: A Guide for Compiler Hackers .

2
ответ дан 6 December 2019 в 04:51
поделиться

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

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

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

2
ответ дан 6 December 2019 в 04:51
поделиться

Не только можно, но и нужно. ecj (компилятор Eclipse) - один из примеров, и я думаю, что сам SDK поставляется с чистым компилятором Java, хотя я могу ошибаться.

1
ответ дан 6 December 2019 в 04:51
поделиться

Конечно. Я даже видел, как кто-то написал компилятор COBOL, написанный на COBOL! (Ладно, не полный компилятор... но хотя бы парсер.)

.
0
ответ дан 6 December 2019 в 04:51
поделиться

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

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

2
ответ дан 6 December 2019 в 04:51
поделиться

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

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

1
ответ дан 6 December 2019 в 04:51
поделиться

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

12
ответ дан 6 December 2019 в 04:51
поделиться

Обратите внимание на 3-LISP

-1
ответ дан 6 December 2019 в 04:51
поделиться

Да. Пока язык является полным по Тьюрингу, вы можете реализовать язык сам по себе.

3
ответ дан 6 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: