命令型プログラミング

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピュータサイエンスでは命令型プログラミングは、 プログラムの状態を変更するステートメントを使用するプログラミングパラダイムです。自然言語の命令型がコマンドを表現するのとほぼ同じように、命令型プログラムはコンピューターが実行するコマンドで構成されます。命令型プログラミングは、プログラムがどのように動作するかを記述することに焦点を当てています。

この用語は、プログラムが結果を達成する方法の詳細をすべて指定せずに、プログラムが達成すべきことに焦点を当てる宣言型プログラミングとは対照的によく使用されます。

命令型および手続き型プログラミング

手続き型プログラミングは、プログラムが1つ以上のプロシージャ(サブルーチンまたは関数とも呼ばれる)から構築される命令型プログラミングの一種です。これらの用語はしばしば同義語として使用されますが、プロシージャの使用は、命令型プログラムの表示方法とその構築方法に劇的な影響を及ぼします。状態変化がプロシージャにローカライズされるか、明示的な引数に制限されてプロシージャから返される、重い手続き型プログラミングは、構造化プログラミングの形式です。 1960年代以降、命令型プログラムの保守性と全体的な品質を向上させる手法として、構造化プログラミングとモジュラープログラミングが一般的に推進されてきました。背後にある概念オブジェクト指向プログラミングは、このアプローチを拡張しようとします。

手続き型プログラミングは、宣言型プログラミングへの一歩と見なすことができます。プログラマーは、名前、引数、および戻り値のタイプのプロシージャー(および関連するコメント)を見るだけで、特定のプロシージャーがどのように結果を達成するかについての詳細を必ずしも見なくても、特定のプロシージャーが何をすべきかを知ることができます。同時に、実行するステートメントとその実行順序を大幅に 修正するため、完全なプログラムは依然として不可欠です。

命令型プログラミングの理論的根拠と基礎

ほとんどすべてのコンピューターのハードウェア実装は不可欠です。[注1]ほぼすべてのコンピューターハードウェアは、コンピューターにネイティブであり、命令型で記述されたマシンコードを実行するように設計されています。この低レベルの観点から、プログラムの状態はメモリの内容によって定義され、ステートメントはコンピュータのネイティブマシン語での命令です。高レベルの命令型言語は、変数とより複雑なステートメントを使用しますが、それでも同じパラダイムに従います。コンピュータプログラムではなく、レシピとプロセスのチェックリスト、命令型プログラミングとスタイルが似ているおなじみの概念でもあります。各ステップは指示であり、物理的な世界が状態を保持します。命令型プログラミングの基本的な考え方は、概念的には馴染みがあり、ハードウェアに直接組み込まれているため、ほとんどのコンピューター言語は命令型です。

割り当てステートメントは、命令パラダイムで、メモリ内にある情報に対して操作を実行し、後で使用できるように結果をメモリに保存します。さらに、高レベルの命令型言語では、算術演算関数評価の組み合わせで構成される複雑な式の評価と、結果の値のメモリへの割り当てが可能です。ループステートメント(whileループdo whileループforループなど))一連のステートメントを複数回実行できるようにします。ループは、事前定義された回数含まれているステートメントを実行することも、何らかの条件が満たされるまで繰り返し実行することもできます。条件付き 分岐ステートメントでは、何らかの条件が満たされた場合にのみ、一連のステートメントを実行できます。それ以外の場合、ステートメントはスキップされ、実行シーケンスはそれらに続くステートメントから続行されます。無条件分岐ステートメントを使用すると、実行シーケンスをプログラムの別の部分に転送できます。これらには、ジャンプ(多くの言語でgotoと呼ばれる)、スイッチ、およびサブプログラム、サブルーチン、またはプロシージャコール(通常、呼び出し後に次のステートメントに戻る)が含まれます。

高水準プログラミング言語の開発の初期には、ブロックの導入により、ステートメントと宣言のグループを1つのステートメントであるかのように扱うことができるプログラムの構築が可能になりました。これにより、サブルーチンの導入とともに、複雑な構造をより単純な手続き型構造への階層分解によって表現できるようになりました。

多くの命令型プログラミング言語(FortranBASICCなど)はアセンブリ言語を抽象化したものです。[1]

