Presentation is loading. Please wait.

Presentation is loading. Please wait.

香川 考司 kagawa@eng.kagawa-u.ac.jp 香川研究室の紹介 香川 考司 kagawa@eng.kagawa-u.ac.jp.

Similar presentations


Presentation on theme: "香川 考司 kagawa@eng.kagawa-u.ac.jp 香川研究室の紹介 香川 考司 kagawa@eng.kagawa-u.ac.jp."— Presentation transcript:

1 香川 考司 kagawa@eng.kagawa-u.ac.jp
香川研究室の紹介 香川 考司

2 香川研の研究テーマ プログラミング言語の型システムの研究 (理論) プログラミング学習支援システムの研究 (実践)

3 プログラミング言語の 型システムの研究 究極のプログラミング言語を 求めて

4 プログラミング言語の歴史 今後も新しいプログラミング言語が誕生するのは間違いない!
2013/4/23 プログラミング言語の歴史 ※ ただし, 誕生(公開)と流行には大きなズレがある場合が多い 1949 (EDSAC) 1967 Simula 1980 Smalltalk 2003 Scala 1954 FORTRAN 1970 Pascal 1983 C++ 1958 LISP 1958 ALGOL 1972 C 1972 Prolog 1987 Perl 1990 Python 1990 Haskell 1974 ML 1959 COBOL 1995 Java 1995 Ruby 1975 Scheme 今後も新しいプログラミング言語が誕生するのは間違いない!

5 様々なプログラミング言語 パラダイムによる分類 命令型、オブジェクト指向、関数型、論理型 型付けによる分類 静的型検査、動的型検査、他
Fortran, C, C++, Java, C#, Haskell, Scala, O’Caml, CommonLisp, Scheme, Prolog, Perl, Ruby, Python, Smalltalk, JavaScript, VB, PHP, Closure, Go, … パラダイムによる分類 命令型、オブジェクト指向、関数型、論理型 型付けによる分類 静的型検査、動的型検査、他 実行方式による分類 コンパイラー方式、インタプリター方式 現状では、万能の言語はない

6 型あり vs. 型なし* *ほんとうは「型なし」という言い方は語弊がある
コンパイル時型検査なし 理想 柔軟 epicurean? 快楽主義 Lisp, JavaScript, PHP, Ruby, Perl, Python, … stoic? 禁欲主義 互いに影響 C, C++, Java, ML, Haskell, … コンパイル時型検査あり 窮屈 危険 安全

7 複数のデータ型を 扱う処理を 定義することが得意 という点は同じ
関数型 (FPL) vs. OOPL 理想 OOPL (が得意) GUIなど C++, Java, … 用途に特化したデータ型 クラス(データ型)の増加 複数のデータ型を 扱う処理を 定義することが得意 という点は同じ ML, Haskell, … FPL (が得意) 文字列・記号処理など 汎用のデータ型 関数(メソッド)の増加

8 純関数型 vs 命令型(OOPを含む) 理想 任意の 副作用あり 有用 プランA (着実) 命令型言語 プランB (過激) 副作用なし
役立たず 安全 危険 Simon Peyton Jones: “Caging the effects monster: the next big challenge” より引用・和訳

9 関数型プログラミング言語 Haskell, O’Caml, F#, Scala, など 本質的に単純な構造 高度な型システム … 型推論など
高度な型システム … 型推論など OOPL とは異なる方向の拡張性 副作用撤廃、または強く制限 メジャーな言語とは、まったく違う方向から 理想に近づく!

10 プログラミング 学習支援システムの研究 魔法使いの弟子を育成

11 ここからの話 プログラミングの学習の問題点 香川研究室での研究テーマの例 WappenLite について その他
まとめ その他

12 “The camel has two humps” by Saeed Dehnadi & Richard Bornat 2006
プログラミングの学習者の成績は 良い/悪いに二分され、中間がない。 (論文自体はプログラミングの素質のテスト法の提案)

13 プログラミングの学習の問題 学習者側の問題 時間の割に多種の言語を学ぶ必要がある 処理系のインストール・使用法や詳細な文法規則に煩わされる
統合開発環境は初心者向けに設計されたものではなく、時折不可解な状態になる

14 プログラミングの学習の問題 教育者側の問題 ドキュメントを用意しても、コンパイラなどと連動しないため学生が利用しづらい
学習を支援するためのカスタムツールを用意しても、今度はその使用法が煩雑になる 他の教師が用意した教材は、カスタマイズしないと利用しにくい

