1. ホーム
  2. interop

[解決済み] 1つのプロジェクトで複数の言語はどのように作用するか?

2023-05-13 13:56:26

質問

1つのプロジェクトで複数の言語でプログラミングをする人がいると聞いたことがあります。それぞれの言語がどのように相互作用しているのか想像がつきません。

Javaメソッドはないんですか?

myProgram.callCfunction(parameters);

は起こらないのでしょうか、それとも私が間違っているのでしょうか?

どのように解決するのですか?

1つのプロジェクトで複数の言語を使用することは、実際にはよくあることですが、その背後にある原理は必ずしも単純ではありません。

単純なケースでは、異なる言語が同じコードにコンパイルされます。たとえば、C および C++ コードは通常、マシン アセンブラまたは C# にコンパイルされ、VB.Net は IL (.NET ランタイムによって理解される言語) にコンパイルされます。

言語/コンパイラーが異なる型システムを使用する場合は、より困難になります。整数、浮動小数点、および倍数のような基本的なデータ型は内部で表現され、文字列を表現する方法はさらに多く存在する可能性があります。異なる言語間で型を受け渡しする場合、双方が同じように型を解釈するか、そうでなければ、型が正しくマッピングされているかどうかを確認する必要があります。このような型のマッピングは マーシャリング .

異なるプログラム言語間の相互運用性の古典的な例として、(主にWindowsの世界から)以下のようなものがあります。

  • .NET プラットフォームで利用可能なさまざまな言語。これには、C#、VB.Net、J#、IronRuby、F#、XSLT、その他多くのあまり一般的でない言語が含まれます。
  • C++ または VB で書かれたネイティブ COM コンポーネントは、非常に多様な言語で使用することができます。VBScript、VB、すべての .NET 言語、Java。
  • Win32 API 関数は、.NET または VB から呼び出すことができます。
  • IPC (プロセス間通信)
  • Corba おそらく最も包括的な (そして最も複雑な) アプローチです。
  • Web サービスおよびその他のサービス指向アーキテクチャ、おそらく最も現代的なアプローチです。