学会発表の準備で文芸的プログラミングについて調べているうちに、自分でも一度、やってみないといけないと思いたち、ちょっとやってみました。
使用したツールは”nuweb”です。MacPorts でさくっとはいりました。まずは以下を見て下さい。
中央の「Hi!」ボタンはもちろんだけど、左上のリンクをクリックするのをお忘れずに。ここを見ないと文芸的の意味がないですから。

東京工業大学大学院 数理・計算科学専攻 准教授
学会発表の準備で文芸的プログラミングについて調べているうちに、自分でも一度、やってみないといけないと思いたち、ちょっとやってみました。
使用したツールは”nuweb”です。MacPorts でさくっとはいりました。まずは以下を見て下さい。
中央の「Hi!」ボタンはもちろんだけど、左上のリンクをクリックするのをお忘れずに。ここを見ないと文芸的の意味がないですから。
今朝は、ビジュアルプログラミングとの関連で、”tex.web” というプログラムを斜め読みしています。
そこでひとつの発見をしたかもしれません。バグのないコードは短いです。少なくともKnuthのTeXは。TeXのプログラムは1,379個のモジュールから構成されていますが、そのうち8個の例外を除いてすべて1ページに収まっています。それも、コメントどころではない非常に詳しい解説つきで。
なにが言いたいのかというと、プログラムは一画面で見渡せる程度の規模のモジュールの組み合わせから作るべきだということです。で、それがどうしてビジュアルプログラミングに関係するかと思ったら、それは先を読んで下さい。
続きを読む »
昨夜、前学期の成績を報告しました。今週は月曜から木曜まで大学院入試で、ぼくの手帳によれば成績報告の締切は昨日ということになっていました。今学期にぼくが担当しているのは、一年生向けのコンピュータリテラシ3クラス分、約230名の成績です。ただ、今学期はI類とVI類向けに学期途中でのクラス編成替えなどという、学生にとっては嬉しいかもしれないけれども、教員にとってはややこしいことをやってしまいました。このため、自分のクラスだけでなく、I類とVI類の全クラスの集計も引き受けたために、結局、僕を通して成績を報告したのは、I類とVI類の全学生、VII類の半数の学生ということで全部で400人以上になったのではないでしょうか。文系の先生はもっと多いかもしれないけれども、ぼくとしては最高記録です。
マニアックですみません。ほとんど自分のためのメモです。
Before:
FUNCTION {format.doi}
{ doi empty$
{ "" }
{ new.block "\doi{" doi * "}" * }
if$
}
After:
FUNCTION {format.doi}
{ doi empty$
{ "" }
{ "" }
if$
}
if 文は無駄なのではないか、気持ち悪くないのか、などという突っ込みはなし。人生は短く、ほかに悩むべき有益なことは多い。
今までは、投稿直前に .bbl ファイルをエディタで修正していました。そのヤバさから開放されて嬉しいです。
一昨日、今学期最後の授業に向って構内を歩いているときに、向うの方でドサッという音がするので目をやるとなんと鳥でした。鳥も熱中症になるんでしょうか?みなさん、猛暑への対策は大丈夫でしょうか。
ところで、この季節は東工大名物の節電警報なるものが始終放送されます。全学の電気消費量を減らすための工夫です。暑い真夏の午後、建物ごとにこんな放送があります。
お知らせいたします。節電警報が発令されました。これより30分間、実験上、支障がない部屋の節電をお願いいたします。
この放送があるとエアコンの電源を切って節電に協力するわけです。
ところで、東工大の同僚のみなさんは、節電警報が切れた時間にエアコンのスイッチを入れ忘れて、いよいよ暑さに耐えられなくなってエアコンのスイッチを入れたとたんに次の節電警報が放送されたという経験があると思います。わたしも何度も経験しました。そんなあなたに以下のスクリプトをお送りいたします。
#!/bin/bash
length=1800
btime=`date +%s`
etime=`expr $btime + $length`
fmt="+%H:%M"
echo "`date -r $btime $fmt` に節電警報が発令されました。`date -r $etime $fmt` まで我慢です."
if [ -x /usr/bin/say ]; then
say "Thank you for respecting the electricity saving campaign starting from `date -r $btime $fmt` upto `date -r $etime $fmt`."
fi
sleep $length
echo "お元気ですか?`date -r $btime $fmt` に発令された節電警報分が解除される時間になりました."
if [ -x /usr/bin/say ]; then
say "Thank you for participating the electricity saving campaign. Feel free to turn on the air conditioner."
fi
節電警報が放送されてから30分後にその警報期間が過ぎたことを知らせてくれます。Mac の場合は音声でそのことを通知してくれます。
個人用ブログにコメントスパムに攻撃され始めて困っているという話をしました。WP SpamFree という JavaScript を使ったコメントスパムフィルタの効果に翳りが見えてきたのです。このフィルタは
コメントページに JavaScript を埋め込み、それを正しく解釈していないコメントはスパムを見做すという仕組みのようです。つまり、スパマーも JavaScript を正しく解釈できないと投稿できないようになっています。これに加えて、Cookie を併用できます。
WP SpamFree のような技術的なハードルを高めることでスパムを避ける方策が使えなくなってしまったので、次に登場するのは経済的な対策ではないでしょうか。
本日、東工大教育賞優秀賞をいただきました。
本学の一年次情報教育を支える二つの科目、コンピュータリテラシとコンピュータサイエンス入門のうち、前者についての活動が評価されたことになります。継続的に情報科目を支援して下さった方々、コンピュータリテラシの授業を担当して下さった方々、推挙して下さった方々に感謝します。
先日、プログラミング言語というにはあまりにお粗末な IMP という言語を紹介して、それを Objective Caml で書いてみました。今日は、同じ言語を JavaScript で書き直しましたという話題です。すでに慣れている Objective Caml の場合には 4 時間で書けたのですけれども、JavaScript の場合には構文解析器生成系のツール探しやら、Windows 用に実装されたツールの Mac OS X への移植、そのツールの改造をしていたので三日もかかってしまいました。また、(不慣れにもかかわらず)JavaScript の特徴を生かしたインタプリタを書こうと思って、Objective Caml版とは少し違う構造に変更したので、その部分でも時間がかかりました。ようやく動いたので紹介します。今回は型宣言が不要ということで200行にまで短縮しました。
続きを読む »
少し苦労したけれども Mac OS X の上で Google V8 を使って、構文解析器生成系の JS/CC を動かすことに成功した気がします。以下は自分のためのメモも兼ねた簡単な説明です。
続きを読む »
最近のコメント