SumiTomohikoの日記 このページをアンテナに追加 RSSフィード

2007-08-04

Lightweight Language Spirit 2007報告

2007年8月4日に、Lightweight Language Spirit 2007が開催されました。これは、その報告です。なお、以下では敬称は省略させていただきます。

概要

イベント名Lightweight Language Spirit 2007
日付2007年8月4日
場所日本教育会館3階 一ツ橋ホール
主催Lightweight Language Spirit実行委員会

タイムテーブル

以下は当初の予定ではなく、実際のタイムテーブルです。Language Updateの終了時刻が、予定より10分遅れました。

開始時刻終了時刻プログラム
10時30分11時30分基調講演
11時30分12時50分Language Update
13時30分15時00分オレ様言語の作りかた(パネル)
15時30分17時00分VM魂(パネル)
17時30分19時00分キミならどう書く 〜プレゼンソフトを作る〜
19時20分20時20分Lightning Talk
20時20分20時30分抽選会、エンディング

書籍の販売と展示

会場外の通路には各出版社が書籍を販売しており、プログラムの合間の休憩時間に購入することができました。10%割り引きを行っていたり、特典をつけている出版社がありました。また、近日出版予定の本も含めて、様々な本が展示されていました。

基調講演「ハッカー気質について」和田英一(東京大学株式会社インターネットイニシアティブ技術研究所)

  • Lispがあれば充分
  • ハッカーとは何か
    • Steven Levy, "Hackers: Heroes of the Computer Revolution", Penguin USA
      • MITの模型クラブ
      • 1973年のMIT
        • エレベータに乗ったらボタンをいじって9階まで止まらないようにしていた
        • 帰る前にコンピュータでエレベータを呼んだ
    • Gerald Jay Sussman, Julie Sussman, Harold Abelson, 「計算機プログラムの構造と解釈」、ピアソンエデュケーション
    • コンサイスオックスフォード英英辞典
      • レンガを乾かす板など、不明
    • Hacker's Dictionary
      • hack
        • 下手でも必要なものをすばやくつくれる
        • 上手に必要なものをすばやくつくれる
        • 遊び心 (playful)
      • hacker
    • Hackに値する仕事
      • Hackは個人の表現(「計算機プログラムの構造と解釈」)
      • 四苦八苦
  • ハードウェア
    • レオナルド・ダ・ヴィンチの楕円を描くコンパス
      • 鉛筆が伸縮する
      • 円錐を斜めに切断すると楕円になる原理を応用したもの
    • 放物線を描くコンパス
    • 潮汐の解析
      • グラスゴーのKelvin
        • A = A_1sin(¥omega_1t + ¥phi_1) + A_2sin(¥omega_2t + ¥phi_2) + ...
        • Kelvinの積分機
        • Analyzer調和解析
        • 1800年代
        • 簡単なものでもできる。Hack
        • フーリエ合成
        • 潮候予測器
          • 実際に使っていた
    • 9元連立方程式を解く機械
    • 微分解析機
      • 大阪大学に昔あった
      • 現在は東京理科大学にある
      • ディファレンシャルギア
      • Niemanのトルク増幅器
        • 一種のサーボ機能
          • 犬は押して動く
          • 牛は押しても動かない
          • 牛の鼻輪を引っ張ると動く
          • 船のいかりを持ち上げる
            • 水兵が少し引っ張ると引き上げられる
  • ソフトウェアハック
    • 1959年
      • PC-1(パラメトロンコンピュータNo1)
        • flip flopを利用
        • flip flopにスピーカーを接続する
        • flip flopをsetすると、スピーカーのコーンを押す
        • flip flopをresetすると、スピーカーのコーンを引く
        • set, resetの時間を調整してドレミファソラシドを鳴らす
    • hackerの例
      • Bernie Greenberg
      • David Moon
        • MacLisp
      • Willem van der Poel
        • PDP-8 Lisp
      • Donald Knuth
      • その他大勢
質疑応答

Language Update

Perl "An Ordinary Perl 65.10 Guide" 小飼弾
  • Perl 6 Makes You Extraordinary
  • 今年の10月
  • 2002年 5.8.0
  • 2006年 5.8.8
  • 今年
    • 5.8.9
    • 5.10
      • 10月
    • 6.0
      • 仕様が今年決まる
  • 5.10の新機能
    • featureプラグマ
use feature qw/:5.10/
      • レキシカルスコープ
      • say
        • putsより1バイト短い
    • err
$c = defined($a) ? $a : $b;
      • 下のようになる
