Upload
cole-pollard
View
28
Download
0
Embed Size (px)
DESCRIPTION
プログラミング言語論. 理工学部 情報システム工学科 新田直也. 講義概要. 私の研究室: 13 号館 2 階 (13-206) 講義資料について : http://www.center.konan-u.ac.jp/~n-nitta/ 参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」 , 技術評論社 成績評価 : 主に試験 (1 回 ) ,演習,レポートで評価. 講義計画. 第 1 回 (4/6) プログラミング言語の種類と歴史 第 2 回 (4/13) 変数と型 第 3 回 (4/20) 式と評価 - PowerPoint PPT Presentation
Citation preview
プログラミング言語論理工学部
情報システム工学科新田直也
講義概要 私の研究室:
13 号館 2 階 (13-206)
講義資料について : http://www.center.konan-u.ac.jp/~n-nitta/
参考図書 :河西朝雄 : 「原理がわかる プログラムの法則」 , 技術評論社
成績評価 : 主に試験 (1 回 ) ,演習,レポートで評価
講義計画第 1 回 (4/6) プログラミング言語の種類と歴史第 2 回 (4/13) 変数と型第 3 回 (4/20) 式と評価 第 4 回 (4/27) 制御構造 ( ここらへんでレポート ?) 第 5 回 (5/11) 配列 第 6 回 (5/18) 手続き呼出し 第 7 回 (5/25) 記憶クラス 第 8 回 (6/1) 演習 第 9 回 (6/8) プリプロセッサ 第 10 回 (6/15) 分割コンパイル 第 11 回 (6/22) オブジェクト指向言語 (1) 第 12 回 (6/29) オブジェクト指向言語 (2) 第 13 回 (7/6) オブジェクト指向言語 (3) 第 14 回 (7/13) プログラミング環境 第 15 回 (7/20) 試験
ハードウェアとソフトウェア ソフトウェアがなければコンピュータは動かない.
「コンピュータ,ソフトがなければただの箱」
ソフトウェアの例: OS(Windows, Mac, UNIX…) アプリケーションソフト (Netscape , Word ,メーラー… ) 組み込みソフト ( 携帯電話, DVD プレーヤ,車,ロケット… )
ソフトウェアは誰かが作っている. 皆さんも作ることができる ( プログラミング ) .
プログラミング言語 プログラム :
コンピュータへの作業指示書 ( 命令列 ) .
プログラミング言語 : 作業指示書で用いる言語. 意味が厳密に定められている.
→解釈にあいまい性がない. コンピュータが自動で実行可能.
プログラム
プログラミング言語の種類 プログラミング言語の数は,おそらく 100 以上.
用途の違い. 技術の進歩. 趣味の違い.
プログラミング言語の分類. 低級言語と高級言語 手続き型言語と宣言型言語 コンパイラとインタプリタ ( プログラムの処理方式の
分類 )
低級言語と高級言語 低級言語 ( 低水準言語 ):
コンピュータ (CPU) を直接操作できる言語. そのコンピュータでできることはすべて指示できる. 細かい内容までいちいち指示する必要. ハードウェア毎に異なる. 例 ) 機械語,アセンブラ
高級言語 ( 高水準言語 ): より自然言語に近い ( 人間にとって理解し易い ) . 最終的に機械語に翻訳される. 例 ) Basic, C, Java…
機械語とアセンブラ 機械語は,数字 ( 命令コード ) の列.
アセンブラは,数字の列を単に見易くしたもの(ニーモニック).
機械語の命令とアセンブラの命令は 1 対 1 に対応する.
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
機械語 アセンブラ
高級言語の誕生 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