教える、ということはおこがましいというのは前提として。
実践→理論→実践→理論→・・・の繰り返し。
プログラミングの知識・経験に関わらず、以下のことを教えること。
・作業しているものが、最終的にどのような形になっていくのか。つまり製品としてどのように世に出ていくのかを語る。
・イメージを持つこと、というか持たせることを最優先にする。
・今何してるのか?を分かってもらう。先の見えない作業ほどつまらないものはない。
そもそもの計算機の歴史について、ちょっと説明。
計算をするために、色々と考えられてきた。階差機関(かいさきかん、difference engine)、解析機関(かいせききかん、analytical engine)とか。ヒューマンエラーを避けて計算をしたかったってことです。
電子式コンピュータは1940年代前後から作られ始めました。でも、このときは機械語ないしごく単純なアセンブリ言語でプログラムを記述する以外になかったので、めっちゃ難しかった。
1950年代後半、人間にも理解しやすい言語を目指す高水準言語の開発が始まり、1950年代後半からFORTRAN、COBOL、LISP、ALGOLなど初期の代表的なプログラミング言語が登場した。
コンピュータ用で世界最初の高水準言語である。
IBM 704 のプログラムを開発するにあたり、アセンブリ言語に代わるものとして
FORTRANが開発された。FORTRAN開発の歴史は、初期のコンパイラ技術の歴史そのものといえる。
FORTRANで効率的なコードを出力したいという強い要求からコンパイラによる最適化技術が大きく進歩した。
「Common Business Oriented Language」(共通事務処理用言語)。
アメリカ国防総省主導で開発した。初期の高級言語の1つ。
必ずしも専門的な知識・技能・経験などを持たない事務員や官吏らにも馴染みやすいよう工夫され、自然言語である英語に似せて作られたため、
事務処理言語として広く普及した。
bit(ビット)とは情報量の基本単位で、binary digitから由来している。
binaryは二進法、digitは桁を意味するので2進数の1桁ということになる。つまり数字の0と1のこと。
1byte(バイト)はbitを8桁並べたもので、2の8乗=256通りのデータを表す。
語源は英語のbite(日本語で一口)から由来しており、bitと混同しないようにbyteというスペルにした。
32bit版は2の32乗=4,294,967,296のアドレス空間が存在する。
1アドレスに1byteを割り当てるので、メモリを4GBまでしか認識することができない。
64bit版は2の64乗=18,446,744,073,709,551,616のアドレス空間が使えるので、その制限を気にする必要はない。
リトルエンディアン
プログラム中で意味や内容がまとまっている作業をひとつにまとめたものである。関数。
MOV | MOV x, y で、 y を x に代入する | 01 | ー |
INC | INC xで、xをインクリメントする | 12 | ー |
DEC | DEC xで、xをデクリメントする | 13 | ー |
JMP | JMP xで、x番地にジャンプする | 1F | ー |
HLT | プログラムを終了する | 00 | ー |
RET | サブルーチンから戻る | 39 | ー |
ADD | ADD r1, r2で、r2レジスタの値をr1レジスタに加算 | 0A | - |
SUB | SUB r1. r2で、r2レジスタの値をr1レジスタから減算 | 0E | - |