・「プログラム言語論」 Fall U2

プログラム言語論2006」ホームページ
2006年度の講義は終了しました.ご愛顧ありがとうございました.
次回はさらに充実した内容となるよう最大限^^;努力したいと思います.
担当 森本康彦  

【授業の目標等】
我々が日常生活で使用している「日本語」,「英語」などの言語は人間同士がコミュニケーションを行うための重要なツールです.一般的に「言語」とは伝えたい何かを他者に伝えるためのコミュニケーションツールですが,そのなかでプログラム言語は我々,人間の「指示」をコンピュータに伝えるために利用されている言語です.コンピュータは人間が与えた「指示」に従って動作するが,通常,その「指示」はプログラム言語で記述されています.本講義では人間とコンピュータとの誤解ないコミュニケーションのために必要なプログラミング言語の基本概念,および,プログラム言語で記述された「指示」が,コンピュータの中でどのように処理されるかを解説してゆきます.また,(プログラム言語にとどまらず)「言語」一般に関する理論的考察を形式言語理論の基本概念をふまえて解説してゆきます.

【キーワード】
論理回路,プロセッサ,機械語とアセンブラ,高級言語,オートマトンと形式言語理論

【授業の内容・計画等】
1. ガイダンス
  (授業の概説,進行計画.その他,最近のプログラム言語に関する面白い話題)
2. 情報の表現と情報量
  (情報の記録方法と情報の価値について)
3. 論理回路と論理演算
  (0と1で表現された2進データに対する演算と論理回路の構成法)
4. CPUと機械語
  (CPUの中でプログラムがどのように実行されるか)
5. アセンブラ
  (CPUの動作を記述する低級プログラム言語)
6. 計算手順をコントロールする制御構文
  (条件分岐(IF文など),繰り返し(FOR文など)などの構文とその振る舞い)
7. 関数呼び出し
  (関数呼び出しとCall,Return命令とスタック領域の仕組み)
8. 変数とポインタ
  (「局所変数とスタック領域」および「アドレス渡しの関数呼び出し」について)
9. メモリ管理
  (計算に必要なデータをメモリ上でどのように管理するか)
10. 言語理論慨説
  (コミュニケーション手段としての言語の持つべき機能とは)
11. 有限オートマトン
  (簡単な言語認識装置とそれを用いた正規言語を認識するすくみ)
12. プッシュダウンオートマトン
  (文脈自由言語を認識できる言語認識装置)
13. 線形拘束オートマトンとチューリング機械
  (文脈依存言語を認識できる言語認識装置)
14. 文法と言語理論
  (文法と言語の表現力との関係とチョムスキー言語階層)
15. プログラム言語とコンパイラ
  (プログラムに書かれた内容をコンピュータはいかにして理解するか)

番号は開講順序の目安ですが,実際の講義はカレンダーと学習効果を考慮してその内容を決めてゆきます.各年度の授業計画の詳細と講義資料はこの講義のホームページに公開する予定です.

【予習の目安】
各回の教科書,参考書の関連項目に目を通しておく程度の予習をしておくと良い.

【復習の目安】
1-3. 情報活用基礎・演習,コンピュータ基礎論などで学んだ関連項目でこの授業に関わることはよく復習しておくこと.情報量,論理式,論理演算の例題を自分で解いてみること.
4-5. CPUの動作を紙上で実際に模倣して理解を深めてください.
6-7. 計算機実験,コンピュータプログラミング等でプログラミング経験のある人はそれをよく復習してください.プログラム経験のない人はこの機会に簡単なプログラムを書いてみるとよい.
8-9. CPUとメモリの連携の様子を紙上で実際に模倣して理解を深めてください.例題として紹介する計算例のサンプルプログラムを実際にコンピュータで動作させてみるとさらに理解は深まります.
10-13. 例題や紹介する練習問題を自分自身で解いてみること.各オートマトンの動作の様子は紙上で実際に模倣して理解を深めてください.
14. 日本語,プログラム言語,ファイル検索やインターネット検索などに使うパターンマッチなどの身の回りの言語それぞれについて,機能と表現力はどうなっているのか各自でよく考えてみること.
15. コンパイルする意味やその仕組みを中心に考えてみてください.

【成績評価の方法】
「期末試験」と「講義の中で出題する発展課題のレポート」の総合評価

【テキスト・教材・参考書等】
第1回目の講義で指示する.また講義の中で適宜参考書を提示する.

【履修上の注意・受講条件等】
(何らかの情報関連科目の履修をしておくことが望ましいが)情報科学の個々の専門科目をまだ履修していない人を想定して講義を開始します.

【メッセージ】
予習は特に求めないが,さらなる理解のため,発展課題の内容に関連する事項について時間をかけて自習すること.学習の動機付けとして「基本情報技術者」等の資格の取得も検討してみてください.(計算機関連の実験あるいはコンピュータプログラム等を受講するなどして)実際にプログラムを書くことによりさらに理解が深まります.