プログラム言語 プログラム言語の体系を学ぶ
本時の目的 コンピュータとプログラム プログラム言語の特徴 インタプリタ言語とコンパイラ言語 実行可能プログラム
コンピュータの歴史とプログラム ハードウェア計算機(ENIAC) プログラム内蔵方式の計算機(EDSAC) ハードウェア プログラム(ソフトウェア) OS 処理プログラム ENIAC(Electronic numerical Integrator and Computer)には17,468本もの真空管素子、1500個のリレー、17万の抵抗、1万のコンデンサ、6千のスイッチ、4千のネオン管、数百のダイヤルが使われています。 総重量は30トンで、高さ2.5メートル、奥行き0.9メートル、幅24メートルで、消費電力は140Kw、放出する熱を冷やすために24馬力の換気システムを必要とするという、非常に大規模な装置でした。 当時の新聞によれば、人間の計算手にやらせれば100年はかかると見積もられるこの問題を、ENIACは2時間で解いたそうです。 ENIACは、一般には、弾道計算のために開発されたということになっています。 実際、開発の資金を提供した陸軍は、弾道計算のために資金提供したのでした。 しかし、ENIACの構想を考え出したモークリーは、趣味の気象予測のために強力な計算機を必要としていたようです。 完成して最初のテストは、弾道計算ではありませんでした。加減乗除、正弦余弦関数の表を作る簡単なプログラムと一緒にテストされたのは、水爆の爆縮時の衝撃波の計算でした。1955年10月2日、ENIAC の電源は落とされました。ENIAC の役目は終わったのです。 EDSAC は 1949年、ケンブリッジ大学のウィルクス (Maurice Vincent Wilkes) によって作られた、最初のコンピュータです。 現在の私たちは、128Mバイトのメモリなどを、 お小遣いの範囲の価格 で買うことが出来ます。 左は手のひらに乗る小さなメモリカードです。 上の写真の EDSAC の遅延線メモリと比べると、記憶容量は約 123,000倍、アクセス時間は 1/10,000,000、 重量は、おそらく 1/10,000 程度でしょう。 これらを、単純に性能の向上率として全部掛け合わせる (あるいは、割る) と、 1.2京 (けい: 京 = 10 16)倍にもなってしまいます。 価格も含めれば、1,000京倍くらいになるかも知れません。 余談ですが、先日、256Mバイトのメモリを約1万4千円で購入しました。 ビット単価は 0.000007円 です。 20数年前、私がコンピュータをいじくり始めた頃は、1kビットのメモリを 1,000円 で買いましたので、 ビット単価は 1円 だったわけです。 この 256Mバイトのメモリは、当時の価格なら、なんと、20億円もしたことになります !! ABC は、1942年にアイオワ州立大学のアタナソフ (John Vincent Atanasoff) と ベリー (Clifford Edward Berry) によって作られた最初の電子計算機です。 専用ソフト(アプリケーション) 汎用ソフト(プログラム言語で記述)
体系図 機 械 語 低水準言語 アセンブラ言語 プログラム言語 インタプリタ言語 高水準言語 コンパイラ言語
低水準言語 (a)機械語 機械が理解できる2進数0と1で表す言語 (b)アセンブラ言語 機械語を記号化した言語 ニーモニックコード 機械が理解できる2進数0と1で表す言語 (b)アセンブラ言語 機械語を記号化した言語 ニーモニックコード 低水準言語 各コンピュータにはそれ独自の命令体系がある。コンピュータの命令体系そのものに相当するか,あるいはそれを強く意識した言語。 機械語 コンピュータが直接理解できる言語で0と1の二つの数字の並びだけで構成。処理速度は早い。 アセンブラ言語 2進数の機械語命令を人間にわかりやすい表記に対応させたプログラム言語。実行速度は速いが開発効率が低い。 ニーモニックコード コンピュータが理解しやすい言語
高水準言語 オブジェクトプログラム コンパイラ (a)コンパイラ言語 ソースプログラムを機械語に変換し、実行プログラムを 作成する言語 ソースプログラムを機械語に変換し、実行プログラムを 作成する言語 ※ソースプログラム・・・プログラム言語で記述したプログラム 高水準言語 英語表現に近く人間が扱いやすい命令コードを持つプログラム言語。コンピュータの命令体系に依存する低水準言語に対して、それとは独立した言語。 ソースプログラム そのままでは実行できなくコンパイラなどを用いてオブジェクトコード(コンピュータが理解できる形式)に変換してから実行する。 コンパイラ言語 高水準言語で記述されたソースプログラム機械語のオブジェクトプログラムに変換する。(コンパイラ) コンパイラ言語で記述したプログラムをソースプログラムといい、このソースプログラムをコンパイラという翻訳プログラムによって翻訳処理する。それによってオブジェクトプログラムが機械語になりコンピュータが実行できる。 オブジェクトプログラム 翻訳処理によって作成された機械語コードのプログラム インタプリタ言語 命令を1命令ごとに機械語に変換しながら実行される。そのため処理速度はコンパイラより遅い。反面ソースプログラムが直接実行できるのでプログラム修正が簡単。間違いがあると教えてくれる対話形言語である。 プログラム言語を用いてプログラム開発を行う際に、翻訳の作業をするソフトウェアを言語プロセッサという。 (b)インタプリタ言語 ・命令を解釈しながら実行させる言語 ・間違いがあったら教えてくれる。 対話形言語
これらプログラム言語を用いてプログラム開発を行う際に、翻訳の作業をするソフトウェアを 言語プロセッサ という。
プログラムの実行手順 ※エディタ・・・プログラムを作成・編集 するソフトウェア ※ロードモジュール・・・リンカされたプログラム ① ※エディタ・・・プログラムを作成・編集 するソフトウェア プログラムの実行手順 ※ロードモジュール・・・リンカされたプログラム ① ①エディタによる作成 ソースプログラム ②オブジェクトプログラムの生成 ② ③翻訳されて機械語になる コンパイル ③ ⑤ ④ロードモジュールの作成 オブジェクトプログラム ロードモジュール ⑤実行可能プログラム ④ ①ソースプログラムの作成。 ②コンパイル(オブジェクトプログラムの生成):ソースプログラムはコンパイラを用いて機械語のオブジェクトプログラム に翻訳する。 ③オブジェクトプログラム:このままでは実行できない。 ④連係編集(リンカ):オブジェクトプログラムを一つの実行可能なプログラムにすること。プログラムの実行が可能になる。 ⑤ロードモジュール:連係編集されたプログラムをロードモジュールという。(ロードは荷物を積むという意。)プログラム を主記憶装置に入れること。ロードモジュールは処理手順に従いデータの処理を行う。 ⑥ロード(プログラムの実行):ローダと呼ばれるプログラムがロードモジュールを主記憶装置に読み込ませてから実行され る。 ⑥ ⑥主記憶装置への格納 連係編集(リンカ) ローディング ⑦ ⑦処理結果の出力 実行
主なプログラミング言語 言 語 特 徴 C 低級言語 データの扱いを0と1によって行う言語。 高級言語 言 語 特 徴 低級言語 データの扱いを0と1によって行う言語。 機械語を少し分かりやすくしたもの。ニーモニックコードを使い(アセンブル)、機械語に翻訳する。 高級言語 インタプリタを使い1行ずつ機械語に翻訳する。初心者向け。 科学技術計算用に開発されたもの。大学や研究所などで使用。 事務計算処理のため開発されたもの。 構造化プログラミング用に開発されたもの。教育用。 OSのUNIX用に開発されたもの。関数を主体。 Cの拡張であるC++を元にして開発されたもの。 低級言語 機械語 データの扱いを0と1によって行う言語。 アセンブラ言語 機械語を少し分かりやすくしたもの。ニーモニックコードを使い(アセンブル)、機械語に翻訳する。 高級言語 BASIC インタプリタを使い1行ずつ機械語に翻訳する。初心者向け。 FORTRAN 科学技術計算用に開発されたもの。大学や研究所などで使用。 COBOL 事務計算処理のため開発されたもの。 PASCAL 構造化プログラミング用に開発されたもの。教育用。 C OSのUNIX用に開発されたもの。関数を主体。 Java Cの拡張であるC++を元にして開発されたもの。 言語 概要 低級言語 機械語 データの扱いを0と1によって行う言語。 アセンブラ言語 機械語を少し分かりやすくしたもの。ニーモニックコードを使い(アセンブル)、機械語に翻訳する。 高級言語 BASIC インタプリタを使い1行ずつ機械語に翻訳する。初心者向け。 FORTRAN 科学技術計算用に開発されたもの。大学や研究所などで使用。 COBOL 事務計算処理のため開発されたもの。 PASCAL 構造化プログラミング用に開発されたもの。教育用。 C OSのUNIX用に開発されたもの。関数を主体。 Java Cの拡張であるC++を元にして開発されたもの。 主なプログラミング言語
問題を解いてみよう。 配布されたプリントの穴埋め問題を解く。時間内に完成しなかった生徒は本日中に解き、豆塚のところに持参すること。
体系図 機 械 語 低水準言語 アセンブラ言語 プログラム言語 インタプリタ言語 高水準言語 コンパイラ言語