2008 年 8 月 30 日 | カテゴリー: プログラム, 日記

2008083001.jpg

Lightweight Language Future

LL 未来、おつかれさまです。
約800人くらいでしたっけ。「遅延評価だから…」とか「でも副作用が…」とかの言葉が当たり前に飛び交うあの空間が、日常にも欲しいです。
出演者の MacBook 率が異常。
今回は VAIO Type T のバッテリー持久力を生かしてメモを取ってきました。

基調講演

Perl 作者 Larry Wall さん来日。Perl 6 について話してくださいました。
高橋メソッドのようにキーワードが画面にあったので英語でも分かりやすかったですよ。
日本語を混ぜてみたり、ちょっぴりギャグも忘れない方でした。
「regexes ≠ strings → language」

LL で未来を発明する

住井さんの計算にまつわる歴史や発言が大変楽しかったですよ。抽象化やモデル化のお話は大好物です。

LL でアート

Proce55ing は発表の場では魅せますよね。スクリプトから動的にオブジェクトを変化させて驚かせるかんじは Smalltalk を見せるときと同様です。

キミならどう書く? – LL Golf

Hole1
「tinyurl には REST API があってだね(ry」
「西尾のせいで Python が変態的な言語といわれたが」
「変態的なのは言語ではなくプログラマである」
「そんな変態が集まるゴルフ場へようこそ」

Hole2
「短くないけどすごいで賞。s と k しかない」
「どうみてもラムダ1文字で賞」
「異なる言語の価値を認め合う。大事なことなので2回言いました」
「Python の title() を使うと2文字目が小文字になる。なんのための title…」
「6bit 目を落とせば小文字を大文字に変換できる」

Hole3
Yugui さんのサクサク突っ込むスキルに脱帽。

「実直で賞。縮める気が全然ないですね」
「goruby。わけわからないですね。プロの犯行」

Hole7
Yugui さん「C++ は関数型言語なので副作用はほとんどなし。Haskell の方言のようなものなので。」

Hole8
Python は少し触っておけばと後悔。浜地さんのコードの削りっぷりがすさまじかったのは伝わってきました。

質問「今まで役に立たなかったのってなんですか?」
浜地さん「Python の title とかじゃないですか」
質問「将来プロゴルファーになるにはどうしたらいいですか?」
浜地さん「寝ても覚めてもゴルフやってれば、そのうち誰かが呼びだすんじゃないですか」
「ループが時まで状態を持っていてカウンタとかが見れたらいいのにね」

古い言語、新しい言語

「Tamarin との出会い。 # 女子高生!?」
「Adobe の定評ある素晴らしい C++ コードが読める」「あんまり素晴らしくなかった」

LISP についてアレとの比較。
「忌み嫌われることが多い」
「一方で愛好家が多い」
「特に主婦には人気がない」
「体構造が原始的であるため実験の対象として利用されることがある」
「どちらも再帰的に増え続ける」

LLVM のお話。
「ようこそ Low Level の世界に!」
「Tamarin に Trace Monkey の Gecko とか欲しい。けど GC とつながってて移植大変。コード量も多いし」
「Trace Monkey に Tamarin の JIT 入れればいいんじゃね?」

ライトニング・トーク

私は如何にしてNarioを作り、一面をクリアしたか
会場みんなドキドキの1面クリアでした。
「あの B ダッシュの爽快感を再現」
「これは限りなくブラックに近いグレー」
「SUPER NARIO GC (ガーベッジコレクション)」

「Pit」で救う世界
「ユーザー名とパスワードを書き換えてからと書くのに10秒。実際にソースを書き換えるのに10秒。1年6件あって120秒。803人来場してるから96360秒無駄になってる。さらに(ry」
「失われそうな500年のために Pit を使いましょう」

Babel21(仮) LLにLLを埋め込んでみた
「Ruby に Scheme のコードに Ruby を埋め込んで」
「Perl5 に Perl6 とか」

Ruby on Rails で実現する自走式 Web サーバー
「ワイドタッチ操作画面のリモコン」
「革命的 WEB サーバ」
「画期的ラジコン」

WEB サーバが自走しました。インターネットにあらゆるデバイスがつながったら幸せになれる未来。

会場中爆笑してましたが、わたしそのネタで論文出してます orz

ちょっと草植えときますね型言語Grass
一番期待してたトークwwWWwvw
はいはいわろすわろす。

帰り

Mせんせとうめさんと合流してご飯。
「話してると疲れるでしょ?宇宙語話し出してw」とか失礼な紹介をするうめさんなわけですが、うめさんクラスの柔軟なレシーバを持つ人がいてこそのマイスキルなのですよ。

2008 年 8 月 29 日 | カテゴリー: 日記

2008083101.png


Protocol Buffers – Google Code

XML や JSON のようなテキストではなく、バイナリで通信を行う際のシリアライズツールらしいです。
.proto ファイルをコンパイルすることでパーサを生成。そのパーサを使うことでデータのやりとりを行えることから、わざわざドキュメントに仕様を書く必要もなく、.proto ファイルだけ渡してパーサを生成してもらえばいいので、幸せになれそうです。
使える型が決まっていますが、テキストで行っていたときより、よほど簡単に使えるのではないでしょうか。

もともとは Google 社内で使われていたのがオープンソース化したそうですよ。
次にネットワークアプリケーションを作る際には試してみようと思います。

2008 年 8 月 29 日 | カテゴリー: プログラム, 日記

2008082901.png

先週行いました技術勉強会第1回。
言い出しっぺということでまずは私。お題は Smalltalk。

Squeak (Seaside) を使い「オブジェクトにメッセージで話しかけると応えてくれるよっ!」という素敵世界を伝えてみました。

Squeak: Squeak
SeasideJOnePlus

4756101070.01.MZZZZZZZ.jpg

書籍「アラン・ケイ」では、オブジェクト指向や Smalltalk よりも、その前にダイナブック構想について、その背景からも書かれています。
昔から人間は、メッセージのかたちでメディアに収められた情報を、さまざまな方法で蓄積し、とりだし、操作してきました。そして、思考や感覚を伝え、思考のたどる経路を拡大していきました。
しかし、紙の上の記号や壁の絵やテレビ等は、見る側の思い通りに変化することもなく、人間とメディアの関係は非対話的で受動的なものです。

そこで、算術計算を目的としているコンピュータですが、記述可能なモデルをシミュレートする能力を使い、メッセージの見方と収め方を定義することで、能動的なメタメディアを実現する、創造的思考のためのダイナミックなメディアとして、ダイナブックというものが考えられました。
Smalltalk は暫定版ダイナブックに搭載された環境兼プログラム言語であり、メッセージによってオブジェクトを操作することができます。現在でも VM 等で動いています。

Smalltalk-80: The Language and its Implementation (通称 BlueBook) には、オブジェクトやメッセージがとても分かりやすく定義されています。
Stephane Ducasse :: Free Online Books

オブジェクトは、プライベートな記憶域を持ち、操作の集合から成っています。

An object consists of some private memory and a set of operations. The nature of an object’s operations depends on the type of component it represents. Objects representing numbers compute arithmetic functions. Objects representing data structures store and retrieve information. Objects representing positions and areas answer inquiries about their relation to other positions and areas.

メッセージによって、オブジェクトに頼み事をして動いてもらいます。

A message is a request for an object to carry out one of its operations. A message specifies which operation is desired, but not how that operation should be carried out. The receiver, the object to whichthe message was sent, determines how to carry out the requested operation. For example, addition is performed by sending a message to an object representing a number. The message specifies that the desired operation is addition and also specifies what number should be added to the receiver. The message does not specify how the addition will be performed. The receiver determines how to accomplish the addition. Computing is viewed as an intrinsic capability of objects that can be uniformly invoked by sending messages.

Smalltalk について、私自身もまだまだ勉強中の身とはいえ感じていることは、その世界観とモノの見方(抽象化・モデル化)が大変興味深いと感じています。バイブルとも呼べる BlueBook も今なら誰でも読めるようになりました。

オブジェクト指向の話に絞っても、メッセージによる動的な振る舞いの美しさを語っているのか、それともユーザ定義型のお話をしているのか、そもそもそういった違いを理解していない人なのかを判断する材料になると思っています。
また、メディアとメッセージという関係でモデル化する感覚を養う助けにもなると思います。

そんなお話で始まった勉強会。1時間半でだいたい満足のいくお話でまとまったんじゃないかと感じています。
曖昧な知識を確立させていくことはもちろん、人に伝える能力の向上にもつなげていければという感想でした。

2008 年 8 月 29 日 | カテゴリー: 日記

先日、技術勉強会を発足しました。
開発者が、毎週持ち回りでひとつの技術トピックについて発表を行うものです。

動機は自分がやりたかったからという単純なものですが、周りを巻き込み、かつ継続させるためには、過去の様々な問題要素を踏まえたうえで事前準備がとても重要になると考え、慎重に考えてきました。

曜日と時間を固定にする

1. 「○曜日の何時からは勉強会だから予定いれないでね」とスケジュールに入れることができるようになる。
2. 勉強会のために時間を空けたくなるような場とすることで、モチベーションの高い面子が自然と集まるようになる。
3. 毎週行うことで、「忙しいから」という理由で自然消滅する恐れを防ぐ。

発表内容は2週間前に告知する

1. 発表者が資料を用意しようと頭を切り換えるのにちょうどいい期間。
2. 聴講者は発表内容を見てから、参加を決めてスケジュールを調整することができる。

持ち回りでひとつの技術トピックについて発表する

1. 1時間から1時間半の中で、1つのトピックについて思う存分話すことができる。
2. 好きな内容を発表することで、「勉強会のために勉強する」という本末転倒な負担を防ぐ。
3. 自分が1回発表するだけで、他の技術を何倍も吸収することができる。

モチベーションの高いコアメンバを揃える

1. ROM 専な空気を作らないためにも、普段から発表したくて仕方ない人たちを集めることで、モチベーションの高い雰囲気を固めることができる。
2. もしも新規参加者がなんか難しそうと思ってしまったとしても、その一歩を超える勇気がモチベーションにつながると思う。
3. お互いをより知るキッカケとなり、交流も深まる。

勉強会というコミュニティに閉じず、このモチベーションの高さが周りにもよい影響を与え、またよい空気が流れ始めるようなことも期待しています。

# はてな技術発表会とかの影響をものすごく受けてますね(ぇー

2008 年 8 月 27 日 | カテゴリー: 日記

2008082701.jpg

執筆陣メンバで集まる日。

プログラムも小説も演劇も、表現のメディアが違うだけで捉え方としては似たものだと思っています。
# そういった点から、文字と数字の表現を絵に変換したらこうなるということを伝えてみたいと感じているというのは、また別のお話。

正確には、「メディア」というよりは「メッセージ」と言ったほうが正しいですか。
ダイナブック構想を説明する書籍「アランケイ」を参考にするならば、文字や数字という形のメッセージを載せるメディアとして紙があり、そのメッセージの伝わり方は読者の読み取り方に依存する非対話的なものであるというかんじ。
# ダイナミックメディア(メタメディア)は能動的であり対話的。

話を戻すと、抽象度の高いモノの見方ができるようになることでモデル化ができるようになり、その表現の実装を好きな形で展開することのできるスキル。そんなものを伝えられればと思うと同時に、自分もその実装力を身につけることでそれを証明したいということを、常々思っています。

で、実際に考えてみると、メッセージの受け取られ方が読者の読み取り方に依存し、かつ内部状態(知識等)も異なる前提で、メッセージを作成するのって大変だなあと。
人間っていうメディアが、単純に知識を加算演算で入れていけるならいいんですけどね。

さて、話が発散してきたぞと(ぇー

Page 1 of 212
TOP