万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

『プログラミング言語Ruby』出版記念トークイベント

新宿のジュンク堂のイベントに行ってきました。
http://www.oreilly.co.jp/editors/archives/2009/01/ruby-1.html

まつもとゆきひろプログラミング言語Ruby」を大いに語る。

MagicPointをプレゼンソフトに使っている。
マシンはIBM

卜部(うらべ)さん
生まれは島根

最終飛行は20時なので泊まる。

オブジェクト指向スクリプト言語Ruby
3年かかった。世界初のRuby

Ruby デスクトップリファレンス
2000年1月21日
まつもと ゆきひろ唯一の単著
いろいろ詰まって1000円
ワイルドゴート。山羊

マスコット動物。
羊か、ハチドリ
→ASCII本には入っている。
ハチドリ・・・ルビースローテッドなんとかバード
羊・・・松本家のマスコットキャラが羊
なぜか山羊
Rubyプログラミング入門は4人の共著
CVSの本はヤギ?比べたら負けた。

英語を日本語にしたのはあるけど、日本語を英語にやったのはコンピュータ系はあまりない。

RUBY IN A NUTSHELLシリーズは足りない。
メソッド、例題を付け足した。
2002年1月に出版。
間違いが多い。
印税が高くて日本に持ってこられない。

フランス語版2002年
英語版のプログラムは修正。
まつもとさんじゃなくて翻訳の人が直した?

ロシア語版は企画はあったが没

ピッケル本は2000年。

2008年1月。
IN A NUTSHELLの改訂したい。
DavidさんはRubyメーリングリストに参加。
細かいことを書く。

まつもとさんは。
Rubyを書いた。元になる本(NUTSHELL)を書いた。
チェックをした。2%くらい。

Rubyカンファレンス
プリントアウト。ドラフト。
先入観が合って間違いが見つけられない。

ピッケル本。
2000年。初期。1.6。

英語で最初で最後?
何から何まで詰め込んでいる。
CRubyの実装なども書いている。

2分冊。
David Flanaganはリファレンスが得意。

初めてのとか、などとは違う。

黒い斜めの線。1.8,1.9に対応。
1.9.0が12月に出た。
未来を予見したのか、合っている。

Programingか、IN A NUTSHELLが普通。
JavaScriptは特殊、原著も)

ProgramingRubyがもう採られているから。
挿絵がオライリーの本はない。
しかし、挿絵がある。イントロダクション。

監訳はコードリーディングだけ真面目にやった。

マーフィーの法則
銀河ヒッチハイカーズガイド。
ユーモア担当。を訳した。

日本語版前書きを書いた。

Franaganの貢献は、順列メソッド。組み合わせメソッド
パッチを送って、動いていた。
ArrayConvination、ArrayConfigurationのメソッドを書いた。
2009年1月23日
フランス語版はいつか?

イントロダクションの内容。
Rubyを触ったことがない人が読む。
さっくり書いているからと言って、手が抜いているわけではなく、長めのコードが書いている。
短く書くのも難しい。
λや、ダックタイピングのダック。

・Why the Lucky Stiffさん
どこが名前?
本名が分からない。
今どこにいるかも分からない。
Whyは本名?
フリーランスプロフェッサーと名乗っている。
ソフトウェアデベロッパーとして優秀。
ゆむるのしっく。
ヘッドクロスというWiki記法
Strucured textを書いた。
テキストフォーマットを処理するのが大好き。
RubyのホームページからTry Rubyにリンクしている。
ユーザが書いたのを勝手に解釈する。
セキュリティが怖くてできない。
改造版のRubyサンドボックス
RailsHTMLの高速パージングのHTMLプリコット。
Vライヴラリ。
クロスプラットフォーム
新しい事を始めたくて書き散らす。
ブラジル製のプログラム言語 ルアー?
プログラミング言語1つ作っている。
jitがある。エンジンは独自実装。
フルアセンブラ。命令がdefineされているだけ。
フィボナッチはRubyの1.5倍速い。
最近アップロードがなくて飽きた?
2005年のセッション。前にバンドが居る。
RubyのHashはブレースで始まるんだーの歌詞。
空いた時間に1000人の前でバンドをやった。
さらに絵を描く。イントロの絵。
マンガで書いたRuby。ジャンキーベーコン猫が叫ぶ。
Ruby会議のオフィシャルTシャツイラストレーター。

Rubyプログラムの構造と実行
2章。
構文の話し。
知らないことばかり書いている。

■データ型とオブジェクト
3章。
主に文字列、
Yuguiさんのよりもさらに詳しく。
挿絵はクラブ

■式と演算子
4章
図はダイヤ?だがRuby
優先順位

■文と制御構造
外れてくる。
ファイバー、Continuation、
ファイバーの解説はrdocにしかない。

メソッド,proc,lambda,クロージャ
proc,lambdaの違い。
関数言語っぽい性質を増やした。
この章は理解しなくてもいい。Ruby on Railsを作れるようになる。

■クラスとモジュール
小さいクラスを作って徐々にでかくしていきましょう。
クラスが成長していく様。
得意クラス。

