Hatena::ブログ(Diary)

<s>gnarl,</s>技術メモ”’<marquee><textarea>¥ このページをアンテナに追加 RSSフィード Twitter

2008-08-31

LL future メモ

朝から晩まで11時間くらいやってた。皆さんお疲れ様でした。

きいたことを即時忘れるタイプなのでメモとっといてよかった。しかし整形する気力がない。

はてな記法を把握してないためところどころおかしいと思う、察してください。あと発表者が言ってないことを書いてあったりする。

ラリー先生基調講演

ききのがしたやんけ

LLで未来を発明する

100年後の言語とは

まつもと:

sumii:

ふじた(little wing):言語がなくなるとか困る/言語は人間の労力を減らすため/面倒なことをよりしなくてもいい方向に/メモリの確保と開放/並列処理/

  • GC、並列処理、動的言語のサポートがCPUでサポートされるのではないか/そうなるとCとか絶滅しそう/抽象度の低いことは書かなくてよくなる

higepon:

  • 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
  • ふじた
    • DSLをつくるツールとしてのScheme処理系実装、R6RS準拠→仕様を考えるのが面倒だったので
    • 多様な言語を作るのにとても適した言語
  • higepon
    • mosh
    • SICPに感銘を受けた
      • 後半、言語の実装→やってみたら動いたのがきっかけ
    • OSがデフォで提供してる機能がいいものだったら便利

これから何をするのか?

  • higepon
    • OSを世界の人に使ってもらうことが最終目標
      • フルスタック、思想が統一されてる素晴らしいOSを作る
  • ふじた
    • ききのがした
  • sumii
    • 基礎研究
    • 100年後、1000年後の人がおもしろいと思えるアイデアをきっちり記録に残す
    • まあ基礎研究は知的好奇心でやってる
      • 自分の好き勝手な好奇心を満たすことで世間の役に立つ
  • まつもと
    • 言語好きを増やす
    • 言語をデザインする人はExtensive(マクロとか)に走りやすい
      • →ユーザにはよくない
      • それぞれがDSLを持つとかバベルの塔の再来
      • 10年20年経てばどっちが正しいかわかるだろう
  • ラリー
    • ききとれない><

関数型ってどこがいいんでしょう」

  • アイデアを盗んでくるのに非常にいい場所だ(ラリー)
  • みんな同じようになるんじゃね(sumii)
    • 盗んで欲しいものはたくさんある、状態がないとか
    • 頭のいい人が多いのでそういう人と親しくなれる
    • Lisp/Schemeのいいところはちゃらんぽらんなところ
      • set!
    • higepon
      • なかなか出会えないような概念
      • 学びの場

100年後、コンピュータというものが今とは違うだろう

  • 自動車メンテナンスフリー化
  • 計算機の世界でも同じようなことが
  • 「自分でプログラムしたいからx86アーキテクチャのマシンまだ持ってるんだぜ」みたいな
    • →どっかでプログラミングする人は残る、私は死ぬまでやるだろうし(まつもと)
  • プログラミング言語は誰のほうを向いてるか
    • 現在:計算機上で何か動かしたい人
    • 将来:非常に限られた人
    • そうなったとき、どういう言語が必要になってくるのか?
      • sumii:
        • 自動車は仕事でやってるけど計算機の人は趣味でやってる人が多い
        • これだけ実用化してるもので、かつ趣味で中をいじれるのがすばらしい
        • 今の自動車のようなクローズドなシステムになるのは悲しい
        • ハッカー文化が残って欲しい
    • perl6はどのように使って欲しい?>ラリー
      • →widthとdepthどっちも目指す的なこと
      • ききとれない
    • マクロとかどうなのよ>ラリー
      • →ききとれない
    • エラーメッセージをどうにかしてほしい(ふじた)
      • 言語のデザインとしてエラーメッセージは規格に入ってない
      • ルビーではどうよ>まつもと
        • 「あんまり考えてないっすね」
        • プロファイラ/デバッガとかのインタフェースまで標準化するかどうかはともかく考えたい
      • 今ここでサボると何千人のユーザの時間を無駄にするんじゃないかとよくおもう(higeponn)
      • 基礎研究ではわかりやすくしましたみたいな論文は書けない、評価が難しい(sumii)
        • 設計者は何か秘訣があるのか?
          • 言語のデザイナとユーザではデザイナのほうが圧倒的に少ない、デザイナが時間を使うべき(まつもと)
            • 私はlazyなので「奪われた!!!」という声をよく聞く
          • 言語デザイナは大統領のように振舞わねばならない(ラリー)
          • 言語デザイナに多くを担わせすぎるのはよくないのでは(ふじた)
            • 実装のほうに問題があるケースが多い
          • 最近はまつもと/ささだで役割がきれいに分かれてるかんじですね(sumii)
          • 仕様と実装を分けると仕様をきっちり作る必要があるのでは?

