Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 1,072 views

 

Statistics

Views

Total Views
1,072
Views on SlideShare
1,070
Embed Views
2

Actions

Likes
0
Downloads
1
Comments
1

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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 ...• 呼び出しの流れ end1. 初期呼び出し イテレータ2. イテレータの初期設定 from_to=iter(first:int, last:int) yields(int) 3 n:int := first3. 値を引き渡す。 5 while n <= last4. ループ本体を実行する。 yield(n) n := n + 15. 次の値を貰いに行く。 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