9

これはおそらく非常に単純な質問ですが、このクラスの言語を表す専門用語は何ですか?

それらは、JVM または CLR を介して送信される「中間」アセンブリ タイプ言語を使用します。どちらもオブジェクト指向であり、Java 仮想マシンや共通言語ランタイムなどの仲介者に依存して、ネイティブのマシン言語にコンパイルされます。

Asm/C/C++ とは異なり、ネイティブ マシン言語に直接コンパイルされず、集中的なメモリ割り当ての知識が必要です。どちらもガベージ コレクションを使用します。

Java と C# を C++ から分離する専門用語はありますか?

4

9 に答える 9

27

C++ と .NET/Java の主な違いは、不要になったメモリの自動再利用です。これはガベージ コレクションと呼ばれます。このプロパティでは、マネージドプラットフォームと呼ばれます。

Java/.NET はどちらも、バイトコードからネイティブ コードへのコンパイルをぎりぎりまで遅らせます。このプロパティは、JIT コンパイル(ジャスト イン タイム) として知られています。

C#/Java/C++ 言語は、命令型のオブジェクト指向言語として知られています。

.NET と Java の両方の型システムでは、検証可能なメソッドの呼び出しのみが許可されます。このプロパティの場合、それらはstatically typedとして知られています。

C#/Java/C++ はチューリング完全です。つまり、実際には、あらゆる計算を生成できます。

于 2008-10-14T07:58:25.007 に答える
5

これらの言語は、一般に「管理された」言語と呼ばれます。

于 2008-10-14T08:00:23.817 に答える
4

これらは、静的に型指定されたマネージ プログラミング言語と呼ばれることもあります。

于 2008-10-14T09:07:00.843 に答える
4

中間表現は、言語自体よりもランタイム システムのプロパティです。これらのタイプのシステムは、しばしばバイトコードシステムと呼ばれます。

于 2008-10-14T07:59:21.323 に答える
3

Microsoft が .NET を発表して以来、「マネージド」という言葉を使用して、少なくとも論理的には仮想マシン上で実行される言語と生の金属上で実行される言語を区別するようになりました。この用語はほとんど普及しています。

于 2008-10-14T08:00:35.297 に答える
1

「マネージド」、「メモリ マネージド」、または「ガベージ コレクション」はすべて、メモリの割り当て/収集方法に関してそれらを区別するための受け入れ可能な用語ですが、最初のものがおそらく今日最も一般的です。

中間言語 (IL) へのコンパイルに関しては、それらを実行する仮想マシン (VM) がどのように機能するかによって異なります。.NET では、共通言語ランタイム (CLR) VM が、実行直前に IL をマシン コードにコンパイルします。これは、ジャスト イン タイム コンパイル、または「JIT コンパイル」として知られています。他の環境では、コードを実際にマシン コードにコンパイルするのではなく、単純に解釈します。これは非常に遅く、「解釈済み」言語として知られています。

于 2008-10-14T07:58:49.170 に答える
1

管理された言語になると思います。

于 2008-10-14T08:00:03.550 に答える
0

それらが仮想マシン上で実行されるという事実について話している場合は、JIT コンパイル (Just-In-Time) またはバイトコード (論理的に 1/2 コンパイルされ、1/2 解釈) と見なされます。

ガベージ コレクションについて話している場合は、単にガベージ コレクションと呼ばれます。

ここで重要な点は、2 つの属性が分離されていることです。ガベージ コレクションされた言語には仮想マシンがなくてもよく、仮想マシン ベースの言語にはガベージ コレクションが必要ではありません。

例として、Python はガベージ コレクションを備えたインタープリター言語ですが、仮想マシン上での実行とは対照的にインタープリターされます。

于 2008-10-14T09:01:16.953 に答える
0

中間の「バイトコード」表現は、単なる実装の詳細です。C++ は、たとえば ANDF (Architecture Neutral Distribution Format) にコンパイルできます。Pコードはかつて非常に人気がありました。一方、JavaCard は一般に、中間形式を実行する機能なしで配布されており、マシン コードへの直接の Java コンパイラが存在します。

C++ はガベージ コレクションの対象になる可能性があります。これは、C++0x ではより明示的である必要があります。リアルタイム Java では、リアルタイム スレッドのメモリ使用が制限されています。

したがって、Java/C# 型言語の用語: Java 方言。

(Java は Sun Microsystems の商標であり、JavaScript も同様です。)

于 2008-10-14T13:19:27.463 に答える