プログラミング言語は、コンピュータ サイエンスとプログラミングの基本的な側面です。プログラミング言語により、人間はコンピュータに指示を伝えることができます。プログラミング言語にはさまざまなタイプと設計があり、それぞれ異なる目的に使用されます。このレッスンでは、プログラミング言語のコア概念、その分類、および例について説明します。
プログラミング言語の本質は、コンピュータが理解できる一連の命令です。これらの命令は、コンピュータに特定のタスクを実行する方法を指示します。これを効果的に実行するために、プログラミング言語は構文 (これらの命令を構築する方法に関する規則) とセマンティクス (これらの命令の背後にある意味) を提供します。
プログラミング言語は、低水準言語、高水準言語、スクリプト言語の 3 つの主要なカテゴリに大まかに分類できます。各カテゴリは目的が異なり、さまざまなプログラミング パラダイムに適合しています。
低水準言語は、コンピューターのプロセッサが直接実行できるバイナリ命令のセットであるマシンコードに近いものです。低水準言語には、アセンブリ言語とマシン言語という 2 つの主な種類があります。
アセンブリ言語:ニーモニック コードとラベルを使用して、マシン レベルの命令を表します。マシン コードよりも人間にとって読みやすいですが、コンピューターのハードウェアに関する深い理解が必要です。
マシン言語:これは最も低いレベルの言語であり、プロセッサによって直接実行されるバイナリ コード (0 と 1) で構成されます。
例:
アセンブリ言語命令: MOV A, B (この命令はレジスタ B の内容をレジスタ A に移動します)
高水準プログラミング言語は、人間が読みやすく、コンピュータ ハードウェアに関連する複雑さの多くを抽象化するように設計されています。プログラマーは、英語のようなステートメントを使用して命令を記述し、コンパイラまたはインタープリターによってマシン コードに変換できます。高水準言語の例には、Python、Java、C++、JavaScript などがあります。
例:
Python コード: print("Hello, World!") (このステートメントは、コンソールにテキスト "Hello, World!" を出力します)
スクリプト言語は、通常はコンパイルではなく解釈される高水準プログラミング言語の一種です。タスクの自動化、Web 開発、Web サイト上の動的コンテンツの作成によく使用されます。例としては、Python (スクリプト言語としても使用)、Perl、Ruby などがあります。
例:
Python スクリプト: import os
os.listdir('.') (このスクリプトは現在のディレクトリ内のすべてのファイルとディレクトリを一覧表示します)
プログラミング パラダイムとは、プログラミング言語をその機能と推奨されるプログラミング スタイルに基づいて分類する方法です。一般的なパラダイムには、手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミング、宣言型プログラミングなどがあります。
手続き型プログラミング:データを操作する一連の手順または関数を記述することに重点を置いています。C は手続き型言語のよく知られた例です。
オブジェクト指向プログラミング (OOP):このパラダイムは、データとメソッドを含む「オブジェクト」の概念に基づいています。Java と Python は、オブジェクト指向言語の例です。
関数型プログラミング:状態を変更せずに入力を受け取り、出力を生成する関数を重視します。Haskell と Scala は関数型言語の例です。
宣言型プログラミング:制御フローを記述せずに計算のロジックに焦点を当てます。SQL (データベースのクエリ用) は宣言型言語の例です。
プログラミング言語は、初期のアセンブリ言語から現代のより抽象的な言語まで、長年にわたって大きく進化してきました。プログラミング言語の開発の傾向は、抽象度、使いやすさ、汎用性の向上に向かっているようです。
近年、データベース クエリ用の SQL や Web ページ デザイン用の HTML など、特定のタスク向けに設計されたドメイン固有言語 (DSL) が普及しています。さらに、アプリケーションの分散化とマルチスレッド化が進むにつれて、同時実行および並列プログラミングをサポートする言語機能がますます重視されるようになっています。
プログラミング言語は、コンピュータ サイエンスとソフトウェア開発の分野で不可欠なツールです。さまざまな種類の言語、そのカテゴリ、パラダイムを理解することで、特定のタスクに適した言語を選択するのに役立ちます。テクノロジが進化するにつれて、プログラミング言語は適応し続け、コンピューターと通信するためのより強力で効率的な方法を提供します。