タグ

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

  • STEPS プロジェクトご紹介その2 - 言語ゲーム

    前回 STEPS プロジェクトについて書いてから二年になるので、また書きます。 概要 STEPS (STEPS Toward Expressive Programming Systems) というのはアラン・ケイが率いる NPO 研究組織の Viewpoints Research Institute (VPRI) が進めているプロジェクトで、私も 5 年程前から参加しています。プロジェクトの目的は、パーソナルコンピューターの実装に必要な機能の全てを 20,000 行という短いサイズで記述しようという物です。システムには OS から言語、オフィス風アプリケーション、インターネット環境などを含みます。成果物は、Squeak のように普通の WindowsMac の上バーチャル環境として提供されます。 目的 なぜプログラムの短さが重要なのでしょうか?私たちが日常的に使っているパソコンを動か

    STEPS プロジェクトご紹介その2 - 言語ゲーム
    s_taki
    s_taki 2011/11/07
  • cola/flash ワークスペース - 言語ゲーム

    http://languagegame.org/tmp/ws/flash/Repl.html 今までさんざん同じようなプログラムを作って来たけど、懲りずに昨年 C5 で発表した Chaklboard 以来の新たなワークスペースを作りました。今回の言語は lisp です。Flash 上で動作するため、なんと IE でもちゃんと動きます! 使い方は Smalltalk の物と一緒で、式を選択して Do It か Print It をクリックするだけ、なんて直感的なインタフェース!まだ Wiki としての機能はありませんが、サンプルドキュメントがいくつか用意されていて、例えば (jump "Overview.html") を選択して Do It すると別の画面に飛ぶという具合です。下の欄に文書名を入れても飛びます。特に Flash らしい画像を使ったデモが見たければ、Graphics.html

    cola/flash ワークスペース - 言語ゲーム
    s_taki
    s_taki 2010/04/15
  • Smalltalk 勉強会@名古屋 STEPS プロジェクトご紹介 - 言語ゲーム

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

  • Leftist Heap - 言語ゲーム

    Chris Okasaki の Purely Functional Data Structures というを買ってみました。これは、副作用を使わないでいろいろなデータ構造のアルゴリズムを実装するという大変面白いで、これを読むと、副作用無しで○○が出来るわけがない!という時の○○がだいぶ減ると思います。 サンプルは Standard ML で書かれているのですが、良くわからないのでHaskell で書き直しながら読んでみます(巻末に Haskell での実装例が載ってるけど見ないふり)。 17 ページに Heap というコレクションが紹介されています。これは次の性質をもったコレクションです。 要素は大小関係を持つオブジェクト。 最小の要素だけを取り出す事が出来る。 ようするにあるリストをソートして最小の奴を取り出したいという場合、取り出す物が最小の物だけならばソートするより効率の良い方法

    Leftist Heap - 言語ゲーム
    s_taki
    s_taki 2009/11/27
    その本欲しいと思った
  • Smalltalk 式イメージベース開発環境の欠点とその解決方法、開発環境の意味論。 - 言語ゲーム

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

    Smalltalk 式イメージベース開発環境の欠点とその解決方法、開発環境の意味論。 - 言語ゲーム
  • 最近の開発の事つづき - 言語ゲーム

    こないだ書いた Squeak と Pepsi のブリッジ、名付けて RCCola が一段落して今日発表した。特にインスペクタという、ランタイムの変数を観察するツールはびっくりするほど便利で、しかも作るのも簡単で、なんでもっと早く作っておかなかったのかと悔やまれるほどだ。Socket のライブラリも思ったより簡単だった。逆に、簡単そうに見えた Pepsi 上にテキストエディタを作る話は、あきらめ状態に近いほど難しくて、何が難しくて何が簡単か作ってみるまで分からないものだ。 この RCCola。ちゃんと作り込めば将来飯の種になるんじゃないかと思っている。例えばこのまま Web アプリケーションフレームワークとして発展させれば、ウェブサーバーの部分はシンプルな Pepsi (Smalltalk っぽいガワを被った C) で、開発環境は柔軟な Squeak で、と役割分担をさせれば、Squeak

    最近の開発の事つづき - 言語ゲーム
    s_taki
    s_taki 2009/04/19
    ちょっと気になる
  • アラン・ケイ - 「ソフトウェア工学」は矛盾語法か? [対訳版] - 言語ゲーム

    http://metatoys.org/oxymoron/oxymoron.html 京大でこないだのアランさんの講演 http://d.hatena.ne.jp/squeaker/20090120#p1 があった後に、kckm さんが 今回の話と http://d.hatena.ne.jp/sumim/20080806/p1 で紹介されていた「Is "Software Engineering" an Oxymoron?」の関連についてつぶやいていた のでなるほどと思って読み返してみました。ついでに暇だったので訳しました。といってもほとんど sumim さんの箇条書きを単に並べただけで新しい情報は無いですが、箇条書きが嫌いな人には読みやすいかと思います。間違っている場所があったら教えてください!また、この日記は下書きという事にして、読みやすくした分を http://metatoys.org

    アラン・ケイ - 「ソフトウェア工学」は矛盾語法か? [対訳版] - 言語ゲーム
  • ことしやる事。 - 言語ゲーム

    気がつけば C5 まであと二週間少々となってしまったにも関わらず、ここんとこずーっとぼんやりしてしまっているので目を覚ますべく去年今年のまとめを書く。 私はロサンゼルスの Viewpoints Research Institute という小さな研究グループで働いている。5年プロジェクトなので、あと3年はこの仕事をする。短期的な目標は複雑化したコンピュータ技術の全体をいかに人の手に負えるサイズにするか、長期的な目標は、コンピュータを使って出版文化と科学の発明と同じくらいの大きな変革を生み出す事だ。 目標は大きいが一歩一歩は小さな努力の繰り返しだ。私は唯一学歴の無い開発者として、オマケみたいな立場で頑張ってデモや開発ツールと作っている。例えばイアンさんの作った新しい言語とツールキットの上でワープロや画像作成ツールを作り、プロジェクトのドキュメントを新しいシステム自体で作るのが直近の目標だ。猛烈

    ことしやる事。 - 言語ゲーム
  • エディタのデザイン - 言語ゲーム

    金曜日にプレゼンがあって、久しぶりに徹夜した物だから週末はめちゃくちゃしんどかった。ので、今日はほとんど一日寝ていた。まだしんどい。が、せっかくなので内部でプレゼンしたスライドをアップする。 エディタのような普通のアプリをどうやったら綺麗に記述出来るだろうかという話です。まー例えば入力が元のテキストとキーボードイベントで、出力がテキスト画像と変更後のテキストであるような関数をエディタだと考える事が出来ます。 これを素直にプログラムで書くと、こんな感じになります。上からイベントがやってきて、テキストの内部表現(TextBuffer)を変更します。それを画面に表示するにはレイアウト用のデータ構造(TextView)を作成して、さらにビットマップに変換してデバイスに送ります。確かに単純ですが、これを副作用抜きで毎回オブジェクトを作るとなると遅すぎて動きません。数百文字で挫折します。 という事で、

    エディタのデザイン - 言語ゲーム
    s_taki
    s_taki 2008/07/21
  • 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 - 言語ゲーム
    s_taki
    s_taki 2008/06/20
  • OMeta で書く、右再帰と左再帰 - 言語ゲーム

    前回 http://d.hatena.ne.jp/propella/20071122/p1 S式電卓を作ると書いたけど、もう一度右再帰と左再帰について確認します。左再帰を書くと無限ループになるのが PEG の特徴らしいですが、OMeta では、どういうトリックかちゃんと左再帰も処理できます。とある数字(文字列)からとある数字(データ)を生成するプログラムを書いて、右再帰と左再帰の違いを確かめてみましょう。前回説明した以外に => によるアクションと、パラメータ付きのルールを使ってます。 まず左再帰を使った例。 ometa LNum { digit ::= ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'):x => [x digitValue]. number ::= <number>:n <digit>:d => [n

    OMeta で書く、右再帰と左再帰 - 言語ゲーム
    s_taki
    s_taki 2008/06/20
  • 時間旅行は可能か?補足 - 言語ゲーム

    前に時間旅行が可能かどうか関数型プログラミングの観点から書いた事があります(http://d.hatena.ne.jp/propella/20070927/p2)。時間旅行で過去に行って高校生のお母さんと恋に落ちてしまっても、そこから生まれる未来は別に枝分かれした未来なので、自分自身が消えてしまう事は無いという結論です。ようするに、関数型言語で状態のその場変更は許されず、作り直し(変更したい部分を作り直して次の状態のつもりになる)で状態変化を表現するのと同じ理屈になると言いたかったのですが、実はこの妄想。最先端の現代物理学でも同じ結論になってるそうです!! http://itc.conversationsnetwork.org/shows/detail3644.html 英語の勉強に聞いてるラジオで知りました。

    時間旅行は可能か?補足 - 言語ゲーム
    s_taki
    s_taki 2008/05/09
  • テキストエディタのデザイン - 言語ゲーム

    ここらでエディタのデザインについて再考する。エディタを関数と考えるとこんな感じだろう。 (テキスト画像, 新テキスト) = f(イベント, 画面情報, 旧テキスト) つまり、あるテキストがあって、そこにキーボードやマウスイベントを発生して更新した後のテキストを得る。また、画面の幅やフォントなどの情報を使って同時にテキストの内容を表示した画像を得る。 残念ながら、これをそのまま作っても遅すぎて数百文字程度のテキストしか扱えないので、最適化を色々考える事になる。特に画面表示はコストが高いので、どのような情報が必要なのか考える。 テキスト 論理桁、行情報: ある文字が論理行のどの桁、行にあるか(文字単位)。 物理桁、行情報: ある文字が物理行のどの桁、行にあるか(文字単位)。 論理座標情報: ある文字が、論理座標のどの座標にあるか(ピクセル単位)。 (物理座標情報: ある情報が、画面上のどの座標

    テキストエディタのデザイン - 言語ゲーム
    s_taki
    s_taki 2008/04/05
  • 論文読み: Arrows, Robots, and Functional Reactive Programming http://www.haskell.org/yampa/AFPLectureNotes.pdf - 言語ゲーム

    Haskell のアニメーションライブラリ Yampa についてのチュートリアル。またもや FRP (Functional Reactive Programming) の話題です。SOE の FAL は休憩して、その未来の姿である Yampa に寄り道します。Monad を一般化した Arrow なるものを使って、time / space leak なる物を排除し、モバイルロボットのプログラムをきっちり記述します。 プログラムの例として、シムボット(ロボットシミュレータ)を扱います。シムボットは二つの独立して動く車輪を持ち、ぶつかりセンサーや、前後左右に光学センサーを持ちます。また、他のシムボットの位置を知る事も出来ます。 シグナル (p 3) 一番重要な概念はシグナルです。 Signal a = Time -> a つまり、シグナルとは時間の関数です。例えばシムボットは車輪が二つあるので

    論文読み: Arrows, Robots, and Functional Reactive Programming http://www.haskell.org/yampa/AFPLectureNotes.pdf - 言語ゲーム
    s_taki
    s_taki 2008/03/25
  • 論文よみ。Lowering: A Static Optimization Technique for Transparent Functional Reactivity - 言語ゲーム

    この期に及んで現実逃避モード。論文を読みます。http://kimbly.com/papers/bck-pepm-2007.pdf 1 枚目 FRP についての説明です。FRP と言っても樹脂じゃなくて関数反応型プログラミングの事です。宣言的プログラミングと命令的プログラミングを上手く混ぜる方法として、伝統的なデータフローを発展させた物だそうです。 FRP は、あっちの値が変化すればそれに反応してこっちの値が変化するような物を作るのに使います。実装方法は、依存関係に応じてグラフ(トーナメント表のような木構造)を作って、反応を伝播させていきます。 透過 FRP では、ふつうの演算が自動的に lift (持ち上げ)されます。lift というのはその場ですぐ演算するんじゃなくて、反応したときに演算するような構造を作る事です。この方式の欠点はどんどんグラフが大きくなって遅く大きくなる事です。この論

    論文よみ。Lowering: A Static Optimization Technique for Transparent Functional Reactivity - 言語ゲーム
    s_taki
    s_taki 2008/03/12
  • 1