Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перенос программ
 
 автор: dump   (05.01.2012 в 09:47)   письмо автору
 
 

Насколько сложно перенести программу на разные операционные системы имея исходный код? Java не в счёт, например с C - насколько это сложно сделать?

  Ответить  
 
 автор: Кузнецов М.В.   (05.01.2012 в 10:13)   письмо автору
 
   для: dump   (05.01.2012 в 09:47)
 

Да вот пёс его знает. Тут же от человека в основном зависит всё. От его уровня квалификации. Кому то сложно, а для кого-то это рутинная работа. Я когда-то с Алгола-68 переводил программу, которая примерно в том же году, когда создался язык и была писана.
Правда, я тут не совсем понимаю уместность слова переводить. Если знаешь, что программа делает, проще заново написать. А на код смотреть, только чтобы видеть алгоритм. Опять же, ели он удачен. И подсмотреть удачные конструкции, если таковые имеются.
Опять же. Какие ОС? Т.е. куда чего переводить-то? Есть к примеру такой язык Softlogic S3, на котором программируются, к примеру, сети QNX контроллеров. Все компоненты ST-S3 связаны с интегрированной средой разработки S3-IDE, которая многоплатформенная.
Мне лично эта технологическая связка приятна тем, что на ней написана АСУ предприятия "Немировский спиртозавод" и "Козловский спиртозавод" :) Ну и, конечно, система диспетчеризации подстанций компании "Судостроительный завод "Залив".

  Ответить  
 
 автор: cheops   (05.01.2012 в 14:00)   письмо автору
 
   для: dump   (05.01.2012 в 09:47)
 

Зависит от характера программы, количества системных вызовов, как организован код. Вообще языки высокого уровня создавались именно для того, чтобы проблемы переноса вообще не существовала - код на любых операционных системах выглядит одинаково. Все было хорошо, пока операционными системами не стала заниматься Microsoft - они специально так организовывают код и языки, чтобы они не были совместимыми со всем остальным. Конечно, хороший разработчик постарается написать обертки для системных вещей и перенос будет заключаться только в переписывании этих оберток. Однако GUI-программы сильны именно GUI и для них так запросто обертки не напишешь... так и будешь использовать средства операционной системы, а они очень разные. В общем сложно сказать, может вообще ничего делать не придется, а может будет проще переписать программу заново.

Если речь о чистом C, то очень просто.

  Ответить  
 
 автор: Commander   (08.01.2012 в 14:56)   письмо автору
 
   для: dump   (05.01.2012 в 09:47)
 

Смотря на какие системы. Перенести с Windows на Linux практически нереально. Допустим, для того, чтобы запустить другую программу, в Windows необходимо вызвать системную функцию CreateProcess(), а в Linux такой функции нет, нужно использовать функцию fork(), которая расщепляет текущий процесс на две части. Естественно, функции принципиально несовместимы.

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

  Ответить  
 
 автор: cheops   (08.01.2012 в 15:04)   письмо автору
 
   для: Commander   (08.01.2012 в 14:56)
 

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

>Для того, чтобы отрисовать окно, никто не будет напрямую писать в видеобуфер
Здесь ровно тоже самое, есть библиотека OpenGL, поддерживаемая на уровне видео-карт, она одинаковая и для Windows и для Linux и для любой другой операционной системы.

Очень много зависит от программы и её разработчиков. Например, тот же Photoshop или PHP работают успешно и там и там. И это не две с нуля написанные программные среды, они изначально проектировались таким образом, чтобы их можно было перенести из одной операционной системы в другую.

PS MIcrosoft по большому счету ругают ровно за одно: специальное проектирование инструментов, средств, библиотек, языков программирования таким образом, чтобы портирование программ в другие операционные системы было затруднено. Т.е. на Windows, пожалуйста, обратно - фиг, проще по-новой написать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования