![]() ![]() |
講義概要/Course Information |
科目基礎情報/General Information |
授業科目名 /Course title (Japanese) |
言語処理系論 | ||
---|---|---|---|
英文授業科目名 /Course title (English) |
Implementations of Programming Languages | ||
科目番号 /Code |
COM504c COM504d | ||
開講年度 /Academic year |
2025年度 | 開講年次 /Year offered |
3 |
開講学期 /Semester(s) offered |
前学期 | 開講コース・課程 /Faculty offering the course |
情報理工学域 |
授業の方法 /Teaching method |
講義 | 単位数 /Credits |
2 |
科目区分 /Category |
専門科目 | ||
開講類・専攻 /Cluster/Department |
Ⅰ類 | ||
担当教員名 /Lecturer(s) |
佐藤 重幸 | ||
居室 /Office |
西2-512 | ||
公開E-mail |
iopl-2025-group@gl.cc.uec.ac.jp | ||
授業関連Webページ /Course website |
Google Classroom: https://classroom.google.com/c/NzUyNjE3NTkzOTE5?cjc=53apymkm | ||
更新日 /Last update |
2025/04/09 10:21:14 | 更新状況 /Update status |
公開中 /now open to public |
講義情報/Course Description |
主題および 達成目標(2,000文字以内) /Themes and goals(up to 2,000 letters) |
プログラミング言語処理系の基礎概念と,その実装例を学ぶ. これにより, * 言語処理系の仕組みに対する理解 * 言語処理系の仕組みを意識したプログラミング の獲得を目指す. |
---|---|
前もって履修 しておくべき科目(1,000文字以内) /Prerequisites(up to 1,000 letters) |
同学期に開講される「プログラム言語論」と密に連携した授業設計であり,同時履修が前提となっている. 「プログラム言語論」で扱ったプログラミング言語の諸概念は,既出のものとして授業を進める. 加えて,「プログラム言語論」と同様に * 基本的なプログラミング(例えば「プログラミング通論」相当) * 計算機の基本的な仕組み(例えば「計算機通論」相当) * 集合論と記号論理の数学記法(例えば「離散数学」相当) についての知識を前提とする. |
前もって履修しておくこ とが望ましい科目(1,000文字以内) /Recommended prerequisites and preparation(up to 1,000 letters) |
本科目の理解の助けになるであろう科目や経験は次の通り: * 形式言語の基礎知識(例えば「形式言語理論」相当) * Pythonを扱った経験 * 関数型の言語機能(ラムダ式やパターンマッチ)を使った経験 |
教科書等(1,000文字以内) /Course textbooks and materials(up to 1,000 letters) |
授業教材はオンライン資料として配布する. その中に,参考資料を適宜記載する. |
授業内容と その進め方(2,000文字以内) /Course outline and weekly schedule(up to 2,000 letters) |
授業内容: 1. ガイダンス,イントロダクション 2. コンパイラとインタプリタ 3. 構文と意味論 4. 字句解析と構文解析 5. 意味解析と静的型検査 6. 抽象機械とアセンブリ 7. コンパイラ最適化 8. 翻訳と評価 9. コンパイラとインタプリタ(再訪):二村射影 10. コールスタックと継続 11. ラムダ式と高階関数 12. ライブラリと言語:EDSL 13. JITコンパイラ 14. コンパイラとインタプリタ(再々訪):Truffle/Graal 15. まとめ 進め方: * 12回以降は発展的内容なので,授業進度に合わせて内容を取捨選択をする. * 各回にコメントフィードバックを求め,次回で適宜取り上げる. |
実務経験を活かした 授業内容 (実務経験内容も含む) /Course content utilizing practical experience |
|
授業時間外の学習 (予習・復習等)(1,000文字以内) /Preparation and review outside class(up to 1,000 letters) |
* 各回のコメントフィードバック,及びそれに係る復習・自習 * 期末試験,及びそれに係る復習 * レポート課題,及びそれに係る自習(プログラミングを含む) |
成績評価方法 および評価基準 (最低達成基準を含む) (1,000文字以内) /Evaluation and grading (up to 1,000 letters) |
成績評価方法: 各回のコメントフィードバック・期末試験・レポート課題から総合的に判断する. ただし,コメントフィードバックと中間レポート課題は,補助的な位置付けである. 期末レポート課題は,発展的なオプション課題である. 評価基準: 授業で扱った言語処理系の基礎概念や実装例を理解し,自ら扱うことができるかを評価する. 期末試験の受験は,単位取得において必須とする. 尚,オプションの期末レポート課題を提出しなくても,他が十分良くできていれば,「優」が取れるように調整する見通しである. |
オフィスアワー: 授業相談(1,000文字以内) /Office hours(up to 1,000 letters) |
Google Classroomで受け付ける. |
学生へのメッセージ(1,000文字以内) /Message for students(up to 1,000 letters) |
現代の実用的な言語処理系は,概して大変良く出来ている. しかし皮肉にも,様々なことが高度に自動化されていればいるほど,そこで何が行われているかについて深い知識を持たなければ,利用者が適正に扱うことはできない. Cf. Lisanne Bainbridge, "Ironies of Automation" (1983). |
その他 /Others |
水2開講 |
キーワード /Keywords |
コンパイラ,インタプリタ,抽象機械,部分評価,コンパイラ最適化 |