2005/05/10 数値解析学と演習 福井 先生 計算機と電卓の違い 電卓と計算機の「計算能力」はほぼ同じ ( 中身も同じようなもの.. ) => 何が違うか ? 電卓 操作 ( Key 入力 ) を人間が行い、電卓が計算する 計算機 プログラムも計算機に入っており、その実行(計算)も計算機がやる => ノイマン型計算機 (プログラム内蔵方式) http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BB%E3%83%95%E3%82%A9%E3%83%B3%E3%83%BB%E3%83%8E%E3%82%A4%E3%83%9E%E3%83%B3 # ノイマン型以前の電子計算機もあった # => プログラムは外から与えた => プログラミングが大変だった # ex) アナログ計算機 => 「結線をする」ことがプログラミング # 世界最初の計算機は、ENIAC は、「配線形式」 プログラム内蔵方式の利点 ( EDSAC が最初のプログラム内蔵形式 ) プログラム自身を他のプログラムで操作できる # プログラムがデータになったり、データがプログラムになったりする # => 計算機がこれまで発展した源動力 # プログラミング言語で利用するコンパイラが典型的な例 # 人間の書いた(ソース)プログラムをコンパイラがデータとして扱っている # 結果として、別の(オブジェクト)プログラムが出てくる プログラムもデータとして扱える => 自動化のための種 # 少し、御利巧な仕組だと、プログラムでプログラムの改良ができる可能性が... # 1950 # [科学博物館] # 大学が契約すると、学生証だけで入れる ( 高校生以下は無料 ) # 計算機の古いものでも、せいぜい 50 年 # 生物の化石だと、何百万年前.. ( 桁が違う !! ) 電卓も計算機も、基本は、on/off の switch の組み合わせ 計算機の良いところ 単純な作業を.. 速い 間違えない # 人間の良いところ => 曖昧に物事を覚えている = 間違える可能性がある 「何となく」/「曖昧」なものを扱うのは苦手 計算機と人間は、かなり特性が違う 人間が相手なら、適当なことをいっても、なんとかしてくれる 計算機は、きちんと、細かい点を指定しないと動かない # Fortran で、 # do 10 i = 1, 10 # を # do 10 i = 1. 10 # と間違えてしまった ( ',' と '.' を書き間違えて ) .. ## cf. http://ja.wikipedia.org/wiki/FORTRAN%E3%81%AE%E8%A8%98%E8%BF%B0%E3%81%AE%E6%97%A7%E5%BC%8F%E3%81%95%E3%81%AB%E3%82%88%E3%82%8B%E9%80%B8%E8%A9%B1 # 人間なら普通、変だと思うのに、計算機は、変でも、そのまま実行してしまう。 cf. 一松信「数値計算」至文堂 「計算機は貴方の思う通りには動かない、貴方の指示した通りに動く」 => 「思う」ことと「指示」していることは違っている可能性がある !! # 「思い」 => do 10 i = 1, 10 # 「指示」 => do 10 i = 1. 10 == 計算機の構造 プロセッサ 演算(計算)を行う部分 メモリ データやプログラムの保存 SRAM/DRAM/フラッシュメモり I/O (入出力) (ハード)ディスク # 昔から「ドラムの画」を書くが.. 現実には、2.5inch の薄い円板 メモリの中身 プログラムとデータが混在 二つの区別はそのばで.. メモりにあるプログラムだけが、実行できる ディスクに入っているプログラムは直接は実行できない いったん、ディスクからメモりに Copy をつくり、そのメモりの中のプログラムが実行される => クリックしてから実行されるまでにちょっと時間がかかる理由は、この Copy (Load) の時間がかかるために 計算機はどのように、メモり上のプログラムとデータを区別するか ? IC ( Instraction Counter / PC ) とよばれる特別なレジスタが指している所にあるデータはプログラムとして扱う メモりにはそれぞれアドレスがついており、それによって、内容の指定が可能 # 結局は「見た目」上では、プログラムとデータの区別はない # IC でさせば、それをプログラムとして扱っていることになる jump ( 分岐 ) 命令は、IC の書き換えを行っているだけ 普通は一つの命令を実行すると自動的に IC が次を指す プログラムの実行 メモりに並べられた命令列 ( <= プログラム ) を、IC で指し、 順番に IC で指されている命令を実行してゆく ( IC は順次進められる ) # メモりより命令を取り出す => フェッチ # メモりよりデータを取り出す => Load (ロード) # メモりへデータを書き込む => Store (ストア) ディスクにあるプログラムを、メモりに Load するのは誰 ? => OS (オペレーティングシステム) と呼ばれる特別なプログラム ( Linux, Windows ) OS の始祖 IBM 7090 用 : Fortran モニター # cf. http://www.infonet.co.jp/ueyama/ip/history/history_ct.html Bootstrap の仕組 ( PC に電源を入れると何がおきるか ? ) # [注意] DRAM は、電源を off にすると内容が失われる !! # 福井先生が 30 年前に初めて触った時には、「手で」入れた.. # コンソールパネルにランプとスイッチがあり、スイッチを操作して、命令を一つずつ打ち込んだ まず、最初のプログラムとして IPL を手で入力 # IPL : Initial Program Loader IPL を実行すると、紙テープを詠み込み、Monitor が読み込まれる Monitor を利用して、必要な Program が読み出されて.. # IPL を何如に短くするかの競争をする.. 今は.. ? 手で入力した部分は ROM に書かれている # PC の BIOS と呼ばれる部分が、実は、ROM に書かれている。 ROM の中の IPL ( BIOS ) が、ハードディスの OS を Load する。 Program を Program が Load するということを何度か繰り返す => ブートストラップ ROM の例 任天堂のファミコンの ROM カートリッジの中身は、主に ROM が入っている。 # その ROM の中にゲームプログラムが記録されている # 解析学的には、別に話をする必要がないのだが、演習の時に必要な知識なので.. # 以前は、一年生の時のコンピュータ概論の時に教えていたので.. == [ポイント] ノイマン型コンピュータ ( プログラム内蔵方式 ) プログラムとデータは区別できない IC が指す先が、プログラム == 仮名漢字変換は大変 ( 福井先生の近くで作っている人がいた.. ) 日本語は、計算機入力に向いている 仮名を入れて、漢字を選択すればよい 中国語は、部首を入れるて選択なので、大変 大陸(中国)は、簡略化がされているのでまだまし 台湾は、旧字を使っているので更に大変 == 来週までは、講義 ( 10:30 - ) 06/24 からは演習がある ( 9:00- )