命令型およびオブジェクト指向言語の歴史

初期の命令型言語は、元のコンピューターの機械語でした。これらの言語では、命令は非常に単純で、ハードウェアの実装は簡単になりましたが、複雑なプログラムの作成が妨げられていました。 1954年にInternationalBusiness Machines (IBM)でJohn Backusによって開発されたFORTRANは、複雑なプログラムの作成において機械語によって提示された障害を取り除く最初の主要なプログラミング言語でした。 FORTRANは、名前付き変数、複雑な式、サブプログラム、および命令型言語で現在一般的な他の多くの機能を可能にするコンパイル型言語でした。次の20年間で、他の多くの主要な高レベルの命令型プログラミング言語が開発されました。 1950年代後半から1960年代にかけて、ALGOLは、数学的アルゴリズムをより簡単に表現できるようにするために開発され、一部のコンピューターではオペレーティングシステムのターゲット言語としても機能します。MUMPS(1966)は、IFコマンドとELSEコマンドを互いに独立させ、$という名前の固有の変数によってのみ接続される程度まで、ステートメントをまったく持たず、純粋にコマンドに依存することにより、命令パラダイムを論理的に極端なものにしました。テスト。COBOL(1960)とBASIC(1964)はどちらも、プログラミング構文を英語に近づけるための試みでした。 1970年代に、PascalはNiklaus Wirthによって開発されCはDennisRitchieによって作成されました。彼がベル研究所で働いていた間。 WirthはModula-2Oberonの設計を続けました。米国国防総省のニーズに対応するためJean IchbiahHoneywellのチームは、言語の要件を定義する4年間のプロジェクトの後、1978年にAdaの設計を開始しました。この仕様は1983年に最初に公開され、1995年、2005年、および2012年に改訂されました。

1980年代には、オブジェクト指向プログラミングへの関心が急速に高まりました。これらの言語はスタイル上必須でしたが、オブジェクトをサポートする機能が追加されました。 20世紀の最後の20年間で、そのような言語が数多く開発されました。Smalltalk -80は、もともと1969年にAlan Kayによって考案されましたが、1980年にXerox Palo Alto Research Center(PARC)によってリリースされました。別のオブジェクト指向言語であるSimula ( 1960年代に開発された世界初のオブジェクト指向プログラミング言語と見なされている)の概念を基に、 BjarneStroustrupはCに基づくオブジェクト指向言語であるC ++を設計しました。C ++の設計は1979年に始まり、最初の実装は1983年に完了しました。1980年代後半と1990年代に、オブジェクト指向の概念を利用した注目すべき命令型言語は、1987年にLarryWallによってリリースされたPerlでした。 Python 、 1990年にGuido vanRossumによってリリースされました。 VisualBasicおよびVisualC ++Microsoft Foundation Class Library(MFC)2.0を含む)。それぞれ1991年および1993年にMicrosoftからリリースされました。 PHP 、 1994年にRasmusLerdorfによってリリースされました。 JavaJames GoslingSun Microsystems)1995年、Brendan EichNetscape)によるJavaScriptとまつもとゆきひろ「Matz」によるRubyは、どちらも1995年にリリースされました。Microsoftの.NET Framework(2002)は、主要なターゲット言語であるVBと同様に、そのコアに不可欠です。その上で実行されるNETC#ただし、関数型言語であるMicrosoftのF#もその上で実行されます。


も参照してください

メモ

  1. ^ 再構成可能コンピューティングは注目すべき例外です。

参考文献

  1. ^ ブルース・エッケル(2006)。Javaで考えるピアソン教育p。24. ISBN 978-0-13-187248-6
  • プラット、テレンスW.、マービンV.ツェルコウィッツ。プログラミング言語:設計と実装、第3版。ニュージャージー州エングルウッドクリフ:プレンティスホール、1996年。
  • セベスタ、ロバートW.プログラミング言語の概念、第3版。マサチューセッツ州レディング:Addison-Wesley Publishing Company、1996年。
もともとは、 GNU Free DocumentationLicenseの下でライセンスされているNupediaのStanSeibertによる記事「命令型プログラミング」に基づいています。