トップページへ

2025年度 (最新) 学院等開講科目 情報理工学院 数理・計算科学系

プログラミング言語処理系

開講元
数理・計算科学系
担当教員
南出 靖彦
授業形態
講義 (対面型)
メディア利用科目
-
曜日・時限
(講義室)
不明
クラス
-
科目コード
MCS.T334
単位数
200
開講時期
2025年度
開講クォーター
4Q
シラバス更新日
2025年3月19日
使用言語
日本語

シラバス

授業の目的(ねらい)、概要

この授業では、プログラミング言語についての基礎的な概念を述べたあと、普段書いているプログラムがコンピュータ内部でどのように実行されるか、またコンパイラがどのように構成されているかを説明する。概念や理論への理解を深めるために、コンパイラ実装に関するプログラミング課題を課す。プログラミングにはScalaを用いる。

到達目標

本講義を履修することによって次の能力を修得する。
1. プログラムがコンピュータ内部でどのように実行されるかを説明できる。
2. コンパイラの各構成要素の役割とその仕組み, アルゴリズムを説明できる。
3. 簡単なプログラミング言語のインタープリタやコンパイラを実装できる。

キーワード

インタープリタ, コンパイラ, 構文解析, コード生成,レジスタ割付け,ごみ集め

学生が身につける力

  • 専門力
  • 教養力
  • コミュニケーション力
  • 展開力 (探究力又は設定力)
  • 展開力 (実践力又は解決力)

授業の進め方

講義形式で理論や技術を学び,プログラミング課題を通じ実践力をつける.

授業計画・課題

授業計画 課題
第1回

概要: プログラムの実行方式

インタープリタ,コンパイラ,バイトコードコンパイラ

第2回

オートマトンと字句解析

トークン,正規表現, NFA, DFA

第3回

文脈自由文法の復習

導出, 構文木, CYKアルゴリズム

第4回

構文解析(1):予測型構文解析

再帰下降構文解析, LL(1)

第5回

構文解析(2):LR構文解析の基礎

LR(0)

第6回

構文解析(3):LR構文解析の拡張

SLR, LR(1)

第7回

プログラミング言語の型体型と型検査

型体型, 多相型, 部分型, 型検査

第8回

中間試験

理解度を確認する

第9回

プログラミング言語の意味論とインタープリタ

評価戦略, 操作的意味論, インタープリタ

第10回

コード生成(1):概要, アセンブリ言語

アセンブリ言語, X86-64, 関数呼び出し規約

第11回

コード生成(2):中間言語, 中間言語への変換, アセンブリ言語への変換

3番地コード, 中間言語への変換, アセンブリ言語への変換

第12回

生存変数解析とレジスタ割付け

データフロー解析, 生存変数, 干渉グラフ, グラフ彩色

第13回

レジスタ割付けとコード生成

既彩色節, 合弁

第14回

ごみ集め

マークスイープ法,コピー回収法

準備学修(事前学修・復習)等についての指示

学修効果を上げるため,教科書や配布資料等の該当箇所を参照し,「毎授業」授業内容に関する予習と復習(課題含む)をそれぞれ概ね100分を目安に行うこと。

教科書

指定しない

参考書、講義資料等

講義資料を適宜配付する.

次の本を参考書として使用する.
神林靖,滝本宗宏訳,最新コンパイラ構成技法,Andrew W. Appel著,神林靖,滝本宗宏訳,翔栄社.
「コンパイラ[第2版] 原理・技法・ツール」,A.V.エイホ,M.S. ラム,R.セシィ,J.D.ウルマン著,原田賢一訳,サイエンス社.

成績評価の方法及び基準

中間試験及びプログラミング課題により評価する.

関連する科目

  • MCS.T224 : プログラミング第一
  • MCS.T303 : プログラミング第二
  • MCS.T214 : オートマトンと数理言語論
  • MCS.T233 : 計算機システム

履修の条件・注意事項

オートマトン,文脈自由文法,アセンブリ言語に関する基礎的な知識を仮定する.
プログラミング言語Scalaによる基礎的なプログラミングができることを仮定する.
各自の PC(Mac, Windows, Linux) で,プログラミング課題に取り組むを必要がある.