オブジェクト指向 言語 論 知能情報学部 新田直也
講義概要 私の研究室: 13 号館 2 階 (13-206) 講義資料について : 参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」, 技術評 論社 成績評価 : 主に試験 (1 回 ) ,演習で評価
講義計画 第 1 回 プログラミング言語の種類と歴史 第 2 回 変数と型 第 3 回 式と評価 第 4 回 制御構造 ( ここらへんでレポート ?) 第 5 回 記憶クラス 第 6 回 構造化プログラミング (1) 第 7 回 構造化プログラミング (2) 第 8 回 演習 第 9 回 オブジェクト指向言語 (1) 第 10 回 オブジェクト指向言語 (2) 第 11 回 オブジェクト指向言語 (3) 第 12 回 オブジェクト指向言語 (4) 第 13 回 オブジェクト指向言語 (5) 第 14 回 プログラミング環境 第 15 回 試験
ハードウェアとソフトウェア ソフトウェアがなければコンピュータは動かない. 「コンピュータ,ソフトがなければただの箱」 ソフトウェアの例: OS(Windows, Mac, UNIX … ) アプリケーションソフト (Netscape , Word ,メーラー … ) 組み込みソフト ( 携帯電話, DVD プレーヤ,車,ロケッ ト … ) ソフトウェアは誰かが作っている. 皆さんも作ることができる ( プログラミング ) .
プログラミング言語 プログラム : コンピュータへの作業指示書 ( 命令列 ) . プログラミング言語 : 作業指示書で用いる言語. 意味が厳密に定められている. → 解釈にあいまい性がない. コンピュータが自動で実行可能. プログラム
プログラミング言語の種類 プログラミング言語の数は,おそらく 100 以上. 用途の違い. 技術の進歩. 趣味の違い. プログラミング言語の分類. 低級言語と高級言語 手続き型言語と宣言型言語 コンパイラとインタプリタ ( プログラムの処理方式の 分類 )
低級言語と高級言語 低級言語 ( 低水準言語 ): コンピュータ (CPU) を直接操作できる言語. そのコンピュータでできることはすべて指示できる. 細かい内容までいちいち指示する必要. ハードウェア毎に異なる. 例 ) 機械語,アセンブラ 高級言語 ( 高水準言語 ): より自然言語に近い ( 人間にとって理解し易い ) . 最終的に機械語に翻訳される. 例 ) Basic, C, Java …
機械語とアセンブラ 機械語は,数字 ( 命令コード ) の列. アセンブラは,数字の列を単に見易くしたもの(ニーモ ニック). 機械語の命令とアセンブラの命令は 1 対 1 に対応する. 3E 00 CD 3C E A0 C E 00 CD 3C E A0 C LD A, 00h CALL 573Ch LD A, [A07Eh] JP 5539h 機械語 アセンブラ
高級言語の誕生 FORTRAN(1957 年 ) 科学技術計算用 ALGOL(1958 年 ) アルゴリズム用 COBOL(1959 年 ) 事務処理用 Lisp(1962 年 ) リスト処理用 手続き型言語 関数型 ( 宣言型 ) 言語
高級言語の発展 BASIC(J. ケムニー & T. カーツ, 1964 年 ) 初心者向き会話型言語 構造化プログラミング (E.W.Dijkstra) 構造化 BASIC C (D.M. リッチー, 1972 年 ) Visual Basic(1991 年 ) 人工知能 ( 論理型言語 ) PROLOG(1972 年 ) オブジェクト指向 C++(1983 年 ) Java(SUN, 1995 年 )
手続き型言語と宣言型言語 手続き型言語 処理の手順を与える. 現在の主流. コンピュータは与えられた手順通りに,処理を実行. プログラムの動作が予測しやすい反面,細かい指示を いちいち記述する必要がある. 宣言型言語 必要な知識と,処理の目的を与える. 特に,研究者の間で広まっている. コンピュータは与えられた目的を達成するように,推論 し ながら処理を実行. プログラムの動作が予測しにくく,細かい処理を記述し にくい.
手続き型と宣言型の記述例 階乗を計算する関数 fact int fact(int x) { int y = 1; while (x > 0) { y = y * x; x--; } return y; } fact(x) == if x > 0 then fact(x – 1) * x else 1
構造化プログラミング E.W.Dijkstra が提唱.どんなプログラムも go to 文を使わずに書ける ( 構造化定理 ). 構造化定理 : 任意のプログラムは,連接,判断 (if 文 ) ,前判定 反復 (while 文 ) を組み合わせて記述することがで きる. int s = 0; start: s++; if (s > 100) goto fin; goto start; fin:; int s = 0; while (s <= 100) { s++; } goto 文を 取ると …
オブジェクト指向プログラミン グ 発祥は定かではない. SIMULA 67 (1967 年 ) SmallTalk (1972 年 ) 現在の主流である. C++ (1983 年 ) Visual C++ (1992 年 ) Java (1995 年 ) データ構造と手続きをクラスとしてまとめて記述する. プログラムの可読性の向上. プログラムの再利用性の向上. プログラムのモジュラリティの向上.
プログラムの処理方式 プログラムはテキストファイルで書く ( ソースコード ) . テキストエディタで書いてもよいが,専用のエディタの方が便 利. ソースコードを処理する方式には以下のものがある. コンパイラ方式 : ソースコードを機械語に変換. ( 高速 ) インタプリタ方式 : ソースコードを解釈しながら実行. ( 低速 ) 中間コード方式 : コンパイラとインタプリタの中間. Java などで採用. ( 中速 ) 処理方式がわからないとプログラミング言語は使えな い !!
コンパイラとインタプリタ コンパイラはソースコードから機械語への変換プログラ ム. インタプリタはソースコードの解釈と実行を同時に行う プログラム. ソースコード A コンパイラ & リンカ 実行プログラム A 入力 出力 実行 インタプリタ ソースコード B 解釈 & 実行 実行プログラム A プログラム実行 のための準備
中間コード方式 機械語は,機種に依存する. (Windows のプロ グラムは, Mac では動かない ) いっぽう,インタプリタ方式は実行速度が遅い. 機種に依存しない部分だけを先にコンパイルす る. ソースコード A コンパイラ 中間コード A 入力 出力 中間コード A インタプリタ 解釈 & 実行 機種が違っても良い
今日のまとめ プログラミング言語の種 類 低級言語 高級言語 手続き型言語 宣言型言語 関数型言語 論理型言語 非オブジェクト指向 言語 オブジェクト指向 言語 機械語,アセンブラ BASIC , C C++ , Java Prolog Lisp, Scheme, ML
本日のまとめ プログラミング言語の種 類 低級言語 高級言語 手続き型言語 宣言型言語 関数型言語 論理型言語 非オブジェクト指向 言語 オブジェクト指向 言語 機械語,アセンブラ BASIC , C C++ , Java Prolog Lisp, Scheme, ML