|
|
|
| Насколько сложно перенести программу на разные операционные системы имея исходный код? Java не в счёт, например с C - насколько это сложно сделать? | |
|
|
|
|
|
|
|
для: dump
(05.01.2012 в 09:47)
| | Да вот пёс его знает. Тут же от человека в основном зависит всё. От его уровня квалификации. Кому то сложно, а для кого-то это рутинная работа. Я когда-то с Алгола-68 переводил программу, которая примерно в том же году, когда создался язык и была писана.
Правда, я тут не совсем понимаю уместность слова переводить. Если знаешь, что программа делает, проще заново написать. А на код смотреть, только чтобы видеть алгоритм. Опять же, ели он удачен. И подсмотреть удачные конструкции, если таковые имеются.
Опять же. Какие ОС? Т.е. куда чего переводить-то? Есть к примеру такой язык Softlogic S3, на котором программируются, к примеру, сети QNX контроллеров. Все компоненты ST-S3 связаны с интегрированной средой разработки S3-IDE, которая многоплатформенная.
Мне лично эта технологическая связка приятна тем, что на ней написана АСУ предприятия "Немировский спиртозавод" и "Козловский спиртозавод" :) Ну и, конечно, система диспетчеризации подстанций компании "Судостроительный завод "Залив". | |
|
|
|
|
|
|
|
для: dump
(05.01.2012 в 09:47)
| | Зависит от характера программы, количества системных вызовов, как организован код. Вообще языки высокого уровня создавались именно для того, чтобы проблемы переноса вообще не существовала - код на любых операционных системах выглядит одинаково. Все было хорошо, пока операционными системами не стала заниматься Microsoft - они специально так организовывают код и языки, чтобы они не были совместимыми со всем остальным. Конечно, хороший разработчик постарается написать обертки для системных вещей и перенос будет заключаться только в переписывании этих оберток. Однако GUI-программы сильны именно GUI и для них так запросто обертки не напишешь... так и будешь использовать средства операционной системы, а они очень разные. В общем сложно сказать, может вообще ничего делать не придется, а может будет проще переписать программу заново.
Если речь о чистом C, то очень просто. | |
|
|
|
|
|
|
|
для: dump
(05.01.2012 в 09:47)
| | Смотря на какие системы. Перенести с Windows на Linux практически нереально. Допустим, для того, чтобы запустить другую программу, в Windows необходимо вызвать системную функцию CreateProcess(), а в Linux такой функции нет, нужно использовать функцию fork(), которая расщепляет текущий процесс на две части. Естественно, функции принципиально несовместимы.
Проблема в том, что сейчас никто не программирует на уровне прерываний. Для того, чтобы отрисовать окно, никто не будет напрямую писать в видеобуфер, достаточно воспользоваться системными функциями, а они для каждой операционки свои. Короче говоря, для переноса надо найти вызовы всех системных функций и заменить их на функции той системы, на которую переносишь. | |
|
|
|
|
|
|
|
для: Commander
(08.01.2012 в 14:56)
| | Ну не все так печально, обычно, если программу сразу проектируют для переноса на несколько платформ, она спроектирована таким образом, что организацию процесса нужно переписать ровно в одном месте - в обертке, а весь остальной код использует обертку. Так стараются поступить с любыми системными вызовами, по возможности локализовать их в одном месте, которое можно будет переписать при переходе к другой операционной системе.
>Для того, чтобы отрисовать окно, никто не будет напрямую писать в видеобуфер
Здесь ровно тоже самое, есть библиотека OpenGL, поддерживаемая на уровне видео-карт, она одинаковая и для Windows и для Linux и для любой другой операционной системы.
Очень много зависит от программы и её разработчиков. Например, тот же Photoshop или PHP работают успешно и там и там. И это не две с нуля написанные программные среды, они изначально проектировались таким образом, чтобы их можно было перенести из одной операционной системы в другую.
PS MIcrosoft по большому счету ругают ровно за одно: специальное проектирование инструментов, средств, библиотек, языков программирования таким образом, чтобы портирование программ в другие операционные системы было затруднено. Т.е. на Windows, пожалуйста, обратно - фиг, проще по-новой написать. | |
|
|
|