タグ

2013年4月30日のブックマーク (5件)

  • きれいなソースコードを書くために必要な、たったひとつの単純な事 - よくわかりません

    「構造のきれいなプログラムを書けるようになるためにはどうすればいいのか?」という質問を受けたので、「はて?どうしているだろうか?」と考えてみました。あ、形式知にきちんとなっているようなテクニックみたいなもんじゃなくて、モノローグなので、あまり凝ったものは期待しないように。 http://blog.shibu.jp/article/28983162.html 自分なりにもっと凝縮版を。渋川さんが言っている事全体もその通りとは思うけど*1、もっと簡単で、しかも射程が広い、と自分が思っている事。 渋川さんはちょろっと触れてるだけだけど、自分はこれが最も基的で汎用的、かつ、ソースをきれいにする原動力となる上にバグをも減らしてコードの汎用性まであげる、コーディングのエンジンみたいなものと思ってる。それは、 「すべてに正しい名前を付けて、そして、正しい名前であることを維持する」という鉄の意志 クラス

    きれいなソースコードを書くために必要な、たったひとつの単純な事 - よくわかりません
    yoshidaa
    yoshidaa 2013/04/30
    きれいな名前じゃなくて、「正しい」名前 重要なのは、しゃれた名前とか、縁起のいい名前とか、知的な名前とか、詩的な名前とか、かわいい名前とか、そういうのじゃない。ただ単に「それは何?」という事を考え抜き
  • おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりません

    先日YコンビネータのきしださんのYコンビネータのエントリが話題になっていました。 ずいぶん日にちが経ってしまいましたが、自分も、自分なりにYコンビネータのあたりを絵解きで整理してみたいと思います。きしださんのエントリタイトル*1に引っ掛けて、目標として、自分の父親(非プログラマ。その辺のおっさん)でも解る内容を目指します。 なぜ不動点演算子というのか、不動点だったらなぜ再帰なのか、この辺りも含めて、実感を持って納得できればいいなと思います。 きしださんのエントリのおさらい 題の前に、きしださんのエントリをおさらいしておきます。 Yコンビネータはただのオモチャじゃないんだよ 関数だけで色んな事が出来る 条件分岐をする関数ってのもある。 再帰(ループ)を作れる関数もある。←これがYコンビネータ。 数値も関数で表現できる。 つまり、関数だけで、条件分岐も、再帰(ループ)も、数値も作れちゃう!!

    おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりません
    yoshidaa
    yoshidaa 2013/04/30
  • さあ、Yコンビネータ(不動点演算子)を使おう! - よくわかりません

    前回、おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりませんというエントリで、Yコンビネータ(不動点演算子)と再帰の絵解き解説をしました。 Yコンビネータ自身は、結局のところ再帰を産み出してくれるだけです。関数(正確にはλという単純な文字列変換ルール)だけで出来て、プログラミングに関するいろんな原理の研究を可能にするのが凄い訳です。その辺のさわりを、きしださんが解説されています。しかし、単なる再帰なら、実際のプログラミングではYコンビネータなんて使わなくても出来ます。 じゃあ、Yコンビネータとか不動点とかは、偉い学者さんとかが研究に使えばいいもので、普通のプログラマには何の意味もないモノなのでしょうか? というわけで、今回はポジティブに、Yコンビネータや不動点で出てくる考え方を、理論だけじゃなく、実際のプログラミングに応用する例を見てみましょう。 今回、プログラムの例を

    yoshidaa
    yoshidaa 2013/04/30
  • ラムダ計算とチューリングマシンの違い 2009-04-13 - きしだのはてな

    ぼくもYコンビネータがわかるようになるまではそうだったのだけど、Yコンビネータを使うとどのような処理ができるのかがよくわからなくて悩んでいる人が多いように思う。他の人のブログを見ても、名前をつけずに再帰ができるのがすばらしいとか書いてあったりするのだけど、それによってどういう処理ができるのかわからずにいた。 結論をいえばYコンビネータには、なにかの処理を便利にする能力はない。関数であらゆる計算ができるということが示せれば、あとは用なしだ。理論の礎としてうまってしまえばいい。 結局、Yコンビネータによってどのような処理ができるかというのは、ラムダ計算の要素のメリットをチューリングマシンの中に見出そうとしてるといえる。 ラムダ計算とチューリングマシンは、どちらも計算モデルという点では一致しているけど、全く違う。 無限であるか有限かの違いといってもいい。 チューリングマシンでは、データの量と処理

    ラムダ計算とチューリングマシンの違い 2009-04-13 - きしだのはてな
    yoshidaa
    yoshidaa 2013/04/30
    プログラムは、いかに手続きを実行するかという命令的な側面と、いかに手続きを記述するかという宣言的な側面がある。チューリングマシンは前者の基礎で、ラムダ計算は後者の基礎であるということになる。
  • [ruby-list:35058] Y Combinator

    Subject: [ruby-list:35058] Y Combinator From: sinara@ a . g k t c p Date: Sun, 12 May 2002 13:49:58 +0900 "Y Combinator" とは何かというと proc{|g| proc{|f| g[f[f]] }[ proc{|f| g[proc{|y| f[f][y]}] } ] } という Proc オブジェクトのことで、再帰的な関数を Proc オブジェクト として表現するための道具です。さしあたって階乗 fact とフィボナッチ 数(列) fib をこれで計算する実験をしてみます。 -----^ fact.rb Y = proc{|g| proc{|f| g[f[f]] }[ proc{|f| g[proc{|y| f[f][y]}] } ] } fact = proc{|f| p

    yoshidaa
    yoshidaa 2013/04/30
    "Y Combinator" とは何かというと proc{|g| proc{|f| g[f[f]] }[ proc{|f| g[proc{|y| f[f][y]}] } ] } という Proc オブジェクトのことで、再帰的な関数を Proc オブジェクト として表現するための道具です。さしあた