比較プログラム言語論 平成16年4月21日 森田 彦.

Slides:



Advertisements
Similar presentations
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
Advertisements

ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
情報システムプロジェクト I 第2回 FileScanner.java ~ファイル入力、文字切り出し機能を持つ プログラムの作成~
オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
比較プログラム言語論 平成16年4月28日 森田 彦.
情報処理3 アプリケーション プログラミング 今井孝明.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
プログラミング言語論 プログラミング言語 発展の歴史 水野嘉明
C言語システムプログラミング クラス分け 1の人:紫合クラス(302教室) 学籍番号を3で割った余りが、 0の人:冬爪クラス(208教室)
比較プログラム言語論 平成17年5月18日 森田 彦.
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
FORTRAN 科学技術計算用 数値演算精度を重視したシステム K=0 DO 10 I=0,N,1 K=K+I 10 CONTINUE
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
オブジェクト指向言語論 知能情報学部 新田直也.
オブジェクト指向言語の歴史 えムナウ (児玉宏之)
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎

①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
心理学情報処理法Ⅰ コンピュータ言語の歴史.
プログラムはなぜ動くのか.
高性能コンピューティング論2 第1回 ガイダンス
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
C#とC++とオブジェクト指向 上甲 健史.
平成25年7月14日(月) 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
計算物理学基礎 第1回 UNIXの基礎 C言語の基本.
比較プログラム言語論 平成17年4月20日 森田 彦.
学籍番号順に着席のこと 001~056までは741教室へ 057~110までは743教室へ
プログラミング言語入門 手続き型言語としてのJava
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
オブジェクト指向基礎学習Ⅰ ~オブジェクト指向へ至る背景~
暗黙的に型付けされる構造体の Java言語への導入
情報リテラシー2014 part 5/5 (亀田担当分最終回)
ソフトウェア情報学総論 基盤ソフトウェア学講座
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
プログラミング言語入門.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
比較プログラム言語論 平成17年5月11日 森田 彦.
プログラム言語 プログラム言語の体系を学ぶ.
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
コンパイラ 2012年10月1日
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
ガイダンス 電子計算機 電気工学科 山本昌志 1E
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語 1.
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 5 回.
第6回放送授業.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
比較プログラム言語論 平成16年5月12日 森田 彦.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
C#プログラミング実習 第1回.
1.2 言語処理の諸観点 (1)言語処理の利用分野
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
Presentation transcript:

比較プログラム言語論 平成16年4月21日 森田 彦

レポート抜粋(4/14) 興味・関心 この講義では、どのような時にどんな言語を用いることが最適であるのか、どの言語はどの言語の発展系として作られたのか、更にどの言語のどんな欠点を克服する為にどのような言語が作られることとなったのか・・・さまざまなことに興味があります。 まずは言語の種類から、その歴史、それぞれの長所・短所など知ることができればと思います。 いろいろなプログラミング言語の便利な点、優れた点、欠点などの特徴を知りたい。プログラミング言語の歴史にも興味がある。プログラミング言語の作られた順番を知りたい。

レポート抜粋(4/14) 疑問Ⅰ 1つの言語を学べば他の言語もすぐに理解できるのはなぜかということについて興味・関心があるとともに疑問に思っています。 そのたくさんの種類の言語を一つに統一できないのか、できないとしたらどんな使い分けをしているのか。 言語によって、プログラミングの入力の仕方や中身は、全然違いますか? プログラミング言語はもう完成されたものなのか、それとも常に発達しているもので新しい言語が次々にできているのか? http://ext-web.edu.sgu.ac.jp/HIKO/HikakuProgに掲載

レポート抜粋(4/14) 疑問Ⅱ PHPとJavaスクリプトをほんの少しやったのですが、Javaと違って関数を呼び出して使うやり方にとまどいを覚えました。が、関数を用いてプログラムを行うのはどうやら普通のようです。なぜ多くのプログラミング言語は関数を用い、Javaはクラスを用いるようになったのですか?オブジェクト指向は必ずJavaのようにクラスを作らなければいけないのですか?

オブジェクト指向言語と手続き型言語 <オブジェクト指向言語> <手続き型言語> オブジェクト プログラマが結びつける 変数 プロパティ メソッド 関数(手続き)

<本日のテーマ> プログラミング言語発展の歴史 <内容> 言語発展の歴史を概観する。 代表的な言語をその性質により分類してみる。

プログラミング言語発展の歴史 時間 低水準言語 オブジェクト指向言語 高水準言語 超高水準言語 言語以前 機械語 アセンブリ言語 Delphi 高水準言語 C++Builder FORTRAN JBuilder PL/1 COBOL ビジュアル開発環境 ALGOL ALGOL68 PASCAL Ada Object PASCAL BASIC C言語 C++ Lisp Java 超高水準言語 Prolog Smalltalk 参考:河村一樹、斐品正照

プログラミング言語以前 最初のコンピュータ(電子計算機)ENIAC 真空管で動作する電子計算機 1946年 ペンシルベニア大学のモークリーとエッカートが開発   米国陸軍の弾道計算に利用 巨大(18000本の真空管)で消費電力も膨大(175kW) 計算の手順(プログラム)   配線の組み替えとスイッチの組み替えで実施→プログラミング言語なし。

プログラミング言語の登場 ノイマン型コンピュータの登場 1949年英国のEDSAC完成 配線の組み替えとスイッチの切り替え→プログラムとして作成し、記憶装置に記憶させる      プログラム→機械語で記述 機械語  コンピュータが直接理解できる言語→2進数で表現

機械語 2進数を1バイトずつ2桁の16進数で表現 例:188+17の答を求める 9D BC 11 9D:加算命令 BC:188 11:17 プログラミングは大変

