!kiyoka.blog.2009_08 RSSPLAIN

Related pages: !kiyoka.blog.list
15515553233333333330333444444440444555555505555555555555555555555555555555505555555555555055555555550555555555555555555555555555555555555555555555555555055555555555555555555555555555555555555555055555555555555555555555550555555555555505555555555555055555555555555555555555555555555555555555555505
1

kiyoka日記。NendoSekkaの開発や、最近思うことなど

5

最新10件!kiyoka.blog   過去記事一覧!kiyoka.blog.list

5

kiyoka.blog_header 

1

このブログを書いている人: 西山 清香(kiyoka) - twitter: @kiyokaEXT

5

5

 

5

 

3

kiyoka.2009_08_31[言語] LLTVEXTを見てきた

2

full1

3

朝まで生テレビが一番おもしろかった。

3

パネリストの3人の話を聞いていると、現状のLLというのがコンピューティングのあるレイヤーを担っているだけのチッポケな存在だということを感じた。

3

但し、LLは人間にとって、より高い表現力を手に入れる為の進化をつづけており、より簡潔な表現でプログラムを構築するという意味では非常に重要なポジションを担っている。

3

最近では、並列化に対する要求が高まっており、LLが並列処理の記述を自然にサポートする時代が来るのだろう。

3

今はその過渡期なので、いろんな言語が並列化表現に挑戦しては新しい発見をしていくだろうと思う。

3

何かちょっと未来が垣間見れてよかった。

3

 

3

Nendoも一応並列化の実験アイデアが色々あって、つらつら考えているところ。

3

それにしても、東京大阪間を日帰りはつらいよー。

3

 

0

comment (disabled)

3

3

 

3

 

4

kiyoka.2009_08_26[本] On Lisp読了

4
 4274066371
4

やっと読み終わった。

4

一回では理解できなかったので、『継続』の章や『オブジェクト指向Lisp』の章は2回以上は読んだ。

4

しかし、call/ccは使ったことないのでなかなかイメージしずらい。反対にCPS変換は実際に使っているので理解できた。

4

やっぱり、実際にプログラミングを続けながら、繰返し読むことが大事だな。

4

Nendoを開発しつつ、次は4434133632LET OVER LAMBDAに挑戦だ。

4

 

0

comment (disabled)

4

4

 

4

 

5

kiyoka.2009_08_25[本] ラーメン屋 vs.マクドナルドを読む

5
 410610279X ラーメン屋vs.マクドナルド―エコノミストが読み解く日米の深層: 竹中 正治
5

マスコミでよく喧伝されるような、日本人はアメリカ人に比べて創造性が無いとか、リスクを取りたがらないとかいうのは、日本人の気質の問題ではなく制度の問題だということを統計データを引きながら解説してくれる良書。

5

この本の結論としては日本が復活するためには、政治の力に期待するしかないということになっているが、もしそうだとしたらなかなか出口は見えないのではないか。

5

とりあえずは選挙に行こう。

5

そして、ミクロな視点では自分の得意分野にとことん投資し続けよう。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_08_24[Life][デザイン] 扇風機のユーザインタフェースをマジックでグリグリ改善した件

5

うちにある扇風機が余りにも使いにくいので、早速マジックでUI変更。

5

この扇風機のひどい所は、本来の『運転(入/切)』よりもionの『(入/切)』のほうが目立つ様にデザインされていること。

5

さらにひどいのは、コードを接続して『いざ扇風機をON!』と一番目立つ緑色のボタンを勢いよく押しても何もおきないこと。

5

正確にはionがONになっていることを主張する緑色のランプが点灯するだけで、肝心のファンは回ることはない。アホかー!

5

3845595206_f571c9ffff_o

5

そもそもイオンというモノ自体が迷信に限りなく近い代物なのにそれをスイッチにしてしまうかなぁ。

5

とまあブツブツ言いながら、この本の前書きを読み返してみたりして。

5

 

5
 478850362X  誰のためのデザイン?  ドナルド・A. ノーマン, 野島 久雄
5
 誰のためのデザイン?EXT
