本文へ移動

コンピュータプログラム:定義、構成要素、歴史、代表的な例

コンピュータプログラムの定義、記述・保存方法、主な種類と例、歴史、開発手法、実行の仕組み、セキュリティ上の懸念を解説します。

コンピュータプログラムとは、コンピューティングデバイスにタスクの実行方法を指示する、構造化された命令の集合である。実用上は、人間が作成でき、機械が実行できる形式で記述された文またはコマンドの連なりである。プログラムには、単一の計算を行う簡単なスクリプトから、ハードウェア資源、ユーザーインターフェース、データ保存、ネットワーク通信を統括する複雑なシステムまである。現代のコンピューティングでは、プログラム、アプリケーション、サービスの区別はしばしば曖昧であり、多くのプログラムはより大きなシステムの構成要素となっている。

画像ギャラリー

10 画像

基本的な特性

プログラムは、相補的な二つの形態で存在する。すなわち、人間が読めるソースコードと、機械が読める表現である。ソースコードは、プログラミング言語で記述される。たとえばBASIC、C、Javaなどであり、アルゴリズム、制御の流れ、データ構造を表現する。コンパイラやインタプリタなどのツールは、このソースコードを変換または実行し、プロセッサが指定された処理を行えるようにする。実行される表現は、ネイティブな機械語の場合もあれば、仮想マシン上で実行されるバイトコードの場合もある。

種類と代表的な例

  • オペレーティングシステムは、ハードウェアを管理し、ほかのプログラムが利用するサービスを提供する。
  • ウェブブラウザは、FirefoxやChromeなどに代表され、インターネット上のコンテンツを表示し、ウェブアプリケーションを動作させる基盤となる。
  • オフィススイートは、文書作成、表計算、プレゼンテーションのためのアプリケーションをまとめて提供する。
  • このほか、モバイルアプリ、ビデオゲーム、科学シミュレーション用ソフトウェア、ルーターや家電製品などの機器に組み込まれた制御コードがある。

歴史とストアドプログラム方式

コンピュータがデータに用いるのと同じメモリに命令を保存できるという考え方、すなわちストアドプログラム方式は、現代のソフトウェアの基盤となった。ジョン・フォン・ノイマンなどの初期の理論家・設計者は、20世紀半ばにプログラム構成に関する重要な原理を明確にした。第二次世界大戦後にこれらの考え方を実装したハードウェア計画は、その後のアーキテクチャとソフトウェア開発の慣行に影響を与えた。時代とともに、プログラミングは機械語を直接記述する手法から、より高水準の抽象化と充実した開発環境へと移行した。

プログラムの作成と実行

プログラムは通常、永続ストレージ上のファイルとして保存され、実行時にメモリへ読み込まれる。実行中、コンピュータは命令列を取り出して処理する。一部の環境ではインタプリタが命令を直接読み取り実行し、別の環境ではコンパイル済みの機械命令が実行される。プログラムはしばしば、ライブラリ、ランタイム環境、またはオペレーティングシステムが提供するサービスに依存し、ユーザー、ほかのプログラム、ネットワーク資源と相互作用する場合がある。

プログラミングの手法と実践

ソフトウェア開発には、アルゴリズムの設計、ソースコードの記述、テスト、保守が含まれる。代表的なパラダイムには、手続き型、オブジェクト指向、関数型プログラミングがあり、それぞれコードの構造化や振る舞いの把握に異なる方法を提供する。現代のチームは、作業を調整し品質を維持するため、バージョン管理、自動テスト、継続的インテグレーション、パッケージ管理を利用する。プログラマまたはソフトウェアエンジニアの役割には、設計、実装、長期的な保守が含まれる。

セキュリティ、不正利用、ライセンス

プログラムは有益にも有害にもなり得る。悪意のあるソフトウェアであるマルウェアには、データの窃取、破壊、アクセス不能化を目的とするスパイウェア、ウイルス、ランサムウェアなどが含まれる。ソフトウェアは異なるライセンスモデルでも公開される。プロプライエタリ、オープンソース、パーミッシブライセンスは、プログラムの利用、改変、配布の方法に影響する。適切なセキュリティ対策、パッチ適用、コードレビューは、脆弱性へのさらされ方を減らす。

特別な利用環境と今後の方向性

プログラムは、パーソナルコンピュータ、サーバー、モバイル機器、組み込みコントローラ、クラウドプラットフォームなど、多様な環境で動作する。組み込みソフトウェアには厳しい性能と信頼性の要件が課されることが多く、クラウドサービスでは拡張性と分散設計が重視される。新たな動向としては、管理されたランタイム環境、領域固有言語、重要なコードに対する形式検証の利用拡大、および開発者の生産性を高めるツールの開発が挙げられる。

関連する概念ページと例:命令、コンピュータ、フォン・ノイマン、起源、オペレーティングシステム、ブラウザ、Firefox、Chrome、インターネット、オフィススイート、文書、表計算、ファイル、プログラマ、二進数、機械語、言語、BASIC、C、Java、コンパイラ、マルウェア、スパイウェア、ウイルス、ランサムウェア。

関連項目

著者

AlegsaOnline.com コンピュータプログラム:定義、構成要素、歴史、代表的な例

URL: https://ja.alegsaonline.com/art/22329

共有