電源を確保できたので、*1今日もログ取っておきます。ちなみに、チケットを持ってくるのを忘れましたorz。当日券買ったので二重払いとなりましたが、Larryさんの旅費と言うことで(笑)*2。
基調講演 / Larry Wall さん
YAPCの時と同じように、Perl6の文法の話でした*3。
レクサとパーサの自由度とか、Perl6で拡張された正規表現とか、Perl5の文法をきちんと認識してエラーとなるとか。
どうやら、Perl5からPerl6のトランスレータがあるようです。
LL で未来を発明する
英語が聞き取れなくて、Larryさんの発言が大分抜けてます。すみません。
100年後言語がどうなっているか
- 100年後は言語はないんじゃないか(まつもとさん)
- 予想は出来ないが、過去の数学の理論が今も生きているように、面白いものは100年後も生き残る(住井さん)
- 全自動正当証明器とかDSLとか量子言語とか(住井さん)
- 面倒なことが簡単になる→メモリ管理、並列、CPUがLLに対応して、C言語とかはなくなる。言語のデザインが実装から解放される。一人1言語(藤田さん)
- LISP1言語に統一される(笑)。自然言語を理解する。が、自然言語だけで全ては解決できない=自動車や自転車の運転のようなもの(ひげぽんさん)
- 拡張できたり、並列処理ができたり。(Larryさん)
- いいものとは? → CやC++も悪くない。色んな言語の好きなところを組み合わせる。同じような言語に近づいて行く(住井さん)
- 数学的記法でいいものは? → +とか-とか。(まつもとさん)
- とか-は最近説明されたもの(住井さん)
そのために今まで何をして来たか
そのためにこれから何をしていくか
関数型言語のよさは?
言語の実装に関して
- 車と同じく、乗るだけの人といじる人(今泉さん)
- プログラミングは生き残る? → 自然言語だけにはならない。自分は辞めるつもりはない(まつもとさん)
- プログラミングは今、計算機を使う人全てが使うもの。100年後は、プログラミングしたい人だけのもの(今泉さん)
- 自動車と違ってハッカー気質が強い。仕事でやってるわけじゃない。(住井さん)
- どういう人にPerl6を使って欲しい? → 様々な人に使って欲しい。width + depth(Larryさん)
- 一つの言語で幅と深さを実現できる? → Bigであれば。(Larryさん)
- ユーザとしては、エラーメッセージをなんとかして欲しい。初心者が一番多く見る言語特性のはず。(藤田さん)
- Rubyのエラーメッセージは? → あんまり考えてない。将来的には重要(まつもとさん)
- 簡単なメッセージと、なぜ、詳細を表示する(Larryさん)
- 言語は、ユーザの時間を奪ってはいけない。速度とか、エラー表示とか(ひげぽんさん)
- 言語のわかりやすさの論文は皆無。「わかりやすさ」を定量評価が難しい。実装の人はどうしてるのか?(住井さん)
- 言語デザイナよりユーザは多い。言語デザイナの時間を奪うべき。ユーザから報告があれば対応(まつもとさん)
- 言語デザイナは大統領のように振る舞わなければならない(Larryさん)
- ユーザの時間を奪ってるのはデザインではなく実装ではないか。実装をする人が増えて欲しい(藤田さん)
- 全自動正当証明器で実装すれば? → 実用に100年かかる(住井さん)
- Rubyと実装と役割がわかれてる? → バグ取り競争してる感じ?目標は1日1ハック(まつもとさん)
- 処理系がないと、デザインもできない(まつもとさん)
サイコー!?フレームワーク
紹介
開発、運用
未来
- RoRにハマったら、LISPまで後一歩(吉田さん)
- 今後5年、10年は使う。自由度が高過ぎて、人数*5に耐えられなくなって来た。自由度はLLの魅力なので、どうするか課題。(能登さん)
- MobaSiF使ってる人手を挙げて → 0人(佐々木さん)
- WEB以外のフレームワークを使ってるかもしれない(元気さん)
- 1年後も5年後も10年後も変わらない。サポートし続ける。商用サポートも7年。(ひがさん)
- 今はRoRの影響が強い。CoCが強まり過ぎると、ブラックボックスになり過ぎる。若干の設定をするように*6、調整が必要。(ひがさん)
- 他のフレームワークに浮気?? → 今、新しいフレームワークも作っている(ひがさん)
会場
世の中の動き
質問
- Q. gemsとパッケージマネージャの折り合いは?
- Rubyはrpm、gemsは別で。最新パッケージを使いたいから(元気さん)
- Q. gemsを使った時期によってバージョン差異が起きない?
- バージョンはうまく管理されている(元気さん)
- Q. 古い情報をDISらなくていいの?
- Rails勉強会等がある。月一で顔を出す。(元気さん)
- Q. 本しか読めない人はどうするの? RoR勉強会に出る人だけが暗黒面に触れる?
- Railsは初心者向けではない(元気さん)
- Q. MobaSiFを広めるためにパッケージング協力してくれない?
- 前向きに検討したい(能登さん)
- Q. フレームワークはフルスタックがいいか、カスタマイズ出来るのがいいか?
- フルスタックで提供されるが、交換可能がいい(ひがさん)
- フルスタックがいい(元気さん)
- 選べた方がいい(能登さん)
- ひがさんと同じ(吉田さん)
- Q. 選択肢がある場合は、初心者が選ぶのは難しいのでは
- MobaSiFは選択肢がほとんどないから大丈夫(能登さん)
- 初心者にはフルスタックがわかりやすい。ある程度知識が出来たところで、交換すればいい(ひがさん)
LLでアート
- LLは、海外ではDynamicLanguageと呼ばれている
Processing / 増田さん
- ソフトウェアスケッチブック
- Javaベース
- 画像、映像、音、デバイス
- OSS、クロスプラットフォーム
- ハオハオ(?)のデモ → 量子が反発・引き合う奇跡を絵として表現 → 3D化
- RubyCocoa + Core Animation + Quartz Composerでミラーアプリを開発
- LLとインタラクティブなコンテンツは相性がいい
- LLなProcessing → Ruby-Processing, SketchBook, NodeBox(Python), fluxus(Scheme)
- action-coding → スケッチやライブコーディング
- デモ → コードを変えると、視覚的なレスポンスがすぐ得られる
- fannel
- デモ → 加速度センサーからの入力を得る。filterなどで動きを調整。
Max / 真鍋さん
- MaxMSP 音響、映像表現用のヴィジュアルプログラミング環境(GUIでロジックを繋ぐ)*7
- JavaやJavaScriptから利用可能。今はPythonやLua対応。
- デモ → JavaScriptでライブコーディング、音と映像の同期
- デモ → 音に応じて光る → UIも部品の一部らしい
- デモ → 床を踏むと、床が光る(加速度センサー)
- デモ → 両手の筋肉センサーの反応に応じて音を出す
- work in progress(本番中にも開発)
- 開発時は、筋肉センサーからの出力と映像を保存しておいて、それを利用
- 良い点 | ビジュアルプログラミング環境、リアルタイム性、JavaScript、UI作成が楽
- 駄目な点 | カオスになる、デバグ、処理速度、有償、WEBで動かない
- 今後 → Arduino, iphone, python
キミならどう書く?
Hole 1 - tinyurl.comを使ったURLの短縮
Hole 2 -文字列に含まれる単語の最初の文字を大文字にする / 西尾さん
Hole3 - 13日の金曜日を数え上げる / 園田さん
論評 / 浜地さん
Hole 8 - 横向きのピラミッドを作る / 松野さん
- 55B forを一回に
- 51B 引数のキャッシュ($ARGV[0]ではなくpop)
- 47B STDINから
- 43B absの利用
- 37B デフォルト引数($_の省略)
- 39B 111 を二乗すると、12321(ピラミッドの高さになる)であることを利用。
- ただし論理的には0から9まで
- 実際は、9でオーバフロー(12345678987654321)するので0から8まで
- config.h辺り見るとOK
- 37B splitより、/\d/g する
論評 / 浜地さん
Q&A
- Q. Pythonで3項演算子になるって本当?? → 全部評価されるので(浜地さん)
- 副作用があるからよくない(園田さん)
- &&とリストを使えば、実行されなく出来る(西尾さん) → すごくダサイ(浜地さん)
- Pythonでistitleは不要でしょう(浜地さん)
- Q. 一番GOLFをしにくかったのは?
- white space。見た目だけで面白くない。(浜地さん)
- PHPは、関数名が「朝思いつきました」的で長い。(浜地さん)
- Q. 将来プロゴルファーになるには?
- 寝ても覚めてもGOLFをしてれば、誰かが勝手にプロゴルファーと呼び出すでしょう(浜地さん)
- Q. GOLF的に、言語に求める機能は??
- Groovyのit的なもの。ループカウンタとかが欲しい(浜地さん)
古い言語、新しい言語
- パネラー
- 若槻さん LowLevel Future、GCC系、llvm-gcc
- 森田さん Tamarin(ASのVM。adobeのC++*9 )擁護
- 小林さん Shibuya.js, (Java|Ruby|Flash|LOGO|Scheme) on JavaScript
- 新藤さん BeInteractive(三度の飯よりActionScript)
- Tamarinについて
- Shibuya.abc
古い言語
- 構文
- 解析技術の進化 → LL(1), SLR(1), LR(1), LALR(1) × (1pass, 2pass ...)
- 計算機の性能の進化
- 例
- 古い言語=コンピュータに優しい言語
- 人件費 < 計算機震源
- 設定ファイルと言語パーサー
- Windowsはiniファイル読み込みAPIやレジストリ ⇔ UNIXにはgetenv
- Windowはアプリ分野 ⇔ UNIXはテキスト処理
- 世界初のバグは蛾
- Firefoxの虫は蛍らしい。
- Lispとゴキブリの共通点
- 6502
- エミュレータとは
- ソフトウェアの寿命を伸ばす技術(ハードは壊れる。エミュは壊れない)
- jsMSX (100%JavaScript)
- orto ← JavaのbytecodeをDHTMLにして、実行する
orto / 小林さん
- デモ : テトリス
- setTimeoutで、JavaScriptでスレッドを再現している
- 作った理由 → Appletのロードが遅過ぎる
- 処理系内部には、巨大なswitch文 ← 命令の数だけ
- 算術計算は言語が違ってもほぼ一緒
- スコープ解決、メソッド呼び出しは言語によって大きく違う
- Javaは、メソッド系の命令は4つ
- 命令のswitchの外側に、状態のswitch (スレッド切り替えとか)
- Q. GWTとの違いは??(竹迫さん) → JavaのソースをJavaScriptのコードに変換している
- ortoは、バイトコードでのエミュレート
マルチプラットフォームなJavaScript / 竹迫さん
- Logo on JavaScript
- <script type="script/logo" /> に書く
- JSRuby 中谷さん ← JSのRubyインタプリタ
HotRuby / 小林さん
- 小林さんのJavaScript の Ruby実装
- 中谷さんのを知らなかった
- YARVでコンパイルされたバイトコードを実行する
- ActionScript でも動く
新しい言語
- ECMAScriptとは → Web2.0時代のマシン語
- Legacyコード
ASの処理系 / 新藤さん
LLVM / 若槻さん
LLVM勉強会 / 森田さん
- LLVM バイトコードをネイティブで実行できるようにする
- LLVM → ABC
- Adobeの方が、実験で作ったもの
- 問題
- Tamarin Tracing - 動的でもGITで速くする仕組み
- varの型チェックは毎回同じと過程し、ループの外に出す
- TamarinをSpiderMonkeyっぽくしたい
- SpiderMonkeyのDOMのコードはでかいし結合が強い
- Tamarinを捨ててSpiderMonkeyにすればいいじゃん? → Tamarin大丈夫か
- JSBackend
- C→LL→JS
- C言語がブラウザで動くかも
- 吐き出されるコードを簡素化
Tシャツ販売開始
買えませんでした。人気あり過ぎorz。
ライトニングトーク
銅鑼娘付き。
- Client-side database storageで実際にアプリケーションを作成してみた / 藤井太洋さん
- 私は如何にしてNarioを作り、一面をクリアしたか / authorNariさん
- 「Pit」で救う世界 / 庄司嘉織さん
- Unbabel LLにLLを埋め込んでみた / 原悠さん
- Ruby on Railsで実現する自走式Webサーバー / 佐藤伸吾さん
- ちょっと草植えときますね型言語Grass / うえのかつひろさん
- Grass
- wとWとvの3文字、ラムダ計算、形式的定義
- 2006 関数型プログラミング言語のデモ
- 2007 Webサイト、mixiコミュ
- 2008 すらどで公開
- → にわん語のGrass実装、他、各種言語での実装(grass.elも)
- formalism、Webアプリケーション (Grass on Rails)
- GrassはWEBと親和性が高い → WWW (wWw2.0(無限ループのプログラム))
- Grass
- Yet Another Prototype Oriented 〜NewtonScriptに見るもうひとつのプロトタイプ指向〜 / 鵺さん
- 超未来言語 Gallina / 今井宜洋さん
- 未来の並列プログラミング言語としての Haskell / shelarcyさん
抽選会
- ボール投げ
- F106をゲット!! ↓頂きました
- Larry Ball 有り(直筆ボール+ラクダ本(サイン付き)+記念写真+裏へ??)
閉会式
Larryさんが日本語で挨拶して下さいました。「老人です。でも、今日若くなりました。今日は本当にありがとうございました。(Larryさん)」。とんでもない、あなたのパワーにはいつも圧倒されてますm(_ _)m。
あわせて読みたい
- 他の方のまとめ
- gnarlさんのまとめも併せて読むと補完出来ていい感じです。
- 過去のLLのまとめ
- 来年のLLイベントの予告 (エンディングで予告してたみたいだけど気がつかなかったです><)
- TB集