1. プログラミング言語比較の基礎 MOC

2. プログラミングパラダイムによる比較 MOC

3. 型システム (Type System) による比較 MOC

4. メモリ管理 (Memory Management) による比較 MOC

5. 実行モデルとパフォーマンスによる比較 MOC

6. 構文と可読性 (Syntax and Readability) による比較 MOC

  • 構文の冗長性 vs. 簡潔性
  • 記号の多用 vs. 自然言語に近い構文
    • [[Perl/APLの記号的多さ vs. Python/COBOLの平易さ]]
  • 静的型付け言語の型宣言のスタイル比較 (int x vs. x: int)
  • インデントの強制 (Python) vs. 波括弧 (C系言語)
  • 命名規則の慣習 (キャメルケース、スネークケースなど)
  • コメントのスタイル
  • DSL (Domain-Specific Language) の埋め込みやすさ (Ruby, Scala, Lispなど)
  • 構文糖衣 (Syntactic Sugar) の多寡と比較
  • コードフォーマッタとリンターの文化

7. 標準ライブラリとエコシステムによる比較 MOC

8. Parallelism Support) による比較 MOC

  • スレッドベースの並行処理
  • プロセスベースの並行処理
  • 軽量プロセス / コルーチン / 非同期処理
    • [[Goのゴルーチン (Goroutines) とチャネル (Channels)]]
    • [[Kotlinのコルーチン (Coroutines)]]
    • [[Pythonのasync/await (asyncio)]]
    • [[JavaScriptのasync/awaitとPromise]]
    • [[C#のasyncawait-task-parallel-library|のasync/await (Task Parallel Library)]]
    • [[Erlang/Elixirのアクターモデル (Actor Model) と軽量プロセス]]
    • [[JavaのProject Loom (Virtual Threads)]]
  • データ並列性 (Data Parallelism)
    • [[SIMD命令の利用しやすさ]]
    • [[並列コレクション処理のサポート比較 (Java Streams, Scala Parallel Collections)]]
  • 共有メモリ vs. メッセージパッシング
  • 関数型プログラミングと並行性の親和性 (不変性による副作用の排除)

9. エラー処理 (Error Handling) による比較 MOC

  • 戻り値によるエラー通知
    • [[C言語のエラーコードとerrno]]
    • [[Goの多値返し (value, error)]]
  • 例外処理 (Exception Handling)
  • Option/Maybe型とResult/Either型によるエラー処理 (関数型スタイル)
    • [[RustのResult<T, E>とOption<T>]]
    • [[ScalaのOption[T]とEither[A, B]]]
    • [[HaskellのMaybe aとEither a b]]
    • [[JavaのOptional<T>]]
  • パニック (Panic) / フェイルファスト (Fail-Fast)
    • [[Goのpanic/recover]]
    • [[Rustのpanic!]]
  • エラー処理のベストプラクティスと言語ごとの慣習

10. メタプログラミング (Metaprogramming) による比較 MOC

  • メタプログラミングの定義 (コードを生成・操作するコード)
  • 実行時メタプログラミング (Runtime Metaprogramming)
    • [[リフレクション (Reflection) のサポート比較 (Java, C#-python-go|, Python, Go)]]
    • [[Pythonのデコレータ、メタクラス]]
    • [[Rubyのオープンクラス、sendメソッド]]
    • [[JavaScriptのプロキシオブジェクト]]
  • コンパイル時メタプログラミング (Compile-time Metaprogramming)
    • [[C++のテンプレートメタプログラミング (TMP)]]
    • [[Lisp系のマクロ (Macros)]] (Scheme, Common Lisp, Clojure)
    • [[Rustのマクロ (宣言的マクロ、手続き的マクロ)]]
    • [[Scalaのマクロ]]
    • [[D言語のコンパイル時関数実行(CTFE)と文字列Mixin]]
  • アノテーション (Annotations - Java) / 属性 (Attributes - C#) / デコレータ (Decorators - Python)
  • コード生成ツールの利用

11. 設計思想と哲学による比較 MOC

  • 言語の設計目標とトレードオフ
    • [[C ("Simplicity, Efficiency, Portability" - at a low level)]]
    • [[C++ ("Zero-overhead abstraction", Multi-paradigm for systems programming)]]
    • [[Java ("Write Once, Run Anywhere", Object-Oriented, Robustness)]]
    • [[Python ("Readability counts", Simplicity, Rapid development)]]
    • [[JavaScript ("Ubiquity in browsers", Event-driven, Dynamic)]]
    • [[Go ("Simplicity, Concurrency, Fast compilation, Static linking")]
    • [[Rust ("Memory safety without GC, Concurrency, Performance")]
    • [[Haskell ("Purity, Laziness, Strong static typing")]]
    • [[Lisp ("Programmable programming language", Homoiconicity)]]
  • 言語コミュニティの文化と価値観
  • 「正しいやり方 (The Right Way)」の提示度合い (Pythonの”one obvious way” vs. PerlのTIMTOWTDI)

12. 適用分野とユースケースによる比較 MOC

  • システムプログラミング (C, C++, Rust, Go, Zig)
  • Web開発 (バックエンド) (Python (Django/Flask), Java (Spring), C# (ASP.NET), Ruby (Rails), JavaScript (Node.js), Go, PHP, Elixir (Phoenix))
  • Web開発 (フロントエンド) (JavaScript, TypeScript とそのフレームワーク React, Angular, Vue, Svelte)
  • モバイルアプリ開発 (Swift (iOS), Kotlin/Java (Android), Dart (Flutter), C# (Xamarin/MAUI), JavaScript (React Native))
  • データサイエンスと機械学習 (Python (NumPy, Pandas, Scikit-learn, TensorFlow, PyTorch), R, Julia, Scala (Spark))
  • ゲーム開発 (C++, C# (Unity, Godot), Lua (scripting))
  • 組み込みシステム (C, C++, MicroPython, Rust)
  • デスクトップアプリケーション (C++, C#, Java (Swing/JavaFX), Python (Tkinter/Qt/Kivy), Swift/Objective-C)
  • DevOpsとスクリプティング (Python, Ruby, Go, Bash, PowerShell)
  • 科学技術計算 (FORTRAN, Python, Julia, MATLAB, R)
  • 金融業界 (Java, C++, Python, Scala)

13. 学習曲線と開発者体験による比較 MOC

  • 習得の容易さ
    • [[Pythonの初心者向け vs. C++/Haskellの学習曲線]]
  • ドキュメンテーションの質と量
  • エラーメッセージの分かりやすさ
  • デバッグのしやすさ
  • ツールのエコシステム (IDE, linter, formatter, debugger)
  • コミュニティサポート (Stack Overflow, forums, etc.)
  • 「楽しさ」や「生産性」の主観的評価 (開発者アンケートなど)

14. 相互運用性 (Interoperability) による比較 MOC

  • 他言語との連携のしやすさ
    • [[C/C++とのFFI (Foreign Function Interface) のサポート]] (多くの言語が提供)
    • [[JVM言語間の相互運用 (Java, Scala, Kotlin)]]
    • [[.NET言語間の相互運用 (C#, F#, VB.NET)]]
    • [[WebAssembly (Wasm) へのコンパイルターゲットとしての言語]]
  • プラットフォームサポート (OS, アーキテクチャ)
  • 標準データフォーマット (JSON, XML, Protocol Buffersなど) の扱いやすさ

15. セキュリティ機能と言語設計による比較 MOC

  • メモリ安全性
  • 型システムとセキュリティ (静的型付けによるエラー防止)
  • サンドボックス化と実行環境の分離
  • 標準ライブラリにおけるセキュアなAPIの提供 (暗号化、入力検証など)
  • 脆弱性スキャナや静的解析ツールの利用しやすさ
  • 言語レベルでの並行処理の安全性