質疑応答

  • ヌルいよね(吉岡)
    • 100年後の話してないやないけ
    • ノイマン型を前提とする限りGCCは必要だし100年後も変わらないんでは
    • 800人中野に集まるというのは10年前とぜんぜん違う
    • コミュニティベースの言語開発
      • 昔は会議室で仕様決めてた
    • 100年後もコミュニティベースでやってそう
    • 100年後もかわんねーよ
  • セキュリティという単語が一言も出てきてないことに危機感を覚える
    • セキュリティは言語デザインに大きく影響される
    • どう思ってんだおまえら
      • 今以上のアイデアがない(まつもと)
        • taintモデル
        • 言語設計者とセキュリティの人の特質は違うかんじ、アイデア募集

サイコー?! フレームワーク

フレームワーク」が何をさしてるのか謎、webフレームワークの意で使ってるのか?

wikipediawikiというタイプ……

ひがやすを(seaser)

瀧内(rorユーザ)

能登(DeNA,MobaSiFエヴァンジェリスト)

  • MobaSiF:Mobile Simple Flamework
    • 大規模高トラフィックサイトで使用されてきた実績
    • シンプル、構造が薄い、読みやすい
      • ドキュメントほとんどなかった、中身読んで把握する
    • 軽快、OR mapperなし
    • 携帯向けモジュール
    • 未来像特になし、勝手に機能追加しろや

吉田(EY-office,gauche on rails)

やすを

  • 機能が進化している→機能を覚えなきゃいけない
  • RoRの暗黒面
    • 機能追加しすぎ
    • 互換性
  • 会場に質問:安定してるのと進化してるのとどっちがいいか?→7:3

fwの未来

  • railsにはまった人はSchemeまであと一歩
  • 会場に質問:Schemeで食べてる人→ほとんどいない
  • 能登:
    • 自由度重要、減らさないでサービスとして安定するようにしたい
  • 会場に質問:MobaSiF使ってる人→いない
  • 瀧内:
  • やすを:
    • 安定性重要視、進化はさせない、サポート体制は維持
    • 今はrailsの影響がでかい、CoC
      • →いきすぎでは
      • あとから知らない人が見ると何が起こってるかわからない、ブラックボックス
      • 追いかけやすくしつつ設定ファイルを書かない方向にしていきたい
      • 次のフレームワークはそうしていきたい
  • 会場から:Schemeの仕事は国内ではない、カナダ行くとある
  • 会場から:フレームワークの設定をInspectする機能充実させれば?
    • →それSeasarで(ひが)
    • Railsはどうなのか→微妙
    • MobaSiFはシンプルなので大丈夫

java上でRails等のフレームワークを使うのがはやってるがどう思う?

  • やすを:
    • まだ流行ってない
    • LLの人はjavaが嫌い
  • 瀧内:
    • 使ってみたいですね
      • javaのほうが基盤が安定してるから?(やすを)
        • →新しい物好きなので

会場から質問:

