プログラム再構成に関する 特許申請について

オブジェクト指向
プログラミング
第一回
知能情報学部
新田直也
講義概要

私の研究室:


講義資料について:


13号館2階(13-206)
http://silverbullet.is.konan-u.ac.jp/lectures/
参考図書:
河西朝雄:「原理がわかる プログラムの法則」, 技術評論社

成績評価:

主に演習(2~3回)で評価
講義計画(あくまで予定)
第1回 プログラミング言語の種類と歴史
第2回 eclipseの基本操作
第3回 eclipseのデバッグ機能
第4回 構造化プログラミングの復習
第5回 演習
第6回 構造化指向からオブジェクト指向へ(1)
第7回 構造化指向からオブジェクト指向へ(2)
第8回 カプセル化とクラス(1)
第9回 カプセル化とクラス(2)
第10回 演習
第11回 継承
第12回 多相性(1)
第13回 多相性(2)
第14回 アプリケーションフレームワーク
第15回 演習
ハードウェアとソフトウェア

ソフトウェアがなければコンピュータは動かない.
「コンピュータ,ソフトがなければただの箱」

ソフトウェアの例:




OS(Windows, Mac, UNIX…)
アプリケーションソフト(Netscape,Word,メーラー…)
組み込みソフト(携帯電話,DVDプレーヤ,車,ロケット…)
ソフトウェアは誰かが作っている.

皆さんも作ることができる(プログラミング).
プログラミング言語

プログラム:
コンピュータへの作業指示書(命令列).
プログラム

プログラミング言語:



作業指示書で用いる言語.
意味が厳密に定められている.
→解釈にあいまい性がない.
コンピュータが自動で実行可能.
プログラミング言語の種類

プログラミング言語の数は,おそらく1000以上.




用途の違い.
技術の進歩.
趣味の違い.
プログラミング言語の分類.



低級言語と高級言語
手続き型言語と宣言型言語
コンパイラとインタプリタ(プログラムの処理方式の分類)
低級言語と高級言語

低級言語(低水準言語):






コンピュータ(CPU)を直接操作できる言語.
そのコンピュータでできることはすべて指示できる.
細かい内容までいちいち指示する必要.
ハードウェア毎に異なる.
例) 機械語,アセンブラ
高級言語(高水準言語):



より自然言語に近い(人間にとって理解し易い).
最終的に機械語に翻訳される.
例) Basic, C, Java…
機械語とアセンブラ

機械語は,数字(命令コード)の列.
3E 00 CD 3C 57 32 7E A0 C3 55 39

アセンブラは,数字の列を単に見易くしたもの(ニーモニック).
機械語
3E 00
CD 3C 57
32 7E A0
C3 39 55
アセンブラ
LD A, 00h
CALL 573Ch
LD A, [A07Eh]
JP 5539h
機械語の命令とアセンブラの命令は1対1に対応する.
高級言語の誕生

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:;
goto文を
取ると…
int s = 0;
while (s <= 100) {
s++;
}
オブジェクト指向プログラミング

発祥は定かではない.



現在の主流である.




SIMULA 67 (1967年)
SmallTalk (1972年)
C++ (1983年)
Visual C++ (1992年)
Java (1995年)
データ構造と手続きをクラスとしてまとめて記述する.



プログラムの可読性の向上.
プログラムの再利用性の向上.
プログラムの可変性の向上.
本日のまとめ

プログラミング言語の種類
低級言語
機械語,アセンブラ
手続き型言語
非オブジェクト指向
言語
BASIC,C
オブジェクト指向
言語
C++,Java
高級言語
関数型言語
宣言型言語
Lisp, Scheme, ML
論理型言語
Prolog