clu2cの(仮)ホームページ
あなたは人目の訪問者です。
CLUの処理系clu2cのホームページです。
clu2cのマニュアル
英語
プログラミング言語CLUとは?
CLUは数々の抽象化を定義できるプログラミング言語です。
1974年にMITのBarbara Liskovによって作られました。
JavaやRubyにも大きな影響を与えました。以下、CLUの特徴の一部です。
- 強い型付け
- コンパイル時にすべての型が決まる
- でも任意の場所で変数宣言可能
- 抽象型(クラスタ)を定義可能
- 複数の戻り値が可能
- 次の処理が可能
- a:int, b: real := type$procedure(c, d)
- a, b :int := b, a
- 変数の値はヒープ上のオブジェクト
- プロシージャ
- いわゆる手続き
- ユーザ定義可能
- Syntax Sugar により、省略記法が可能。下記はその一部。
- type$add(a, b) ⇔ a:type + b:type
- type$sub(a, b) ⇔ a:type - b:type
- type$mul(a, b) ⇔ a:type * b:type
- type$div(a, b) ⇔ a:type / b:type
- type$get_name(a) ⇔ a.name
- type$set_name(a, 式) ⇔ a.name := 式
- イテレータ
- 繰り返しを抽象化
- ユーザ定義可能
- for文から呼び出す
- Rubyは任意のブロックで使用可能
- まつもとゆきひろ著「
Rubyistのための他言語探訪【第2回】CLU」より
- イテレータの定義の仕方は驚くほどRuby に似ています。真似したんだから当然です。 元々Ruby のブロックはCLU
のイテレータに似たものを実現するためにデザインされたからです。
- 例外処理
- 配列は伸縮自在
- オブジェクトは書き換え可能なものと書き換え不能なものとの二種類
- パラメータ機能
clu2cのインストール手順
以下、clu2cのインストール手順です。
-
A garbage collector for C and C++などから、
Boehm の GC の最新版をとってきてインストール。
gc-7.2d.tar.gz のミラー
-
http://www-ftp.lip6.fr/pub/lang/clu/clu2c/
などから clu2c-1.99.3.tar.gz をとってきて、展開。
clu2c-1.99.3.tar.gz のミラー
サイト全体のミラー
- パッチをあてる。
改版履歴
- 1.99.3-7 初回公開版。Cygwinで動作。
- 実は Boehm GC を最新版に置き換えただけでほぼ無修正で動作。
- というわけで、1.99.3-5 で C だけ直していたのを、
CLUのソースにも反映させたという微調整のみ、行ないました。
- なぜ 2001年を最後に動かなくなったのかが私にはわかりません。
もしかして、8年経ったら gcc の構成が変わったのか?
- 1.99.3-8
セルフコンパイルの不具合を解消。Cygwinで動作。
- 1.99.3-9 Cygwin、Ubuntu
9.04で動作。
- 1.99.3-10 Cygwin、Ubuntu
12.04.1(i386、amd64)などで動作。
- cd ./clu2c-1.99.3
- touch ./*/*/pretrans/op-table.c
- あとは clu2c-1.99.3 を作る時とほぼ同じです。
- 次のエラーが出る場合があることがわかっています。
- GCライブラリとのリンクがうまくいかず、
Segmentation Fault を起こす場合があります。
その場合は、スタティックリンクを試してみてください。
- サンプルプログラムを動かしてみましょう。
Ruby Listに報告したところ、Rubyの作者まつもとゆきひろ様にもつ
ぶやいていただきました。
http://bit.ly/27E7tM
clu2cを動かす方法。
12:19 AM Nov 7th APIで
動作確認OS
動作確認をお手伝いしてくださる方、募集中
- Cygwin(Windows Vista(32bit)、Winsows 7(64bit)、Windows 8(64bit))
- Ubuntu 12.04.1(i386、amd64)
- OpenIndiana 151a5
- Solaris 11/11
- Solaris 11.1 i386 (32bitアプリケーション、64bitアプリケーション)
- OpenSUSE 12.2 (32bit、64bit)
- CentOS 6.3(i386)
- Fedora 17(i386)
- NetBSD 5.1.2(i386)
- NetBSD 6.0(amd64)
- FreeBSD 9.0(i386、amd64)
参考文献
CLU関連
- CLU Reference Manual
- Abstraction and Specification in Program Development
- CLUとその仲間たち
- プログラム言語CLUの実用的処理系とその使用経験
- 3.抽象データ型言語ーCLU と Alphardー
- 78-15 CLU における抽象化メカニズム
- データ抽象化言語CLUによる中規模システム作成の経験
- CLU言語のためのモジュール管理システム
- CLUマシンシステムの開発
- 久野 靖、佐藤 直樹、鈴木 友峰、中村 秀男、二瓶 勝敏、明石 修 著
- 情報処理学会 研究報告 - システムソフトウェアとオペレーティング・システム 1986年12月 Vol.1986 No.84
-
IPSJ-OS86033004
- CLUマシンシステムの開発
clu2c関連
- 開発効率と移植性を重視したCLU言語処理系の作成
- ポータブルな言語処理系の日本語化方式
東平 洋史
連絡先は gmail でアカウントは hirofumitouhei