$c = $a // $b;
Io 浜地慎一郎
  • Steve Dekorte
  • シンプル
  • 手続き型言語
  • プロトタイプベース (JavaScript, Self)
  • キーワードの数; 0
  • なんでもメッセージ
  • 不必要な引数は評価されない
  • 例外
  • ガラッと変わる言語仕様
  • 膨大なアドオン
  • 多重継承
  • Concurrency
Clean lethevert
PHP Seiji Masugata (Japan PHP User Group)
R 樋口千洋(大阪府立大学生命環境科学研究科
(a <- 1)
Python 柴田淳Webcore株式会社、日本Pythonユーザ会)
企業で使用される頻度
^
|      _____  __ Python
|   __/    __/
|__/    __/  ` Perl
|    __/
| __/  _______
|/    /       ` Ruby
|____/
+-----------------------> 年
    • PerlをPythonが抜いた
    • CG業界でよく使用されている
      • Sony Pictures
      • Image Works
      • ILM
      • DREAM WORKS
    • CGのライティングをPyGtのGUIで設定する
  • オールレンジ言語
  • Google
  • 実務に使える
  • ロードマップ
    • Python 3.0
      • 2007年アルファ
      • よりクリーン
      • 後方互換性はなくなる
      • 移行
      |     |2.5       |   2.6    |    2.7   |
   2.x|---->+----------+----------+->------->|
