В этом нет ничего "подозрительного".;)
Набор языков, полных по Тьюрингу, которые являются типобезопасными по отношению к любой нетривиальной системе типов [ 1 ] T является строгим подмножество тьюрингово-полных языков.Таким образом, в общем случае переводчик P -1 от B до A не существует;следовательно, ни один из переводчиков - cum -типа проверки типа LP -1 .
Реакция на колениможет быть: Ерунда!И A , и B выполняются по Тьюрингу, поэтому я могу выразить любую вычислимую функцию на или языке! И, действительно, действительноэто правильно - вы можете выразить любую вычислимую функцию на любом языке;однако, довольно часто, вы также можете выразить немного больше .В частности, вы можете создавать выражения, смысловая семантика которых не очень хорошо определена, например, те, которые могут с радостью попытаться взять арифметическую сумму строк символов «foo» и «bar» (это суть Chubsdad Алекс Мартелли ответ).Выражения такого рода могут быть «в» языке B , но могут просто не быть выразимыми в языке A , поскольку денотационная семантика не определена, поэтому разумного способапереведите их.
Это одна из сильных сторон статической типизации: если ваша система типов не может доказать во время компиляции, что вышеупомянутая функция получит любые параметры, кроме тех, для которых результат арифметикиОператор сложения четко определен, его можно отклонить как некорректно набранный.
Обратите внимание, что хотя приведенный выше пример является обычным примером, приведенным для объяснения достоинств системы статических типов, он, возможно, слишком скромен.В целом, статическая система типов не должна ограничиваться простым обеспечением корректности типов параметров, но на самом деле может выражать любое желаемое свойство программы, которое может быть проверено во время компиляции.Например, можно сконструировать системы типов, которые применяют ограничение, согласно которому можно освободить дескриптор файловой системы (, например, , для базы данных, файла, сетевого сокета, и т. Д. ) в той же области видимости.в котором оно было приобретено.Очевидно, что это чрезвычайно ценно в таких областях, как системы жизнеобеспечения, среди прочих, где доказуемо правильность как можно большего количества параметров системы абсолютно необходима.Если вы удовлетворяете статической системе типов, вы можете получить эти виды доказательств бесплатно.
[ 1 ] Под нетривиальным я подразумеваю такое, что не все возможные выражения хорошо напечатаны.