Когда код считается независимым от платформы? - PullRequest
2 голосов
/ 20 апреля 2011

Этот вопрос возник в результате обсуждения ответа на вопрос о независимости от платформы библиотеки PhysicsFS . Вопрос в том, можно ли считать конкретный код кроссплатформенным или независимым от платформы? Должен ли код соответствовать определенным стандартам или просто работать на определенном наборе платформ?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

Это очень хороший вопрос! Я рискну здесь угадать, так что терпите меня, потому что у меня нет однозначного ответа.

Я думаю, что «независимый от платформы» относится к коду, который выполняется чем-то, что скрывает инфраструктуру. Например, JVM скрывает платформу от языка - в языке нет ничего, что дает вам доступ к платформе - отсюда и независимость от платформы. Я полагаю, что кроссплатформенность - это то, что не скрыто от деталей платформы - подумайте, например, о JavaScript: у вас есть доступ к браузеру и всем его особенностям. Поэтому написание кода Javascript для запуска во всех браузерах будет кросс-браузерным, и вы можете экстраполировать это, я думаю, на «кроссплатформенность».

1 голос
/ 20 апреля 2011

Независимо от платформы: если компилятор / системная библиотека / ВМ / и т. Д. ... являются стандартными для этого языка / библиотеки / и т. Д. ..., код должен компилироваться / выполняться на каждой будущей платформе, которая соответствует предписанному стандарту , Это означает, что код не может использовать платформо-зависимый #ifdef s где-либо , и что программа не имеет доступа к API, не определенным в указанном стандарте.

Кроссплатформенность: это своего рода неоднозначные и в основном личные предпочтения. Для меня это означает, что он работает как минимум на двух из трех крупных платформ / ОС (x86 (_64) Windows, Linux и / или Mac). В большинстве случаев он будет работать на гораздо большем количестве платформ и архитектур и использовать некоторые или в основном функциональные возможности API POSIX (по крайней мере, для кода, отличного от Windows). Он будет содержать ограниченное число #ifdef s для вызова специализированных API для платформ, которым это требуется (posix против win32 против ...).

...