ユーザ|-----+-         |          |          |
      |     | `--------+          |          |
      |     |          |`------   |          |
      |     |          |   3.0 `->|    3.1   |
   3.x|-----+----------+----------+->--------+->
      |     2007       2008       2009       2010
        • 2.6には3.0の機能の一部が含まれる
  • 安心して使える
  • 世界でメジャー
  • 書籍
  • コミュニティ
    • 開発合宿(2007年3月)
    • 勉強会
    • 大規模イベント
Lua 上野豊(独立行政法人産業技術総合研究所
Ruby まつもとゆきひろ株式会社ネットワーク応用通信研究所、楽天株式会社

オレ様言語の作りかた(パネル)

パネラー

舞台に向かって左から、

言語名前
(司会)高橋征義(日本Rubyの会)
Rubyまつもとゆきひろ株式会社ネットワーク応用通信研究所、楽天株式会社
Xtal石橋立宣
なでしこクジラ飛行机ウノウ株式会社
Sukuna小原広之
crowbar, Diksam前橋和弥
議論
  • 各言語について
    • なでしこ
      • 宅地建物取扱責任者
      • サクラ
        • 情報の教科書に掲載される
      • 2001年、ひまわり
      • 2004年、なでしこ
      • 雑多な仕事
        • Perl, Excelなどをつなげて使っていた
        • ひとつにまとめたい
        • GUI
        • 好きな女の子に「日本語プログラムをつくろうと思っている」と打ち明けると、賛美された
      • 組み込みコマンド
        • 1000以上
      • 文法
30に5を足す
  • FizzBuzz
  • まつもとからのコメント
    • なでしこ
      • 以前外国で、日本人なのになぜ日本語のプログラムをつくらないのかと訊かれたことがあり、なでしこのURLを教えた
        • しかし、彼には読めないと思う
    • Xtal
      • イテレータ、ファイバーが組み込み
        • Rubyにはないのでうらやましい
      • C++で書いてある
      • ブログで丁寧に対応してもらった
    • Sukuna
      • 無限サイクルがあって素敵
    • crowbar
      • 完成度が高い
      • 学習に特化している
    • Diksam
      • 言語としては面白くない
      • 実装がわかりやすい
  • 言語を作る際のポリシーと名前の由来
    • なでしこ
      • ポリシー
        • 事務を自動化
        • 手軽に使えること
      • 名前の由来
        • 花の名前
    • Xtal
      • ポリシー
        • 最新機能
      • 名前の由来
        • Rubyを真似て、宝石の名前から
        • Xにして短くした
        • eXTreme Ajail Language
    • Sukuna
      • ポリシー
        • Forth好き
      • 名前の由来
        • 出雲系神話で掌にのる神さま
    • crowbar
      • 名前の由来
        • Perlのようなもの
    • Diksam
      • ポリシー
        • なるべくCに似せる
      • 名前の由来
        • Javaがコーヒーの名前だったから、紅茶の名前
      • 動機
  • 満足しているところ、不満なところ
    • なでしこ
      • 満足しているところ
        • 日本語であること
        • 変わっている
        • 注目される
      • 不満なところ
        • 日本語であること
    • Xtal
      • 満足しているところ
        • 速く動く
      • 不満なところ
        • ない
          • 会場から拍手
    • Sukuna
      • 満足しているところ
        • 今日呼ばれたこと
      • 不満なところ
    • crowbar, Diksam
      • 満足しているところ
        • 勉強になる
      • 不満なところ
        • 時間がかかる
        • つくっていると使っている時間がない
  • まつもとの日記
  • まつもとの昔の言語
    • 1989年
      • Rubyの4年前
    • Classic
      • ClassっぽいC
main() {
    for (i: int = 1; i <= 100; i++) {
        if (i % 15 == 0) {
            print("FizzBuzz\n");
        } else {
        :
for (i: int in array (1, 2, 3)) {
}
a: array = array new(1, 2, 3);
    • メソッド呼び出しの"."をスペースにできる
      • "array new"は、"array.new"と同じ
class foo: superFoo, superBar {
    bar(i: int): string {
    }
}
    • Profile機能
      • 使いものにならない
    • ポリシー
      • Adaに対してEiffelがやったことを、Cに対してやった
    • トランスレータをつくる過程でyaccの使い方が分かった
質疑応答
  • なでしこ
    • 日本語はインデントを使用しないが?
      • 記号よりまし
    • 「そうならば」をトークンに分解するとどうなるのか?
      • 「そう」と「ならば」
      • 「そう」はPerlでいうと$_
    • 「表示ログを言う」とはなにか?
    • 形態素解析をして、意味論をとれるようにしたらどうか?
      • いつまでたっても完成しない
      • どこに落ち着くかがテーマ
    • 大阪の人で、「標準語で文章を書くのがどれほどしんどいかわかるか」という人がいる。大阪弁以外にもサポートできるか?
      • 大阪弁のサポートは3分でできた
今後の予定、言語をつくろうと思っている人へのメッセージやアドバイスなど
  • クジラ飛行机なでしこ
  • 石橋 (Xtal)
    • 馬鹿でもつくれる
  • 小原 (Sukuna)
    • 絵を描くのが好きだとレベルアップする
    • 言語も同じ
  • 前橋 (crowbar, Diksam)
    • 現在のDiksamは4代目
    • 最初は小さい方がいい
  • まつもと (Ruby)

VM魂(パネル)

パネラー

舞台に向かって左から、

実装名前
(司会)星暁雄(コモンズメディア株式会社
Jython西尾泰和(サイボウズ・ラボ株式会社
Rhino, Groovy鈴木雄介(アークランプ)
JRuby高井直人 (recompile.net)
IronPython, IronRuby荒井省三(マイクロソフト株式会社
Pnuts戸松豊和
議論
  • JavaVMと.NETのVMを対象とする
1960年から1980年事務処理、COBOL
1991年VisualBasic
1993年クライアントサーバ
1994年Netscape Navigator
1995年Java
出来事
1995Java 1.0
1997JPython
 AspectJ
2001Jython 2.1
2003Jython 2.2α
2005IronRuby. ライバル登場
2007Jython RC3
    • 結論
    • ウィンドウを開くデモ
    • 音を出すデモ
    • フィボナッチ数を楽譜にするデモ
  • Rhino
  • Groovy
    • JSR241で標準化
    • JSE7に含まれる?
    • JRubyに抜かれる
    • 基本はJava
      • 関数だけをロードすることはできない
      • 単位はクラス
    • Javaには親しみやすい?
  • JRuby
    • Javaで書かれたRuby
    • Ruby 1.8.5相当
    • メイン開発者
      • eberbo
      • neadius
      • ola
      • nicksieger
    • RubyKaigi 2007
      • 1.0リリース
    • 今日の話はtrunkに基づいている
require "java"
    • 3つのVMを備える
AST -+-> バイトコード (ASM)
     |
     +-> YARV中間コード
     |
     +-> Rubinius
Java -+
      |
      +-> Javaバイトコード -> JVM
      |
Ruby -+
    • JVMの一級市民を目指す
    • Rubyに勝てるのはRubyだけ
  • IronPython
 +------------------------------+
 |ManagedVB, MnagedJScript      |
 |IronPython, IronRuby          |
 +------------------------------+
 |DLR (Dynamic Language Runtime)|
 +------------------------------+
 |Frameworks                    |
 +------------------------------+
 |CLR                           |
 +------------------------------+
  • Pnuts
    • 9年間開発している
      • 最近は子供3人が寝てから
    • シンプル
    • 小さい
    • 速い
    • JVMとの親和性
    • 新機能
      • クラス定義
    • ライバルはLua
    • VMの恩恵
    • VMと言語のミスマッチ
      • どう埋めるのか
      • どこまで埋めるのか
    • 大抵の問題はなんでも書ける
    • LLも生き物
  • なぜVM上でLLなのか?
    • 鈴木
      • Javaと一緒に使いたかったから
    • 戸松
      • Javaのテストツールとして始めた。それからLLとなった
    • 高井
  • Pythonに引き込む狙いは?
    • 西尾
      • Javaは軽くは使えない
  • .NET上の動的言語とは?
  • Native LLのようにちゃんと動作するのか?
  • IronPythonファーストクラスの言語になるのか?
    • 荒井
      • 公式アナウンスはない
      • 個人的には、なると思う
      • 次のVisual Studioに入るのではないか
  • Groovyはどうなる?
    • 鈴木
      • 専門家には専門の言語が必要
      • ようは使いどころ
  • 大きなシステムと共存できるのか?
    • 鈴木
      • した方がよい
      • 小さな部分はLLで速く、大きな部分はJavaで
  • 大きなシステムをつくるのとハッキングは違うもの?
    • 西尾
      • 分業
      • Javaは大きな象
      • LLが先に立って、進むべき道を探る
      • LLは斥候
  • 1980年代にSmalltalkがそういわれていた
  • インド人や中国人もRubyを使うのか?
    • 高井
      • そうなればいい
      • 日本はソフト開発のメインではない
      • Rubyは空手
        • 「日本人だからRubyが得意です」
      • アメリカから日本にオフショアされる
  • Pnutsをビジネスで使う?
  • 速いというのは?
    • 戸松
      • 速さには理由がある
      • JVMの特性を利用している
  • JRubyより速い?
    • 戸松
      • もちろん
  • IronPythonはCPythonより速い?
  • IronPythonは当初、.NETでは遅いという仮定を証明したかったという話は?
    • 荒井
      • APIに専用のものを用意している
      • 実験して最適なものをとる
  • JVMは動的言語にあわせて進化するか?
    • 戸松
      • JVM特有の制約がある
        • 整数のボクシング、アンボクシング
        • 大抵のLLでは、整数は常に整数
      • 様々なところで使用されているため、JVMは簡単には仕様を変更できない
      • 命令の追加はないと信じている
  • 命令を追加すれば、速くなるものではない?
    • 戸松
      • 型を持っているので、どのメソッドを呼び出すかはコンパイル時にわかる
      • LLは動的で実行時にならないとわからない
      • 命令の追加には反対
      • 実装でカバーできる
        • リフレクションとキャッシュでメソッド呼び出しを速くできる
  • JVMが動的言語に対応しない?
    • 戸松
      • そう信じている
  • JRubyはJava 1.4.2の仕様でやっている
  • MicrosoftIronRubyをやると、SunはMicrosoftに勝とうと思うか?
    • 荒井
      • 開発者は野心的
      • Railsが動くようにしたい
      • John Lamは(CRuby, IronRubyの)実装によらず動くようにしたい
      • IronRubyの完成度はまだまだ
  • Jythonが活発であるが、リソースの取り合いはないか?
  • JavaのLLはJRuby? 開発者のマインドは?
    • 高井
      • JDK6にRhinoをいれた
      • なぜ?
    • 鈴木
      • RhinoとGroovyは真面目さが違う
      • Rhinoでの開発が行われることはない?
  • NetBeansにJRubyは入る?
    • 高井
      • Rubyというと予算がつく
  • Java 7でJRubyがつく?
    • 高井
      • わからない
      • そうだとしたら、まつもとゆきひろにいろいろ要望がいくはず
      • Rubyは仕様と実装があいまい
      • JavaにJRubyをつけるとしたら、仕様を明確にするはず
質疑応答
  • ASMはコードの質には影響しないが?
    • 高井
      • そう思う
      • 計測すると違う
      • 最適化の余地がある
  • IronRubyは仕様がない。ソースを見ないと実装できない。しかし、Microsoftではオープンソースのソースを読むと解雇されるという話があるが?
    • 荒井
      • 解雇されるという話が本当かどうかは知らない
      • まつもとゆきひろとJohn Lamとの間では、ソースを見てよいという取り決めがある
      • チームのメンバも変わる
      • John Lamがソースを読んで、言語仕様を決めている
        • Rubyの言語仕様が、Microsoft内には実在する
        • 公開できるかは不明
  • Microsoftオープンソースライセンスをつくろうとしているのか?
    • 荒井
      • Windows Installer XMLがオープンソース
        • そういう開発者はいい
      • 商用製品に著作権問題がまじるのは問題なので、そういう取り決めがあってもおかしくない
  • Rhinoのように、DLRでサーバークライアントも開発できるか?
    • 荒井
      • (答えに詰まる)
      • やりたかったらなんでもできる
      • JITコンパイルされたコードでメソッドが入れ替わるようなコードが動かせるか?
        • GCできるか?
      • 長時間動かすような場合は確認が必要
      • リクエストとレスポンスで終わるウェブアプリケーションのような短時間の場合は問題の可能性は低いが、よく確かめて欲しい

キミならどう書く 〜プレゼンソフトを作る〜

パネラー

舞台に向かって左から、

言語名前
(司会)えんどうやすゆき
Java西本圭佑(有限会社アイトレック
OCaml小笠原啓(有限会社ITプランニング
JavaScript天野仁史 (Shibuya.js)
XUL下田洋志(株式会社クリアコード)
Gauche小黒直樹(ウルシステムズ株式会社
議論
  スライド操作       サーバ       スライド表示
 +------------+ VNC +------+ VNC +------------+
 |PC          +-----+      +-----+PC          |
 +------------+     +------+     +------------+
    • スライドを操作側から入れ換え、表示側に反映させるデモ
    • Schemeのコードを実行可能
    • 質疑応答
      • なぜGaucheなのか?
      • 操作側から表示側に反映させるのにタイムラグが発生するのはなぜか?
        • 処理が重いから
        • 全画面書き換えをすると時間がかかる
        • 全部黒かったりすると速い
      • 画面への書き込みは保存されるか
        • される
        • PNGで保存される
      • なぜVNCなのか?
        • 以前、VNCを使ったグラフィックライブラリをつくった
        • VNCを使いたかったから
      • 普通の文字はどう書くのか?
        • グラフィックとして描く
      • どこから使えるのか?
    • 発表中、「LL魂チャット (at Lingr)」(http://www.lingr.com/room/ll-spirit) の発言がプレゼンテーション中に表示されていた
質疑応答
  • トランジションやエフェクトを使い易くするためのアイデアは?
    • Java
    • OCaml
      • 動きそのものを定義するのは難しい
    • JavaScript
      • 挙動をクラスにしている
    • XUL
      • XULはテキストしか考えていない
    • Gauche
      • グラフィックの入門書はたくさんあるので、グラフィックで扱う
  • これだけは負けないものは?
    • Java
      • 3Dは負けない
      • 高橋メソッドのように何もないのにインパクトがあるものもある
    • XUL
      • つくるはやさは負けない
      • 会場でつくる
  • 製作日数は?
    • Java
      • 3日
      • 3Dの部分は数ヵ月
    • OCaml
      • 2週間
    • JavaScript
    • XUL
      • 1週間から2週間
    • Gauche
      • 週末にだらだらつくって2ヶ月くらい
  • 高橋は何を使っているのか?
  • ツールは?
    • 高橋
      • 字が大きくできないのであきらめた
  • 従来のOHP形式ではないプレゼンをみたかった
    • JavaScript
      • スライドっぽくするのに労力がかかった
      • スライドとスライドの間のスクリプトを書かなくていいようにした

Lightning Talk

PRaggerでピザが頼めるようになるまで」齊藤ただし(筑波大学
  • Ever Quest II
    • /pizzaコマンド
  • その場でピザを注文した
「外付けwebフレームワークflowr」中谷秀洋(サイボウズ・ラボ株式会社
オープンソースウィジェットエンジン『Mashed Potato』」大崎瑶
  • XML based Application Architecture
  • XAA
「WebDB開発特化型言語Alinous-Core」飯塚友裕
「__init__.php? 変態的国産PHPフレームワークrhaco」露木誠 (rhaco.org)
「VM魂に入れて貰えなかったJavaFXScript(仮)」庄司嘉織
「Power of Scala」水島宏太(筑波大学大学院
「Lispのオブジェクトシステムの概要」鈴木高弘(株式会社ビズモ)
  • Lispは書いていると楽しい
  • 生産性が高い
  • 楽しい時間がすぐ終わってしまう
  • MixInもアイスクリームが由来
「Coq定理証明という選択肢」今井宜洋(有限会社ITプランニング
「D4R - Direct X for Ruby」高野光弘(日本UNIXユーザ会、日本Rubyの会)
「イメージファイト!」竹迫良範 (Shibuya Perl Mongers)
「Javaより速いLL用テンプレートエンジン」桑田誠
「C++のためのx86 JITアセンブラxbyak」光成滋生(サイボウズ・ラボ株式会社
  • デモ
  • 有効にすると100倍速くなる
「じゃ、どう書く?」西尾泰和(サイボウズ・ラボ株式会社
PRaggerでピザが頼めるようになるまで」の結末
  • バグがあって失敗した
  • 携帯電話で注文した

抽選会

エンディング

日付2008年8月30日
場所中野ZEROホール
定員1,300名

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証