Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Переносимость программы


Автор: hoz 15.3.2014, 19:37
 Читаю книгу. Написано, что существуют проблемы переносимости программ. Я одного не понимаю. Имею ввиду программ в каком виде? Т.е. в скомпилированном? Но ведь множество программ, которые уже написаны (имею ввиду без ошибок в логике) и которые можно скачать, скажет так, в интернете работают стабильно. Единственно,  чаще всего зависит только от версии операционной системы и всё.
 Имеется ввиду это?

Автор: Фантом 15.3.2014, 19:54
Цитата(hoz @  15.3.2014,  20:37 Найти цитируемый пост)
Единственно,  чаще всего зависит только от версии операционной системы и всё.
 Имеется ввиду это? 

Сколько операционных систем Вы знаете?

Автор: hoz 15.3.2014, 21:26
Фантом,
Вы имеете виду версий или разновидностей ОС?
Если вообще систем, то на вскидку Windows, MacOS, FreeBSD, NetBSD. Solaris, пачка разновидностей Linux-подобных систем.

Автор: Фантом 16.3.2014, 00:30
Цитата(hoz @  15.3.2014,  22:26 Найти цитируемый пост)
Вы имеете виду версий или разновидностей ОС?
Если вообще систем, то на вскидку Windows, MacOS, FreeBSD, NetBSD. Solaris, пачка разновидностей Linux-подобных систем.


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

Автор: baldina 16.3.2014, 01:52
hoz, скомпилированная программа может исполняться только на целевой платформе (тип процессора+OC).
программы, исполняемые в рамках специальной среды (например JVM, .NET), требуют наличие этой среды. на разных платформах реализация сред может отличаться. например, .NET разрабатывался только для Windows. под *nix есть проект Mono, но он не на 100% совместим.
ну и есть программы на интерпретируемых языках. здесь требуется, что бы интерпретаторы одинаково интерпретировали и содержали одинаковые функции, что тоже не всегда бывает.

все это значит, что готовая программа в общем случае не переносима на другую платформу. вобщем-то и исходный код  без определенных усилий не переносим. нужно учитывать особенности компилятора/интерпретатора на разных платформах плюс делать соответствующий выбор прикладных библиотек для реализации интерфейса пользователя, сетевых задач, БД и т.д.

так что проблема есть, и совсем не простая

Автор: hoz 16.3.2014, 22:02
baldina, с программами я уяснил. По крайне мере теоретически въехал.
 А с библиотеками дело обстоит так же? Например, если я пишу библиотеки, которые в будущем хочу загнать в .dll.
 Это ж не означает что для WinXP их придётся перелопать, для Win 7 тоже самое, для Win 8 опять же лопатить и тд и тп?

Автор: vinter 17.3.2014, 08:01
Цитата(hoz @  16.3.2014,  23:02 Найти цитируемый пост)
baldina, с программами я уяснил. По крайне мере теоретически въехал. А с библиотеками дело обстоит так же? Например, если я пишу библиотеки, которые в будущем хочу загнать в .dll. Это ж не означает что для WinXP их придётся перелопать, для Win 7 тоже самое, для Win 8 опять же лопатить и тд и тп?

dll, в общем случае, будут работать на любой, современной, версии windows.

Автор: xvr 17.3.2014, 12:40
Цитата(vinter @  17.3.2014,  08:01 Найти цитируемый пост)
dll, в общем случае, будут работать на любой, современной, версии windows. 

Не совсем. DLL написанные под более старую Windows будут работать на более новой, и то не всегда. Даже между версиями Windows есть некоторые проблемы совместимости, MS обновляет интерфейсы, в том числе и старые. Не зря в Win7 есть режимы запуска программ в разных режимах совместимости. 

Автор: vinter 17.3.2014, 16:46
xvr, это уже специфика. В общем случае dll работает везде, как и exe. Естественно могут возникнут проблемы с запуском на XP и ниже, если заранее не обеспокоится, но это , повторюсь, специфика. 

Автор: baldina 18.3.2014, 00:17
hoz, если говорить о переносимости твоей библиотеки, то, для простоты полагая, что она сторонних библиотек не использует, и разрабатывается сугубо под windows, достаточно использовать лишь api, присутствующее в самой старой oc (сервис паки, кстати, могут содержать дополнения api). ну и выбрать по вкусу процессор/разрядность.
если делать проект в студии по умолчанию (win32x86, безо всяких sse), и не использовать самых новых функций, оно будет в большинстве случаев совместимо, как сказал vinter

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)