プログラミングにおける「移植」という言葉の使用に関する質問


11

現在、UNIXシステム用に作成されたC ++コードを変更して、Visual Studioからコンパイルすることで動作するようにしています。いくつかの組み込み関数の名前を変更する必要があり、動的配列の定義方法を変更する必要がありました。

私の質問は、このコードをUNIXからWindows / Visual Studioに「移植」しているのか、あるプログラミング言語から別のプログラミング言語に変更するとき(C ++からJavaに移植するとき)にのみ「移植」を使用しているのですか?


1
何年も前、32ビットOS / 2で実行するには16ビットOS / 2ソフトウェアを変換する必要がありました。プロジェクト中、全員がこのアクティビティを「32ビットへの移植」と呼んでいました。したがって、異なるOSや異なるハードウェアに移行することを意味する必要はなく、異なる環境に移行することすらありません。
ロボット

回答:


15

ウィキペディアと私自身の個人的な経験によると、「移植」という用語は、本来意図されていなかったプラットフォームでソフトウェアを動作させることを意味します。このプロセスでは、言語の変更が必要になる場合がありますが、常にではありません。

この用語は、一般に、同じCPUおよびオペレーティングシステムでより少ないメモリで実行するようにソフトウェアを適合させるプロセスには適用されず、異なる言語でのソースコードの書き換え(つまり、言語変換または翻訳)にも適用されません。

Javaプログラムは「ポータブル」であると人々が言うとき、さまざまな異なるマシンやオペレーティングシステムと互換性を持たせるための追加作業が少なくて済むことを意味します。


7
私が見たことから、人々がJavaプログラムはより移植性があると言うとき、それはJavaプログラムを移植する経験がなく、単にSun / Oracleの売り込みに依存していることを意味します。私の経験では、Javaの移植は実際には平均より少し難しいです(主に人々は移植性が自動化/保証されているため、注意や仕事に値しないと信じられているためです)。
ジェリーCo

2
@JerryCoffin:私はその面であまり経験がありません。私が使用したJavaプログラムはすべて、Linux、Windows、およびMacのボックスで同等に機能するWebアプリケーションでした。しかし、開発者がそのように移植性を達成しないと抗議しているにもかかわらず、経営陣がJava変換を推進した企業からの話を聞いたことがあります。
StriplingWarrior

4
@Jerry-あなたの経験がどこにあるのかはわかりませんが、私が移植したほとんどすべてのJavaプログラムは移植が簡単でした(これにはGUIとMac / Win / Linux / Solaris上のサーバー側アプリの両方が含まれます)。SunとOracleは、Javaアプリの移植が他のどの製品よりも簡単であるという点で正しいです。ほとんどの場合、再コンパイルは必要ありません(移植性でおそらく2番目に優れたポータブルC / C ++でも必要です)。私が見る最も一般的な問題は、開発者が「/」などのプラットフォーム固有のものをディレクトリ区切り文字としてハードコーディングした場合ですが、これらは修正が非常に簡単です....
mikera

@Jerry 5年間J2MEゲームをプログラミングしました。私が終わったとき、私たちはゲームの80バージョンをやっていた-すべてのプラットフォームは異なるパフォーマンス、バグなどを持っています。ソリューション?プラットフォームの標準を作成せず、J2MEアプリケーションの標準化されたテストを作成しました。二度と。
サルタン

2

オペレーティングシステム間でソフトウェアを移植できます。プロセッサアーキテクチャ間でソフトウェアを移植できます。主要なプラットフォームの変更(AppleのPPC-> x86スイッチ、またはWindows XP-> Windows Vista / 7/8)を扱う場合、通常「ポーティング」に関連付けるいくつかのアクティビティを実行する必要があります。プログラミング言語の切り替えを「移植」とは考えません。完全に書き換えるようなものです。

LinuxからWindowsへ、またはその逆にソフトウェアを移植しました。SPARCからx86(エンディアンの問題に対処するのが大好きです)および32ビットから64ビットにソフトウェアを移植しました。最近、私はJavaでプログラミングをしています...「移植」という言葉がJavalandで、おそらく主要なJVMバージョン間で意味を持っているかどうかはわかりません。


0

パブリッシャーはできるだけ多くのプラットフォーム(PC、Xbox、Playstationなど)をカバーしたいので、ポーティングはゲーム開発でますます人気が高まっています。前述のように、移植とは、元のプログラムを完全に異なるシステムで動作するように変換することを意味します。通常、ゲームメーカーはコンソールゲームをPCに変換します。


移植する必要がないように、Unityなどのクロスプラットフォーム開発ツールに依存する開発者が増えています。最初に多くのプラットフォームで実行される1つのコードベースを開発することは、「移植」とは異なります。つまり、あるプラットフォームで設計および実行され、別のプラットフォームで実行されるように変更されます。
ロボット

面白いですね!パフォーマンスとスケーラビリティにどのように影響しますか?懸念事項の1つは、コンソールがほとんどのハイエンドPCよりもかなり遅いという事実です。Unityは、より高速なシステムで最高の品質を損なうことなくこれにどのようにアプローチしますか?
ユハウンティネン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.