Content-Length: 256975 | pFad | http://www.slideshare.net/hirofumitouhei/rubyclu-16404018
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料) | PPT
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)3. CLUのプログラム例
start_up = proc()
stdout:stream:= stream$primary_output()
stream$putl(stdout, “Hello World!”)
end start_up
•変数は使いたい時に宣言
•プロシージャ―の呼び出し方
type$procedure
6. イテレータ
• for文から呼び出す 呼び出し元
• ユーザ定義可能 for i:int in int$from_to(1,100) do 1
...
• 呼び出しの流れ end
1. 初期呼び出し イテレータ
2. イテレータの初期設定 from_to=iter(first:int, last:int) yields(int)
3 n:int := first
3. 値を引き渡す。 5
while n <= last
4. ループ本体を実行する。 yield(n)
n := n + 1
5. 次の値を貰いに行く。 end
end from_to
• まつもとゆきひろ氏が
Rubyでブロックへ拡張
7. CLUの基本型
• int 整数 型の種類 書き換え 書き換え
• real 実数 可能 不能
• bool 論理 配列 array sequence
• char 文字 構造体 record struct
• string 文字列 共用体 oneof variant
• proctype プロシージャ
• Itertype イテレータ • 書き換え可能
• オブジェクトの状態が変化するもの
• any • 書き換え不能
• null • オブジェクトの状態が変化しないもの
8. クラスタの例
stack=cluster[t: type] is pop=proc(r: cvt) returns(t) signals (empty)
new, push, pop return(rep$remh(r))
rep=array[t] except when
new=proc() returns(cvt) bounds:
return(rep$new()) signal empty
end new end
push=proc(r: cvt, x: t) end pop
rep$addh(r, x) end stack
end push
9. 東京工業大学木村泉研究室と
プログラミング言語CLU
• MITのBarbara Liskov考案(1974)
• 東京工業大学理学部情報科学科木村泉研究室で使用開始(1979以前)
• CLU処理系をFACOM230-45S、HITACMシリーズヘ移植(1979以前)
• CLUを授業に使用
• CLUマシン作成(1985夏~1992)
• Lispマシンと似たコンセプト
• CLU処理系nclu作成(1985以前)
• 2バイト文字使用可能
• !記法
• CLU処理系clu2c作成(1991~1998頃)
• CLUをCのプログラムに変換
10. CLU処理系clu2c
• CLUをCに変換し、さらに実行形 • 以下のプログラムで構成
式を生成する処理系 • clu2c
• CLUとCで実装 • CLUをCに変換するプログラム
• GCは Boehm GC を使用 • MIT製処理系cluを改造
• 主にコード生成部を作成
• clulink
CLUの clu2c Cの • 実行形式を生成
プログラム プログラム
• Cコンパイラとリンカ
clulink 実行形式 • plink
ライブラリ
• パラメータ機能の分析
• ユーザは直接呼び出さない。
Boehm GC clulinkが呼びだす。
11. 動作確認OS(一部)
• Cygwin • Boehm GCが動作する環境であ
• Ubuntu 12.04.1(i386、amd64) れば動作可能
• OpenSUSE 12.2 (32bit、64bit)
• CentOS 6.3(i386)
• Fedora 17(i386)
• Solaris 11/11 (32bit、64bit)
• OpenIndiana 151a5
• FreeBSD 9.0(i386)
• NetBSD 5.1.2(i386)
12. clu2cプロジェクト参加者
• 江原善(初代リーダー) • 野澤義雄(ライブラリ実装) プロジェクト終了後
• 木原誠司(コンパイラ実装) • 林智子(ライブラリ実装) • 前田修吾さん
• 地引昌弘(デバッガなど) • 森村健司 • Linuxへの移植およびPorts化
• 孫音(ライブラリ実装) • Human68k、MS-DOSへの移植 • 東平洋史
• 森玲人(デバッガ担当) • 前田さんの改造をCLU使用部
• 牛嶋哲(二代目リーダー) 分に反映
• 日本語文字使用部分実装 • 東平洋史(最適化など) • Cygwin、Ubuntu 9.04への移植
• 富沢伸行(ライブラリ実装) など • 64bit環境対応
• 浦野幹夫(ライブラリ実装) 以上、東京工業大学理学部情
報科学科木村泉研究室在籍者
15. まとめ
• プログラミング言語CLUの特徴 • 東京工業大学木村泉研究室とCLU
• 強い型付け • CLU処理系の移植
• 抽象型 • CLUマシン
• 複数の戻り値 • CLU言語を命令セットとするOS
• イテレータ • nclu
• 例外処理 • 2バイト文字使用
• !記法
• パラメータ処理
などなど • clu2c
• CLU→C→実行形式
• CLUを授業に使用
16. 参考文献(CLU関係)
• CLU Reference Manual
• Liskov, B., Atkinson, R.R., Bloom, T., Moss, E.B., Schaffert, R. and Snyder, A. 著
• http://publications.csail.mit.edu/lcs/specpub.php?id=793
• Amazonでも書籍購入可能
• CLUとその仲間たち
• 久野靖 著
• 共立出版 bit 1989年5月号~12月号 に連載された雑誌記事
• http://www.oreilly.co.jp/books/9784873113630/#files
17. 参考文献(clu2c関係)
• 開発効率と移植性を重視したCLU言語処理系の作成
• 江原善 著
• 東京工業大学理工学研究科情報科学専攻 修士論文
• http://touhei.sakura.ne.jp/clu2c/clu2c-thesis.tar.gz
• TeX → Postscript 形式で公開
• ポータブルな言語処理系の日本語化方式
• 牛嶋 哲 著
• 情報処理学会研究報告. PRO, [プログラミング] 96(58), 13-18, 1996-05-31
• http://ci.nii.ac.jp/naid/110002929515
--- a PPN by Garber Painting Akron. With Image Size Reduction included! Fetched URL: http://www.slideshare.net/hirofumitouhei/rubyclu-16404018
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy