あなたが探している概念は表現力と呼ばれ、マティアス・フェライゼンは数学的に厳密な定義を持っています:
「プログラミング言語の表現力について」
www.ccs.neu.edu/scheme/pubs/scp91-felleisen.ps.gz(Postscriptバージョン)
アイデアの背後にある直観は、2つの異なる言語(たとえば、言語XのプログラムAと言語YのプログラムB)の2つの同等のプログラムがあり、Bにグローバルな変更を必要とするAにローカルな変更を加える場合、XはYよりも表現力があります。
Felleisenが提供する1つの例は割り当てです。Schemeプログラミング言語では、割り当て演算子を削除してもチューリング完全言語を使用できます。ただし、このような制限された言語では、割り当てが許可された場合にローカライズされる機能を追加するには、割り当てなしでプログラムをグローバルに変更する必要があります。
私の議論はいくつかの詳細を単純化したので、完全な説明については論文自体を読むべきです。
他の質問に答えるには、Javaクラスに新しいクラスを追加できるため、Javaはアセンブリよりも表現力が高いと言うことができます。そして、プログラムの他の部分にグローバルな変更を加えずにメソッドを呼び出すことで、ポリモーフィズムの利点を得ることができます。例外処理は、Javaがアセンブリよりも表現力が高いもう1つの例throw
です。スタックを上に制御を移すには、1つのステートメントを記述するだけです。より基本的なレベルでcase
は、aの先頭近くに新しいステートメントを追加することもできswitch
ます。手動でジャンプオフセットを再計算することを心配する必要はありません。