«前の日記(2007-10-29) 最新 次の日記(2007-10-31)» 編集

Matzにっき


2007-10-30 [長年日記]

_ [OSS] MogileFS

オープンソース分散ファイルシステム。 レプリケーションも自動でやってくれるらしい。

来るべき未来に備えて、あちこちで分散やら並列やら メニーコアやらが話題になっている、のかもしれない。

_ 【IPCM】iPhone,ディズニーランド,スタバの共通点は?──人気ブログ「Life is beautiful」の中島氏が講演:ITpro

共通点は「エクスペリエンス(おもてなし)」だそうだ。

ソフトウェアを比較する時には、つい「なにができるか」という 機能リストによる比較になりがちである。 しかし、産業が成熟してくると機能による差別化というのは 難しくなる。すべてのライバルが大抵の機能を備えてしまうからだ。

同じような機能を持っていても それぞれに違う「使ってどう感じるか」というのは軽視されがちである。 が、これからの「差別化」のためには、 そここそが重要なポイントになる、という話。

自動車とかそんな感じだよね。 もちろん細々とした機能の差(カーナビとかCVTとかバックモニターとか)が 登場することもあるけど、それも今やある特定のメーカー限定ということは ほとんどなくて(例外はマツダのロータリーエンジンくらいか)、 結局は、予算、デザイン、フィーリングなど機能でない部分で 車種が決定される。

プログラミング言語も似ている。

「チューリング完全」の壁がある以上、最終的に出来ることには大差ないんだから、 プログラミングしている時にどう感じるか、ということこそ重要なポイントになる、 んだと思う。これからは。

まあ、ライブラリなどが十分に充実したら、というのが前提だけど。

_ [OSS] 外に出よう,コミュニティへ,研究室の外へ,世界へ---2007年度日本OSS貢献者賞 表彰式より:ITpro

今年のOSS貢献者賞の授賞式。参加しなかったけど。

今年の受賞者は

  • 小山哲志さん
  • 笹田耕一さん
  • 佐藤嘉則さん
  • 松本裕治さん

の4名。今年は私は審査員をおおせつかっていたので、 「身内」である笹田くんを推薦するのは少々抵抗があったのだけど、 開発とコミュニティ貢献の両方をこなしているということで、 他の審査員の賛成多数で決定した。

他の方も順当だと思う。ただ、4名という枠があったので 「与えるべき人に届かない」という問題はある。 「来年以降でお願いしよう」と先送りした人がたくさんいた。

_ [Ruby] String#to_proc

Ruby 1.9にはSymbol#to_procが導入されるけど、 String#to_procはどうだろうか、という話。

こんなコードが書ける。

square = 'x*x'.to_proc;
square(3);
     → 9
square(4);
     → 16

とか

'x y -> x+2*y'.to_proc[2, 3];
     → 8
'y x -> x+2*y'.to_proc[2, 3];
     → 7

とか。面白いなー。標準で取り込むには マジックが強すぎるような気もするけど。

_ AT&T Labs Research - Hancock Project

Cをベースにした文法を持つ、 統一的な構造を持つ大規模なデータを扱うことができるDSL。 要するにデータストリーム操作言語だと考えればいいだろう。

MapReduceにしろ、このHancockにしろ、 やはりストリームという概念は いろいろと使い勝手がよさそうだ。

そういえば大学時代、研究室の先輩が ストリームを主要なデータ構造にした、 その名もStreamという言語を設計していたなあ。

今思えば先見の明があったということか。 まあ、今では研究成果は埋没しているわけだが。

本日のツッコミ(全6件) [ツッコミを入れる]
_ Reg Braithwaite (2007-11-28 09:15)

Thank you for your link, and I apologize for my inability to write in Japanese. Although this technique is certainly not "mainstream Ruby" for most cases, I do find it "gives me joy" when working with collection methods.<br><br>My favourite example is using point-free style such as:<br><br>[1, 2, 3, 4, 5].inject &'+' -> 15<br><br>This could be added to Symbol#to_proc. If the symbol is an operator or method with an arity of 1, it could be turned into a slightly different lambda. In that case, you could also get things like:<br><br>[{ :foo => 1 }, { :bar => 2 }].inject &:merge -> { :foo => 1, :bar => 2 }<br><br>Thank you again.

_ Reg Braithwaite (2007-11-28 09:38)

Well, more apologies! After what I just wrote, I thought to myself "this seems so obvious, and so easy, maybe it has already been done." And indeed, [1, 2, 3, 4, 5].inject &:'+' -> 15 and [{ :foo => 1 }, { :bar => 2 }].inject &:merge -> { :foo => 1, :bar => 2 }

_ ujihisa (2007-11-28 12:31)

String#to_proc欲しい!<br><br>以前String#evalみたいなものが作れないかいろいろいじってみたことがあったんですけど、<br>どうしても出来なかった記憶があります。<br>x = 2<br>'puts x'.eval<br>みたいな。<br>明示的にbindingを渡せばできるんですけど、<br>それだと全然嬉しくないのです。

_ まつもと (2007-11-28 13:18)

以前から提案されているBinding.of_callerがあればできるんですけどね。

_ Charles Nutter (2007-11-28 23:59)

Apologies for English...<br><br>Binding.of_caller would make many important optimizations in JRuby impossible and I suspect in YARV too. Just like the ability to turn a proc into a binding forces all scopes with closures to use heap-allocated variables, Binding.of_caller would force *all* scopes to use heap-allocated variables. That would be a heavy performance penalty on implementations where stack variables are possible.

_ Reg Braithwaite (2007-11-29 00:27)

I have a feeling I know what you're talking about Charles, even though I cannot read English. Sorry everyone for my lack of Japanese!<br><br>Yes, Binding.of_caller is very expensive. But quite honestly, there are other problems with using strings that contain free variables, even if Binding.of_caller were cheap.<br><br>If I write a string in one place:<br><br>x = 5<br>foo = 'puts x'<br><br>...and then turn it into a proc in a different scope...<br><br>x = 2<br>foo.to_proc.call<br><br>What happens? Blocks have a clear meaning: their scope is where they were declared. But strings are first-class objects, they can be 'declared' in one context and eval-ed in another. I like String#to_proc for some extremely simple things on the side, but I would have a lot of questions about issues like scoping if anyone would want it added to Ruby, even if performance were not an issue.<br><br>A far 'better' path (although I do not envy those of you working on the parser) would be to consider changes to block syntax, such as { * 2 } for point-free style, or the adoption of pseudo-parameters like it/its/_:<br><br>http://jicksta.com/articles/2007/08/04/the-methodphitamine<br><br>Again, sorry for my use of English. I am trying to make up for it by raising nishikigoi :-)

お名前:
E-mail:
コメント:
[]

«前の日記(2007-10-29) 最新 次の日記(2007-10-31)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.