トップ 最新 追記

Route 477



2008-03-02

[event] 週末のこととか

  • 2/28 鍋
    • パンダ祭り。
  • 2/29 関西Lifehack研究会 (関ララ)
    • ファシグラについて。
    • ファシリテーショングラフィック=議論を描く技術
    • 会議中に議論をまとめたり、可視化するための図の描き方。
    • アイコンはケータイの絵文字とかを参考にするとよい
  • 3/1 Haskell Hackathon
    • kmyaccをscheme対応しようとして挫折するなどした
    • 残骸:ダウンロード
      • 闇雲に作業するだけでは駄目ですね。無理だと悟ったら方針を考えなおさないと。
      • そもそも自分の理解してないコードを移植することはできない
      • Ruby版を作る→リファクタリング→Scheme版を作る、という経路で上手くいくかなぁ。
      • kmyaccちょうかっこいい
    • グッディ++
    • Haskellなにそれ
  • 3/2 生駒読書会
    • いけなかった(´・ω・`) very zannen
本日のツッコミ(全1件) [ツッコミを入れる]

naoya_t [very zannen!!!!!]


2008-03-03

[ruby][javascript] JavaScript1.7のyieldがRuby1.9のFiberにそっくりな件

コルーチン!コルーチンじゃないか!

yieldがRubyのyieldと意味が違って混乱しますが、そんな時は以下のように読み替えればおk:

JavaScript1.7Ruby1.9
yield;Fiber.yield
function f(){ .. yield; ..}f = Fiber.new{ .. Fiber.yield .. }
g.next();g.resume()
g.send(10);g.resume(10)

かんたんだね!

[biwascheme] wait-forを使って、イベント処理も同期的に書けるようにした

http-requestでAjaxを同期的に書けるようにしたのに続き、 ボタンのクリック等も同期的に書けるようにしてみた。

(begin
  (print 1)
  (wait-for ($ "foo") "click")
  (print 2))
<input id="foo" type="button" value="click to proceed">

これを実行すると、まず1が表示され、ボタンが押されたあとに2が表示される。

やってることは単純で、wait-forが呼ばれたときにインタプリタの状態を保存し、 ボタンが押されたときに再開するというだけ(あと、2回実行されないように、stopObervingも行う) だけど、実際動いてみるとインパクトあるわ。

以下wait-forのソース。

  define_libfunc("wait-for", 2, 2, function(ar){
    var elem = ar[0], evtype = ar[1];
    return new WebScheme.Pause(function(pause){
      Event.observe(elem, evtype, function(event){ 
        Event.stopObserving(elem, evtype, arguments.callee); // remove handler(=myself)
        return pause.resume(); 
      })
    })
  })

JS1.7ではこんなのも当たり前になるんだなーと思うとなんか感慨深い。

本日のツッコミ(全3件) [ツッコミを入れる]

ささだ [g?]

yhara [原文がgだったのでgにしちゃいました。]

こて丸 [IEでも yield の使えるフレームワークを構築しました。 仕様に付いてご意見等頂けると嬉しいです。 ホーム:ht..]


2008-03-06

[idea] Hiki記法からはてな記法へのコンバータとか

はてな記法に慣れなくてはてなダイアリーのアカウントを放置してたんですけど、いつも使ってるHiki記法から はてな記法にコンバートするものを作ればいいのかも。

[idea] ソースを読むのが専門の会社とかって

ないのかな。

古いプログラムのメンテナンスのためにソースを読んで動作を解析するのを請け負う会社。 オプションでリファクタリングもする。

楽しいかは不明。でも、そういうのが好きな人もいるよね。

[games] 銀閣寺GOLDにTiが入った

まじびびった。というか、せめてあと1年でも早く入荷してくれれば…。_|‾|○

せっかくなのでSHIRASE 500越えの記録を残して帰るぜ!と思ったんですが、ランキングを見たら

1 309 1300 S13(橙) 04:43:20
2 L   1300 S13(橙) 05:13:03
3 ANN 1300 S13(橙) 05:14:88

ちょっと待て(笑)。

どう見ても大阪から来た基盤です、本当にありがとうございました。

ランクインはできないけど、初めてのS6が出たので満足した。


2008-03-09

[biwascheme][event] gauche.gongでLTしました

やっぱりSchemeのイベントでデモすると反応が大きくていいなあ,という.

右上の★ボタンを押すとREPLが開いたりするよ.(このためにevalとwrite-to-stringとhtml-escapeを実装するなどした)

このプレゼンツール自体もBiwaSchemeで書かれています.(ソース)

BiwaSchemeのダウンロードはこちらからどうぞ.

[event][scheme] 第2回gauche.nightログ おまけつき

注意

  • 誤字は仕様です
  • 全く見直ししていないため,内容には0個以上の誤りが含まれています.取り扱い注意
  • 「fullでないcontinuation」ってどういうものなのか誰か教えてください

「プログラミングGauche」ができるまで

(ログ取れず)

自己紹介

  • 「リリカルLisp」zickさん
    • あと地獄Schemeとか,Prologのやつとか
    • Gaucheはちょこっと触ったことがある程度
    • Gaucheに期待すること:「どきどきわくわくできる謎の要素があれば楽しいかな,と」
  • Gauche作者,shiroさん
    • 「Gaucheの作者の河合です」(拍手)
    • 昨日まで,仙台で「マイナー言語で食べていく方法」という講演をしてきた
      • が,PPLではSchemeはマイナー言語じゃなかった(笑)
    • 一生懸命Lisp/Schemeを流行らせましょう
    • 今後Gaucheに追加したいこと:まだ1.0でないので(?)入れたいものはさくさく追加していきたい
  • 「Mona OS」higeponさん
    • Mona OSのシェルをSchemeで書こうと
    • R6RS準拠のSchemeインタプリタをGauche上で書いたり
    • Gauche/shiroさんに期待すること:若手のハッカーはshiroさんに憧れをイダイテ居るので,ずっと目標として突っ走ってほしい
    • 今後やりたいこと:自分のOSのドライバをSchemeで欠けるようにしたい
  • 「YARV(Ruby1.9)」ささださん
    • 「ここでは多分マイナーな言語だと思うんですけど」
    • Rucheme (Rubyで書かれたScheme)作者
    • shiroさんと一緒に仕事を(聞きそびれた)
    • <shiro> YARVとGauche VMは実はライバル.おたがい切磋琢磨していきましょう
    • Gaucheに期待すること:2冊目の本はぜひ「Gauche ソースコード完全解説」で!(Gauche Hacking Guide?)
    • <higepon> Gaucheのソース読みをしているが,随所にすごいところが.
    • <shiro> Gauche書く前にずいぶんいろいろな処理系のソースを読んだ.食物連鎖で魚に水銀が溜まるように(!?),濃縮されたところを利用してほしい
  • Common Lisper, 黒田さん
    • Schemeとのかかわり:だいぶ古い時代から.今はCommon Lisp
    • shiroさんとのかかわり:初めて会ったのはILC2002?海外でしか会わない日本人の一人w
    • R6RSはあまり興味は無かったんだけど,今回のことがあるので目を通してきた.あとでいくつか質問(?)したい

Arcを斬る

  • Paul Grahamが最近公開した言語
  • <えんどう> SchemeでもCLでもない,第3の選択肢
  • <shiro> まだ何か言うのは早いかなぁ
    • Paulがやりたいのは,いろんなアプリを作る際にコアとなる公理を探すこと
    • (Lispとしては,7つのプリミティブがあれば十分だが,それだけではアプリを書くには十分でない)
    • Y Combinator のサイトはだいたいArcでできてるんじゃないかな
  • Arcの挑戦 → Kahuaの反撃
    • <えんどう> 短さ(簡潔さ?)ではKahuaもいい線いってると思うんですが,どうでしょう
    • <shiro> Schemerは,将来首を絞めるような仕様追加を嫌う.Kahuaもそういう方針があって,Arcより多少長くなってると思う
    • <higepon> ああいう形(コンパイラでもなく,マクロの集まり)で言語を公開してもいいんだな,と気付いた
    • <shiro> それはLispとしては原点回帰みたいなものだね
  • 実はPaulにも声をかけてみた
    • Paulは3行異常のメールを読み飛ばすらしいw
    • 2行で書いたら,「今回は行けない.私を考慮に入れてくれてありがとう」と1行の返信が帰って来た

R6RSを斬る

  • <えんどう> サスマンもスティールもいないじゃん,と衝撃
    • <shiro> chez schemeと plt schemeの人がいる.いろいろあって,次々とエディターが減った
    • scheme界は頑固な人がおおい
    • <黒田> R6RSを見たら,人が減るのもわかる
    • algorithmic languageなのに,denotational semanticsを捨ててどうする
    • operational semanticsにしたりせず,数学的にしっかりした土台を捨てるべきではないだろう
    • 継続(call/cc)ってlongjmpを意味論的に綺麗に書くために生まれたものだよね,と理解している
    • <shiro> 「君たちがそうするのは構わないが,Schemeと名乗ってくれるな」とMLにも…
    • <黒田> R4RSあたりから歪んできてるよね
    • <shiro> 結論としては,R5RSとR6RSという別の言語がある,ということに
    • <黒田> 実用を目指すというなら,fullのcontinuation(??)を捨てるべき.unwind-protectも書けないじゃん
    • call-with-input-fileで,「正常なときはstringが返るが,異常なときは未定義」
    • <shiro> Gauche的には,full continuationはlow levelなシステム.そのまま使うのではなく,Gaucheの提供する例外システムなど上位レベルのものを使ってもらうという立場
    • <黒田> unwind-protectとfull continuationなら前者を取るべきだと僕は思う.でもR6RSは後者を取っていて,どっちつかずだなぁというのがざっと見た感想です
    • <shiro> それは正しい印象だと思う.これでも,最初の案より穏やかになっている(改善・妥協により)
  • <shiro> マクロ展開のセマンティクス(どのタイミングでマクロが展開されるかなど)がきっちりしたのが良いところ
    • ただそのせいでREPLはなくなった
    • R6RSはSchemeの「最小仕様」で,処理系ごとの拡張は自由
    • ポータブルなものを定義したかった
  • <えんどう> 作る側としては,ライブラリの仕組みはめんどいですよね
    • <higepon> 難しい
    • <shiro> 難しくはない,効率を考え無ければ.複雑だしあまり美しくはないとは思う
    • <higepon> 実際にR6RSのライブラリって出てきてる?
    • <shiro> srfiのLazy Stringだとか
    • R6RS以外では,ER5RS (R5RSの拡張)を作ってるグループがSNOWというライブラリシステムを提供している
    • これからR6RSはsrfiがいろいろ出てくるのでは
  • <黒田> ライブラリシステムでcondition systemを使ってるのに,それが本体に入ってないのは?
    • <shiro> 一人でも反対したら入れられないので
    • <黒田> コンディションの型システムさえもライブラリじゃん
    • ライブラリがライブラリに依存している
    • なんでライブラリに?
    • <shiro> そのへんがR5RSの制限
    • どちらも,Standard LibraryとしてR6RSの一部に入っている
  • <higepon> レコード型のシステムがすごく多機能で複雑,これコンディションのために作られたのか?
    • <shiro> その通りで,コンディションシステムのヒエラルキーのために入っていると思う.
  • <ささだ> 最もプリミティブなものだけを仕様とするのがSchemeだと思ってたんだけど.
    • <shiro> R6RSの批判側は,Schemeの精神を貫くならコンディションシステムも(Schemeで実装できるんだから)srfiでいいじゃんと言っている.私もその立場.
  • <ささだ> これは投票で過半数?
    • <shiro> 67%くらいが賛成したはず
    • でもメジャーな処理系の実装者は軒並み反対したw
    • 賛成はchez/PLT/48の一人だけ
    • 最初からR6RSを対象にした処理系も,Ikarusとか出てきている
  • <higepon> R5RSではバイナリ読み書きができない.R6RSではバイナリポートが定義されて嬉しいと思う
    • <shiro> ポータブルなものを書きたい,という要求は大きかったはず
    • <黒田> ポータブルは,大きいですよ
    • もう少し成熟すれば,フリーな処理系,高い処理系,安い処理系といろいろ出てくるはず.フリーな処理系で何千万の開発はできないと思う
    • Schemeで一番思うのは,ポータビリティーを全く考えてないだろということw
    • 理学部ならいいが,工学部なら学士剥奪すべき(笑)
    • <ささだ> Rのつく言語でも,互換性(ry
  • <shiro> ポータブルという面では,CLだって仕様の範囲内では書けないものがあるのが不安.
    • <黒田> 「CLも困ったもので,Scheme的な発想をする人たちがいて」
    • 仕様の範囲外でも,de factoなものが結構ある.スレッドとか,各処理系でほとんど同じ
    • 国際化文字の扱いも,extenal formatが決められている.とか.
    • <shiro> de factoの話をすると,Schemeにもsrfiがあって….泥仕合になってしまうか.
  • <黒田> Unicodeは,
    • <shiro> まずR6RSコンパチのソースは,指定がなければUnicodeとして読む.
    • 内部形式はどのようにしてもいい
    • ファイルを読むときは,codecを指定できる.ポートで変換
    • <ささだ> 「このソースはEUCです」みたいな指定はできる?
    • <shiro> coding:... みたいな.Python由来(?)
    • Schemeはreadとevalがあるので,実は「ソースのコーディング指定」という概念は間違っている(データとコードの区別がないから).データとしてどう読むかという指定だけが存在する
  • <higepon> ライブラリの(理解できず)
    • <ささだ> 前から未定義で…
    • <shiro> 明確に禁止された.
    • それまでに再定義されてなければコンパイルしちゃうので...
  • <higepon> R6RSのweb frameworkができるかも…作ってみようかな
    • <shiro> ぜひsrfiとして(笑)
  • <shiro> R6RSで間違っていると思うのは,ライブラリをいっぱい書いてみる前に仕様を決めなければならなかったこと
    • <ささだ> ライブラリとsrfiの関係は?
    • <shiro> srfiは言語仕様よりだいぶ緩い.誰でも参加でき,反対意見があっても通ることがある
    • finalになっても,popularでないものはそのまま廃れていくことがある.どれがde factoになるかは時が選択する
  • いますぐR6RSを試すには?
    • <zick> 操作的意味論をそのままPrologに記述してみた.
    • プログラムと,それを簡約したものの関係があるので,それをそのまま記述したら,なんかインタプリタになっていた
    • Appendix Aにあるんだが,それがそもそもR6RSのサブセットになってる.でもcall/ccとかも
    • R5RSの操作的(?)意味論は難しくてわからない.R6RSのは
    • <higepon> まだ3%.あと一年くらいはR6RSと名乗れない…
    • <shiro> R5RSにはテストスイートが作られてるけど,完全じゃない.名乗ったもの勝ちかも
    • mapが各リストの長さが同じか全てチェックしなければならないというのがあるけど,
    • equal?が停止しなければならない,とかも重い
  • IkarusやIronはどれくらい出来てる?
    • <shiro> PLTも最新版では結構追従してるんじゃないか.
    • <higepon> R5RSでR6RSを実現するマクロ(p-syntax??)がある
    • <shiro> LispでLispを実装するようなもの.
  • これから,R6RSをばりばり使うぜ!という人はどれくらい?
    • <higepon> ここにいなかったらどこにいるんだっていう…(笑)
    • <shiro> R6RSの書き方を全てきっちり守るのか,なんとなく守ってればいいのか
    • Gaucheは完全にR6RS compliantにするつもりはないけど,R6RS風の書き方は提供したい
    • <えんどう> それはいつごろ…
    • <shiro> 私の予定では,既にいろんなものが出来ているはず(笑)
    • <higepon> バッティングは?
    • <shiro> いろいろ.wilikiに.
  • <higepon> R7RSはいつ?
    • <sihro> R6RSで10年.
    • R6RSじゃ駄目だという人たちが,R7RSを…
    • いろんなコードが出てきて,その中でポータブルとして必要なものが分かってきて,それがR7RSになる,という流れはありかなと思う
    • <黒田> algorithmic languageとして消えてしまうのは残念…
    • <shiro> last one standingというか,R6RSはPLTの人たちが最後まで頑張った.誰か別の人が頑張れば
  • <えんどう> CL/Schemeは,Lispの休戦協定という説だが,Schemeが戦国時代に…
    • <shiro> 「フィーチャーを足す必要がないような仕様を作る」というスローガンを作った人が,「この精神が失われるのは…」というメールを書いていた
    • 誰か若い人,頑張ってください

gauche.gong

  • 1. amachang(天野)さん
    • cybozu lab, shibuya js, JavaScript大好き
    • 1000speakers
    • Schemeは初心者だけど精一杯話します
    • きっかけ→どんなものができたか→
    • 1000speakersでLispの話を聞いた→いつの間にかScheme実装会に
    • JS1.8で,33行
    • JSとのシームレスな連携
      • (jslambda "function()...") スコープを共有
      • (-> obj prop) でJSのプロパティにアクセス
      • JQueryのメソッドチェインもできるよ
    • スコープの実装
      • __proto__を使って実装 (自分になかったらこのオブジェクトを見に行く,みたいなことができる)
    • <デモするところで時間がーー!>
  • 2. 阿部さん
    • <画面が出ない^^;>
    • 一番最後に
  • 3. 横田さん
    • Cyber Earth
    • Gaucheで,Google Earthに情報を追加してみた.
      • cyberjapan.jpのデータをGoogle Earthに貼り付けて,地方部もより良い精度で見られるように
    • cyber-earth.cgi: 位置からKMLを生成
    • cyber-earth-cache.cgi: キャッシュ.オフラインでも使えるように
    • SXMLで,KMLを生成
      • printの羅列はめんどい.SXMLを使うと,XMLをSchemeのリストで表現できるので扱いやすい
    • <つづきは公開サイト(Wiliki)で!>
  • 4. naoya_tさん
    • Gaucheで作る!? PIC電子工作
    • 生駒から
    • PICkit2 Starter Kitを買ったばかりの初心者
    • 開発ツールがWindowsだけ
    • Macでやりたい
    • asm/disasm作るか
    • 時間があればSchemeも実装できるかも,というスペック
    • 表示デバイスはLED
    • S式で書かれたアセンブラコード→アセンブル→LEDがぴかぴか!
    • デモ2
      • GDC(最小公倍数)
      • ランプが2つ点いた→2進数の3を表す!
    • <春から仕事なくて暇なんで,誘ってください>
  • 5. yuumiさん
    • id:yuum3
    • Gauche on Rails
    • 昔,卒研でLisp処理系つくった程度
    • 「JavaからRubyへ」→「RubyからLispへ」
    • RubyといえばRails
      • 動的,DSL, コード生成
      • それってLispの世界!
    • デモ
      • gauche-rails demo→雛形生成
      • script/generator scaffold todo due:date task:string
      • script/server →8080で起動
      • <どう見てもscaffoldです\(^o^)/>
      • <拍手!>
    • View(テンプレート)
      • ERBのような,scheme埋め込み
    • Controller
      • editが一つのactionで!!!
      • <継続すげえーー>
    • Gacuheは実用的!
    • Gauche本査読したけど,役立つよ! (拍手)
    • マクロは強力
  • 6. 鹿野さん@オーム社
    • Gaucheで本を作る
    • RailsのAWDwR本とか!
    • 祝出版(オーム社じゃないけど)
    • ほんとのこと言うと,僕が編集したかった
    • 「Gaucheの本」の話ができないなら,「Gaucheで本」の話を
    • オーム社社内でGauche+SXMLが稼働中
      • Erlangの翻訳本
      • XMLで
      • makeする
      • XML→SXML(2MB)→20秒くらい→LaTeXに→組版画像が!
      • SXMLからLaTeXへの変換ルールをメタプログラミングしている
    • 僕らの仕事は原稿のハック
      • 原稿ハッキング環境,Gauche
      • マルチバイトな関数型言語なところがいい
      • 充実したリファレンス
      • 周りの人もすごい,c-wrapperとか(→libkakasi)
    • xml2tex.scm
    • このプレゼンも実は
  • 7. kiyokaさん
    • オールドタイプ向けWikiエンジン,OldType
    • Wikiはもっと楽しくなる!
    • オールドタイプ:Emacsやvi,ターミナルを好む
    • 問題1:更新がめんどくさい
    • 問題2:更新が不安 (ブラウザが落ちたら台無し)
    • オールドタイプにとって更新しやすいWikiとは?
    • Subversionを直接更新すればいいじゃん
    • svn+kahua+el+js
    • デモ
      • 既に公開されている
      • Emacs-w3mで閲覧
      • ページに書かれているS式を実行すると,Emacs上で編集できる
      • 保存して,コミット(!)
      • 反映される
      • 更新者名とか.
      • 「最近の更新」の変更ログを直接いじって再修正(typoなど)できるようになる予定
    • 気にいった方はいますぐアカウント申請!
  • 8. hogelogさん
    • 「すみません,生一ついいですか」
    • PHPはGaucheの夢を見るか
    • PHPの拡張を書いて,Gaucheを呼べるようにした
    • PHP→皆さん知らないと思うけど,Web用言語
    • 「プログラミングしなければいい言語」
    • create_functionがあるけど,返り値が文字列
    • どこを目指してるのかよくわからない
    • 処理系も遅いらしい…
    • よし俺がPHP7を書いてやる!
    • そうだ,libgaucheを組み込もう
    • GaucheのCインタフェースは非常によく整えられている
    • PHPもCで書かれている→libgaucheとの連携はバッチリ!
    • <?php scm_eval('(define (fib x) ...'); ?>
    • エディタ的に嫌なのでファイルも分けられるようにした
    • scm_eval_file
    • 高速化にも成功(笑)
    • Webからも使える
    • PHP拡張のコード含めて200行くらい
      • Gaucheに渡してるだけ?
    • Cからlibgauche使ってみることも考えてみませんか
  • 9. yharaさん
    • BiwaSchemeの紹介とデモをしました.
  • 10. koguroさん
    • glint
    • 動的な言語・静的な言語
    • Gaucheは動的
    • 試しながら作れる / バグがあっても気付かない
    • テスト書け?
    • バグって実行しないと見つけられないものか?
      • (let (a 1) ..) → カッコがたらない
      • (let..) 変数名まちがい
      • 引数が逆
    • 実行しなくても見つかるバグってあるよね!
    • コードを解析してバグを検出するツール
    • pass1後のIFormを解析(!!)
    • 文法チェック,未定義の変数への参照,引数のチェック(experimental)
    • Gaucheで5つ,Kahuaで5つのバグを発見(!!)
    • glint sample.scm → エラーを表示して
      • Emacsのflymakeと合わせても使える!!
      • 書いてるそばからエラーチェック
      • M-x oshiete-shirosan
      • shiroさん人形がエラーをおしえてくれるwwwwwwww
    • 重要なお知らせ
      • このデモはフィクションですw
      • ただし,glint, flymake連携,Gauche-ARToolkitは実在します!
  • 2. 阿部さん (リベンジ)
    • Gaucheで誤植共有
    • Gaucheのよいところ
      • Schemeでアルゴリズムを考える・Gaucheのライブラリを作る・Have fun!(動作する)
    • typo(fixedpoint.jp)というwebアプリを作っている
    • デザイン
      • フロントエンド:Prolog!?
      • バックエンド:Gauche
      • S式で通信
    • デモ
      • Bookshelf - 出版物のメタファー
      • ISBNから登録
      • 版や刷の情報も登録できる
  • 11. 山田さん
    • eval-sv
    • 「すこしずつevalして監視」
    • 信頼できないプログラムを安全に実行
    • Webゲーム・S式バトラー (www
      • じゃんけんで戦う
      • 行動アルゴリズムをschemeで記述できる
      • ユーザがフォームからschemeプログラムを入力→サーバで実行
    • 無限ループを書いてもサーバが死なない
      • 普通のevalだと,「1万ステップ経ったら終了」とかはできない
    • おまけ
      • NPCの行動を動的生成したい→メタプログラミング→Scheme.

おまけ(二次会)

shiroさん語録.

  • library importの(meta 2)以上は,マクロを生成するマクロの展開時に使うライブラリを読み込むのに使うらしい.
  • explicitly naming という,syntax-caseの逆バージョン(つまりhygenicにしたいところだけ"rename"とか"compare"という関数を使う,らしい)がある
  • R6RSでも,例えばポート周りなんかは良く出来ている
  • ユニットテスト中にネット巡回などしている(RSSMix)
  • 表示的意味論になったのは,「引数の評価順序が任意であること」をうまく表現できなかったから
    • 任意であると仕様で決められているのは,例えば最適化のため
  • 締め切りが近づくほど,短い単位で動作を確かめつつコードを書くようになる.(長いのを一気に書いて動かなかったとき怖いから)
  • 実用的な処理系は,実はライブラリの整備などのほうがずっと時間がかかる.
    • 例えばGaucheは,最初の3週間で集中してR5RSの範囲を実装したが,それからここまで8年かかった(もちろんずっとGaucheばかりやっていたわけではないけど).
    • Gaucheは5つめくらい?のLisp処理系
    • 初めから,(当時CLを使っていたように)実用的な処理系を作るのが目標だった.
  • 数日悩むようなバグは燃えるほう.
  • 問題をうまく選ぶと,てこの原理のように,1人のプログラマでも非常に大きな生産性を上げることができる.てこの支点を見つけるのが重要.
  • プログラマの成長は指数的なところがある
    • プログラミングができるようになればなるほど,単位時間あたりに学べることが多くなる.
  • <higepon> 自分の全盛期がいつ来るか分からないのが怖い.全盛期を最大限に活用するにはどうすれば良い?
    • <shiro> 逆にもし,明日か,1ヵ月後か,1年後に全盛期が来るとするなら,そのためにできることは?
  • 速度とメモリ消費など,ソフトウェアにはいろいろなトレードオフがある.それらを選択するために,目的を決めることは重要
本日のツッコミ(全2件) [ツッコミを入れる]

zick [>fullでないcontinuation スタックを縮めることしかできない継続のことかと思います。 setjmp/l..]

naoya_t [これは明文化されてます。>3行"異常"の件 http://paulgraham.com/info.html]


2008-03-11

[biwascheme] applyを実装した

てか「まだ無かったのかよ」といわれそうだが(笑).

なんかapplyは難しいというイメージがあったのだが,別にそんなことはなかったぜ. テストケースが動かないのは, (lambda vars (foo) (bar)) みたいな記法に対応してなかったせいだった.

というわけでソース.Callはこういう風に使います(私信).

  define_libfunc("apply", 2, null, function(ar){
    var proc = ar.shift(), rest_args = ar.pop(), args = ar;
    args = args.concat(rest_args.to_array());

    return new Call(proc, args, function(result){/*特になにもしない*/});
  })

2008-03-15

[ruby][event] Ruby勉強会#24

懇親会のみ参加^^;

無茶苦茶な生活リズムをしているとチャンスを逃すこともある.という例.面白そうだったのになぁ.

[games][kmc] Pencil Bullet

大林さんがリーダーを勤めた縦シューが公開されました. 僕も曲を提供してたりしますが…適当すぎる…2曲しかないし…作り直したい(;_;)

ともあれ,D言語+SDLだったり,Diaというドローツールから面データを生成してたり, リポジトリがMercurialだったり(KMCではsvnが多い),いろいろ野心的な設計になってて面白いです.

ゲーム的には,難易度がすごいです(笑).腕に覚えのある方はぜひ.

[softs] LDRが人類を進化させる

電車の中で,はこべさんと「LDR使い始めてから文章を速読するスキルがついたよね」的な話をした.

使うことで人類が進化するサービスとか,格好いいよなー.そういうの作ってみたい.

[tetris] ARIKAは人類をどうするつもりなのか

上の話にも関連するけど,TiのSHIRASEモードや消えロールとかも大概だよな(笑).

TGM2の時は消えロールなんてごく一部のプレイヤーしか挑戦できなかったのに, TGM3ではm9でも消えたりして,より多くのプレイヤーが,何度も挑戦できるようになって, その結果がこれだよ!!という. *1

「発売1ヶ月で攻略されちゃいました」みたいなゲームもある中, 最高ランク(?)の認定者出るまで3年かかったあたり, ARIKAの中の人は自分らが何を作ってるのか分かってるよな. *2

自分たちではクリアできないものを,「それでも人類ならこれくらいはクリアできるはずだ」 と思ってギリギリの調整をする,その姿勢が凄いと思う. *3

*1 ロールは5:10からだけど,最初から見たほうが面白いと思うよ

*2 同じ高難度ゲーでも,IIDXのDPとか,製作側はこれがどういうゲームなのか確実に理解してないと思う(笑).

*3 ちなみにPS2の大往生のオリジナルモードは難易度を上げすぎてクリア者が出ていないとか聞いたけど,未だにそうなのかな?^^;

[idea] Stack Stock Papers

「あとで読む」つもりの論文が溜まっているので,これもStack Stock Books みたいに共有して管理できたらいいのにと思った.

読む前に誰かが概要をまとめてたり,「これすげー面白い」とかコメントがあったら, 読むモチベーションも上がるってもんじゃないですか.

[idea] 声でコメントするニコニコ動画はどうか

ニコ動でさー,コメントをキーボードで打つんじゃなくて, 声で喋るとそれが録音されるという方式はどうか.

ある程度までなら,声が重なってもちゃんと聞き取れると思うし.人間の耳は優秀.

同じ「あー」でも,発声によってニュアンスは全然違うとかあるじゃん.


2008-03-21

[arc][scheme] ArcとSchemeのI/Oを比べてみる

ArcのI/O関数のまとめページがあったので,Schemeの関数名と比較してみた.

全体的に,かなりゴルフされています(笑).Schemeは長くても明確な名前を選ぶので尚更.

昔はSchemeの関数名は長すぎると思ってたんですが,最近は上手に抽象化すれば気にならないのかなぁと思ったりしてます.

Input

ArcScheme(Gauche)
readb-
readcread-char
peekcpeek-char
readlineget-line
sreadread
read- (read+read-from-string)
readstring- (read-from-string)
saferead-
readall-
loadload

Output

ArcScheme(Gauche)
dispdisplay
writewrite
writeb-
writecwrite-char
pr- (for-each+display)
prn- (for-each+display+newline)
prall- (display+string-join)
prs- (print)
prf- (print+format)
parse-formatformat
ero-
warn-

File I/O

ArcScheme(Gauche)
readfile- (port-map+read+with-input-from-file)
readfile1- (read+with-input-from-file)
writefile1- (write+with-output-to-file)
infileopen-input-file
w/infilecall-with-input-file
outfileopen-output-file
w/outfilecall-with-output-file
w/appendfilewith-output-to-file
closeclose-input-port, close-output-port
pipe-from- (with-input-from-prosess)

stdin, stdout, and stderr

ArcScheme(Gauche)
stdinstandard-input-port
stdoutstandard-output-port
stderrstandard-error-port
call-w/stdin- (call-with-input-port)
w/stdin- (with-input-from-port)
call-w/stdout- (call-with-output-port)
w/stdout- (with-output-to-port)

String Port I/O

ArcScheme(Gauche)
instringopen-string-input-port (open-input-string)
w/instring-
fromstring- (with-input-from-string)
outstringopen-output-string-port (open-output-string)
inside- (get-output-string)
w/outstring-
tostring- (with-output-to-string)

2008-03-27

[misc] いろいろアレ

週末に引っ越す。

日付予定旧ノートデスクトップネット環境
28荷出し、ノートPC返却×あり
29移動×なし
30引越し作業なし
31休み?なし

そういうわけで29〜4月上旬のあいだネット環境があったりなかったり。


2008-03-28

[misc] 今からThinkPadのHD吹っ飛ばす

3年間事実上のメインマシンだったX40とも今日でお別れですよ。

かなしー。

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

yhara [今のより重いマシンは無しです(^Д^) # 予想される返答:それAir]

Sixeight [それAirです。]

kanasan [あぁ。Air以外考えられないですね。]


2008-03-30

[misc] 新生活ブーティング中

変愚でいうところのランタンや油つぼを買うなどしたかんじ。