まとめ:

LLでアート

LLってなに

  • 海外ではDynamic Languageのほうがメジャー

MAXってのがあるらしい、Prosessingの仲間

LLでスケッチ(増田一太郎)

Maxを使ったアート(デザイン)、真鍋大登

質問等:

LL golf

キミならどう書く?

今回はU-30コードゴルフ

ゴルフのコツ

ゴルフ→異なる言語で互いの価値を認め合う場

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)
    • 本業:C++プログラマ
    • Tamarin(ASのVM)、C++
    • Adobeの素晴らしいC++コードがみられる
      • →あまりすばらしくなかった
      • でも読んだら情がわいた
    • ASに興味(複雑な言語仕様+強力なプラットホーム)
      • Yet another BK Language
    • Tamarinみどころ
  • 小林悠
  • yossy(beinteractive)
  • TAKESAKO先生
    • ppencodeでおなじみの

古い言語

  • 構文の制約
    • 解析技術
    • 計算機の性能
    • 例:
      • BASICはなぜLETがあったのか→構文解析がハイコストだったときの名残
      • PASCALはラベル名数字のみ→これも解析が楽になるから
  • 古い言語はコンピュータに優しい
    • 人件費+管理台帳<<<計算機資源
  • いまは逆転してきた

設定ファイルと言語パーサー

  • 言語 as 設定ファイル

バグ

Low Level Future

ターミネーター、6502で動いてる

エミュレーター、寿命を伸ばす技術

  • jsMSX

Orto

  • setTimeoutでスレッドも実装してる。
  • これ6年前ですぜ
  • 最初はFlash動かしたかった
  • JVM bytecode on js
  • java→bytecode→jsに変換して実行
  • java appletはクラスをロードするとこが遅い
  • 処理系の基本:巨大switch
    • 言語間でスコープ解決やなんかが違うのでそのへんを整合さすのが大変
    • javaの場合Invokeが4つある
    • 実行状態7個
      • 通常
      • スレッド切り替えのチェック
      • スタティックコンストラクタの呼び出し関係
      • 例外チェック
      • など
    • ブロック単位でスレッド切り替えのチェック
  • 質問: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コードから使う

ECMAScript

AIRでFlash Player(yossy)

  • すうふ
  • SWFの仕様公開(プレイヤー作成、解析も解禁)
    • →じゃあプレイヤー作らなきゃね
    • AS3でFlash player実装
  • AS2にはevalがない→AS1の処理系をASで作る
    • パーサとかから自前
    • 高二くらいのとき書いた

ECMAScript4→3.1になった、という話は時間がないので割愛

  • web3.14

LLVM

  • Low Level Virtual Machine
  • RISC like instruction set
  • register machine
  • ライフサイクル全体にわたる変換と最適化
  • 使いどころ
  • ブラウザ上でCコードを動かす
    • C->LLVM bytecode->AVM2命令→Native(Tamarin)
    • 過去のC資産が活用できる?
    • なぜLLVMコードを使う?
      • LLVM用にgccが存在(C->LLVM)
  • 関連:
    • Nested VM:マシンコードをJVMに逆コンパイル資産の再利用、サンドボックス
    • IKVM:.net MSIL<->JVM bytecode
  • そもそも疑問:
    • ブラウザの上で既存資産を動かすと未来が開けるのか?
    • ブラウザ上でjs以外の言語が動いたほうがいいという意見が出た
    • そもそもLLにfutureはあるのか?
  • GCCフロントエンドの重要性が増す?
  • フロントエンド→LLVM bytecode→最適化→バックエンド→ターゲット向けコード
  • DOOMの例(Adobe中の人、LLVM to AS bytecode)
    • MT、メモリ確保とか色々問題があるけど解決、けっこう速く動く
    • ASで書くよりCで書いてASにしたほうが速かったりする→最適化、JIT

Tamarin as js vm

