英語の「日月年」の順序にはどうにも馴染めない。馴染みたいとも思わない。
pnet は Portable.NET の略ですか。うーんと、treecc → pnet → pnetlib の順番でいいのかな。
treecc ってコンパイラコンパイラか。セマンティックパーサを実用的に使ってるのは始めて見た。
おっと、CVS 版だから autoconf が必要だ。しくしく。Makefile.in がナイって言われるヨー。automake もいるようだ。
む、pnet の support/locale.c が止まるな。CODESET が未定義? うわー、嫌だなあ。この Plamo はロケールまわりボロボロなんだわ。とりあえず _NLCTYPE_CODESET_NAME にしとこう (glibc 2.2.5 の定義を見てきただけ)。……よし、通った。
なんだ、HACKING ってファイルに CVS 版のインストール方法が書いてあるじゃん。
ところでさ、cscc って C が一個多くない? それじゃ C# Compiler Compiler になってしまうぞ。あうー、これも書いてあった。C Sharp Code Compiler だってさ。
む、バックエンドに cscc-cs なんてのがあるぞ? これは別の言語への対応用ですね?
csdoc ……また XML か。向こうの奴は好きだなあ XML。
よしっ、テストだ! Hello World だ!
% cat hello.cs
public class C
{
public static void Main()
{
Console.WriteLine("Hello, World!");
}
}
% cscc hello.cs
% ilrun a.out.exe
Hello, World!
おお、動いた!
ふむふむ、root で ilrun --register としておくと ./hello で実行することもできるのだな (要 Linux 2.2 以上)。
% ilrun --register
% cscc -ohello hello.cs
% ./hello
Hello, World!
本当だ。へー。
おかしいなあ、foreach がパースエラーになる。
public static void Main(string[] args) { foreach (string a in args) { cat(a); } }
で文法合ってるはずだが。エラーメッセージが unexpected "identifier" なのでスキャナがバグってるのかな。
それが、foreach を for の文に変えると動くし、文法解析のとこに foreach の構文が入ってるんです。NEWS にも「foreach サポートしたよん」って書いてあるので、たぶん使えると思うんですけどねえ。いいや全部書いちゃえ。C# で書いた cat コマンド (オプションなし)。
using System; using System.IO; using System.Text; public class Cat { public static void Main(string[] args) { if (args.Length == 0) { cat(Console.In); } else { // foreach (string a in args) { // こっちを使うとパースエラー for (int i; i < args.Length; i++) { string a = args[i]; TextReader f = File.OpenText(a); cat(f); f.Close(); } } } private static void cat(TextReader f) { // foreach (string s in f) { // こっちを使うとパースエラー string s; while ((s = f.ReadLine()) != null) { Console.WriteLine(s); } } }
ぐは、も一回やったらパースエラーどころか SEGV した……。さすがα版だ。
そんなわけでやっぱ明らかにバグっぽいです。
ついでに、tDiary では空行を入れるのが大変だということも判明。やっぱりなにかプリプロセスをかませたい。でもそろそろ原稿に戻ろっと。
高値に消えたカップラーメン「ほむら」であったがこのたびめでたく復活するようだ。その名は「辛ほむら」。5/6 あたりに登場するはず。
なんでこう最近の若い者は味の違いがわからんのでしょうか。あの二つがどうやったら同じ味になるんですか。いくら 120 円安いからってあんなパクりアイス食ってどうするよ。パリパリ感もアイスの質も桁違いなんだよムキー!
……ハーゲンダッツのキャラメルサンドと、エスキモーのパクりアイスのことです。
長らく放っておいためたりっくの契約を切った。うっかりメールアドレスを広めてしまったためにずいぶん金を損してしまった。
めたりっくは速度は速かったけど、いいとこはそれだけだもんなあ。本当にどうしょもない。それでも NTT の壁をこじあけた功績だけはたたえてあげよう。
どうしてもグリーンウッドと読んでしまいます。
■ arton [うーん、そのアイスは知らないからなんとも言えないけど、エスキモーは老舗のイタリア風アイスだから、ハーゲンダッツと質感は違って当然なような……]
ばっ。時計を見る!
うそっ……。5 時?! 5 時ってどっちの 5 時? 今度は騙されないぜっ!
……うげ。本当に夕方の 5 時だ……。おかしいなあ、最近は夜更しもせず朝起きてるのにどうしてこんな時間に。
えっとですね、うちはなぜか隣町に二つマンションの部屋を持ってるんです。そんでぼくはその片方に住んでます。昼間は他の家族も使うんですが使わないときもあるので、そういうときに目覚しをセットしわすれると 17:00 になったりします。
■ ただただし [誰も起こしてくれないの?]
朝 6:00。やればできるもんだ。
最近プログラムというものをまったく書いていない。どうやら今は文章を書きたくなる周期のようだ。
かつてのアルバイトの先輩は岩波文庫の青を集めているらしい。かなり意外だ。その先輩曰く、あのシリーズはとてもためになるらしい (競馬に)。しかも学んだことを生活ですぐ試せるらしい (競馬で)。
青シリーズ、10 冊くらい持っていながらほとんど読んでないんだけど、話を聞いていたら読みたくなってきた。
7:00。順調。じゃがいもとわかめの味噌汁 (たまご入り) で御飯を食べた。食材切れる。
歴史が長いだけに、精読するとバグとか無駄なコードがポロポロと見付かる。でも eval.c ではそんなコードにも意味がありそうでちと恐い。
5:00。かなり信じ難い。
ふと気付くとホームディレクトリの容量のほとんどがインストールもしないプログラムのソースコードで埋められていた。もしかして俺って C が好きなのだろうか。なんて問うまでもなく C は好きだ。なんで C がいいかというとなんでもできるから、すなわち高級言語なフリをしつつもアセンブラみたいなこともできてしまうからだな。
そうすると本当に好きなのは C でもなく、ハードウェアなのかもしれない。してみると Alpha とか Sparc に反応するのもそのへんが原因か。ただ x86 だと全然萌えない (例外: Pentium Pro 1MB キャッシュのデュアル以上)。
話は変わるけどこのまえ AlphaStation 500 がいい値段で Yahoo オークションに出ていた。しかも 400MHz だ。くそう。欲しい。すげえ欲しい。まだ紺匡体持ってないし。それなのに、それなのになんで金がないんだぁー。
くそー! 原稿書くぞ!
原稿書きの BGM に aiko のアルバム三枚を連続で聞く。ループ二回目にして早くも疲れてきた。さすがにあれの連続はまずいようだ。別の CD にしよう。とはいっても椎名林檎に逝くのでは疲れる一方だよ?
ちなみに aiko は『心日和』(アルバム三枚目のトラック 6) とかが好きです。
ここしばらく第三部ばっかりやってて飽きてきたので目先を変えて第一部を書いてみる。今日は一気に 40KB ばかし書いた。
うわー、Maildir がまったく動かんかった。このクラスはまだテスト書いてなかったんだ。全部のクラス/メソッドをテストしているかテストすべきか。ていうかそういうことを心配しないためのテストファーストなんだろうね。
あの Solaris のソースコードをダウンロードできるというので Sun に行ってみたが、その手順がとてつもなく面倒くさい。ライセンスをプリントアウトして署名して FAX で送り返すらしい。やーめた。
DEC を潰した Compaq も HP に買収されて、Alpha はさらに苦しくなってきたなあ。21364 はちゃんと出るのだろうか。
とてつもなく眠い。すっかり夜型が身についてしまったせいだろうか。
うーむ、メディアキット買うと 11 ページ FAX しなくていいんですか。でも高いっす (75 ドル)。それでも海外に 11 ページ FAX するよりは安くて楽かな。
三ヶ月で……書けるのか? 書けるのかこんな量を!
「プログラミングは art か science か」というスレッドが興味深い。最近はこういうオフトピスレッドが ruby-list で起きないね。つまんないなあ。
ちなみに ruby-talk は 40000 通いったらしい。
■ なかだ [私もよく分かりません^^;。]
わかんないっすよねえ、あれは。ぼくも紹介されてた Scheme で表現した Y Combinator の解説を読みながら Scheme のコード実行しまくってやっと上っ面だけ理解しました……。
でも後から立石さんのメールを見てプログラム意味論の教科書を見てみたら、いきなり 21 ページにあるんですよねえ。こっちは 1 ページで終わっててちょっとショック。λ式でいろいろな計算を表現する、という文脈で出てくるんですね。せっかくだからその前の 20 ページも読みました (そしてそこで止まる)。
そうかあ。酒井さんの日記で出てきたカリー化ってλの引数を一個に変換することなのね。おれはまたハウス・ザ・カリーをふりかける操作かと思ったよ。
(lambda () (lambda () (lambda () (lambda () (を (たべーるとー (あたま (あたま (あたまー (あたまが括弧だよー))))))))))
結合順位が合ってないなあ。
なんとなくここのような気がするのでパッシブ型返信。ソースコード引用があるので記述量は多めに出るのです。文章だけだとノリまくってるときで 25〜30KB/日 くらいでしょうか。それ以上はぼくの場合、時間より集中力が持続しなくなります。逆に一ヶ所の調査にえんえんと時間がかかって 1KB も書けない日もあります。
zsh は次々に新しい技を発見できるのが楽しい。 今日はコマンドラインのどこででも alias を展開してくれる alias -g を覚えた。 例えば alias -g L='| less' と定義しておくと次の二つが同じになる。
% cat src/eval.c | less % cat src/eval.c L
調子にのって alias -g C='| wc -l' とか定義しまくってみた。 しかしテスト用ディレクトリに T/ を多用しているので T='| tail' を 迂闊に定義できないのが残念である。
zsh と言えば、除外するパターンを指定する ~ も便利だー。
% ls -d **/*~**/CVS(/)
とすると、カレントディレクトリ以下の、CVS/ 以外の全ディレクトリが ls される。 ありゃ、これで ./CVS が表示されるのはバグかなあ。zsh 4.0.4 ですけど。
ぬお、ヤフオクに AlphaServer1000 が出とる! さーばだよさーば! し、しかもこれは…… Tru64UNIX 付きかっ?! ほすぃ!
章構成を変えまくってみた。ここで総計 292KB。予定量の約半分か (しかしほとんどソースコード引用だったりする)
とある事情から世代別 GC が気になってるのだけどマージされる気配はなし。1.7 にパチってみようかなあ。また時間くうけど。
http-access2 を標準添付にしてもらってぼくはもうひっこもうかと考えてます。
ruby-dev を英語で要約して ruby-talk に流そうプロジェクト。
あー……めんどい。誰かー、誰かもう二人くらい手伝ってくれー。五人いれば一ヶ月に一回で済むんだよー。
あ、いえ。別に木山さんはなんも悪くないっすよ。誰に金もらったわけでもなし。ぼくもやると決めたわけじゃないですしね。というかかなり怪しいです。
ところで、いまの 1.7 に例のパッチマージするのって結構難しいんでしたっけ。なんか、メモリアロケーション関係を対応させないといけなかったような……。
ツッコミに対してツッコミで返事するか、本文で返事するか、迷うなあ。とりあえずいまは分量で決めている。
展開の {a,b,c} の途中でも補完してくれるだけでもかなり嬉しいが、
% wc -l {obj[TAB]ect.c,cl[TAB]ass.c,var[TAB]iable.c,
となったところで括弧を閉じると直前のカンマが消えるよ……。かしこすぎ!
とりあえず木山さんの論文を印刷して読み gc.c へのマージ戦略を練る。まだちゃんと読んでない、読んでないのだが、今の時点で一つだけはっきり言えることがある。それは、
やっぱり紙はいいってことさっ。
D 言語があるのは知ってたけど、E もあるのか。誰かー、誰か F 言語を作ってくれー。Fortran があるじゃん、とかいうボケは禁止ね。
うーん、さらに一歩先手を打って G 言語を作っておくってのはどうかな。コンパイラは gc? なんか GNU ツールっぽいな。
H …… H 言語。だめだ。いい印象がまるでない……。つうかさ、H、I と来た瞬間に「HITACHI の IH ジャー炊飯器」っていう単語が浮かんじゃったんだYO!
I …… i 言語。i-mode?
J …… J 言語。あるし。
K …… K 言語。おっ?! K はないんじゃないか? そういえば K のつく言語って少ない感じがするぜ!
L …… Lisp があるな。
M …… m かあ。m もないな。でも m4 があるから m もあったりして。
N …… n かあ。だんだんどうでもよくなってきたよ。
O …… O ? なんか O 記法を思いおこさせる。O(n) とかのやつ。プログラムを書くと自動的にアルゴリズムのオーダーを低減してくれたりするのだろうか。
Q …… えーと、諸事情により P は省略しました。Q か、Q は結構好きだな。qc、いいですね。摩訶不思議なプログラムが書けそう。1/256 の確率で命令が実行されなかったりとか。きゅ〜、って感じで。
S …… 一身上の都合により R も省きました。S、S はありますね。有名なやつが。
T …… T 言語。T 言語。かっこわる。
U …… U 言語。もうどうでもいい。
V …… V 言語? 「燃えろ〜ガンダム〜」という歌詞が浮かんだ人は却下。
W …… W 言語。なにがダブルなんだよ。トイレットペーパーか? おめでてーな。
X …… X 言語。うわ、絶対名前負けしてるって。そういや同じく名前負けの XBox は大失敗ですね。ざまみろー。
Y …… Y 言語。Y 言語……猥言語!?
Z …… Z 言語。ゼータ言語と読むのが正しい。しかしこれもだめだな。安直すぎ。zsh は三文字でしかも字面がとても格好いい組み合わせなので許す。
結論。ということで当サイトでは「きゅ〜言語」を次世代の言語として推薦したいっ。
■ Shiro ["T"はありますよん。Schemeのdialectですが。http://www.paulgraham.com/thist.html]
■ matz [M,T,Zはあります.あ、Aもあるな.]
■
たかはし [<a href="http://objectclub.esm.co.jp/U-Language/"
>The Q Language</a>。
<a href="http://objectclub.esm.co.jp/U-Language/"
>U言語</a>。
<a href="http://www.first.gmd.de/v/v.html"
>The Parallel Programming Language V</a>。
<a href="http://www.freesoftware.fsf.org/xlang/">X Language</a>。]
■
kjana [The Language List
http://cui.unige.ch/langlist に
B,C,D,E,G,J,M,Q,S,T,V,Y はあった.
# P は引っかかるエントリが多すぎて確認できず.
F はなにか聞いたことある Fortran 派生だったかな?
Z は有名.]
ぐわー、カレーうどん食ってメール見たらすごい反応が。
まとめると、A B C D E F G J M Q S T U V Y Z はあるってことですか。いやー、世の中にそんなにいっぱい一文字言語があるなんて思いもしませんでしたよ。わたしは悲しいです (なんでだ)。
しかし、残りは H I K L N O P R W X か。やはりドスの効いてない文字が残るのだな。
えー、そうですねえ、ファミコン全盛時代に育った世代としてはやはりゲーム機は任天堂にがんばってほしいですね。なんだかんだ言われてはいますが、あそこのゲームはやはり質がよいのです。スーパーマリオランドなんていまだに時々ひっぱりだして遊んでますが、それでも楽しめるのだからたいしたもんですね。PS なんてゲームの数だけはありますがクソゲーばっかじゃないですか。5 年 10 年たって遊べるゲームが PS に何本あるって言うんですか。
え、PS2? PS2 ねえ……。PS2 って言われると PS/2 端子を思い浮かべてしまうのはぼくだけですか? いやそれはいいんです。PS2 ね。確かに気合いは感じますね、しかし気合いしか感じませんね。あ、それから、知り合いの話によると「とても基板が美しい」らしいです。ちなみにその知り合いは PS2 発売日にあらゆるコネを駆使して数十台を確保、転売してマージンを稼ぎまくったそうです。かなりの悪者です。いやそれはいいんです。なんでも「古くなったらオブジェとして飾ってもいいくらい」美しいらしいので、PS2 お持ちのかたは一度見てみてくださいね。
うーむ、ソニータイマー発動かあ。それはあるかも。
でも、でも、本当にソニータイマーってあるんでしょうか。ということで物知りのぐ〜ぐるさんに聞いてみました。「ソニータイマー」で 1570 件、「ソニータイマー 発動」で 258 件ヒット。ふーむ、確かに発動報告はたくさんある……。プレステとウォークマンがダメってのが多いな。でも他のメーカーと比べてどうなんですかね。明らかに違うもの?
あ、「明らかに設計が違う」という声があった。CD プレーヤを直してる人の意見だと説得力あるなあ。ふーん……。プレステはピックアップのレールがプラスチックだからすぐ摩耗して壊れるらしい。
なんと、K 言語もあるそうです。K さんありがとう (……シャレ?)。APL 由来の J 由来の言語らしい。しかしこの見ためはなんか気持ち悪いぞ。
残りは H I L N O P R W X になりました……。「ひるのぷりゅうくす」と無理矢理読んでみた。
プロンプトをカラフリ〜にしてみた。 こんな感じに設定するとプロンプトにランダムに色が付く。
setopt prompt_subst PROMPT='%{^[[$((color=$((32+$RANDOM % 5))))m%}%~ %#%{^[[m%} ' RPROMPT='%{^[["$color"m%}%n@%M%{^[[m%}'
PROMPT と RPROMT それぞれに二個づつある ^[ は ESC。 %{...%} がエスケープシーケンスを入れるところらしい。$((...)) は数式の計算。
ランダムじゃなくて、マシンの負荷に応じて色が 赤くなっていくってのも面白いかもしれないなー。
ずっと忘れてたんですけど、今日の深夜 1:00 から 2:30 まで家が停電するのでサーバを止めます。って今ごろ書いても役に立たないですよねえ。
ruby-gnome を ssh 経由でチェックアウトしようとしたのだけどなぜかつながらない。メッセージから推測して怪しい設定は全てチェックしたのだがまだだめだ。おかしい。おかしい。おかしい。
と二時間くらい悩んだ挙句、理由がわかった。設定ファイルが /usr/etc/ssh_config なのに /etc/ssh/ssh_config を直していたのが原因だった。やめてくれえ〜。
なお ~/.ssh/config に書くほうがより確実だ。
今日はあつい。
小澤さんによる負荷がかかると赤くなるプロンプトの解。 color なんてモジュールがあるのか。勉強になるなあ。
loadavg の数値の範囲を 0.0〜1.0 にするだけで家の Linux では動きました。 loadavg を uptime から取るとするとどうなるのかな。cut だと面倒だし…… あ、ruby で書けばいいじゃん。
if [[ $TERM == ([xk]term|screen|linux|jfbterm) ]]; then autoload -U colors colors fi load_average_color () { case $(uptime | ruby -e 'puts ARGF.read.slice(/\d\.\d\d/)') in 0.[012]*) echo $fg_no_bold[blue] ;; 0.[345]*) echo $fg_no_bold[green] ;; 0.[678]*) echo $fg_no_bold[yellow] ;; 0.9*) echo $fg_no_bold[red] ;; *) echo $fg_bold[red] ;; esac } PROMPT='%{$(load_average_color)%}%~ %#%{$reset_color%} ' RPROMPT='%{$(load_average_color)%}%n@%M%{$reset_color%}'
でも悲しいことに (?) うちでは loadavg が 0.2 以上になることは 滅多にないのだった。仕方がないので無限ループプログラムを動かして 実験した。
堀川さんの『Ruby de CGI』出版記念飲み会に行ってきた。ここんとこRubyの本は出版ラッシュですねー。それはともあれ堀川さんは思ったより若い人だった。ついでに、プログラマではないと知ってちょっとびっくり。Rubyのユーザにはプログラマが少ないような気がするね? …某MLでの比率が少ないだけか。
妹が、「Question」を「(Q)」に直す、という変換を30ページ分やっていた。もちろんひたすら手作業。アホだ。いやカモだ。ここぞとばかりにキーボード強奪&Rubyインストールして五分で終わらせてやった。今度は「たのしいRuby」でも使ってさらに洗脳を進めることにしよう。
■ arton [合ってるように見えるけど。catが非staticか、全体をclassで囲ってないか、かな? (foreachが未実装とか?)]