Все ли языки программирования изоморфны?

Всегда ли для любой программы, написанной на определенном языке программирования, можно скомпилировать программу эквивалентной функциональности на любом другом языке?

2 ответа

С точки зрения сырой логики, да; до тех пор, пока оба языка тьюрингово полны.

Однако если в вашем коде используются API-интерфейсы, которые недоступны на целевом языке (например, сети, файловые системы, 3D-ускорение или многопоточность), то нет. (если вы не напишите полноценную виртуальную машину на целевом языке и не построите ее)

Например, нет нормального способа перенести многопоточный код с общей памятью в Javascript.

Вы ищете полноту по Тьюрингу.

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

Кроме того, они могут предоставлять различные объемы доступа к базовой платформе в форме API или тому подобного.

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

Другие вопросы по тегам