Может & ldquo; независимые от языка компиляторы & rdquo; существовать?

Создайте только один конструктор и убедитесь, что этот конструктор использует все, что сделал ваш первый конструктор, но добавил ApplicationDbContext в качестве другого параметра. Поэтому, если ваш исходный конструктор взял параметры a, b, удалите новый конструктор и добавьте конструктор dbcontext к конструктору, который принимает a, b, чтобы теперь быть a, b, dbcontext -

-3
задан Albert Hendriks 19 January 2019 в 12:45
поделиться

2 ответа

Могут ли существовать компиляторы, которые не обрабатывают файлы до промежуточного состояния?

Да, такой компилятор может существовать. Компилятор преобразует читаемый человеком текст в машиночитаемые инструкции, и не требуется, чтобы он проходил через промежуточную форму. Однако десятилетия исследований в области компиляторов показали, что наличие промежуточной формы облегчает компиляцию и создает лучший код.

Могут ли существовать «независимые от языка компиляторы»?

Нет, этого нельзя сделать так же, как «не зависящий от языка переводчик» не может существовать для человеческих языков. ,

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

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

И если у вас возникнет желание изобрести новый язык, совместимый со всеми другими языками, вот предупреждение XKCD о стандартах

0
ответ дан Tim 19 January 2019 в 12:45
поделиться

Нет, вы не можете написать компилятор для нескольких языков. Например, что должна делать эта программа?

foo = print "Hello, World!"

В Haskell она компилируется, но ничего не делает, тогда как в Python 2 она печатает выходные данные. Компилятор не может знать, какой язык выбрать, так как он действителен на обоих языках.

Однако вы можете написать программу, которая делает одно и то же на нескольких языках. Это называется полиглот . Вот наша вышеуказанная программа, модифицированная как полиглот на Haskell и Python 2:

main = print "Hello, World!"

Что касается написания кода, который выглядит «странно», как код в вашем примере в Scala, он называется внутренним DSL и на самом деле не редкость.

0
ответ дан Brian McCutchon 19 January 2019 в 12:45
поделиться
Другие вопросы по тегам:

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