タグ

ブックマーク / propella.hatenablog.com (51)

  • アリゲーター・エッグでラムダ計算 - 言語ゲーム

    計算の質は何でしょうか?計算には、足し算引き算掛け算と色々あります。さらに因数分解や微分積分など、計算の種類を挙げればきりがありません。しかし、いくら沢山のルールを沢山覚えても、それで計算の質を分かった事はなりません。ここで視点を逆転して、より難しい計算ではなく、より単純な計算について考えてみる事にします。 面白いことに、どんな複雑な計算も単純な計算の組み合わせで出来ています。掛け算は足し算の組み合わせですし、引き算は足し算を逆にしたものです。さらに、足し算よりもさらに単純な計算を考える事は出来るでしょうか?昔から沢山の数学者がこのパズルに挑戦し、沢山のモデルが生まれました。今日ご紹介するラムダ計算もその一種です。ラムダ計算は非常に単純な計算モデルですが、単純すぎて計算過程を追うのが難しいです。そこで、アニメーションを使うと仕組みがわかりやすいのでは無いかと考えました(Firefox,

    アリゲーター・エッグでラムダ計算 - 言語ゲーム
    hengsu
    hengsu 2011/09/30
    ワニ計算機ですね。
  • 論理とギリシャ語順のトリビア - 言語ゲーム

    伝統的に、ギリシャ三段論法はこんな風に書きます。 大前提: 全ての人間は死にます。(全ての B は A) 小前提: ソクラテスは人間です。(全ての C は B) 結論: ソクラテスは死にます。(全ての C は A) なんか違和感ありませんか?なんか順番がちぐはぐですね。なぜもっと自然に 全ての A は B 全ての B は C ゆえに全ての A は C と書かないのでしょうか?伝統的な論理学にはプログラミングで使う論理学とは微妙に違う考え方が出てきます。この語順についても、昔の人はバカだからわざわざ難しい書き方をしたのだと思っていました。ところが何と、これにはちゃんとした理由があったのです。なんでも、これはギリシャ語で書いたときに自然な語順になっているそうです。 ギリシア語では、主語と述語の論理の記述が逆だそうです。この語順を無理やり当てはめるとこんな風になります。 大前提: 死ぬものの中に

    論理とギリシャ語順のトリビア - 言語ゲーム
    hengsu
    hengsu 2011/08/09
    "ギリシア語では、主語と述語の論理の記述が逆" forth風か?
  • ERNIE: くじを引く機械・知られざる英国コンピュータ史 - 言語ゲーム

    外国を旅するとたまに珍しい歴史に出会えます。ロンドンの科学博物館には、有名な世界初の大規模機械計算機であるバベッジの階差機関が展示されています。そしてその隣に誇らしげに展示されているのが ERNIE と呼ばれる巨大な電気式計算機です。これは、第二次世界大戦中に暗号解読機械を制作していたアラン・チューリングを含む天才数学者チームが戦後開発した物なのですが、何とその唯一の機能は当たりくじの番号を決める事でした。 時は 1956 年、当時の英国政府はインフレーションを抑えつつ貯蓄率を上げるために妙案を考えました。国債を買った人全員に平等に利子を付ける代わりに、くじに当たった人だけに賞金を出す事にすればどうだろう。このくじ付き国債は人気を博し、当選番号を決める ERINE もキャラクター化されロンドン市民に大変愛されたそうです。 この ERINE。単に当選番号を決めるだけならサイコロでもルーレット

    ERNIE: くじを引く機械・知られざる英国コンピュータ史 - 言語ゲーム
    hengsu
    hengsu 2011/08/04
    国家事業。チューリングたちが開発した。英国人はこれを博物館に置く、と。懐の違い。
  • デーモン城の思い出。 http://metatoys.org/demonCastle/ - 言語ゲーム

    ふと、思い立って The Etoys Castle (The Demon Castle) のスクリーンショットをアップした。これは Etoys のチュートリアルとして昔作ったもので、デーモン城に閉じ込められた主人公(あなた)がネコのミミに助けられながら Etoys の力で城を脱出する話。最終的にデーモンと友達になって今度はあなたが自分自身でデーモン城 (Etoys チュートリアル) を作り上げよう! というエンディングが話の味噌だったんだけど、諸般の事情で最初の章しか公開していない。という事で今更ながら勿体ない感じがするのでスクリーンショットだけでもまとめたのです。 バックグラウンドストーリーは デーモンとミミ、チュートリアルに関する自分用妄想メモ。 に必要以上に詳しく書いてあります。

    デーモン城の思い出。 http://metatoys.org/demonCastle/ - 言語ゲーム
    hengsu
    hengsu 2011/07/11
  • イスラムから見ると暗黒時代も黄金時代。1001 Inventions - 言語ゲーム

    California Science Center に 1001 Inventions という展覧会を観に行った。これはルネサンス以前にイスラム世界で発明された様々な発明品をテーマにした物だ。会場に入るとちょっとした短編映画が流れている。 歴史のいろいろな時代と現代との繋がりを調べましょうというテーマを出された小学生三人組、暗黒時代の担当になってしまい、退屈そうだと不満タラタラ。しかしふと訪れた博物館の怪しげな学芸員に奥の部屋へ通され、秘密の講義を受ける。そこで暗黒時代の当の姿を知るのであった。 例えば、 巨大な像の水時計とか、 縦形の風車とか、 世界最大の帆船とか、 世界初のグライダーとか、 手術道具とか、そう言うすごい物が展示されていた。これは凄いテーマだ!残念ながら、テーマの割に展示はかなりしょぼかった。まあ、でもイスラム科学に興味がわいて来た。 http://www.1001in

    イスラムから見ると暗黒時代も黄金時代。1001 Inventions - 言語ゲーム
  • ミニマル音楽機械 - 言語ゲーム

    自動演奏機械の作業記録。 ふと久しぶりに音の出る作品を作る事にしたんだけど、そこに一つ条件を付けました。全ての部品を糸で縫い合わせて、「ネジや釘、ボンドなど他の方法を使わない事」です。他に釘を使わないで組み立てる方法としては、昔から伝わる組子とか木組というパズルみたいな方法もありますが、ちょっと違って紐を主体とした設計にしてみました。紐は動く部品がある機械と相性が良く、昔の帆船や複葉機によく使われています。引っ張る力だけで押す力が全く無い所が面白いので、いっその事全ての部品に使う事にしました。色々分からない事が沢山あったので結局四つほど試作品を作りました。 まず色々な太さの糸と穴の間隔を試してみて、太めの木綿糸と 10 から 8 ミリ程度の穴間隔を使う事にしました。合成糸の方が強いですが、この太さだと滑りやすく伸びやすいので木綿にしました。 次にフレームの設計。簡単なのは写真のように一枚板

    ミニマル音楽機械 - 言語ゲーム
    hengsu
    hengsu 2011/04/20
  • ワイヤレス・メッシュネットワーク - 言語ゲーム

    ふとメッシュネットワークが気になったので調べている。普通のネットワークが部屋や通信会社の中にあるルータの設備をみんなで共有する形で繋がっているのに対して、メッシュネットワークというのは固定されたルータを介さないで端末同士で通信する物らしい。端末さえあれば中央管理された設備を用意する必要が無いので、例えば OLPC プロジェクトの XO マシンではインフラが整っていない発展途上国でもネットが使えるよう最初から搭載されている。XO で使われている http://wiki.laptop.org/go/Mesh_Network_Details のは 802.11s と言って、普通にパソコンに搭載されている Wifi を使ってメッシュを実現する物らしい。実際に現場でちゃんと使えているのかどうかよく知らないけど、広く使われているハードをそのまま使えるなんてすごい事だと思う。 最近ではメッシュネットワー

    ワイヤレス・メッシュネットワーク - 言語ゲーム
    hengsu
    hengsu 2011/03/14
  • salmacis: パターンマッチの意味(失敗) - 言語ゲーム

    パターンマッチの意味について考えている。簡単なパターンマッチの例としては、 (x, y) = (1, 2) のように書くと、x に 1 が y に 2 が束縛されるというもの。Scala や F# やHaskell などの最近の言語ではパターンマッチを一般化して、データ構造のみならずどのような関数を使ってもパターンマッチが出来る。たとえば Haskell では、 $ ghci Prelude> :set -XViewPatterns Prelude> let half n = n / 2 Prelude> let (half -> n) = 10 in n 5.0 のように変数 n に束縛する前に関数を適用出来る。この機能はカプセル化されたオブジェクトのパターンマッチに必須の機能だ。 さて、ふとこのパターンマッチを出来るだけ一般的に実装しようと思って困ってしまった。というのも、最初の (x

    salmacis: パターンマッチの意味(失敗) - 言語ゲーム
    hengsu
    hengsu 2011/02/23
    Factorのライブラリの開発者のブログで似たような議論(マッチの失敗、逆関数)があったけど、どれだか忘れた。
  • Smalltalk 勉強会@名古屋 STEPS プロジェクトご紹介 - 言語ゲーム

    http://atnd.org/events/1593 のカンニングペーパーを貼ります。プレゼン資料: http://scratch.mit.edu/projects/propella/811272 自己紹介 こんにちは、山宮と言います。STEPS プロジェクトの紹介をします。 まず簡単に自己紹介をさせてください。2003 年に梅澤さん達と同時期に未踏事業で Smalltalk を作ったアランケイに会いまして、その関係で三年前から彼の研究所であるロサンゼルスのビューポインツに居ます。ビューポインツとは、アラン・ケイが率いるNPO の研究組織で、多くの Squeak 開発メンバーが参加しています。 概要 STEPS プロジェクトは 2007 年に NSF の支援を受けて始まった5 年間の研究プロジェクトです。今回 STEPS プロジェクトの内でも特にプログラミング好きの皆様が興味を持ちやすい

  • Go For C++ Programmers #interface の勝手に和訳 - 言語ゲーム

    普段はグーグルとかそういうトレンディな場所には近づかないようにしているのですが、継承最悪説、継承こそがオブジェクト指向の生み出した悪の根源だと唱えたり唱えなかったりしている自分としては Go For C++ Programmers #interfaces のようなドキュメントをみるとうれしくなってしまいまして、Go For C++ Programmers の真ん中くらいの "Interfaces" の部分を勝手に和訳しました。権利的に問題があれば削除します。 何となくたかはらさんの Go For C++ Programmersの勝手に和訳 に文体を合わせました。 以下、訳となります。 C++ でクラスやサブクラス、テンプレートがあるけど、Go ではインタフェースがあるよ。Go のインタフェースは C++ の純粋抽象関数に似ている。これってデータメンバが無くて純粋抽象メソッドしか無いクラスの

    Go For C++ Programmers #interface の勝手に和訳 - 言語ゲーム
  • 【グロ注意】液体絆創膏 - 言語ゲーム

    指を切った。ちょっと前に皮むき器を買って以来あまりにさくさく剥けるので、調子に乗ってジャガイモを剥いてたんだけど、疲れが溜まっていたのかさくっとやってしまった。爪の先端と肉がちょっと削げた程度であまり大して血は出なかったけど、じわじわ痛くて、キーボードが打ちにくくて大変困っている。 折角なので仕事帰りにスーパーに行って、応急処置用の薬やなんかを揃える事にした。何か面白い物ないかなーと思っていると、液体絆創膏という物があったので試してみた。 これは要するにアロンアロファみたいな奴を傷口に付けて水やばいきんを防ぐという物だ。傷口が見えたままになるので頼りない感じはするけど、確かに防水にはなっているみたいで、付けたまま手を洗ってもひりひりしなかった。ちょっと面白いので写真を撮ってみた。

    【グロ注意】液体絆創膏 - 言語ゲーム
    hengsu
    hengsu 2009/11/18
    塗ったとき、しみませんでしたか?
  • Fonc で遊ぶ2 - 言語ゲーム

    言語を作るのは地味であまり面白くなかったので、グラフィック機能で遊んでみる。Fonc には、cairo を使ったワークスペースのサンプルがあるが、あいにく Windows では動かないので、修正がてら Fonc の勉強 とりあえずコンパイル $ cd function/canvas $ make world 問題点 マウスは反応するがキーボードの入力が効かないみたい。Windows での画面入出力を制御してるらしい WinWindow.st をつらつら眺めていて色々な事が分かった。 Fonc の一般的なポイント idc コンパイラは pepsi から C 言語のへのプリプロセッサ .st ファイルは C 言語に変換されて .o.c になり、gcc でコンパイルされる。 {} の中に C プログラムを書く事が出来る。 pepsi のローカル変数宣言 | a | は (void)v_a; に変

    Fonc で遊ぶ2 - 言語ゲーム
  • Fonc で遊ぶ - 言語ゲーム

    最近イアンの奴は Fonc と言ってるようです。これの peg を使って言語を作る実験をします。 準備 コンパイルして動作確認するまでの流れです。linuxmac を使います。(windows は挫折中) $ svn co http://piumarta.com/svn2/idst/trunk/ idst $ cd idst $ make $ cd function/jolt-burg $ execstack -s main $ cd ../examples/peg/ $ ../../jolt-burg/main boot.k peg.k -o calc.peg.k examples/calc.peg ; loading: boot.k ; loading: quasiquote.k ; loading: syntax.k ; loading: number.k ; loading:

    Fonc で遊ぶ - 言語ゲーム
  • Les Triplettes de Belleville (ベルヴィル・ランデブー) を観た - 言語ゲーム

    2003 年のフランスアニメ映画。当時フランスでは大ヒットしたそうですが、全然知りませんでした。DVD で観てびっくり。これは確かに凄い!アニメ好きなら絶対観た方が良いです。ストーリーは誘拐された自転車レーサーの孫を救出するおばあちゃんの話だそうですが、筋立てはわりとどうでも良くて、アニメーションの細部へのこだわりと音楽が凄すぎる。だいたい台詞がほとんどなくて(フランス語なのに字幕なくてもわかる)、純粋に動きだけでどんどん魅せて行きます。例えば孫のマッサージに泡立て器や芝刈り機(?)を使うシーンや、冷蔵庫や掃除機が全然使われずピカピカに磨かれてあると思ったら実は○○だった!とか、犬の Bruno が人力の蒸気機関車に乗っていて線路が巨大な餌入れの上だった夢を観るとか。最高でした。

    Les Triplettes de Belleville (ベルヴィル・ランデブー) を観た - 言語ゲーム
    hengsu
    hengsu 2009/09/04
    フランス、凄くいいらしい
  • Tamarin でアセンブル/逆アセンブル - 言語ゲーム

    Flex SDK と Tamarin を使って Flash バイトコードを abcasm でアセンブルしたり abcdump で逆アセンブルする方法を書きます。私は Mac で作業しましたが、他でも大体同じだと思います。 出来る事 ABC アセンブラソースをバイトコードに変換して実行出来ます。 ABC バイトコードをアセンブラソースに変換して読む事が出来ます。 良くわからない事。 ABC ファイルを SWF に埋込んでブラウザから実行する方法。(知ってたら教えてください!) 追記: asc の swf オプションで abc の代わりに swf が作られますが、これでも abc から swf を作れるわけじゃないです。 java -jar $FLEX/lib/asc.jar -swf test,400,300,30 hello.as 使うもの Tamarin : abcasm, abcdum

    Tamarin でアセンブル/逆アセンブル - 言語ゲーム
    hengsu
    hengsu 2009/07/29
  • A Declarative Model for Defining Smalltalk Programs と ANSI Smalltalk - 言語ゲーム

    論文 http://www.smalltalksystems.com/publications/_awss97/SSDCL1.HTM スライド http://www.smalltalksystems.com/publications/_awss97/INDEX.HTM ANSI Smalltalk draft http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf 先日 http://d.hatena.ne.jp/propella/20090709/p1#c1247123822 梅澤さんに教えて頂いた資料を読んでみました。これは面白いです。私がケチを付けた所はすでに10年以上も前から言われていた事だったのです。そりゃそうか。 問題をもう一度書くと、Smalltalk の伝統的な開発手法が副作用に依存しているため

    A Declarative Model for Defining Smalltalk Programs と ANSI Smalltalk - 言語ゲーム
    hengsu
    hengsu 2009/07/16
    「秘伝のたれ」を避けるべく
  • Smalltalk 式イメージベース開発環境の欠点とその解決方法、開発環境の意味論。 - 言語ゲーム

    ここ半年ほど考えていた問題に解決の糸口が見えたのでメモ。主要なプログラミングのスタイルには二通りあります。一つはソースコード式、もう一つはイメージ式です。 ソースコード式は普通にソースコードを書いてから実行する方法です。イメージ式というのは馴染みが薄いですが、プログラムと開発環境が一体になっていて、プログラムを動かしながら動的にプログラムを変更して行きます。作業が一段落すると現在の作業内容をイメージファイルという大きなファイルに書き出して作業を終えます。プログラムの配布にはイメージファイルをそのまま使います。これは Smalltalk で使われる方法で、LISP でも似たような機能があります。 Smalltalk でプログラムを書いた事が無い人は、ずーっとデバッガを実行しっぱなしで、しかもソースコードをいつでも書き換えられる状況を想像すると良いです。この方式の良い所は、プログラムの生きた振

    Smalltalk 式イメージベース開発環境の欠点とその解決方法、開発環境の意味論。 - 言語ゲーム
    hengsu
    hengsu 2009/07/10
  • Smalltalk のクラスと Haskell の型クラスを比較します。 - 言語ゲーム

    私は Haskell の一番すごい所は型クラスだと思っているんですが、ここ数日それを言葉にしようとずっと悩んでいました。結局、もう一つの好きな言語なSmalltalk と比較して型クラスがどういう物か書いてみる事にしました。 型クラスという名前について Smalltalk に染まってしまった人にとって、「型クラス」というのは最悪なネーミングです。あまりにも Smalltalk のクラスと違いすぎるからです。機能的には traits や Java のインタフェースから継承を除いた物と思ったら良いです。また、「継承」や「インスタンス」など、Smalltalk と Haskell 両方で使われる言葉はことごとく別ものと思った方が良いです。 型クラスの位置づけ Smalltalk をはじめとするオブジェクト指向言語の機能をそのまま Haskell で実現しようとすると最初はすごく戸惑います。日

    Smalltalk のクラスと Haskell の型クラスを比較します。 - 言語ゲーム
    hengsu
    hengsu 2009/06/25
    型クラスの説明、smalltalkのクラスとの比較
  • API Design Matters http://queue.acm.org/detail.cfm?id=1255422 - 言語ゲーム

    http://d.hatena.ne.jp/oraccha/20090606/1244225100 経由で。 C# の Select() 関数についてひとしきり文句を書いた後に、実際良い API を作るコツを挙げている。 API は必要な機能を備えろ タイムアウトが 35 分以内で無ければならないとか、微妙な制限があってはならない。 API は不便を感じない限り出来るだけ小さく 例えば UNIX で wait, waitpid, wait3 wait4 と色々あるのはやり過ぎ。wait4 だけでよい。微妙に似た関数が沢山あって、一つの一般的な関数で他の奴が実装出来ない作りになってるのが最悪なパターン。 文脈なくして API なし キーから辞書を引いて文字列を返す関数を考える。キーに対応する文字列が無かった時、次のやり方があるだろう。 例外発生 null を返す 空文字列を返す どれが正しい

    API Design Matters http://queue.acm.org/detail.cfm?id=1255422 - 言語ゲーム
    hengsu
    hengsu 2009/06/16
  • Prolog を Haskell で書く。 - 言語ゲーム

    Prolog インタプリタを Haskell で書きました。しばらく書いただけで満足してしまっていたのですが、このまま人知れず消えて行くのも寂しいので勉強した事を書きます。まず、参考にしたソースは前回書いた hugs98/demos/prolog/ です。このソース。大変短くて良いのですが、素人目には簡潔すぎて難しいのと、書かれたのが古いのか do 記法を全く使っていないので、そこらへんを私風にアレンジしました。ソースを http://github.com/propella/prolog/tree に置いておきます。なお、言葉の使い方とか間違ってるかもしれないので気づいた人は教えてください。 実行 実行の仕方は Prolog.hs をダウンロードして、 runghc Prolog.hsです。food(apple). のようにするとルールに追加で、?- apple(X). で問い合わせ、??

    Prolog を Haskell で書く。 - 言語ゲーム