LL future メモ
朝から晩まで11時間くらいやってた。皆さんお疲れ様でした。
きいたことを即時忘れるタイプなのでメモとっといてよかった。しかし整形する気力がない。
はてな記法を把握してないためところどころおかしいと思う、察してください。あと発表者が言ってないことを書いてあったりする。
ラリー先生基調講演
ききのがしたやんけ
LLで未来を発明する
100年後の言語とは
まつもと:
- プログラミング言語とか使わないんじゃね(普通の人にとってはそうなってる)
sumii:
- MiniCaml作った/わかりません/チャーチのλ計算が100年前/電子計算機でなくてもプログラミングは可能かつ必要
- 数百年前:関数(ライプニッツ、オイラー)、変数(古代ギリシャ、16世紀(ヴィエタ)、ユークリッドの互除法(AC300)
- GC50年代、ジェネリクス70年代……
- 予想することも意図して発明することもできない
- でも予想してみると、自然言語+αでPGできるように?全自動証明器つき言語/大量のDSL/普通の人が使える非技術者向けグラフィカル言語/量子言語
ふじた(little wing):言語がなくなるとか困る/言語は人間の労力を減らすため/面倒なことをよりしなくてもいい方向に/メモリの確保と開放/並列処理/
- 2078年くらいに言語の大統一理論が発見される→みんなLispだったんじゃないか!!!
- 100年前を振り返る→歯車で動くような計算機が小型化されて実用化されたくらい
- 現在→便利だねーくらいの存在感
- 100年後→便利を通り越して空気のような存在
- 自然言語には限界があるのでそうはならない→習えば誰でも使えて、でも練習が必要(自動車自転車みたいな)
ラリー:
- VIMでプレゼン
- 英語聞き取れない
- impossible to predict
- extensible but expressive
- self-defined
- precisely scoped
- paradigm neutral
- scalable
- optimizable
- parallelizable
- accessible
- teachable
- transparent
- community-based
- O楽
いいものは残るというがいいものって何>sumii
- paradigm neutral、いろんな言語のいいところをつかえるかんじ
- 結局どの言語も同じようになるんじゃないか
これまでに何をしてきたか
- ラリー「perl」
- まつもと「ruby」
- 100年後を考えるとおかしな言語も必要、多様性
- 言語に関心を持つ人が増えるといい
- こういうイベントに1000人集まるとか未来は明るい
- sumii
- ふじた
- higepon
これから何をするのか?
- higepon
- OSを世界の人に使ってもらうことが最終目標
- フルスタック、思想が統一されてる素晴らしいOSを作る
- OSを世界の人に使ってもらうことが最終目標
- ふじた
- ききのがした
- sumii
- 基礎研究
- 100年後、1000年後の人がおもしろいと思えるアイデアをきっちり記録に残す
- まあ基礎研究は知的好奇心でやってる
- 自分の好き勝手な好奇心を満たすことで世間の役に立つ
- まつもと
- ラリー
- ききとれない><
「関数型ってどこがいいんでしょう」
- アイデアを盗んでくるのに非常にいい場所だ(ラリー)
- みんな同じようになるんじゃね(sumii)
100年後、コンピュータというものが今とは違うだろう
- 自動車、メンテナンスフリー化
- 計算機の世界でも同じようなことが
- 「自分でプログラムしたいからx86アーキテクチャのマシンまだ持ってるんだぜ」みたいな
- →どっかでプログラミングする人は残る、私は死ぬまでやるだろうし(まつもと)
- プログラミング言語は誰のほうを向いてるか
- 現在:計算機上で何か動かしたい人
- 将来:非常に限られた人
- そうなったとき、どういう言語が必要になってくるのか?
- sumii:
- 自動車は仕事でやってるけど計算機の人は趣味でやってる人が多い
- これだけ実用化してるもので、かつ趣味で中をいじれるのがすばらしい
- 今の自動車のようなクローズドなシステムになるのは悲しい
- ハッカー文化が残って欲しい
- sumii:
- perl6はどのように使って欲しい?>ラリー
- →widthとdepthどっちも目指す的なこと
- ききとれない
- マクロとかどうなのよ>ラリー
- →ききとれない
- エラーメッセージをどうにかしてほしい(ふじた)
- 言語のデザインとしてエラーメッセージは規格に入ってない
- ルビーではどうよ>まつもと
- 「あんまり考えてないっすね」
- プロファイラ/デバッガとかのインタフェースまで標準化するかどうかはともかく考えたい
- 今ここでサボると何千人のユーザの時間を無駄にするんじゃないかとよくおもう(higeponn)
- プログラミング言語はユーザの時間を奪ってはいけない
- 基礎研究ではわかりやすくしましたみたいな論文は書けない、評価が難しい(sumii)
- 設計者は何か秘訣があるのか?
- 言語のデザイナとユーザではデザイナのほうが圧倒的に少ない、デザイナが時間を使うべき(まつもと)
- 私はlazyなので「奪われた!!!」という声をよく聞く
- 言語デザイナは大統領のように振舞わねばならない(ラリー)
- 言語デザイナに多くを担わせすぎるのはよくないのでは(ふじた)
- 実装のほうに問題があるケースが多い
- 最近はまつもと/ささだで役割がきれいに分かれてるかんじですね(sumii)
- 仕様と実装を分けると仕様をきっちり作る必要があるのでは?
- 言語のデザイナとユーザではデザイナのほうが圧倒的に少ない、デザイナが時間を使うべき(まつもと)
- 設計者は何か秘訣があるのか?
質疑応答
- ヌルいよね(吉岡)
- セキュリティという単語が一言も出てきてないことに危機感を覚える
サイコー?! フレームワーク
「フレームワーク」が何をさしてるのか謎、webフレームワークの意で使ってるのか?
wikipediaをwikiというタイプ……
ひがやすを(seaser)
瀧内(rorユーザ)
- MobaSiF:Mobile Simple Flamework
- 大規模高トラフィックサイトで使用されてきた実績
- シンプル、構造が薄い、読みやすい
- ドキュメントほとんどなかった、中身読んで把握する
- 軽快、OR mapperなし
- 携帯向けモジュール
- 未来像特になし、勝手に機能追加しろや
やすを
- 機能が進化している→機能を覚えなきゃいけない
- RoRの暗黒面
- 機能追加しすぎ
- 互換性
- 会場に質問:安定してるのと進化してるのとどっちがいいか?→7:3
fwの未来
- railsにはまった人はSchemeまであと一歩
- 会場に質問:Schemeで食べてる人→ほとんどいない
- 能登:
- 自由度重要、減らさないでサービスとして安定するようにしたい
- 会場に質問:MobaSiF使ってる人→いない
- 瀧内:
- webフレームワークのことをフレームワークって言うな
- やすを:
- 会場から:Schemeの仕事は国内ではない、カナダ行くとある
- 会場から:フレームワークの設定をInspectする機能充実させれば?
java上でRails等のフレームワークを使うのがはやってるがどう思う?
会場から質問:
- debianのパッケージ作ってメンテしてる者だが、railsだとgemsなる忌まわしいものが大量に入ってきてどうすんだこれ
- railsは進化が早すぎて情報がすぐ古くなる
- 勉強会とかで情報収集、本だとフォローできない
- →勉強会に来る人だけが暗黒パワーで世界を支配するのではないか
- 勉強会とかで情報収集、本だとフォローできない
- MobaSiFを広めるためにパッケージ化するとかどうよ
- 目鱗(能登)
- 前向きに検討
- フレームワークはフルスタックがいいか、それともコンポーネントを選択できるほうがいいか?
- フルスタックで提供してるけど分離交換可能なのが理想的(やすを)
- フレームワークはフルスタックがいいか、それともコンポーネントを
まとめ:
LLでアート
LLってなに
- 海外ではDynamic Languageのほうがメジャー
MAXってのがあるらしい、Prosessingの仲間
LLでスケッチ(増田一太郎)
- Processing+ruby
- IAMAS、ネトゲ廃人
- その後processing
- ハオハオ? 群体による描画ツール
- 化粧品のCM、エフェクトはProcessing
- DIESEL、インタラクティブミラー。イメージを蓄積できる鏡
- RubyCocoa+Core Animation+Quartz Composer
- Processingはちょっと硬い
- ruby-processing
- SketchBook(koyachi)
- NodeBox
- fluxus
- 作ってみた→action-coding
- Funnel
- フィジカルコンピューティング、新たな物理的インタフェース
- I/Oをスクリプト言語から手軽に
- デモ。Gainer+加速度センサ→USB経由でPCへ。
- action-codingのデモに結合、ソース書きかえてパラメータをgainerから受けるように→即時反映
- 入力に信号処理フィルタをくっつけられる。Scaler、Convolution
- まとめ:プログラミングを駆使した表現活動は楽しいし敷居は下がりつつある
Maxを使ったアート(デザイン)、真鍋大登
- デザイナー/アーティスト、インタラクティブ、実世界指向
- MaxMSP: 音響・映像表現のためのヴィジュアルプログラミング環境
- 商用
- 箱を線でつなぐ式
- 複雑なものは苦手
- 80年代、MIDI制御のためのツール
- 97年DSP機能、03年ビデオ/OpenGL制御機能追加
- 2004年javaと繋げるように、js使えるように
- 08年ようやくutf-8サポート、まだ発展途上っぽい
- lua/pythonバインディングとか
- デモ→jsとくみあわせてライブコーディング
- なんかにょろにょろしてる、カメラの画像をテクスチャに、音と動きをsync→どんどんキモく
- コーディング環境でそのままデータの流れを確認できる、コードとデータの流れがシームレス
- DSPicでモノ作る前にMaxでプロトタイピングとか
- 部品の配置=UI=コード、ただし汚い
- 筋電センサによるUIとか
- まとめ
- pros
- ヴィジュアルプログラミング環境→敷居が低い
- js使える
- リアルタイム性高い、実行中に修正可能
- トライ&エラーのサイクルが高速
- UI楽
- コミュニティ活発、拡張容易
- cons
- 自由度高すぎ、デバッグ困難
- 遅い
- フリーじゃない
- pros
- メディア系はヴィジュアルなプログラミング環境多い
質問等:
LL golf
キミならどう書く?
今回はU-30、コードゴルフ
ゴルフのコツ
- 道具の使い方
- tinyurl→API使う、CPANにライブラリがある
- say get "http://easyurl.jp/edz"
- どう書くorgから解答を引っ張ってくる
ゴルフ→異なる言語で互いの価値を認め合う場
day*wday==65 //13日の金曜日判定
(m+1)==-~m
(a==b)&&c==(a-b)||c
pythonはリスト関係がすごい
111...11**2==1234...4321,ただしオーバーフロー
shinh先生の最適化が炸裂
a*(b+c) -> a.*b+c
「副作用があるのが悪いんじゃないですか」
「すごくださいですね」
istitle()という大変便利な関数が
みんなに愛されてるPHP
「関数のつけ方が朝思いついたとおりにつけました的な」
名前重要
「将来プロゴルファーになるにはどうすればいいですか」「ずっとゴルフしてればいいんじゃないですか」
groovyのit的なものが欲しい、forのループカウンタ的な。
パネルディスカッション「古い言語、新しい言語」
takesako/alohakun/omo/yukoba/yossy
Lispの話はしません
新しい言語:ecmascriptとLLVMについて
参加者紹介
- alohakun(ホワット・ア・ワンダフル・ワールド)
- アロハを着ている
- omo(steps to phantasien)
- 小林悠
- @shibuya.js、js上で動く処理系作ってる
- [java|ruby|flash|logo|scheme] on js
- yossy(beinteractive)
- AS
- shibuya.abc(ActionScript Byte Code)
- TAKESAKO先生
- ppencodeでおなじみの
古い言語
- 構文の制約
- 古い言語はコンピュータに優しい
- 人件費+管理台帳<<<計算機資源
- いまは逆転してきた
設定ファイルと言語パーサー
- 言語 as 設定ファイル
バグ
Low Level Future
ターミネーター、6502で動いてる
エミュレーター、寿命を伸ばす技術
- jsMSX
Orto
- setTimeoutでスレッドも実装してる。
- これ6年前ですぜ
- 最初はFlash動かしたかった
- JVM bytecode on js
- java→bytecode→jsに変換して実行
- java appletはクラスをロードするとこが遅い
- 処理系の基本:巨大switch文
- 質問:GWTとはどう違うのか
- iphoneでも動くよ
どこでも動くjs処理系
- ブラウザがあればどこでも動く
logo on js
jsRuby
オレスクリプト、script type="text/oreore"
HotRuby
- YARVの処理系をjsで
- YARVは命令列を取り出す機能がある→jsonに変換、jsで書いたVMで動かす
- jsだけでなくFlash版も
- rubyとASを自由に行き来
- Box2D(AS)をrubyコードから使う
- webのマシン語=js,as
- すうふ
- SWFの仕様公開(プレイヤー作成、解析も解禁)
- →じゃあプレイヤー作らなきゃね
- AS3でFlash player実装
- AS2にはevalがない→AS1の処理系をASで作る
- パーサとかから自前
- 高二くらいのとき書いた
ECMAScript4→3.1になった、という話は時間がないので割愛
- web3.14
- Low Level Virtual Machine
- RISC like instruction set
- register machine
- ライフサイクル全体にわたる変換と最適化
- 使いどころ
- ブラウザ上でCコードを動かす
- 関連:
- そもそも疑問:
- ブラウザの上で既存資産を動かすと未来が開けるのか?
- →ブラウザ上でjs以外の言語が動いたほうがいいという意見が出た
- そもそもLLにfutureはあるのか?
- GCCフロントエンドの重要性が増す?
- フロントエンド→LLVM bytecode→最適化→バックエンド→ターゲット向けコード
- DOOMの例(Adobeの中の人、LLVM to AS bytecode)
- MT、メモリ確保とか色々問題があるけど解決、けっこう速く動く
- ASで書くよりCで書いてASにしたほうが速かったりする→最適化、JIT
- static typeない
- TamarinとSpiderMonkeyの統合
- Tamarinにかけてるコンポーネント(DOM,)をSpiderMonkeyから持ってくる
- →コンポーネントが密結合してて困難
- →JITだけTamarinからSpiderMonkeyにもってくる
- →これがTraceMonkeyの正体
- Tamarinにかけてるコンポーネント(DOM,)をSpiderMonkeyから持ってくる
- JSBackEndの話(一分で)
- TraceMonkeyレベルに速くなるとjs as 機械語も現実的か
まとめ