タグ

2008年1月26日のブックマーク (24件)

  • 西尾泰和のブログ: Pythonで階乗を求める(Yコンビネータ編)

    Q: 「Pythonで階乗を求める(これはひどい)」はYコンビネータ? A: いいえ。 再帰呼び出しは普通、以下のように関数が自分自身の名前を使って自分自身を呼び出します。 >>> f = lambda n: n and n * f(n - 1) or 1 >>> f(5) 120 ここで、名前をつけずに、関数自体にも手を加えずに、再帰呼び出しを実現するための手段がYコンビネータです。再帰呼び出しを実現するだけならばYコンビネータは必須ではありません。 前回のコードはYコンビネータを使わずに再帰呼び出しをしています。具体的には、元の関数をnだけを受け取るのではなく、自分自身も引数fに受け取るようにし、また再帰呼び出しでfを呼び出す際にも引数にfを渡してやるようにしています。 Yコンビネータ版は以下。 >>> Y = lambda f:((lambda g: f(lambda x: g(g)

  • Y combinator - Wikipedia

    Y combinator may refer to: Y Combinator, an American tech startup accelerator Y combinator (mathematics), a fixed-point combinator This disambiguation page lists articles associated with the title Y combinator. If an internal link led you here, you may wish to change the link to point directly to the intended article.

  • http://ja.doukaku.org/55/flatten/

  • 平々毎々 (Hey hey, My my) | C#でYコンビネータ

    Yコンビネータっておもしろいなあ。ブログのねたにはちょうどいいかも。 static Func<T, T> Fix<T>(Func<Func<T, T>, Func<T, T>> F) { return t => F(Fix(F))(t); } で、こうなりました。 static public IEnumerable<int> Fib(int count) { foreach (int ii in Enumerable.Range(0, count)) yield return Fix((Func<Func<int, int>, Func<int, int>>) (ff => i => ((i これすっっげぇ・・(゜゜ で、でも使い方あってんのかわかんない; Y Combinatorが凄すぎる! - yuji1982の日記(改行を足しました) これは yie

    yuji1982
    yuji1982 2008/01/26
    ジェネリックの基本を忘れてた、恥ずかしい><
  • 世界各地で人気を集める「サイエンスカフェ」 | WIRED VISION

    世界各地で人気を集める「サイエンスカフェ」 2008年1月25日 サイエンス・テクノロジー コメント: トラックバック (0) David Ferris サンフランシスコの『330 Ritch』で話をする、同市の気候変動担当コーディネーター、Melissa Capria氏。テーマは「気候変動が同市ベイエリアにどのような影響を及ぼすか」 Photo: David Ferris さる水曜の夜、サンフランシスコの『Axis Cafe』から大勢の人が出てきた。当夜の呼び物は人気バンドでも、腕のいいバーテンダーでもなかった。彼らの目当ては講義、それも物理学の講義だ。 講義では、サンフランシスコ州立大学の海洋学者Toby Garfield氏が、海洋で大きな波が発生する仕組みを説明した。たとえば、Axis Cafeから約40キロの地点にあるサーフポイント『マーベリックス』で立つような巨大な波だ。 Gar

    yuji1982
    yuji1982 2008/01/26
    これはいいなー
  • HTML5が持つ本当の意味 ― @IT

    2008/01/25 ウェブ関連技術の標準化団体「W3C」(World Wide Web Consortium)が「HTML5」の策定に向けて活動を格化しました。1月22日には「HTML5」の最初の草案を公開。2010年9月に正式な勧告としてリリースする予定だと発表しました。 普段からウェブ関連技術をウォッチしている方は別として、「なぜ今ごろ?」と、この突然のW3Cの動きに驚かれた方が多いのではないでしょうか。「そもそもW3Cがやる意味があるの?」という疑問の声も聞こえてきそうです。 標準化団体としてのW3Cのプレゼンスは、近年あまりに高いとは言えません。かつて1990年代後半から2000年ごろにかけて、誰もがW3Cの一挙手一投足に注目していた時期がありました。彼らの出してくる標準技術仕様こそが、インターネットを形成する共通言語だと、多くの人が信じていました。 ところが、現在広く使われて

  • Martin Fowler's Bliki in Japanese - 言語ワークベンチ

    以下の文章は、Martin Fowler による 「Language Workbenches: The Killer-App for Domain Specific Languages?」 の日語訳である。 ソフトウェア開発における新しい考えの多くは、実は古い考えの新しい組み合わせ方です。この記事では、その新しい組み合わせ方のひとつ、私が「言語ワークベンチ(Language Workbenches)」と呼んでいるツールについて説明します。これは、現在広まりつつある考え方で、たとえば、Intentional Software、JetBrainsのMeta Programming SystemMicrosoftのSoftware Factoriesなどが例として挙げられます。これらのツールは古い開発スタイルを採用しており、私はこれを「言語指向プログラミング(language oriente

  • Martin Fowler's Bliki in Japanese - Rubyの評価

    http://martinfowler.com/bliki/EvaluatingRuby.html ここの読者なら世の中でRubyが騒ぎになっていることをご存知だと思う。 特にRailsというWebアプリケーションフレームワークは大騒ぎだ。 Railsはプログラミングの未来を表したものだという人もいれば、 危険な流れだという人もいる。 私がRubyに触れたのは数年前のことだ。 達人たちにすすめられて、興味を持つようになった。 そしてすぐにお気に入りのスクリプト言語となった。 そのうちRubyを使ってこのサイトのプロダクトを作るようになった。 たとえばこのblikiがそうだ。 諸君、私はRubyが大好きだ。 ただ、私がRubyを好きなことと、Rubyをクライアントのために使うかというのは別問題だ。 クライアントのために使えるかどうかは、Rubyの機能を評価することによって判断できるだろう。

  • Martin Fowler's Bliki in Japanese - 設計力

    http://martinfowler.com/bliki/PreferDesignSkills.html 2008/1/18 雇用について考えてみよう。 応募者が2人。どちらも経験が数年間。 青コーナーの人には、あなたが好きな設計スタイルの広範な設計力が備わっている(私の場合だと、DRY、分別のあるパターンの使用、TDD、伝わるようなコード、なんかが挙げられるけど、自分の好きなやつでいいよ)。ただし、彼女には、あなたが使っているプラットフォーム技術についての知識がない。 赤コーナーの人には、そういった設計の知識は(それに興味も)ないが、プラットフォーム技術についての知識はめちゃくちゃある。言語には詳しいし、どのライブラリが使えるかはよく知ってるし、ツールも流暢に使いこなす。 これ以外のことについては(こうした思考実験以外については)、2人ともまったく一緒だとしよう。 また、あなたのチーム

  • Martin Fowler's Bliki in Japanese - エンタープライズRails

    http://www.martinfowler.com/bliki/EnterpriseRails.html Railsのコミュニティでは「エンタープライズ」という言葉がダーティーワードになりつつある。 多くの人にとってRailsフレームワークとは、貪欲にシンプルさを備えたものであり、複雑になり過ぎた「エンタープライジー」なフレームワークへのアンチテーゼなのだ。 先ごろ開かれたRailsConfでは、オープニングキーノートにおいてPragDaveが「Railsでは解決できない事項」に焦点をあてていた。 その中にはエンタープライジーなことも含まれていた。 たとえば、複合キーを持つような、様々なデータ構造を扱うことが必要だというのだ。 これに対するDHHの反応は、この上なく痛烈な拒絶であった。Wired誌*1の表紙になった画像をうまく編集して、DHHは自らをソフトウェア界のネオ(救世主)として

  • Martin Fowler's Bliki in Japanese - クロージャ

    http://martinfowler.com/bliki/Closure.html 動的言語に興味がでてくると、 クロージャやブロックと呼ばれる概念に出会うと思います。 C/C++/Java/C# などクロージャを持たない言語をご使用の方は、 どういったものなのかご存知ないかもしれません。 ここでは簡単にクロージャについて説明します。 クロージャを持った素晴らしい言語を使ったことある方にとっては、 あまり面白くない話かもしれません。 クロージャは長年使用されてきました。 私が最初に出会ったのは、おそらく Smalltalk だったと思います。 Smalltalk ではブロックと呼んでいました。 Lisp ではクロージャを多用しています。 Ruby でもクロージャが提供されています――多くの rubyist がスクリプト言語に Ruby を選ぶのはこのためです。 基的にクロージャとは、ブ

  • Martin Fowler's Bliki in Japanese - トランザクションレス

    http://martinfowler.com/bliki/Transactionless.html 2007/3/18 (更新:Bill Caputoからも経験談をいただいた) 数年前にeBayで働く友人たちと話していたときのことだ。 大規模サイトで使われる技術の話を聞くのはいつも楽しいが、特に興味深かったのが、eBayでは滅多にデータベーストランザクションを使用しないという話だった。 トランザクションがない環境というのは驚くべきことではないだろうか。 データベースを扱うときにトランザクションを使うのはごくごく一般的なことだ。 多くの人にとって(私もそうだが)トランザクションはデータベースを使う利点のひとつだ。 eBayがトランザクションを使わないのは、あのような規模ではパフォーマンスに影響が出てしまうからだというものだった。 eBayではデータをいくつもの物理的データベースにパーテショ

  • Martin Fowler's Bliki in Japanese - 朝会のパターン:立ってるだけじゃないよ

    朝会(デイリー・スタンドアップ・ミーティング、デイリー・スクラム、デイリー・ハドル*1、朝のロールコール*2)を説明するのは簡単だ。チーム全員が毎日顔を合わせ、現在の状況を迅速に確認しあう。立ってやるのはミーティングの時間を短くするためだ。以上。 でもこれだけじゃあ、「良い朝会」と「悪い朝会」の微妙な違いは分からないだろう。 朝会の定義は非常に簡単なものなのに、 うまくいっていない朝会があって私はとても驚いた。 すぐに原因は分かったが、そのチームはそれが何なのか分かっていなかった。 朝会の基原則と詳細を意識していなかったのだ。 そのために朝会の問題について診断や解決がなされていなかったわけだ。 良い朝会を経験した人たちは、 うまくいってないときに何をすればいいかを知っている。 朝会に慣れていない人たちは、 うまくいってないときに何をすればいいかに気づかない。 「暗黙知なんだから、とにかく

  • Martin Fowler's Bliki in Japanese - ひとつの言語

  • Martin Fowler's Bliki in Japanese - ドメイン特化言語

    http://martinfowler.com/bliki/DomainSpecificLanguage.html ドメイン特化言語(DSL:Domain Specific Language)とは、 ある特定の種類の問題に特化したコンピュータ言語のことです。 様々な問題に対応できる汎用的な言語のことではありません。 ドメイン特化言語についてはこれまでも議論されてきましたし、 コンピュータが使われてきたのと同じくらい長い間使われてきました。 DSLを頻繁に使用しているコミュニティにUnixコミュニティがあります。 そこでは、DSLは「リトル言語」や「ミニ言語」などと呼ばれています (この伝統について、Eric Raymondが素晴らしい議論を提供してくれています)。 最も一般的なUnixスタイルのやり方は、 言語の文法を定義し、コード生成機能を使ってDSLから汎用的な言語を生成する、 あるい

  • Martin Fowler's Bliki in Japanese - GroovyかJRubyか

    http://martinfowler.com/bliki/GroovyOrJRuby.html 2007/11/27 現在、Java仮想マシン(JVM)上で動くスクリプト言語として、GroovyとJRubyはどちらが優勢なのかという議論が巻き起こっている。 この言語戦争の勝者はどちらなのか!? 知りたいよねー。知りたいでしょ。 みんなは「プロジェクトに使うのはどっちだ?」とか「今から学習するならどっちだ?」とか気になっていると思う。 まず最初に押さえなきゃいけないのは、このレースの出走馬が2頭だけだと考えるのは公平じゃないってことだ。 JVM上のスクリプト言語の歴史は古く、Jython(JavaによるPython実装)なんてずっと昔から存在している。 他にもいろいろありすぎてよく分からない状況なので、ここではあえて列挙することはしない。「XXXがないじゃないか!」と怒られても困るしね。

  • Martin Fowler's Bliki in Japanese - 生産性は計測不能

    http://www.martinfowler.com/bliki/CannotMeasureProductivity.html 設計手法などのソフトウェアプロセスについて、感情的に議論されているのをよく目にします。しかし、その議論に答えを出すのは不可能です。ソフトウェア産業では、ソフトウェア開発の効果要因を計測する術がないからです。特に、生産性を合理的に計測する方法はありません。 生産性とは、インプットとアウトプットで決定されるものです。 ソフトウェアの生産性を測るには、ソフトウェア開発のアウトプットを見なくてはいけません……が、そのアウトプットを計測できないからこそ、ソフトウェア開発の生産性が計測できないのです。 これに対して何もしなかったわけではありません。コード行で生産性を計測しようと研究をしている人たちがいます。めちゃくちゃムカつきますね。だって言語は違うし、数え方の違いもあるし

  • Rubyを仕事に使うべし! Part1 なぜ仕事で使うとうれしいのか:ITpro

    プログラミング言語Rubyが注目を集めています。Ruby関連の書籍が次々と出版され,2006年6月には国内初の大規模Rubyイベントである「日Rubyカンファレンス2006」が催されました。また,Rubyで書かれたWebアプリケーション・フレームワークRuby on Rails(以下Rails)が話題となり,Rubyの高い生産性が一般に知られるようになってきました。 Rubyの生産性はJavaの10倍とさえいわれます。なぜRubyは生産性が高いのでしょうか。それは,Rubyはいろいろな言語から優れた所を集めた「いいとこ取り」言語だからです。Rubyの特徴は「構文が強力なので,迅速な開発ができる」「人に優しい言語なので,楽しくプログラミングできる*1」「問題が起こりにくいように設計されているので,初心者でも簡単に安全に作業でき,熟練者は高度なプログラミングを行える」といった点です これらの

    Rubyを仕事に使うべし! Part1 なぜ仕事で使うとうれしいのか:ITpro
  • Rubyの生産性の高さはどこまで本当か? - 分裂勘違い君劇場 by ふろむだ

    もの人がブックマークしているこの「Ruby仕事に使うべし!」という記事で書かれているRubyの優れた特徴は、実際のところ、どの部分が、どこまで当なのでしょうか? 少し検証してみたいと思います。 「Rubyがスゴイ」とされる点のどれがホントでどれがウソ? 「Ruby仕事に使うべし」では、まず、Rubyの特徴として、 (1)いろんな言語のいいとこ取り (2)構文が強力 (3)楽しくプログラミング (4)問題が起こりにくいように設計されている という点を冒頭で掲げています。 まず、これらをどのように検証すればよいか、考えてみます。 まず、(1)のいいとこ取りについては、いいとこ取りをし続けながらいつも進化しているのは、最近の言語はみんなそうで、それはRuby独自の特徴でもなんでもありません。 たとえば、C#は、その典型で、VM、自動メモリ管理、パッケージによる名前空間管理、マルチスレッド、

    Rubyの生産性の高さはどこまで本当か? - 分裂勘違い君劇場 by ふろむだ
  • 日本とアメリカのプログラマの求人数 - yukobaのブログ

    今日の時点での日アメリカの求人数の順位です。 順位 アメリカ(indeed.com) 求人数 日(jobdirect.jp) 求人数 1位 Java 66346 Java 4580 2位 C++ 42495 PHP 3163 3位 C# 32673 VB + VisualBasic 2748 4位 JavaScript 29491 Perl 1198 5位 Perl 24415 Flash 799 6位 VB + VisualBasic 20159 JavaScript 526 7位 Flash 16619 C++ 292 8位 PHP 10703 Ruby 110 9位 Python 5990 C# 101 10位 Ruby 3749 Python 26 http://www.indeed.com/jobtrends?q=java%2C+javascript%2C+ruby%2C+

    日本とアメリカのプログラマの求人数 - yukobaのブログ
    yuji1982
    yuji1982 2008/01/26
    これ見るとC#の案件少ないはすだorz PHPとVBがなぁ・・・
  • Photo Tourism: Microsoft Research, Interactive Visual Media Group

    Photo Tourism: Microsoft Research, Interactive Visual Media Group
    yuji1982
    yuji1982 2008/01/26
  • 親友へ。ブログを書こう。 - IT戦記

    はじめに ガイアックスに入社する前からの数少ない親友でプログラマの y が人生の岐路に立っているようなので、エントリーを書いてみることにした。 y とは mixi の足跡がきっかけで知り合って、もうすぐ丸二年の付き合いになる。人生の 10 % の時間をインターネットでつながっていたということになる。 あのときから見たら、自分も y も随分変わったんだろうなあ。普段は考えたりしないけど、しみじみとあのときのことを思い出してみた。 そして、 y にももっと web で色んなものを公開して欲しいなと思った。どんなささいなことでもいい。完成度なんてなくていい。二次情報でもいい。技術のことでなくてもいい。 y へ。そして、ブログを書いたことがないすべての人へ。 ブログを書こう 誤解のないように言っておきますが、書くべき!という感じではなく、イイヨーイイヨー書いたほうがイイヨー的な意味です。 ブログを

    親友へ。ブログを書こう。 - IT戦記
    yuji1982
    yuji1982 2008/01/26
    僕のブログの原点。10年後もまた読みます。ありがとう^^
  • Y コンビネータって何? - IT戦記

    このエントリの 親友へ。ブログを書こう。 - IT戦記 y がブログを始めたみたいなので、読んでみた。 で、最新のエントリを読んでみたら、 Y コンビネータというものについて書いてあったので、 Y Combinatorが凄すぎる! - yuji1982の日記 Y コンビネータって何ってところから、自分でもいろいろ考えてみた。 結局なんなのかさっぱり分からなかったんですが、自分が考えたことをまとめておく まず、フィボナッチ数を求める fib を定義する var fib = function(n){ return (n <= 2) ? 1 : (arguments.callee(n-1) + arguments.callee(n-2)); }; fib(10); おお! JS すげー!名前は n しか使ってねーよ! めでたし、めでたし。。。。じゃなくて! JS が素晴らし過ぎて話が終わってしま

    Y コンビネータって何? - IT戦記
    yuji1982
    yuji1982 2008/01/26
    arguments.calleeがあるのに「さらに考える」をやめない。見習わないとφ(・ω・)
  • ziolog : ASP.NET:簡単OpenID対応

    ASP.NET:簡単OpenID対応 簡単にできたので、せっかくだから記事にしておこうと思います。 サンプルソース 動作しているものはこちら http://zio3.net/OpenIDSample/default.aspx 1 OpenIDコントロールの入手 dotnetopenid(GoogleCode)からコントロールのJanrain.OpenId.dllを入手 ただ、ここのzipはバグ(※1)でソースから構築したものを利用。 サンプルソースの中に構築したDLLを含んでいます。 2.プロジェクトに追加 参照設定に追加します。 3 Loginページを作成 とりあえずlogin.aspxでページを新規に作ります。 4 OpenIDコントロールDLLをツールボックスに追加 ツールボックス->右クリック->アイテム選択->参照-> 先ほどのJanrain.OpenId.dllを選択 5