2011-01-18 7 views
1

複雑で高性能のネイティブアプリケーションを迅速に構築するには、2つの言語では不十分だと感じています。C + +とJavaの間にはどの言語がありますか?

  • コンパイル時に型チェックを:

    は、私は、言語をしたいです。

  • メモリポインタですが、コードポインタはありません。
  • ​​種類が内部にありますが、VM上で実行する必要はありません(Javaなど)。
  • 自動メモリ管理。
  • OOPただし、純粋なOOPではありません。
  • Generics。
  • 反射操作。
  • オープンコミュニティ。

さらにもう1つ:.NETは常に理由なく除外されます。

C++で自動メモリ管理を追加するのは難しいかもしれませんが、リフレクションサポートを追加するのは簡単ではありません。

言語が行うことができればそれも良いでしょう:

  • 閉鎖
  • 末尾再帰
+6

C#ではないC#が好きですか? – GManNickG

+0

Python – Xinus

+5

が必要かもしれません。または、JavaではないJavaが必要です。 :) –

答えて

7

D、おそらく。

私はまた、(がFWIW、Monoがあります)ScalaやC#を見てお勧めしますが、彼らは「天然の標的」ビットを逃します。ほとんどのアプリケーションでは、必要な「高性能」を持つ可能性がありますが、特定のアプリケーションや機能要件に依存します。 (いずれにせよ、私は疑いの余地なく2番目の疑問を持ってこれらの言語をJava上で使用します:-)

+0

+1:また、x86ターゲットを使用し、ngenを使用するC#はネイティブコードを生成しますが、.NET Frameworkのインストールは依然として必要です。(もちろん、コードを膨らませて、大部分のユーザーが既に持っているものに帯域幅を浪費したい場合は、フレームワークをバンドルすることができます...) – Zooba

+3

@Quaternion:10年前にMicrosoftが何をしたのか、別の関連性のない製品とは異なる状況であなたを恐れていますか?ここ数カ月の間にJavaを使ってOracleが行ってきたことはあなたを心配していません。今のところ、Javaの将来の方向性が.NETのものよりも疑わしい理由がたくさんあると思います。あるいは、マイクロソフトが.NETスタックのクロスプラットフォーム互換性を制限しようとした単一のケースを私に示すことができますか?例えば、モノを弱体化しようとした単一のケース?あなたは、あなたが好きなほどの妄想の熱狂者になれるかもしれませんが、それでSOを絶対に汚染する必要がありますか? – jalf

+1

Dには、リフレクションの組み込みサポートがありません。 –

2

C++ 0xの(それが今まで出てきます)

+1

C++ 0xは面白いです、私は今それをチェックアウトします。 –

+2

これはまったく別の言語ではなく、C++の次のバージョンです。 – GManNickG

+0

しかし、自動的には反射はしません。 –

4

は、Scalaのような音。ただし、

ScalaはJVM言語です。私はあなたのポインタの懸念に対処するためにそれについて十分に知りません。

私は技術の状態を知らないけど、JavaをC++にクロスコンパイルしていた開発者も知っていた。だから、これは完璧な解決策ではありませんが、その分野のさらなる研究は興味深いかもしれません。

+1

私は+1を与えますが、 "VMのような種類のデザインはありますが、VM上で実行する必要はありません(Javaのように)。" < - 私を混乱させます:p –

+0

スカラーを使ったサンプルソフトウェアはありますか?メモ帳++のようにすばやく起動できますか? –

+0

@pst:IMHO、これは、BOOL/BOOL、__int32/long、__fastcall/__ pascalなどの間で混乱することのないVMの種類の設計です。 –

0

Visual Basic 5および6は、PコードにコンパイルするとVM非インストール基準を満たしますネイティブコードにコンパイルする場合のネイティブ要件)。また、内部的に割り当てられたオブジェクトのメモリ管理も処理しますが、固定ポインタが必要な場合は、使用状況に応じて自動処理が失われる可能性があります。あなたが要求するように、準OOPを確実に処理します。また、(C++コミュニティと比較して堅牢なソフトウェアエンジニアリングの原則に欠けていれば)かなり活発なコミュニティがありました。

しかし、要件に最も適した言語が13年前にリリースされた可能性があるということは、要件には作業が必要であることを示唆しています。

1

Googleはかなりスムーズに行くかもしれない。

0

WhiteSpace

1コンパイル時の型チェック:-)町でクールな新しい言語です。
- >静的型(実行時型は定義上静的である必要があります)

2メモリポインタですが、コードポインタはありません。
- >コードポインタはまったくありません。メモリポインタが不要です。

3内部ではVMのようなデザインですが、VM(Javaなど)上で実行する必要はありません。
- >空白の解釈子は空白で書かれています。
- >これは、VMメソッドで言語を簡単に実装できることを示しています。

4自動メモリ管理。
- >すべてのメモリが自動的に管理されます。

5 OOPですが、純粋なOOPではありません。
- >これで失敗します。その手続き

6ジェネリックス。
- >任意の幅の整数で機能するように関数を作ることができます。
- >それほど一般的です。

7反射操作。
- >それらは必要ありません。すべての型は整数です。

8オープンコミュニティ。
- >うん。彼らは助けたい人を受け入れます。

0

公開されているキーワードの拡張子を持つC++ Builderは、Reflectionで必要なものを得ることができます。 C++ Builderでは自動メモリ管理が不可能ではありません(多くの生産ソフトウェアで使用されている世代のマークアンドスイープGCを作成しました)。ネイティブC++に付属しているものもすべて手に入れます。

1

もう一度Javaを見てみることをお勧めします。それはこれらすべての機能を持ち、JITはポインタを使用すると効率的なネイティブコードを生成することができます。

OpenJDK 7のデバッグバージョンを試し、-xx:+ PrintAssemblyを使用して生成されたネイティブコードを表示することをお勧めします。

おそらくあなたには他の要件がありますが、あなたが書いたものから、それらはすべて満たされています。

ご意見:Excelsior JETはJava toネイティブコンパイラとして興味深いかもしれません。しかし、JVMはチューニングされたコードを書く方法を知っていれば非常に良い仕事をすることがわかります。

+1

良い提案! –

関連する問題