Content-Length: 256975 | pFad | http://www.slideshare.net/hirofumitouhei/rubyclu-16404018

Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料) | PPT
SlideShare a Scribd company logo
Rubyの御先祖
CLU(くるう)のお話

 CLU動態保存整備士
    東平洋史
内容
•プログラミング言語CLUの特徴
•CLUの処理系 clu2c の特徴と実演
CLUのプログラム例
start_up = proc()
  stdout:stream:= stream$primary_output()
  stream$putl(stdout, “Hello World!”)
end start_up

•変数は使いたい時に宣言
•プロシージャ―の呼び出し方
  type$procedure
プログラミング言語CLUの特徴(1)

• MITのBarbara Liskov考案(1974)
• 強い型付
  • コンパイル時に全てのオブジェクトの型が決まる
  • でも、任意の場所で変数宣言可能
• プロシージャを定義可能
  複数の戻り値が可能
  a:int, b: real := type$procedure(c, d)
• 変数の値は全てヒープ上のオブジェクト
  • Garbage Collection
プログラミング言語CLUの特徴(2)
• イテレータを定義可能
 • 繰り返しを抽象化
 • for文で使用
 • 複数の値を引き渡し可能
• 抽象型(クラスタ)を定義可能
 • 属性、プロシージャ、イテレータを持つ
 • 具体表現は外から隠蔽
 • 継承はできない
• 例外処理
• 伸縮自在な配列
• パラメータ機能
イテレータ
• 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でブロックへ拡張
CLUの基本型
• int     整数            型の種類 書き換え 書き換え
• real    実数                    可能     不能
• bool 論理               配列   array  sequence
• char 文字               構造体  record struct
• string 文字列            共用体  oneof  variant
• proctype プロシージャ
• Itertype イテレータ    •   書き換え可能
                        • オブジェクトの状態が変化するもの
• any               •   書き換え不能
• null                  • オブジェクトの状態が変化しないもの
クラスタの例

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
東京工業大学木村泉研究室と
           プログラミング言語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のプログラムに変換
CLU処理系clu2c
 • CLUをCに変換し、さらに実行形                     • 以下のプログラムで構成
   式を生成する処理系                                • clu2c
 • CLUとCで実装                                    • CLUをCに変換するプログラム
 • GCは Boehm GC を使用                            • MIT製処理系cluを改造
                                                   • 主にコード生成部を作成
                                            • clulink
 CLUの   clu2c     Cの                           • 実行形式を生成
プログラム           プログラム
                                               • Cコンパイラとリンカ
                           clulink   実行形式   • plink
                ライブラリ
                                               • パラメータ機能の分析
                                               • ユーザは直接呼び出さない。
                Boehm GC                         clulinkが呼びだす。
動作確認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)
clu2cプロジェクト参加者
• 江原善(初代リーダー)     • 野澤義雄(ライブラリ実装)           プロジェクト終了後
• 木原誠司(コンパイラ実装)   • 林智子(ライブラリ実装)            • 前田修吾さん
• 地引昌弘(デバッガなど)    • 森村健司                      • Linuxへの移植およびPorts化

• 孫音(ライブラリ実装)       • Human68k、MS-DOSへの移植   • 東平洋史
                  • 森玲人(デバッガ担当)               • 前田さんの改造をCLU使用部
• 牛嶋哲(二代目リーダー)                                  分に反映
  • 日本語文字使用部分実装   • 東平洋史(最適化など)               • Cygwin、Ubuntu 9.04への移植
• 富沢伸行(ライブラリ実装)   など                          • 64bit環境対応

• 浦野幹夫(ライブラリ実装)   以上、東京工業大学理学部情
                  報科学科木村泉研究室在籍者
clu2c現在の状態
開発自体は終了
• 木村泉先生退官により木村泉研究室消滅
• 東工大 理学部 情報科学科での公開は終了
• 現在は「動態保存」
 • 実用されなくなった機械類を、操作や運用が可能な状
   態で保存しておくこと。「デジタル大辞泉」より
• こちらでソースを公開中
 • http://touhei.sakura.ne.jp/clu2c/
 • http://sourceforge.jp/projects/clu2c/
clu2cに残る課題
いずれもプロジェクト終了後に発生したもの
• UTF対応
 • ISO-2022-JP、Shift_JIS、EUC-JPには対応済み
 • 文字、文字列のリテラル
 • 識別子
• ユーザーインタフェースの多言語化
 • 現状は英語のみ
まとめ
• プログラミング言語CLUの特徴 • 東京工業大学木村泉研究室とCLU
 • 強い型付け          • CLU処理系の移植
 • 抽象型            • CLUマシン
 • 複数の戻り値            • CLU言語を命令セットとするOS
 • イテレータ          • nclu
 • 例外処理              • 2バイト文字使用
                     • !記法
 • パラメータ処理
 などなど             • clu2c
                     • CLU→C→実行形式
                  • CLUを授業に使用
参考文献(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
参考文献(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

More Related Content

Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)

  • 3. CLUのプログラム例 start_up = proc() stdout:stream:= stream$primary_output() stream$putl(stdout, “Hello World!”) end start_up •変数は使いたい時に宣言 •プロシージャ―の呼び出し方 type$procedure
  • 4. プログラミング言語CLUの特徴(1) • MITのBarbara Liskov考案(1974) • 強い型付 • コンパイル時に全てのオブジェクトの型が決まる • でも、任意の場所で変数宣言可能 • プロシージャを定義可能 複数の戻り値が可能 a:int, b: real := type$procedure(c, d) • 変数の値は全てヒープ上のオブジェクト • Garbage Collection
  • 5. プログラミング言語CLUの特徴(2) • イテレータを定義可能 • 繰り返しを抽象化 • for文で使用 • 複数の値を引き渡し可能 • 抽象型(クラスタ)を定義可能 • 属性、プロシージャ、イテレータを持つ • 具体表現は外から隠蔽 • 継承はできない • 例外処理 • 伸縮自在な配列 • パラメータ機能
  • 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環境対応 • 浦野幹夫(ライブラリ実装) 以上、東京工業大学理学部情 報科学科木村泉研究室在籍者
  • 13. clu2c現在の状態 開発自体は終了 • 木村泉先生退官により木村泉研究室消滅 • 東工大 理学部 情報科学科での公開は終了 • 現在は「動態保存」 • 実用されなくなった機械類を、操作や運用が可能な状 態で保存しておくこと。「デジタル大辞泉」より • こちらでソースを公開中 • http://touhei.sakura.ne.jp/clu2c/ • http://sourceforge.jp/projects/clu2c/
  • 14. clu2cに残る課題 いずれもプロジェクト終了後に発生したもの • UTF対応 • ISO-2022-JP、Shift_JIS、EUC-JPには対応済み • 文字、文字列のリテラル • 識別子 • ユーザーインタフェースの多言語化 • 現状は英語のみ
  • 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








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- 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