5
  まわりを見回してみてください。私たちのまわりは、暮らしを過ごしやすく、
5
 より楽しいものにしてくれるたくさんの工業製品であふれています。本、台所
5
 用品、電話、そして、テレビ、ゲーム、家庭用や事務用のコンピュータ。とこ
5
 ろが、その多くが私たちの暮らしのいらいらの種となっているようです。暮ら
5
 しは、過ごしやすくなるどころか、難しくなっています。あなたの暮らしは必
5
 要以上に複雑なものとなっているようです。
5

(略)

5
  もう事態を変えるべきです。消費者は反乱を起こすべきときです。私たちの暮
5
 らしがこんなに複雑である必要はありません。この問題はあなたのせいではあ
5
 りません。このひどい製品を作ったデザイナーとメーカーのせいです。とはい
5
 え、あなたのせいでもあります。こんなにいらいらさせるような製品をなぜ買
5
 いつづけたのでしょう。
5

『こんなにいらいらさせるような製品をなぜ買いつづけたのでしょう。』の部分にちゅうもーく。

5

って、こんなものを買ってしまう消費者、つまり自分も悪いのだ。

5

すいませんすいません。本当にすいません。

5

 

5

COMMENTsion

kiyoka くんといえば、ペンでグルグル。

僕のなかの勝手なイメージです(笑)

5

COMMENTkiyoka

そうですか。

一緒に仕事をさせてもらっていた時は確かにいろんなものにペンでグルグル書いていたかもしれません。

白い紙に図をたくさん描いていたような記憶もありますね。

あっ、今でも図をたくさん描くスタイルはかわっていませんよ。

これはsionさん直伝のスタイルのような気もします。

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_08_22[Life] orz的写真が撮れた

5

 

5

orzのポーズ。これは面白いわ。

5
 3844653122_4b8def232e_m
5

 

5

使いかたは、『また失敗してしまった... 3844653122_4b8def232e_m』という感じ?

5

 

5

COMMENTyabuki

かわいいっすねえ。育児は大変だとおもうけどこういう姿はいいなあ

5

COMMENTsion

おぉ、もうたかばいするんだ!?

ぷにぷにでかわいいね~

5

COMMENTkiyoka

みなさん、コメントありがとうございます。

育児は大変だけど、時々は楽しいことがあって、なんとかがんばれてます。

まだまだ1歳になったところでまだ歩けませんが、毎日少しずつ進歩してます。

また面白い写真が撮れたらアップしまーす。

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_08_21[Nendo] util.matchEXTってNendoで動くのかな

5

私がRubyで書いているLisp方言、 Nendoについて。

5

 

5

Gaucheにバンドルされている util.matchEXT (Andrew Wrightのパターンマッチライブラリ) のソースをざっと見てみた。

5

そんなにSchemeの特殊な機能を使っていないので、いつかNendoでも動かせるんじゃないかと思った。ちょっと甘いかな。

5

このライブラリは本当に強力でRubyにはなかなか真似できない部分なのでNendoで動かしたい。

5

 

0

comment (disabled)

5

 

5

 

5

 

5

 

5

5

 

5

 

5

kiyoka.2009_08_19[Lisp][言語] Clojureのビデオを見る(3)

5

Classベースのオブジェクト指向とGeneric関数指向の違いについてRich Hickey氏の言及がある。

5
 InfoQ: Rich Hickey on Clojure's Features and ImplementationEXT
5
 
5
 Q. Moving on to another feature that brings polymorphism to Clojure,
5
 multimethods to an object oriented programmer, how would you explain
5
 multimethods?
5
 
5
 A. When you think about polymorphism, generally you are
5
 thinking about some Runtime dispatch. Something different happens at
5
 Runtime, depending on some characteristic of the object. It ends up
5
 that in object oriented programming languages like Java and C#, there
5
 is only one thing that can be a criteria for something different
5
 happening and that's the class or type of the object. A general way of
5
 thinking about that is saying you have a method call and it involves
5
 an object and some arguments and the actual dispatch is going to
5
 differ, depending on the type of this.
5
 
5
 You can generalize that and that was done in common Lisp to say it
