春分の日でお休みなので、 下の二人を連れてフォーゲルパークへ。 鳥たちをみて喜んでいた。
モモイロペリカンがけっこう頑張って芸をしていた。 頭、いいのね。そうとう大きい(羽を広げると1.5m以上ありそう)が、 まだ生後10ヶ月というのも驚き。
しばらく前に献本していただいていた本を読む。
しばらく前に言語探訪で紹介していたりするのだが、 こうやってまとめて読んでみるとかなり知らないことが多い。
「ビット構文」とか、pack/unpackより便利かもしれない。 あと、多重代入の代わりにパターンマッチとか。
ただ、文法はちょっと分かりにくい。 よくわからない句読点のルールとか、endとか。
単一代入しかない関数型言語というのは 「普通の言語」とは、かなり異なったプログラミングスタイルを要求するが、 その故に便利な点も数多くあるなあ。副作用がないから プロセスが遠慮なく中断できる点とか。
しかし、改めて考えてみると Erlangってば、参照透過性はないし、 静的型はないし、関数型言語である必要はないのではないか。
Erlangを真に特徴づけているのは、
ではないだろうか。他のものは目立つけど実はそれほど重要じゃない。
アクターモデルがあるから、並列プログラミングが簡潔に記述でき、 値がimmutableであるから、「オブジェクトの状態」で悩むことがない。 オブジェクトのアイデンティティが重視されないから、 メモリ空間を超えて値を伝搬しても影響がない。
おまけに(GCの)実装としてはライトバリアが要らなかったり、 循環参照がないことも保証されるから、リファレンスカウントでも十分だったりするのもありがたい。
としたら、たとえばRubyとそっくりな外観で 値がすべてimmutableな言語があったとしたら、どうだろう。 関数型というパラダイムの代わりにオブジェクト指向というパラダイムを提供する Erlang的な言語。
文字列や配列についてはさほど問題はないだろう。 Pythonをはじめ文字列がimmutableな言語は珍しくないし、 配列も(一部の「容器」として使っている場合以外は)大丈夫。
問題になりそうなのは、 ハッシュやオブジェクトである。 これらが状態を持たない、というのはかなりプログラミングスタイルに変革を要求しそう。
そもそも書けるんだろうか。 入出力とかはLazyなSequenceとして扱うんだろうか。
ひとつの時代が終わった。が、彼の作品の価値が減じることはない。
っていうか、作家の作品ってのは寿命が長いよね。 芸術家は全般にそうだけど。 比べてプログラマの作品の寿命はそれほどじゃない。
ちょっと寂しい。
gitは出力先がttyだと自動的にページャを起動してくれる。 それをRubyで実現する方法。
あと、コマンドラインオプションが間違ってたらスペルチェックかけて 候補を出してくれる機能(コマンド名ならzshがやってくれる)も標準でほしい。
Rubyで STDOUTとoptparseにttyを特別扱いするコードを組み込むと Rubyで作られたコマンドは全部そういう機能を装備することになるな。 どうだろうか。
先日、MacRubyについて、AppleScriptの代替になるのでは、と書いたが、 実際にやってみた例。
tell application "TextEdit" get paragraph 1 of document "Read Me" end tell
が、こうなる。
app('TextEdit').documents['Read Me'].paragraphs[1].get
おおむね好評のようだ。
先日のGoogle TechTalkの内容を「アメリカ流プレゼンテーション」流儀にしたがうと こんな感じになると言う話。勉強になるが、正直恥ずかしい。
ただし、これはあくまでも「アメリカ(ビジネス?)流儀」である。 RubyConfとかOSCONとかでプレゼンするギークたちはもうちょっと別の流儀にしたがっている印象がある。
それと、私のプレゼンに対するコメントには、 ネガティブに取り扱われているのは発音や語彙で、 ここで言われているようなフォーマットに踏み込んだものがないことからも ギークたちの間では原田さんの紹介してくださっているプレゼン術は一般的になっていないことがうかがえる。
ま、だから勉強しなくていいわけじゃないけど。
Google社内のシステム。 英語でもうちょっと詳しい記事を読んだ覚えがあるんだが、 URLを失念しちゃった。
で、最近、Ruby開発支援サイトを改良したいと言う欲求があるんだが、 単にTracとかRedMineとかRetrospectivaを導入するだけじゃなくて、 コードレビューとか投票とかも連携したいなあなんて思ってるんだけど、 そういうのって上記のツールでできるんだっけか。
通常の言語を使ってPrologのようなユニフィケーションを行うってのは よくある発想だけど、こっちは逆。Prolog上で手続き型っぽい言語を実装するという話。
意外と簡単にできるもんだな。
私はその手のツールに弱いんで、全貌を完全に把握することはできないんだけど、 これはたぶんすごいことなんだと思う。グラフィカルに定義したものが そのまま動くんだから。
私の最初の職場で本当に役に立つかよくわからないCASEツールを作っていた 同僚たちもこれを見たら草葉の陰で涙を流すかもしれない。 まだ死んでないけど。
新言語Kite。
なんとなく「ひっくり返った」印象を与える。
{ value|print; }|for(1|range(10));
これで1から10まで出力するんだそうだ。
これは「|」がメッセージセンドであると解釈する、つまり
と解釈するようだ。keyとかvalueとかは決め打ちのようだ。
長女の高校の合格発表。
最近はネットでチェックできるのね。 合格してた。
中学校の同級生で同じ高校を受験した人は全員合格していたそうだ。 喜ばしいことなんだろうが、 少子化による競争の低下を目の当たりにしたような気がする。
「ゆとり」以前にそっちが問題だろう。
MacRubyの紹介。
しかし、「ひさしを借りて母屋を乗っ取る」ってのはどういう意味だと解釈すればよいのか。
MacRubyがOS Xでしか動かない以上、それはかなり難しい。 Rubyが動く環境はOS Xだけじゃないんだから。 そもそも私の環境がLinuxだし。
ただし、MacRubyがObjective-Cとの連携のために キーワード引数を拡張していて、そのやり方は 将来(Ruby2.0?)のキーワード引数に影響を与える可能性がないとはいえない。
タイトルをつけた人の意図はそこにはないとは思うけど、 これは結構ありそう。
もちろん、Objective-Cのすべてを奪うことはありえないけど、 MacRubyレベルでObjective-Cとの融合が進むと カジュアルな利用はRubyで行うというのは予想以上に広まるかも。
また、AppleScriptの英語モドキよりもいっそRubyのような 「普通のプログラミング言語」を使った方がわかりやすい という人も多いだろう。
「プログラマの道具箱」に追加する道具。
中でも Unrolled linked listと Skip listは面白い。 機会があればぜひ使ってみたい。
ここ数年、リンク先のような海外の「名簿屋」からのダイレクトメールがひんぱんに来る。
いわく、
あなた様はトップ2000サイエンティストに選ばれました。 あなた様の名前と業績はわが社の人名録に記録されます。 つきましては間違いがないように以下のフォームに あなた様の名前、住所、業績の詳細を記して送り返してください。
また、選出されたあなた様には私どもの人名録を特価でお譲りします($200)。
勘弁して。どこで私の名前やら(会社の)住所やらを入手したのやら。
しかし、わたしごときが「トップ2000サイエンティスト」とは。 片腹痛い。自尊心を刺激しようとして失敗している。
こんなのが効果がある人がいるのかな。 いるんだろうな。
聖餐会の話、日曜学校のレッスン、初等協会でお話。
ホームティーチング。
なんともロマンチックなデートの話を聞いた。 どうにもそういう「女性受け」しそうな発想に欠ける私としては 妻のためにも爪の垢を煎じて飲まねばならないと強く感じた。
いや、なんか飲んだくらいで発想が改善されるなら苦労はしないんだけどね、実際。
ある種の人々によると「この信条を受けれいている人」というのがクリスチャンの定義なのだそうだ。 もうちょっと三位一体とかそういうのが出てくると思ったけど、これはちょっと意外だった。 それと自分の無知を痛感した。
だとすると原始キリスト教会の構成員たるペテロとかパウロとかはクリスチャンじゃないとか。 あと内村鑑三(無教会主義)とか。
ちなみに私のクリスチャンの定義は「イエス・キリストを救い主として受け入れている人」であり、 上記の定義よりもかなり広い。
あと、実際に読んでみると、ニカイア・コンスタンティノポリス信条で 私の信仰と矛盾する言及は(少なくとも表面的には)一切ない、というのも意外だった。
矛盾しないなら受け入れても良さそうなものだが、 私の通っている教会は、教義的には原始キリスト教会からのフォークを主張しているので、 「フォーク後」のニカイア・コンスタンティノポリス信条にはしばられないという解釈なのだと思う。