タグ

programmingとnishioに関するsyanbiのブックマーク (4)

  • 遺伝子をモチーフにした言語「Genomy」を作りました - 西尾泰和のはてなダイアリー

    最近、3年くらい前に書いた「そろそろ例のプロジェクトについて言及するか」についてTwitterで言及があったので思い出しました。「条件を満たしたものをすべて呼び出す」という設計思想でプログラムが書けてしまうという点について意外とみんなピンと来ないみたいだからコンセプトプルーフを実装してみようと思っていたんでした。 という訳で作りました。https://github.com/nishio/genomy 解説 「遺伝子はタンパク質の設計図」というところまでは教科書などでもよく言及されます。でも、その設計図には「どういう状況になったら作るべきか」「どういう状況では作るべきではないか」という情報も書かれています。 この「作るべきではない」(発現の抑制)がどう実現されているか、ザックリ説明しましょう。体の中にあるタンパク質があると、これがある遺伝子の周辺にへばりつき、その遺伝子からタンパク質を作る過

    遺伝子をモチーフにした言語「Genomy」を作りました - 西尾泰和のはてなダイアリー
    syanbi
    syanbi 2011/12/27
    タンパク質の発生条件、成長条件を元にしてXOR回路作成か・・・
  • 最小限Lisp - 西尾泰和のはてなダイアリー

    Web-DB Vol.60が手元にある人はぜひLispの章を見てみてくださいね。Lispのコードがほとんど構文木と同じであって、その構文木を実行するときにどうなるか、という話。 下のコードを見ればわかるとおり、Lispのコードではリストの区切りにカンマがないけどもPythonにはあるってところと、LispのアトムはPythonでは文字列で表現しているので引用符がくっついている。それくらいの違いしかない。で、その構文木がこれくらいのコードで実行出来る、と。 でまあ、これはコードに特殊形式がないから全部「各要素をevalしてから計算をする」という流れになっているのだけども、それじゃifとか実現できなくて困るよね?どうすればいいと思う?というのは機会があればまた今度書く。 # -*- encoding: utf-8 -*- """ mini-Lisp Lisp解説のための、Lisp風構文木を受け

    最小限Lisp - 西尾泰和のはてなダイアリー
  • 最小限VM - 西尾泰和のはてなダイアリー

    手元にWEB-DB Press vol.60の「言語設計の基礎知識」がある人はP.28を参照ください。ここにあるような「カウントダウンをするwhile」、原稿ではC言語で説明していますけど、当は機械語とかにもふれたかったのですよ。紙面と時間の都合でできていないのですけど。 で、生の機械語はそれはそれで色々説明しないといけないから大変かな、と思ってwhileを実現するために最小限の仮想機械を作ってみました。 # -*- encoding: utf-8 -*- """ mini-VM 解説のための最小限のVM 最小限とは?最小限である必要があるか? チューリング完全である必要があるのか? jump pos : PCをposに変更 if_eq a1 v1 pos : mem[a1] == v1 ならjump pos print a1 : mem[a1]をprint set a1 v1 : me

    最小限VM - 西尾泰和のはてなダイアリー
  • Rediscover the Monte Carlo - 西尾泰和のはてなダイアリー

    僕個人はゲームの思考ルーチンを作ることなどには興味があるので、みんな知っていることだと思っていたのですが、意外と「現在世界最強の囲碁の思考ルーチンはモンテカルロ」ってのは知られてないみたいですね。うっかりすると「そんなわけないだろー」とか言われてしまう。その根底には「モンテカルロはとても収束が遅くて使いものにならない」という過去の記憶があるのかなー。ちょうどJavaScriptが使いものにならないおもちゃ言語だと思われていたように。 囲碁の思考ルーチンを著しく進化させた新しいモンテカルロが昔の単純なモンテカルロとどう違うかというと、UCB1という評価関数で「もっと探索するとヨサゲな局面」を判断して、ヨサゲな局面から優先的に探索するという点なんだけど、そういう定性的な話をしてもピンと来ないよね。同じ発想をモンテカルロで円周率を求めるプログラムに適用したら収束の速さが定量的にはっきり見えて面白

    Rediscover the Monte Carlo - 西尾泰和のはてなダイアリー
  • 1