5
 might be interesting to have things be polymorphic based upon more
5
 than just the first arguments. So, we are no longer considering the
5
 first arguments to be special and we'll allow you to take some call
5
 and look at all the arguments and do something based upon all the
5
 arguments. There too, though, there are some things that are
5
 hardwired, for instance, in common Lisp you can only dispatch on
5
 either the type of arguments or their values. You can say "If it's
5
 equal to this or if it's of this type do this", but you can do it for
5
 any or all the arguments. Again, we are talking about dispatch based
5
 upon some function of the arguments.
5

 

5

そうかそうか。メソッドディスパッチのレベルが違うのか。

5

JavaやC#のようなClassベースのオブジェクト指向の場合、メソッド呼び出しが実際にどの実体にディスパッチされるはClassかオブジェクトの型で決まる。

5

例)

5
Class::method1(a,b,c)
5
anObject.method1(a,b,c)
5

2番目の例について構文をLispっぽく記述したとしたら、こうなる。

5
(method1 anObject a b c)
5

ここで、method1が複数定義されている場合、Javaでは第一引数のanObjの型だけでどのメソッドが選択されるかが決まる。

5

 

5

一方、Common LispのようなGeneric関数指向では第一引数だけでなく全ての引数の型のマッチングで総合的に決まる。

5

メリットはJavaやC#のような強い依存度が無くなるということ。

5

うーんそういう視点は無かった。うんうん。

5

直接の関係は無いけど、戻り値に多値が使えるか使えないかで言語の適用範囲が広がるのと似たような感覚がある。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_08_18[Nendo] 次はアプリを試作してみよう(3)

5

私がRubyで書いているLisp方言、 Nendoの開発状況続き。

5

 

5

let* と case と condの (text => expr) 形式をサポートした。

5

あとは、assoc系のユーティリティを作ったら、本格的にstowspecのプログラミングに戻ろうと思う。

5

 

5

さて、stowspecの抜粋を紹介しよう。

5

例えば、xxxx.tar.gz から .tar.gzを外した部分(basename)を求めるプログラムは次の様に書けるようになった。

