タグ

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

  • FPGA に夢を見る。 - 言語ゲーム

    この週末はずっと FPGA で遊んでいた。出来たのはただ LED が光るだけの物だが、やっと考えたとおり動いてくれてほっとしている。一息ついたついでに、FPGA のどこが面白くて、何を目指しているかちょっと書いてみる。 この数週間の短い間に、私は FPGA がソフトウェアを変える!と信じるようになった。FPGA はハードウェア記述言語で動かすチップだから、ハードウェア記述言語がソフトウェアを変える!という妙な話の流れになってしまうけど。前からぼんやり思っていたプログラミング言語への違和感が急にはっきりした。その違和感とは、プログラミング言語全体が、いわゆる早まった最適化に陥っているという事だ。 プログラミング言語が必要なのは、コンピュータには人間の言葉が分からないからだ。コンピュータは順番に単純な命令を実行する事しか出来ないから、大きな問題を小さく分けて、さらに順番に並べなければいけない。

    FPGA に夢を見る。 - 言語ゲーム
    hengsu
    hengsu 2008/05/27
  • 論文読み Charles Crowley. Data Structures for Text Sqeuences. 1998 - 言語ゲーム

    http://ned.rubyforge.org/doc/crowley98data.ps.gz 他に面白いリンクがここに一杯ある。 http://ned.rubyforge.org/ 結論 テキストエディタのデータ構造としては、piece table method が一番良い。 感想 今更テキストエディタを自分で作りたいという変わった人は読んだ方が良いです。この論文では、テキストをメモリやディスクでどのように保持するかという問題を、挿入、削除、位置特定の速度という観点から調べています。 位置特定とは、文を前から数えてどの位置にどの文字があるか調べるという問題ですが、ある位置を調べた後、次に調べたくなるのは前回調べた位置のすぐそばである可能性が高いという前提に立っています。 表示、例えばテキスト回り込みやプロポーショナルフォントの問題には触れていません。 UTF-8 のような可変長エンコー

    論文読み Charles Crowley. Data Structures for Text Sqeuences. 1998 - 言語ゲーム
    hengsu
    hengsu 2008/04/21
  • エディタを作る近況 - 言語ゲーム

    最近やってる事を書きます。しばらく前に、アランさんからメールが来て、ここしばらくイアンの奴に全力投球するようにと言われました。他に Javascript がどうだとか OpenDocument がどうだとか沢山あるけど、色々出来ないのでとりあえず全然分かっていないイアンの奴を勉強するのが先決だと思い、エディタを書くという課題を自らに課しました。ほんとは物理シミュレーションとか、関数型言語を作るとか、そういう派手な奴をやりたかったのですが、イアンの奴がそれどころでは無い完成度なのでそれは諦めました。 なぜエディタかと言うと、良くある GUI フレームワークや、Squeak でさえもテキスト入力の部分はブラックボックスになっていて、ユーザが気軽に触れない事になっているので、前々から良くないと思っていたからです。この点で Swing は結構カスタマイズ出来るようになっていて参考になります。あと、

    エディタを作る近況 - 言語ゲーム
    hengsu
    hengsu 2008/03/24
  • クロージャとオブジェクトは同じ物だという話 - 言語ゲーム

    前に lambda lifting という言葉を聞いてから、ずっと妄想しているのは、クロージャとオブジェクトは「似ている」のではなく「同じ物」なのではないかという事。lambda lifting というのはクロージャをコンビネータに変形する操作の事で、多分簡単に書けば function f() { var a = 1 return function() { return a * 2 } } のような関数を function g(env) { return env.a * 2; } function f() { var a = 1 return g({a: 1}); } のように書き直してスコープをまたがる a のような変数アクセスを無くす事だと思います。で、これなんかに似てるなーと思ったら、オブジェクト指向言語のメソッドにそっくりです。pythonperl のような言語ではレシーバを

    クロージャとオブジェクトは同じ物だという話 - 言語ゲーム
    hengsu
    hengsu 2008/03/24
  • Implementing functional languages: a tutorial - 言語ゲーム

    http://research.microsoft.com/~simonpj/Papers/pj-lester-book/ 最初の 25 ページしか読んでないけど、こ、これは面白い。。。Miranda という Haskell のご先祖様な言語で遅延評価な関数型言語を作る話です。知りたかったテーマどんぴしゃな話題でびっくり。このを知っていたら私の無駄な探求が週末 10 週分節約出来たような気がするが、かといって知らない話題を英語で読んでも寝るし。まだ読んでないけど、特に気になるのが lambda lifting というクロージャを C みたいな環境の無い関数(supercombinator という萌える用語が使われている)に機械的に変換する方法。ちゃんと最後まで読めますように。。。 http://d.hatena.ne.jp/nushio/20080301#p1 ← に書いてある通り作っ

    Implementing functional languages: a tutorial - 言語ゲーム
    hengsu
    hengsu 2008/03/14
  • OMeta - 言語ゲーム

    http://www.cs.ucla.edu/~awarth/ometa/ 眠くて微妙な事が何も出来ないので軽く OMeta について書きます。OMeta とは、http://lambda-the-ultimate.org/node/2477 によって一躍有名になったメタ言語 - プログラミング言語を書くためのプログラミング言語 - です。果たして単なる PEG パーサと一体どこが違うのか私もよく分かっていないので、そのあたりの事を勉強したいと思います。OMeta にはスクイークや「イアンのやつ」の実装がありますが、最近 Web ブラウザで実行出来る Javascript 版が公開されたのでそちらを試します。 OMeta で何が出来るか? http://www.cs.ucla.edu/~awarth/ometa/ometa-js/ を開くと、OMeta で作成された Smalltalk 言

    OMeta - 言語ゲーム
  • Joy 代数。http://www.latrobe.edu.au/philosophy/phimvt/joy/j04alg.html を読む。 - 言語ゲーム

    順番が無茶苦茶だけど、四番のドキュメントを読みます。スタック言語におけるモナドの扱いに触れるのが目標です。Joy 代数によって、高階関数の色々な性質を変数無しで表現する事が出来るらしいです。 準備 私は http://www.latrobe.edu.au/philosophy/phimvt/joy/joy.tar.gz からダウンロードできる joy を使っています。cygwin, linux, mac 等で展開して make して、/usr/local/bin 等にバイナリをコピーすると良いです。http://d.hatena.ne.jp/shortsleeved/20070604#p1 を参考に rlwrap をインストールすると便利さ倍増です(cygwin の場合は chmod 700 ~ が必要かも知れません)。joy は基的に標準入力から読んで標準出力に出すという単純な仕組みな

    Joy 代数。http://www.latrobe.edu.au/philosophy/phimvt/joy/j04alg.html を読む。 - 言語ゲーム
    hengsu
    hengsu 2007/07/15
    ここに解説が
  • 論文読み No Ifs, Ands, or Buts Uncovering the Simplicity of Conditionals http://lambda-the-ultimate.org/node/2148 - 言語ゲーム

    スキマチック・テーブル(schematic table)という新しい手法を使って、ディシジョン・テーブルとデータフローを融合させる方法です。これによってプログラムを宣言的に記述できます。チキマチック・テーブルは、コード生成ツールとしても、ダイアグラム言語としても使えます。 次の OOPSLA で発表される予定の論文です。上の説明でピンと来る人はかなりの通。これもまた、プログラムを画像表現する手法についての話です。データフローと条件文というのは相当相性悪いのです。この人はスキマチック・テーブルという新発明で解決するらしいです。 導入 条件文は基的なプログラム要素ですが、言語によって沢山のやり方があります。if then、case 文、パタンマッチング、ポリフォニズム。なんでそんなにあるかというと、ただの if then 文では直接意図を表現出来ないからです。身に覚えがある方は沢山いらっしゃ

    論文読み No Ifs, Ands, or Buts Uncovering the Simplicity of Conditionals http://lambda-the-ultimate.org/node/2148 - 言語ゲーム
  • 管路収集 - 言語ゲーム

    テレビを見てると、大変魅力的な映像が流れてきた。放置されて久しい薄暗い工場の中で蠢く無数のパイプ。パイプの片側は真空発生装置に、もう片側は長く工場の外へ伸びてゆき、地域の各家庭に繋がって行くという。 管路収集というのはごみ収集の方法で、収集車によってごみを回収する代わりに、各家庭に設置されたダストシュートから収集するという物。家庭では 24 時間いつでも好きな時にごみを出す事が出来て、出されたごみはパイプを伝わって直接処理工場に到達する。 なんて未来的で魅力的なシステムなのだ! しかし残念ながら、コスト高と分別収集という時代の波に押されてどんどん廃止されているらしい、このシステムを提案したテクノクラートの失意を想像すると痛ましい。しかし想像してみたまえ。 未来の多摩ニュータウン。かつての栄華も空しく超高齢化社会により若者が消えた街。平均年齢は上がる一方だがそれでも寿命には限度がある。ある冬

    管路収集 - 言語ゲーム
    hengsu
    hengsu 2007/03/28
    これは好きなタイプ
  • 形式的で一般的な GUI フレームワークの研究 - 言語ゲーム

    今日電車の中で、これは行けそうだ!という予感がしたので記念に書いておきます。予感だけで、当に出来るかまだ分からない。 やりたい事 GUI フレームワークを形式的に定義します。GUI フレームワークというのは、ある情報(例えば温度)がある時に、それをどのように画面に表示するかと言う方法の事です。簡単に書けば単にある数字を表すフォントを画面に点で書けば良いだけですが、例えば温度計みたいに表示したり、グラフで表示したり、編集出来るようにしたり、色んな事を考えるとフレームワークと言うのを使った方が良いです。 形式的にというのは、数式で表現するという事です。数式で表現出来ると意味を変えずに表現を変える事が出来ます。すると、計算が速くなったり頭がすっきりしたりします。 一般的にというのは、GUI 以外にも使えるという事です。オブザーバパターンの枠内だったら何でも使えます。 バックグラウンド Sque

    形式的で一般的な GUI フレームワークの研究 - 言語ゲーム
  • WikiPhone(ウィキフォーン) とは何か - 言語ゲーム

    全然音が悪くてさっくり落ちてしまう事が分かっているのでこっそりとしか公開していないのですが、ちょっぴり説明します。 スクイークプラグイン をインストールした後、WikiPhone にアクセスして、connect ボタンを押すと、同じページに来ている人と話せます。 どんな風に自分の声が聞こえているかは、local echo をチェックすると確認できます(ハウリングするのでマイクかイヤホンをつけて下さい)。 動いている時は、話しかけると URL 書いてある箱の下で数字が動きます。よく止まるのでブラウザをリロードして connect ボタンを押し直してください。 WikiPhone は、スカイプのようなIP電話から着信機能と送信機能と普通の電話回線にかける機能を取り去り、グループ通話の機能だけにした物です。電話として使うのではなく、何か他の道具、ブログやゲームの一部として使う事を目指しています。

    WikiPhone(ウィキフォーン) とは何か - 言語ゲーム