それは(常に)コンパイルされていますか?
ABAPは一種のバイトコードに「コンパイル」され(歴史的な理由から「ロード」と呼ばれます)、カーネル内の仮想マシンによって実行されます。これをJavaと比較できますが、大きな違いが1つあります。負荷はマシンに依存しませんが、ターゲットのマシンタイプに合わせて最適化されます。これは、複数の異なるタイプのアプリケーションサーバーがあるシステムランドスケープでは、単一のプログラムに対して複数のコンパイル済みロードがある可能性があることを意味します。これが表示されることはありません。コンパイルプロセス全体が自動的に処理されます。
タイプステム:強くタイプされていますか?型推論を使用していますか?
ジェネリック型のシステムを上にして強く型付けされています。言語に統合された完全なデータディクショナリがあることに注意してください-非常に便利です。
継承:単一/複数のインターフェースのような構造?
単一継承。複合インターフェースや実装コンポーネントの名前変更などのインターフェースがサポートされています(2つのインターフェースIF_FOOとIF_BARの両方でメソッドBAZを定義でき、両方のインターフェースを実装するクラスには2つのメソッドIF_FOO〜BAZとIF_BAR〜BAZがあります)。
コレクション:配列以外のコレクションはありますか?ジェネリックコレクションですか?リスト内包表記を使用していますか?
他のプログラミング言語で「配列」として知られているものは、実際にはABAPには存在しません。通常、代わりにいわゆる「内部テーブル」を使用します。データベースのような構造化されたメモリ内テーブルを考えてください。さまざまなモジュールに分散するコレクションクラスのアイデアがいくつかありますが、これを行うための標準的な方法は、内部テーブルを使用することです。インスタンスへの参照またはそのような参照を含む構造を表す、いわゆるテーブルタイプの行を定義します。
配列、returntypes、parametertypes、overrideingの(con / contra / in)分散はどうですか?
アレイ:上記を参照してください。オーバーライド:インターフェイスメソッドを実装するとき、またはスーパークラスメソッドをオーバーライドするときに、メソッドシグネチャを変更することはできません。パラメータに関しては、データ(またはデータ参照)とオブジェクト参照のどちらを転送するかによって異なります。一般に、ダウンキャストを明示的に実行する必要がある場合、アップキャストは暗黙的に発生する可能性があります。
例外的な処理はありますか?
はい。複数の方法-これも歴史的な理由(下位互換性)のためです。クラスベースの例外がサポートされています。
契約サポートによる組み込み設計はありますか?
私が知っていることはありません。
他のよく知られた言語に対抗するものとして注目に値するものはありますか?
沢山の物。明らかに偏った概要については、http ://www.volker-wegert.de/en/node/17およびhttp://www.volker-wegert.de/en/node/21を確認することをお勧めします:-)