Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング言語論 理工学部 情報システム工学科 新田直也.

Similar presentations


Presentation on theme: "プログラミング言語論 理工学部 情報システム工学科 新田直也."— Presentation transcript:

1 プログラミング言語論 理工学部 情報システム工学科 新田直也

2 講義概要 私の研究室: 講義資料について: 参考図書: 河西朝雄:「原理がわかる プログラムの法則」, 技術評論社 成績評価:
13号館2階(13-206) 講義資料について: 参考図書: 河西朝雄:「原理がわかる プログラムの法則」, 技術評論社 成績評価: 主に試験(1回),演習,レポートで評価

3 講義計画 第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) 試験

4 ハードウェアとソフトウェア ソフトウェアがなければコンピュータは動かない. 「コンピュータ,ソフトがなければただの箱」 ソフトウェアの例:
OS(Windows, Mac, UNIX…) アプリケーションソフト(Netscape,Word,メーラー…) 組み込みソフト(携帯電話,DVDプレーヤ,車,ロケット…) ソフトウェアは誰かが作っている. 皆さんも作ることができる(プログラミング).

5 プログラミング言語 プログラム: コンピュータへの作業指示書(命令列). プログラミング言語: 作業指示書で用いる言語.
意味が厳密に定められている. →解釈にあいまい性がない. コンピュータが自動で実行可能. プログラム

6 プログラミング言語の種類 プログラミング言語の数は,おそらく100以上. プログラミング言語の分類. 用途の違い. 技術の進歩.
趣味の違い. プログラミング言語の分類. 低級言語と高級言語 手続き型言語と宣言型言語 コンパイラとインタプリタ(プログラムの処理方式の分類)

7 低級言語と高級言語 低級言語(低水準言語): 高級言語(高水準言語): コンピュータ(CPU)を直接操作できる言語.
そのコンピュータでできることはすべて指示できる. 細かい内容までいちいち指示する必要. ハードウェア毎に異なる. 例) 機械語,アセンブラ 高級言語(高水準言語): より自然言語に近い(人間にとって理解し易い). 最終的に機械語に翻訳される. 例) Basic, C, Java…

8 機械語とアセンブラ 機械語は,数字(命令コード)の列.
アセンブラは,数字の列を単に見易くしたもの(ニーモニック). 機械語の命令とアセンブラの命令は1対1に対応する. 3E 00 CD 3C E A0 C 機械語 アセンブラ 3E 00 CD 3C 57 32 7E A0 C LD A, 00h CALL 573Ch LD A, [A07Eh] JP 5539h

9 高級言語の誕生 FORTRAN(1957年) ALGOL(1958年) COBOL(1959年) Lisp(1962年) 科学技術計算用
アルゴリズム用 COBOL(1959年) 事務処理用 Lisp(1962年) リスト処理用 手続き型言語 関数型(宣言型)言語

10 高級言語の発展 BASIC(J. ケムニー & T. カーツ, 1964年) 構造化プログラミング(E.W.Dijkstra)
初心者向き会話型言語 構造化プログラミング(E.W.Dijkstra) 構造化BASIC C (D.M.リッチー, 1972年) Visual Basic(1991年) 人工知能(論理型言語) PROLOG(1972年) オブジェクト指向 C++(1983年) Java(SUN, 1995年)

11 手続き型言語と宣言型言語 手続き型言語 宣言型言語 処理の手順を与える. 現在の主流. コンピュータは与えられた手順通りに,処理を実行.
プログラムの動作が予測しやすい反面,細かい指示を いちいち記述する必要がある. 宣言型言語 必要な知識と,処理の目的を与える. 特に,研究者の間で広まっている. コンピュータは与えられた目的を達成するように,推論し ながら処理を実行. プログラムの動作が予測しにくく,細かい処理を記述しにくい.

12 手続き型と宣言型の記述例 階乗を計算する関数 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

13 構造化プログラミング 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++; }

14 オブジェクト指向プログラミング 発祥は定かではない. 現在の主流である. データ構造と手続きをクラスとしてまとめて記述する.
SIMULA 67 (1967年) SmallTalk (1972年) 現在の主流である. C++ (1983年) Visual C++ (1992年) Java (1995年) データ構造と手続きをクラスとしてまとめて記述する. プログラムの可読性の向上. プログラムの再利用性の向上. プログラムのモジュラリティの向上.

15 プログラムの処理方式 プログラムはテキストファイルで書く(ソースコード). ソースコードを処理する方式には以下のものがある.
テキストエディタで書いてもよいが,専用のエディタの方が便利. ソースコードを処理する方式には以下のものがある. コンパイラ方式: ソースコードを機械語に変換.(高速) インタプリタ方式: ソースコードを解釈しながら実行.(低速) 中間コード方式: コンパイラとインタプリタの中間.Javaなどで採用.(中速) 処理方式がわからないとプログラミング言語は使えない!!

16 コンパイラとインタプリタ コンパイラはソースコードから機械語への変換プログラム.
インタプリタはソースコードの解釈と実行を同時に行うプログラム. プログラム実行 のための準備 ソースコードA コンパイラ & リンカ 実行プログラムA 実行プログラムA 入力 出力 実行 ソースコードB インタプリタ 解釈&実行

17 中間コード方式 機械語は,機種に依存する.(Windowsのプログラムは,Macでは動かない) いっぽう,インタプリタ方式は実行速度が遅い.
機種に依存しない部分だけを先にコンパイルする. ソースコードA コンパイラ 中間コードA 入力 出力 中間コードA インタプリタ 解釈&実行 機種が違っても良い

18 今日のまとめ プログラミング言語の種類 低級言語 機械語,アセンブラ 非オブジェクト指向 言語 BASIC,C 手続き型言語
高級言語 C++,Java 関数型言語 Lisp, Scheme, ML 宣言型言語 論理型言語 Prolog

19 本日のまとめ プログラミング言語の種類 低級言語 機械語,アセンブラ 非オブジェクト指向 言語 BASIC,C 手続き型言語
高級言語 C++,Java 関数型言語 Lisp, Scheme, ML 宣言型言語 論理型言語 Prolog


Download ppt "プログラミング言語論 理工学部 情報システム工学科 新田直也."

Similar presentations


Ads by Google