Javaでは
new Date(new Date().getTime() - 20 * 60 * 1000);
とかくものが、Ruby (with ActiveSupport) では
20.minutes.ago
と書ける。簡潔でよろしい。では、C#ではどうするか。 C# 3.0なら、既存のクラスにextentionという形でメソッドが追加できるので、 オープンクラスのようなことができ、結果として
20.Minutes().Ago();
と書ける。括弧が省略できないので惜しいな。
いろいろなレベルのPythonプログラマによる階乗プログラム。
っていうか、個人的には英語で運営されている4chan.orgが まるっきり2ちゃんねるなところの方が驚いた。
ちなみにRubyなら、こんな感じ(1.9限定)。
1.upto(6).inject(:*)
JavaFX Scriptによるプログラミングの紹介。
なんど読み返してもJavaFXが魅力ある言語には思えない。 functionとoperationの奇妙な分離といい、 宣言的なんだけど、結局制限の多い記述とか、 よく動作が理解しにくいlazyとか。
もうちょっと言語そのものがわかれば、使いやすいと感じるようになるのかなぁ。
メールがたまりすぎちゃうと処理できなっちゃって、「破産」するしかなくなる、という話。
スパムはまあある程度機械的に処理できるので別としても、 確かにメールはたまる一方である。 私のinboxには処理待ちのメールが残っているのだが、 すでに500通を越えている。
古いものはもうフォローしきれないのでアーカイブ行きになるべきだろうな。
Timothy BuddのLittle Smalltalk ver.3 からの派生。
まだはじまったばかりだが、GCが単純なリファレンスカウントから マークアンドスイープによって循環参照に対応したり、 残っていたバグをつぶしたり、今後が期待できる、かも。
LazyなArrayを、と書いたら、弾さんがあっという間にPerlで実装してしまったという話。
こういう時にtieというのは強力だよね。 言語機能としてはあまり好きではないんだけど。
RubyだとArrayの機能をそのまま流用とは行かず、 元々のエントリにあったLazyListのように別のクラスとして再実装する形になるだろう。
Rubiniusとかなら配列もRubyで記述されることになるから、 Arrayをサブクラス化して、いくつかのメソッドをオーバーライドすることで 簡単に目的が達せられるかもしれない。
blogで公開されている以上、「こっそり」とは呼べないのではないでしょうか。
どなたかがコメントされていたが、 「こっそり」の主体はあくまでも観察者である私であって、 作者の石橋さんではない。
アドバイスする「おじさんやおばさん」の価値をまったく否定するものではないが(そういえば、この業界、おばさん/おねえさんは、ほとんど見かけないなあ、少なくとも日本では)、 多すぎるリクエストやコメントが集中するにはまだ早いと私は考えていた。
たまたま見かけた「おじさん」がコメントするのならともかく、 1日数千PVの「Matzにっき」や、恐らく万を越えるPVを持つ「404 Blog Not Found」から リンクされると影響力が大きすぎるんではないかと。
杞憂かもしれないけど。
まあ、でも、しょうがない。 杞憂であることを祈りつつ、正常な成長が促されるように これからも見守ることにしよう。
言語設計ってのはねぇ、ソフトウェアの多くの領域とは違って 正解というものがほとんどないので、 難しいのだ。アドバイスしたがる人は多いけど、 本当に役に立つアドバイスができる経験者がどれだけいるかと考えると、 すべてのアドバイスは眉に唾をつけて聞くべきだ。
たぶん、「日本で一番言語設計にうるさい男」だろう私だって、 Rubyじゃない言語に対するアドバイスは当てにならない。