さまざまな種類のコンピュータープログラミングとは何ですか?
コンピュータプログラミングの定義が非常に広く、プログラムの使用が非常に広範であることを考えると、実際には多くのタイプのコンピュータプログラミングがあり、しばしばまったく異なる方法で定義されています。 最も基本的なタイプのコンピュータープログラミングは、プログラマーが使用するプログラミング言語(C、Lisp、Java®など)によって分類できます。 他の状況では、コンピュータープログラミングにはシステムとアプリケーションの2種類しかありません。 ネットワークプログラミング、Webベースのプログラミング、デスクトッププログラミングにはいくつかの違いがあります。 組み込みシステムプログラミング、リアルタイムシステム(RTS)プログラミング、データベースプログラミングなど、さまざまな種類のコンピュータープログラミングをターゲットプラットフォームごとに分離できる場合があります。
多くの場合、さまざまな種類のコンピュータープログラミングは、ソフトウェアの作成に使用される言語によって定義されます。 利用可能な言語は多数ありますが、Cなどの構造化言語またはJava®などのオブジェクト指向言語のいずれかに広く分類され、どちらもさまざまなタスクで専門家によって一般的に使用されています。 言語は、前述のように命令型でも、コマンドがコマンドの代わりに一連の関数で構成されるプログラムであるLispのように関数型でもかまいません。 一部のコンピュータープログラミングは、純粋にスクリプト言語を使用して行われます。スクリプト言語は、別のフレームワーク内で操作を実行する人間が読めるドキュメントとして解釈されます。
伝統的に、2種類のコンピュータープログラミングには区別があります。 1つ目はアプリケーションプログラミングで、一部の機能に直接使用できるプログラムの作成を伴います。 あるいは、オペレーティングシステムなど、アプリケーションを実行できるハードウェアまたはフレームワークを管理するためのプログラムを設計しようとするシステムプログラミングがあります。
ネットワーキングとリモート通信のテクノロジーがより広く使用されるようになると、特定の種類のコンピュータープログラミングが、コンピュータープログラミングの他の分野と区別され始めました。 ネットワークプログラミングは、ネットワークプロトコルとハードウェアインターフェイスに関する必要な知識があるため、異なると見なされます。 Webベースのアプリケーションまたはサーバーのプログラミングには、セキュリティ制限、インターネットプロトコル、独自のプログラミング設計パターンに関する特定の知識が必要です。
特定のフィールドまたはターゲットハードウェアに固有のコンピュータープログラミングの種類もあります。 データベースプログラミングでは、特別なクエリ言語、スクリプト、その他の要素を使用して、特定のデータベースインフラストラクチャとやり取りします。 ゲームプログラミングには、グラフィックスハードウェア、グラフィックスアルゴリズム、および場合によっては特別な最適化技術の知識が含まれます。 ハンドヘルドデバイスやコンソールなどの組み込みシステムには、独自のハードウェア仕様とベンダーライブラリの知識が含まれます。 より高度なリアルタイムシステムプログラミングには、原子力発電所または軍用ハードウェア向けのフェイルセーフ制御ソフトウェアの作成が含まれます。