Вопрос об использовании слова «портирование» в программировании

11

В настоящее время я нахожусь в процессе изменения кода C ++, который был написан для системы UNIX, чтобы он работал путем компиляции из Visual Studio. Мне пришлось изменить имена некоторых встроенных функций, и мне пришлось изменить способ определения динамических массивов.

У меня вопрос: могу ли я сказать, что я «портирую» этот код из UNIX в Windows / Visual Studio или «портирование» используется только при переходе с одного языка программирования на другой (перенос с C ++ на Java)?

Ророноа Зоро
источник
1
Много лет назад мне пришлось конвертировать 16-битное программное обеспечение OS / 2 для работы на 32-битной OS / 2. В ходе проекта все называли это действие «портированием на 32 бита». Так что это даже не должно означать переход на другую ОС или даже другое оборудование, просто другую среду.
Gort the Robot

Ответы:

15

Согласно Википедии и моему личному опыту, термин «портирование» относится к тому, чтобы заставить программное обеспечение работать на платформе, для которой оно изначально не предназначалось. Этот процесс иногда требует смены языка, но не всегда.

Этот термин обычно не применяется к процессу адаптации программного обеспечения для работы с меньшим объемом памяти на одном и том же процессоре и операционной системе, а также не применяется к переписыванию исходного кода на другом языке (то есть преобразование языка или перевод).

Когда люди говорят, что программы на Java более «переносимы», они имеют в виду, что для их совместимости с различными машинами и операционными системами требуется меньше дополнительной работы.

StriplingWarrior
источник
7
Из того, что я видел, когда люди говорят, что Java-программы более переносимы, это означает, что им не хватает опыта в переносе Java-программ, и они просто полагаются на коммерческие предложения Sun / Oracle. По моему опыту, портирование Java на самом деле немного сложнее, чем в среднем (в основном потому, что люди были склонны считать, что переносимость является автоматической / гарантированной и, следовательно, не заслуживает внимания или работы).
Джерри Коффин
2
@JerryCoffin: у меня не было большого опыта на этом фронте. Все Java-программы, с которыми я работал, были веб-приложениями, которые одинаково хорошо работали на Linux, Windows и Mac. Но я слышал истории от фирм, руководство которых подталкивало их к конвертации Java, несмотря на протесты разработчиков, что они не добьются такой переносимости.
StriplingWarrior
4
@Jerry - не уверен, в чем заключается ваш опыт, но почти каждая портированная Java-программа была тривиальна для переноса (это включает в себя как GUI, так и серверные приложения для Mac / Win / Linux / Solaris). Sun и Oracle верны в том смысле, что Java-приложения легче переносить, чем что-либо еще - большинству даже не требуется перекомпиляция (что было бы необходимо даже для хорошо написанного переносимого C / C ++, который, вероятно, занимает второе место по переносимости). Наиболее распространенные проблемы, с которыми я сталкиваюсь, - это когда разработчики используют жестко закодированные для платформы вещи, такие как "/", в качестве разделителя каталогов, но их довольно легко исправить ....
mikera
@ Джерри Я программировал игры J2ME в течение 5 лет. Когда я заканчивал, мы делали 80 версий игры - каждая платформа имеет разную производительность, ошибки и т. Д. И т. Д. Решение? Они не создавали стандарты для платформ, они создали стандартизированное тестирование для приложений J2ME. Больше никогда.
Sulthan
2

Можно портировать программное обеспечение между операционными системами. Можно портировать программное обеспечение между процессорами. Может потребоваться выполнить некоторые действия, которые я обычно ассоциирую с «портированием» при работе с серьезными изменениями платформы (Apple PPC -> x86 switch или Windows XP -> Windows Vista / 7/8). Я бы не считал переключение языков программирования «портированием». Больше похоже на полное переписывание.

Я портировал программное обеспечение с Linux на Windows и наоборот. Я портировал программное обеспечение с SPARC на x86 (я просто обожаю иметь дело с порядком байтов) И с 32-битного на 64-битный. Сейчас я программирую на Java ... Я не уверен, что слово "перенос" имеет большое значение в Javaland, возможно, между основными версиями JVM ....

Джеймс Адам
источник
0

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

Юха Унтинен
источник
Все больше и больше разработчиков полагаются на кроссплатформенные инструменты разработки, такие как Unity, поэтому им не нужно портировать. Разработка одной кодовой базы, которая запускается на многих платформах с самого начала, - это не то же самое, что «портирование», которое подразумевает, что что-то было спроектировано и запущено на одной платформе, а затем модифицировано для работы на другой.
Gort the Robot
Это звучит интересно! Как это влияет на производительность и масштабируемость? Одна из проблем, скорее всего, связана с тем, что консоли все еще работают намного медленнее, чем большинство ПК более высокого уровня - как Unity подходит к этому, не ставя под угрозу максимальное качество в более быстрых системах?
Юха Унтинен