C、C++、Java、Python、および js の比較 [オブジェクト指向、プロセス、インタープリタ言語、コンパイル言語、カプセル化、継承、ポリモーフィズム]

メモリ管理、該当する相違点

C

手動メモリ管理: C 言語にはセキュリティ チェック メカニズムが組み込まれていないため、メモリ リークやバッファ オーバーフローなどのセキュリティ問題が発生しやすくなります。

システムレベルのプログラミングに最適

C++

手動メモリ管理: C++ では、プログラマがメモリの割り当てや解放などのメモリを手動で管理する必要があります。これにより、メモリ リークやポインタ エラーが発生する可能性があります。

ゲームエンジンおよびシステムレベルのプログラミングに適しています

ジャワ

メモリ管理: ガベージ コレクターがメモリを自動的に管理し、メモリ リークのリスクを軽減します。

プラットフォームに依存しない: Java 仮想マシン (JVM) を通じてクロスプラットフォーム機能を実現するため、「一度書けばどこでも実行できる」機能があります。

パイソン

迅速な開発: Python は開発者の生産性を非常に重視しており、迅速なアプリケーション開発のための豊富な標準ライブラリとサードパーティ ライブラリを備えています。

js

イベント駆動型および非同期プログラミング: JavaScript は、ユーザー インターフェイス イベントとネットワーク リクエストを処理するときに、イベント駆動型および非同期プログラミング モデルを使用します。

フロントエンド + サーバー開発: JavaScript は、もともとブラウザーに対話性を追加するために使用されるスクリプト言語でしたが、現在ではサーバーサイド開発 (Node.js) にも使用できます。

実行方法による分類:実行効率

コンパイル型: c、c++

コンパイル言語では、ソース コードはまずコンパイラによってマシン コードに変換されます。この変換プロセスはプログラムが実行される前に行われ、生成された実行可能ファイルはソースコードに依存せずに複数回実行できるため、高速です。

コンパイルされた言語の実行可能ファイルはプラットフォーム固有であることが多いため、さまざまなオペレーティング システムやハードウェア アーキテクチャに適応させるために再コンパイルする必要があります。

解釈タイプ: Python、JS

ソース コードはインタプリタによって 1 行ずつ解釈され、実行されます。コード行は 1 行ずつ順番にマシンコードに変換され、ただちに実行されます。したがって、プログラムは翻訳されながら実行され、最初に独立した実行可能ファイルにコンパイルする必要がないため、速度が遅くなります。

ソリューションは通常、特定のインタプリタ上で実行されるため、対応するインタプリタが利用可能な限り、プラットフォームをまたいで実行できます。

1行ずつ実行されるのでデバッグに便利です

動的解釈タイプ (変数のタイプを宣言する必要はありません): python、js

ハイブリッド:Java

プログラムを迅速に起動して実行する必要がある場合、インタープリタが最初に有効になり、コンパイル時間を節約できます。

プログラムが一定期間実行されると、コンパイラーはより多くのコードをローカル コードにコンパイルする役割を果たし、インタープリターの中間消費を削減し、より高い実行効率を得ることができます。

メモリ制限が大きい場合は、インタープリタ実行を使用してメモリを節約し、それ以外の場合は、コンパイル済み実行を使用して効率を向上させます。

Java は、「.class」ファイル (バイトコード) にコンパイルされ、 JVM (Java 仮想マシン)によって解釈および実行できる言語です。これにより、クロスプラットフォームになり、実行時に特定のパフォーマンス上の利点が得られます

コードの構成方法に従って分類: 拡張/メンテナンス/パフォーマンス

プロセス指向: c

オブジェクト指向 (OOP): Java

カプセル化

それは、プロパティやメソッドをクラス内に置くことであり、クラスのpermission属性にアクセスすることで区別することもできるのでより安全であり、公開したくない機能は直接プライベート機構にできる。

継承

これは、以前に実装されたコードまたはメソッドを継承して使用することを意味します。これにより、多くのコードを節約でき、コード設計における継承の優れたコード特性と一致します。

ポリモーフィズム: オーバーライド

複数のクラスを継承できるため、それらを組み合わせてさまざまな機能を実現できますが、ポリモーフィズムの鍵となるのはカバレッジです。つまり、同じメソッドをさまざまな方法で実装でき、ポリモーフィズムを示します。

class Animal {
  speak() {
    console.log("Animal makes a sound");
  }
}

class Dog extends Animal {
  speak() {
    console.log("Dog barks");
  }
}

class Cat extends Animal {
  speak() {
    console.log("Cat meows");
  }
}

const dog = new Dog();
const cat = new Cat();

dog.speak(); // 输出 "Dog barks"
cat.speak(); // 输出 "Cat meows"

マルチパラダイム (プロセス、オブジェクト): C++、js、Python

スコープ: スコープの終了時に自動的に破棄されます

関数

ピース{}

js (ES6 の新しいletキーワードconst、ブロックレベルの変数定義が可能)

クラス: クラス内のメンバー変数とメンバー関数を定義します。

c を除く (手続き型)

全体的な状況

Python (グローバルステートメント)

変数プロモーション: js

おすすめ

転載: blog.csdn.net/qq_28838891/article/details/132859252