Pull to refresh

Comments 7

UFO landed and left these words here

А причём тут кодировка? Речь о символах.

UFO landed and left these words here

И, собственно, что? Компилятор работает с символами, а не с байтами.

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

В теории, конечно, модулей, написанных в разных кодировках, которые могут быть некорректно восприняты в проекте, быть не должно (например, код модуля в кодировке 1252, в котором просто не может быть проблемных символов, воспринимается компилятором как UTF-8 или UTF-16, в котором безобидная последовательность кодов 1252 может сложиться в нечто непотребное), но в жизни всякое бывает.

С другой стороны, компилятор должен учитывать особенности кодировок (если в принципе способен воспринимать исходный код в разных кодировках) и использовать запрет в соответствии с той кодировкой текста, которая определилась (автоматически или параметром компилятора). Тогда вылет компилятора на "незавершённых двунаправленных управляющих символах в комментариях и строковых литералах" в безобидном тексте, где подобных символов быть не может по определению, просто покажет, что где-то в исходниках ошиблись с кодировкой (в настройках компилятора или самом исходнике, если компилятор просто не умеет в соответствующую кодировку), и тот, кто собирает проект, должен ситуацию как-то поправить.

Так что в итоге требование запрета в спецификации языка вполне логично и абсолютно нормально.

Рассуждения Russ Cox о Trojan source (tl;dr; - всё не страшно и, более того, не ново) https://research.swtch.com/trojan

Sign up to leave a comment.

Other news