Высокоуровневые языки программирования не обеспечивают абсолютную переносимость кода, потому что интерактивные приложения на них используют системные вызовы (обращения к ядру операционной системы). 2 У каждой ОС этот механизм свой и довольно сильно отличается от других. 2 Поэтому зачастую софт, написанный для одной операционной системы, не работает на другой. 2
Чтобы исправить ситуацию, разработчики ПО создают дополнительные библиотеки, маскирующие эти различия. 2 Но даже с ними программа может не работать на 100% на той платформе, для которой она изначально не создавалась. 2
В то же время программы, которые мало взаимодействуют с операционной системой, например, выполняют какие-либо вычисления или обработку данных, обычно более переносимы. 3