まとめ

  • 自由な開発環境
  • VM技術がデバイスの制約を開放する
  • JITで高速化
  • 君も新しい言語処理系を作ろう!!!

LT

Twitter人工無能を作ろう!(showyou)

twitterチューリングテストに通りやすい

  • 人間になるチャンス!

入力→推論→発言

鸚鵡返し、単語ルール、過去発言から生成

基礎技術:twitter API(IO)、形態素解析とか

python+Mecab

最初作ったけど人気なしなのでキャラ付け

最近出た単語に対してマルコフ連鎖

Client side db storage(HTML5)

HTMLで永続的にデータを保存するしくみ

SQLでデータを扱う

作ってみた

  • dashmark
  • @サファリ
  • ブクマシステム作った
  • 検索できる
  • HTML+JSだけで完結してる
  • インクリメンタルサーチ可能
  • SQLで検索
  • クエリの結果は非同期
  • 検索範囲絞込みのためにviewを使い捨ててる(一人で使えるのでやりたい放題)
  • スキーマのバージョニング機能
  • domainが異なるとアクセスできない(Cookieと同じくらい)

私は如何にしてNarioをつくり、1面をクリアしたか

  • I am cruby@hatena
  • Crubyこみった
  • rubyで書いた横スクロールアクション
  • Ruby GCによってGUIがグッと固まるさまがみたかった」
  • どう見てもブラックです
  • →大幅にグラフィックを修正、クリーン!!!!
  • インタラクティブなのは受けるなー
  • 最後にGC countが出る

Pitで救う世界(yoshiori)

  • Pit使えやという話
  • 第一言語:java
  • プレゼンがかっこいい
  • 「ユーザ名とパスワードは書き換えてください」
    • そういったことは面倒なので書きたくないです
    • 利用者側としても面倒
    • 無駄な作業でGDPが大幅に下がっている
  • dankogai kogaidan
  • Pit:あかうんとまねじめんとつーる
  • いろんな言語から使える
  • yamlアカウント情報保存

Unbabel - LLにLLを埋め込んでみた(yhara)

RoRで実現する自走式webサーバー

ちょっと草植えときますね型言語Grass(うえのかつひろ)

  • wWvの三文字、ラムダ計算ベース、形式的定義
  • formalism(説明割愛)重要
  • 関数型言語
  • ニワン語による実装もある
  • moshに標準添付らしい

Scilab数値計算(Y.Sawa)

  • Matlabっぽい言語、フリー
  • INRIAで開発(Ocaml,Coq)
  • 微分方程式の数値解とかビジュアル言語で可視化できるとかなんとか
  • Scilab Toolbox Contestに参加してください

yet another prototype oriented NewtonScriptによるもうひとつのプロトタイプ指向

超未来言語GALLINA

  • INRIAで開発
  • OcamlHaskellに似てる
  • 対話環境、パターンマッチ、高階関数、静的検証、λ式による抽象化
  • 1stclass function
  • 1stclass type
    • template的なことを関数
    • 数値から型を生成する
  • 静的検証ができる
    • Definition文で定義
    • Theorem文で性質を保障することができる
    • Definition cookie_of(u:User) ...
    • Theorem T:forall(u:User) size(cookie_of u)<4000 (このあとに「証明」なるものを記述)
  • このイベントで安全性とかについての言及が全然ないのは問題

未来の並列プログラミング言語としてのHaskell

  • Haskellの並列化機能が強化されつつある
  • Data Parallel Haskell
    • 並列配列
    • 自動ベクトル化してくれるらしい

hyoshiokhyoshiok 2008/09/02 08:55 フレームワークのパネルでの質疑のコメントは吉岡でなくパネリストの吉田さんではないかと思われ…

gnarlgnarl 2008/09/02 19:28 失礼しました!
修正しました。

takano32takano32 2008/09/08 16:52 楽しんでいただけたようで、実行委員のひとりとして大変うれしく思います。
ご来場、ありがとうございます!

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


画像認証