5
;; `regex' is a string ( not a regex object )
5
;; returns ( $0-string  $1-string  $2-string  $3-string ... )
5
(define (regex-match regex str)
5
  (let1 matchdata ((. str match) regex)
5
    (if matchdata
5
        (matchdata.to_a.to_list)
5
        nil)))
5
5
(define (tgz-to-basename tgz)
5
  (define archive-file-pattern "([a-zA-Z].*)")
5
  (cond
5
   ((regex-match (+ "^" archive-file-pattern "(.tar.gz|.tgz|.tar.bz2)$") tgz)
5
    =>
5
    (lambda (m)
5
      (second m)))
5
   (else
5
    nil)))
5
5
;; test
5
(list
5
 (tgz-to-basename "abc-1.2.3.tar.gz")
5
 (tgz-to-basename "abc-1.2.3.tar.bz2")
5
 (tgz-to-basename "abc-1.2.3.tgz")
5
 (tgz-to-basename "file.txt"))
5

 

5

結果は、以下の通り。

5
(abc-1.2.3 abc-1.2.3 abc-1.2.3 nil)
5

 

5

regex-matchが返すmatchdataの取りまわしがcond で自然に書ける様になった。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_08_16[言語] 1歳児R君が書いたコード

5

左手だけを使って、まるでキーボードを叩くかのごとくプログラミングした。

5

たった、1分足らずで書きあげた。意味は不明(笑)

5
[[[[
5
    []
5
5
    :@
5
  @@@
5
    @
5
   @:
5
  @[@:
5
5
    @
5
   @*}
5
?*_}]_/:?_*} _?  \@^
5
_:][
5
    }
5
}+2k
5
..0p-=@ 62.,,.,,0
5

 

5

それぞれの記号にどんな意味が有るのか...インデントに意味は有るのかなど今度本人に聞いてみよう。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_08_15[コンピュータ] PowerBook G4はもうそろそろパワー不足?

5

CPUは1GHzのPowerPC、メモリは1GByte、ハードディスクは40GByte。

5

厳しいのは、CPUとハードディスク。

5

プログラミングにはこのCPUはちょっと厳しい。Emacsの反応が重い。

5

ハードディスクの方は、何かをインストールするたびにiTunesに入っている音楽を少しずつ消しながら運用している。

5

このマシンのiPhotoには写真やムービーは何も入っていない。そんなスペースはない。(それは、嫁のパワフルなMacBookに入っている)

5

新しいマシンを買う時期かなー。

5

それとも、まだ我慢してバッテリーを書い増しするか...

5

ハードディスクまで換装するくらいなら、新しいマシンにした方がよさそう。迷うところ。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_08_05[Nendo] 次はアプリを試作してみよう(2)

5

私がRubyで書いているLisp方言、 Nendoの開発状況続き。

5

 

5

先日書いた通り、StowEXTのラッパーをNendoで書いている。

5

実際にアプリを書いてみると、日常的に自分が使う構文やユーティリティが足りないことがわかる。

5

まず、assoc系の関数が全く無いのでいきなりつまづいた。

5

それからGaucheでのプログラミング時に自分がよく使う、let* と case、それに cond の clause節の => が欲しい。

5

一方、Rubyのライブラリを簡単に呼び出せるので、カレントディレクトリを求めたり、指定パスのファイルリストを求めたりするような実用的な操作には困らず意外と実用的なツールが作れることが分かった。

5

言語処理系で退屈でしんどい部分であるライブラリ開発を回避したかったので、この点は早めにRuby連携を実装したのは成功かも。

5

 

0

comment (disabled)

5

5

 

5

 

5

kiyoka.2009_08_01[Nendo] 次はアプリを試作してみよう

5

私がRubyで書いているLisp方言、 Nendoの開発状況続き。

5

 

5

さて、Nendoをどういう方向に持って行こうか考えているのだが、考える前にNendoで簡単なアプリを作ってみようと思い立った。

5

そうすれば、自分が言語に期待するものがわかるんじゃないか。

5

最初に作ろうと思っているのは、パッケージマネージャソフト StowEXTのラッパー。

5

昔、CmmiEXTというパッケージマネージャのラッパーを作ったけど、ちょっと自分のパッケージ管理のユースケースに合わなくなってきた。

5

今は無理矢理CmmiとStowの組合せでやっているけど、ちょっとめんどくさい。

5

もっとStow専用にして、スムースに使えるものがいい。

5

 

5

こんな風に使いたい。ツールの名前はstowspecがいいかな。

5
 ソースアーカイブを引数に渡すと自動的に ~/stowspecに登録してくれる
5
$ stowspec http://www.example.com/hogehoge-1.2.3.tar.gz
5
$ cd ~/stowspec
5
$ ls 
5
hogehoge-1.2.3
5

 

5
 specファイルがS式になっていて、さっきのコマンドで自動生成されている
5
$ cd ~/stowspec/hogehoge-1.2.3
5
$ cat specfile
5
5
(stow
5
  (configure "configure --prefix=/usr/local/stow/hogehoge-1.2.3")
5
  .
5
  (略)
5
  .
5

 

5
 specファイルがカレントディレクトリにあれば /usr/local/stow/ へのインストールまでは全く考えなくても良い。
5
$ cd ~/stowspec/hogehoge-1.2.3
5
$ stowspec
5
 以下、 configure, make, make install の全プロセスが走る。
5
  .
5
  .
5

 

5

こうすれば、ソースコードからビルドした手順が残せたり、同一ソフトの複数バージョンを混乱無く管理できそう。

5

他にも実現したいことは、

5
~/stowspec 以下をgitで管理したい。そのためには、~/stowspec 以下にはspecファイル以外は置きたくない。
5
--prefix指定がちゃんと動かないtarボールを発見してエラー通知したい。
5
インストールターゲットごとに、ビルド条件を変えたい。(そこはS式なのでifとかcondとか使って自由自在)
5

かな。

5

今のNendoの機能では不足がありすぎるだろうから、随時構文を追加したり、デザインを見なおしたりしながら進めようと思う。

5

 

0

comment (disabled)

5