アセンブリ言語 変数名の発明 1950年代前半に登場 例:188+17の答を求める 初期のアセンブラ ADD BC 11   ADD→9Dに翻訳する必要がある→アセンブラというソフトが処理(現在のコンパイラと同じ) 初期のアセンブラ   メモリ内のアドレスの指定をプログラマが担当   MOVE A [+120]: Aレジスタの現在値を120バイト後方のアドレスへコピーする(代入する) 変数名の発明   MOVE A data1 → アドレス計算からプログラマを解放 →翻訳処理ソフトが担当

FORTRAN 1957年 IBM社の汎用大型コンピュータのプログラム処理言語として実装 FORmula TRANslation Systemの略 その後大いに発展  FORTRANⅡ(’58)副プログラム→FORTRANⅣ(’62)型宣言→FORTRAN66(’66)→FORTRAN77(’77)文字列→FORTRAN90(’91)組み込み関数追加 科学技術計算に適している

COBOL COmmon Business Oriented Language 1959年開発 事務処理に適している  データ処理(ファイルアクセス)に優れている英文を書くようにプログラミングできる。 最も広汎に使われたプログラミング言語 ’80年代までは→COBOLができなければSEになれない!

PL/1 Programming Language 1 プログラミング言語の用途が分化 科学技術計算 FORTRAN   事務処理計算 COBOL 両者を包含した言語は可能か?→IBMとSHARE(IBMのユーザ団体)が開発→1964年に開発 汎用的な利用が可能 言語処理系が巨大化 

ALGOL ALGOrithmic Language 1958年開発(ALGOL58) 科学技術計算向けの言語 厳密な構文規約を採用   プログラミング言語の構造として優れている 1960年 ALGOL60制定  他のプログラミング言語(CやPASCALなど)に大きな影響を与える。 1968年 ALGOL68発表→言語規模の巨大化

BASIC Beginner’s All-purpose Symbolic Instruction Code 1964年 米国ダートマス大学で開発 初心者のための教育用言語 言語仕様が簡単 コンパイラではなくインタプリタを使用 当初は汎用コンピュータ→パソコンに移植→大いに普及

PASCAL 1971年 Wirth(ヴィルト)により発表 ALGOL60の後継言語 特徴 構造化プログラミングの実現、適切なデータ構造   構造化プログラミングの実現、適切なデータ構造   系統的なプログラミング教育に最適   → 既存の言語とは異なる視点で開発 言語仕様の範囲を広げ過ぎない→言語処理系の効率化→ALGOL68の反省 C言語などに影響

C言語 1973年 米国AT&Tのベル研究所のRitchie(リッチー)がUNIX開発用に設計 1967年 Richards(リチャーズ)がBCPLを開発→Thompson(トンプソン)がUNIX記述用に更新・開発→B言語 その次の言語→C言語 特徴  システム記述言語でもある(それまではアセンブリ言語が主流)→システム記述から一般の処理まで広汎にカバー →自由度の高い汎用的な言語 90年代→Cが分からないシステムエンジニアはいらない。 

Ada 1980年米国の国防総省の軍規格となる 軍で使用している各種コンピュータシステムの管理が煩雑→言語仕様が数百種類にも及ぶ→統一的に管理できないか? 軍独自の仕様に基づいた新しいプログラミング言語を → 公募によりフランスのIchbiah(イシビア)らが開発した言語を採択

Lisp LISt Processor 1950年代末~’60年代 米国マサチューセッツ工科大学のMcCarthy(マッカーシー)がリスト処理用の言語として開発 関数型言語  関数の組み合わせによってプログラミングを行う   f(x)、g(x1,x2,・・・)

Prolog PRogramming in LOGic 1972年 フランス、マルセイユ大学のColmerauer(コルメラウァー)らによって開発 論理型言語  1階述語論理による論理記述とその推論機構が基本  例:「人間は死ぬ」、「ソクラテスは人間である」    → 「ソクラテスは死ぬ」

オブジェクト指向言語 1968年 米国のDahl(ダール)とNygaard(ニガード)によってSimula67開発→Algol60を拡張したシミュレーション言語 1972年 ゼロックス社のAlan Key(アラン・ケイ)らがSmalltalk-72を開発→次世代コンピュータDynabook用のプログラミング言語 1980年 Smalltalk-80を発表  クラス階層と継承を実装→最も純粋なオブジェクト指向言語

既存言語のオブジェクト指向化 C言語→C++言語  1980年からAT&T社のStroustrup(ストローストープ)が開発→1991年にはVersion3に PASCAL→Object PASCAL ビジュアル環境化  C++ → C++Builder、Viasual C++など  Object PASCAL → Delphi

Java言語 1995年 米国サンマイクロシステムズ社が発表 開発の考え C++のオブジェクト指向機能を純化 1995年 米国サンマイクロシステムズ社が発表 開発の考え   C++のオブジェクト指向機能を純化   C++の一部機能(難解な部分)を排除 特徴  Javaの実行環境があれば、どのOSや機種でも動作する。→携帯端末や家電製品も想定 →急速に注目・普及 2000年代→ Java言語の分かるシステムエンジニアが必要!

第2回目レポート  < テーマ >  あなたが最も興味・関心のあるプログラミング言語はどのような言語ですか?どれか一つ挙げて、そう選んだ理由を述べて下さい。 できる限り具体的に記述して下さい。200字~400字程度。なお、上の記述を行った上で,質問等を付加しても結構です。 提出先:hiko@edu.sgu.ac.jp 学籍番号(s02XXXなど)と氏名を明記して下さい。