oop言語はたくさんありますが、ガベージコレクションのような便利なものは見つかりませんでしたが、マシンコードにネイティブにコンパイルされます。Cとjava/c#の間のようなものです。私が見つけた興味深い言語の1つはValaでしたが、それはGNOMEプラットフォームに限定されており、あまり知られていません。
3 に答える
Goがおそらく最も近いです。
しかし、一体なぜネイティブにコンパイルしたいのでしょうか?
移植可能なバイトコードの JIT コンパイルは、非常に効果的な戦略であることが証明されています。実行時にネイティブ コードにコンパイルされるため (最初の数回の反復後にネイティブ コードのパフォーマンスが得られます)、プラットフォーム固有のコンパイル済みバイナリをビルドおよび管理する必要があるという問題が回避されます。
C++ について考えていますか? これは使用率が高く、ほぼすべての (主要な) プラットフォームでコンパイルできます。
ネイティブ コードにコンパイルされる oo 言語を使用する場合、elf 形式は oo をサポートしていないため、"常に" ヘッダー ファイルなどを使用する必要があります (elf にはクラス情報がありません)。外部ライブラリのクラスを使用したい場合は、プロジェクトの外部で宣言されているクラス、関数などがあるという事実を何らかの形でコンパイラに認識させる必要があります。C++ では、これはヘッダー ファイルの使用によって解決されます。これが、ネイティブ オブジェクト指向言語の大きな欠点だと思います。この問題を解決するには、予想される種類の機能 (「クラス」に対する「リンク」など) をサポートするために、elf/loader/linker にいくつかの調整を加える必要があります。ガベージ コレクションのメカニズムはネイティブ言語でも実装できますが。
次のようなユーザー空間アプリ用にそれを行う C++ ライブラリがあります。
Boehm コレクター
スマート ポインター