■リフレクションとメタプログラミング
黒魔術。
evalなどの話。
最後の方に、DSLの作り方。
小さい例。
リフレクション・・・反射、反省
挿絵に鏡

Rubyプラットフォーム
リファレンスを残している。
正規表現、鬼車など。
9章・・上から下まで読む物ではない。後から見直す。

Ruby環境
グローバル変数
知らないメソッドが増えたり。
残りは1.9の話しをしたらどうか?
お金を払ってやった。
・非互換性。
1.9は非互換。
大きな物
小さな物

・重大な非互換
・ブロックパラメータ
ループの抽象化。

ローカル変数だけ。バージョン8だけ。

に入るのはローカル変数のみ。

ブロックスコープ。
ブロックの中にあるのは、別の変数になる。
ブロックパラメータが有れば中が優先。

関数言語っぽい使い方をするようになった。
関数言語っぽい使い方。
大人になった。

○EnumerableじゃないString
String as Sequence of
・Lines?
・Chars?
・Bytes?


文字列を繰り返しで使いたいときは、人によって違う。
局面によって違う。

明示的に指定。
Enumeratorを使う。
エイリアスではないけど、同じことをやっている。

アクティブサポート
モジュールをincludeしている。

■M17N-Unicode
・文字ベース
エンコーディング対応
Shift-JIS、EUCなど

Rubyは0から数える。

マジックコメントを指定しないとエラーが出る。
EmacsRubyモード。
viは分かってくれない。
Rubyアドホック

Rubyが特徴的
JavaUnicodeに直す。char型UTF-2?

perl,Python,PHPも同じ。

Rubyエンコーディングをサポートしている。
EUCで処理してEUCで戻す。
→変換コストが無駄?
→ラウンドトリップが。バックスラッシュ、アッパーバー。
本当はあまり変換したくない。

UTF-16をそのままでやる方法。
UTF-16を一度UTF-8で処理する方が便利。
同じ処理をして2倍も差がある。

文学をやっている人、古典、文学
テキスト処理はコンピュータでしたい。
Unicodeに入ってないのは、無理矢理処理。
Unicodeよりもでかいレパートリの人は

Unicodeを選ぶと可能性を閉じてしまう。

Javaが始まった頃は、Unicodeはあまり始まっていなかった。
CSIのやり方は他にはない。
NetBSDはやってるが、プログラミング言語ではない

  • >によるλ

λメソッド
Perl6も->がλ。

■新しい実装
YARV
Yet Another Ruby VM

ささだくんによるVM
バイトコード
最適化

コア性能最大50倍
ベンチマーク2〜10倍

YARVによる性能向上
・コア性能のみ
・ライブラリ同じ
GC同じ
・本番アプリではそこまで差が出ない

■Ruby2.0
遠い(?)将来のため
・キーワード引数
・Selector Namespace
・Eigenclass
 アイゲンクラス(得意クラス)
 隠す
Perl的引数の削除

MathNのライブラリ
1÷2を0.5か1/2にするライブラリ。
%/
$. プリントしたときに間につく。

質疑応答
・高井さん
Gemにパッケージ関連の仕組み
→日本人がリードしているのではないので、難しい。
カオスな感じ
名前空間の方向性→名乗った物勝ち?
セキュリティ的→現時点では計画はない
ライブラリの署名
CPANPerlという名前のものを

・木村さん
プログラミングに割いている時間は?
遊んでいるので、気が向いたらやる。
デブサミRubyブース(午後)
1日1つは新ソースか、1つバグ
新ソース
EmacLisp
Twitter

ActiveStateでRubyに口出し?
1.8.6を企業がサポート。
エンジンヤードが名を出していた。
商売に直結。

・森田さん
卜部さん
1.8を今後どのようにするか?
バグのフィックス。
みんなの意見を尊重したいが、なにも考えていない。
敢えて言えば、使いやすくなってくれればいい。
1.8が終了したときにどのくらい使いやすくなるか?

まつもとさん
1.9.2
どのように乗り込んでいくか?(ロッキー?)
日々を生きます。
パフォーマンスの改善
onになっているからoffにする最適化
スピードチューニング、GC
よりアルゴリズムを工夫。

2.0
トランクのブランチを切る。

ジョイルスコスキー
全部作り直したくなる

MVM(東大)
一つのマシンに複数の埋め込みアプリケーションにRuby
Apacheの中にRubyなど。
mod_ruby
一つのインタプリタを一つのプロセスに

スレッド、マルチコア

VM間の通信の手当。
今、スレッドは合ってもマルチコアを扱えない。
ラショナルコンプレックス。

パーサをもった一つの言語がいくつかある。
レーゲル、レクサジェネレータ。
for文解析ジェネレータのあるコンパイラが面白い

RACランタイムがない。

今添付されている、JASON
パーサが高速に動かせる。


■おまけ
オライリー本にサインもらいました。ついでに「Rubyデスクトップリファレンス」にもサインもらいました。まつもとさんが驚いてました。
ついでになぜ、まつもとさんが東京嫌いかをお聞きしました。
「人が多いから。
新宿でエネルギーが吸い取られそうだった。」でした。