15 なぜ複数の プログラミング言語を学ぶのか 汎用、領域特化を含め多くのプログラミング言語がある C, C++, Java, C#, Haskell, O’Caml, F#, CommonLisp, Scheme, Prolog, Perl, Ruby, Python, Smalltalk, JavaScript, VB, PHP, Yacc (Bison), Lex (Flex), assembler, … 「井の中の蛙大海を知らず」にならないよう、 別の世界の存在を知る 将来の新しい言語に備える

16 大目標 「特定のプログラミング言語、慣用の計算機システム、ルーティン化したプログラム作成の手順などに規定される閉じた世界から解き放ち、次元の異なった抽象的な視点からプログラミング言語やプログラムを眺める機会を与える」 中島玲二 著「数理情報学入門」

17 マイナーな言語の場合の問題 その言語専用の開発環境など期待できない ➨ あったとしてもそれはそれで大変かも
エディタの syntax highlight (色分け) 機能なども期待できない ➨ スペルミスなどつまらないミスで苦労する 手軽なグラフィックスライブラリがないか、 あっても情報が少ない ➨ つまらない。 教師にとっては、魅力的な例題・課題を作ることが難しい

18 Wappen とは? Web-based applications for programming paradigms enlightenment プログラミング学習用Webアプリケーションのための EclipseRCP ベースのフレームワーク 学習者は Web ページ上のリンクのクリックだけで学習用のプログラミング環境を起動可能 教師は Wappen のプラグインとして、複数の言語処理系や学習者の理解を支援するツールを提供 ➨ プログラミング学習の取っ掛かりを良くする

19 Wappen の欠点 サイズ が 大きく、(キャッシュはされるが) 学外で利用するには重い
サイズ が 大きく、(キャッシュはされるが) 学外で利用するには重い  Eclipse のツールキット SWT が pure Javaでなく、配備に手間がかかる Eclipse プラグインのプログラミング自体が情報が少なく難しい

20 WappenLite より軽量の Web アプリフレームワーク 通常のWeb アプリとして作成する
より軽量の Web アプリフレームワーク 通常のWeb アプリとして作成する UI は HTML などを使って記述する 非 UI 部は、Java Servlet として作成する 対象プログラミング言語に依存する部分は、一つのクラスにまとめられる

21 WappenLite の構成 Server host Client host config Front-end Back-end Jetty
(Web app. container) download invoke invoke Starter applet Browser

22 より詳細な構成 Client host Server host Back-end (non-UI)
Servlet classes (language-independent) Context class (language-dependent) Login Front-end (UI) start() load() save() run() write() read() stop() AuthFilter Load editor.js Save Run Write console.js Read View Timeout Listener

23 WappenLite スクリーンショット

24 Ajax による Front-end エディタ部には CodeMirror などの既存の Ajax ベースエディタを使用
コンソール部は プログラム出力の読込みに WebSocket を使用 コンソール部は普通の HTML なので、プログラム出力中に HTML タグ などを使うことができる ➨ より魅力的な例題・課題の可能性

25 画像の使用例 (WappenLite for Scala)
Conal Elliot: “Functional Images” (in The Fun of Programming)の作品を使用

26 WappenLite デモ Java 1 (SVG 使用), Java 2 (WebGL 使用) , Applet C Haskell
Java 1 (SVG 使用), Java 2 (WebGL 使用) , Applet C Haskell 

27 WappenLiteのまとめ 簡単な配備・格段に速い起動 それでもアプレットが遅いけど
かゆいところに手が届く UI ➨ よりきめ細かいカスタマイズの可能性 拡張のための情報が豊富 (HTML, Ajax)

28 今後の研究テーマ例 Scratch や Alice のような Lego ブロック風エディタ
C, Java, Bison/Flex などに対する 高機能な Web ベースエディター (emscripten などを使用) プログラム可視化システム・ デバッグ支援システムの構築 (WebSocket, WebGL などを使用)

29 研究紹介

30 研究紹介

31 研究紹介

32 その他の研究テーマ例 スマホ・タブレット向けのフロントエンドとコンテンツ
Web 上で C, Haskell などのプログラムを安全に実行できる環境の構築 課題提出用サーバーシステムの改良 (自動採点・リアルタイムメッセージ・教師用可視化システムなど)

33 研究紹介

34 卒研ゼミについて

35 ゼミのやり方 深夜にやったりはしません 3年生 主に輪講 Haskell, アルゴリズム(英語の本), etc 4年生以上 進捗報告
論文紹介

36 最後に こういう人を求めています プログラミングが得意に興味がある 新しい技術に挑戦するのが好き 英語が得意に拒否反応がない


Download ppt "香川 考司 kagawa@eng.kagawa-u.ac.jp 香川研究室の紹介 香川 考司 kagawa@eng.kagawa-u.ac.jp."

Similar presentations


Ads by Google