|
2/12~13まで行われていた「Developers Summit 2009」
とりあえずレポート第1弾として、 Rubyに関連する(というより関係が深い)セッションについてまとめました なお、メモした内容と記憶から起こしているので、 必ずしも話の内容について正確ではないかもしれません また、一部順序を入れ替えているところもあります ですので、他の方のレポもぜひ参考に 未来へつながる言語~ある言語おたくの視点から by まつもとゆきひろ 氏 <開始前> ・わりと年配の方も多い ・もらった資料によるとRubyの資格制度がある? →Ruby1.9のセッションで理由判明 <内容> ・最初に触ったのはBASIC ・Pascal→LISPと学んでいく ・本を読んだだけで「わかった気になった」 ・そもそも、BASIC以外の実行環境がなかった ・BASICに限界を感じる ・言語を作ることが夢に ・大学の卒論で言語を作る ・多重継承とかあったらしい ・今日はRubyの話・・・と見せかけて、その話ではない ・(言語の進化に関する話) ・世界最初の言語はFORTRAN(1954~) ・と見せかけて、「Plankalkül」(1948~) ・ドイツ ・ドイツの技術は(ry ・JOJOネタだっけ? ・こういうネタが講演随所に ・ノリノリね(`・ω・´) b ・なんと例外機構がある ・でも、仕様が複雑すぎて実装不能 ・実装できたのは2001年になってからΣ(・ω・ノ)ノ ・なので、初期の言語はこれ ・FORTRAN/COBOL/LISP ・1950年代 ・まつもと氏の会社の半分はRubyだが、残りはCOBOL ・レセプトのシステムをフルOSSでCOBOLで実装 ・コンパイラまで全部自作 ・6000もの病院で採用済み ・たぶん、COBOLだって用途があって作られたのだから、 その技術や技術者を捨てるのはもったいないという発想だと思う ・言語にはそれぞれ作られた理由があるって発想が、 まさに「言語おたく」なんだろう ・FORTRAN:数値計算/ベクトル計算/HPC ・COBOL:オフコン/汎用機/レコード処理 ・事務系では最も楽に書ける@COBOL技術者 ・LISP:人工知能/大学・研究 ・BLISS/C/C++→C/C++ Java Perl/Python/Rubyへ ・PHPはあえて入れなかった@まつもと氏 ・会場大うけ ・やっぱりPHPは認めたくないのね(´・ω・`) ・気持ちはとてもよくわかる ・進化の要因とは? ・簡潔さ ・新パラダイム ・外的要因 ・「温故知新」 ・生物の進化論と似たようなもの ・その時代にマッチしたものが主流となって生き残っていく ・簡潔さは力なり ・前の問題を解決するために次が現れる ・より少ない記述へ抽象化が進む ・Brooksの法則(生産性の法則) → 「人月の神話」の人 ・「PGが1日に書けるコード量は、言語にかかわらず一定である」 ・パラダイム ・構造化(70年代) ・オブジェクト指向(80~90年代) →これらはもう当たり前 ・論理型プログラミング => 行方不明 ・Prolog ・関数型プログラミング => Hot!! ・外的要因 ・昔はマシンコスト>>>>>>人的コスト ・今は逆転 ・開発費は変わらないのに、やることは複雑化 ・ムーアの法則 ・以前は勝手に環境の方で処理が加速していった ・ムーアの法則は限界 ・マルチコア・メニーコアへ →PGのレベルで対応がまた必要な時代へ ・温故知新 ・Javaで普及した技術:VM/GC/例外 ・これらは全部昔からある技術 ・Javaで普及しただけ ・普及の過程:冒険→改良→普及 ・Simula→Smalltalk/LISP→Ruby(オブジェクト) ・FP→StandardML→Haskell/OCaml(関数型) ・メインストリーム ・Java/Ruby(オブジェクト)→Haskell/Erlang(関数型)→APL? ・Rubyも関数型を取り込みつつある ・宣言的 ・並列 ・APL ・ベクトル/行列・配列が得意 ・書けないし読めない ・まつもと氏も読めない ・でも生産性は高いらしい <終了後> ・オライリーのRuby本を買うとサインしてもらえた <感想> ・マニアックではあったけど、話自体がとても面白かった ・まつもと氏のキーワードは、どうも「温故知新」らしい ・ぶっちゃけ、この話を聞くまで「関数型プログラミング」を軽視していた(´・ω・`) ・現在高速に情報収集中 Ruby 1.9の現状と導入ポイント by Yugui 氏 <開始前> ・まつもと氏のセッションより年齢層低めの印象 ・実務担当の集まりっぽい <内容> ・前提:今日帰ったら即1.9.1へ移行せよ ・Ruby2.0がひとつのゴールである ・1.8→1.9はJava1→2くらいの進化 ・1.9→2.0へはJava2→5.0くらいの飛躍が必要 ・1.8.8も出る予定 ・1.9のコードが「パースできる」だけで、動くとは限らない ・1.9へ移行しやすいようにリリースされるもの ・やはり「温故知新」という言葉が ・1.9のTopic ・改善された開発体制からリリースされた ・「Rubyらしさ」を追求 ・(RubyでできることはぶっちゃけLISPでできる、と言っていた) ・今後はRubyへ移行するのにだけ必要だった要素を徐々に切り捨てていく ・開発体制 ・Redmine ・Ruby開発のトラッキングシステム ・現状は「とりあえずMatzに聞け!」 ・メーリングリストと連動するおかげで、かなり利用されるように ・RoRで実装 ・Rubyの中の人たち曰く「Railsもただのアプリだろ( ゚Д゚)y─┛~~」 ・とはいえ、普及に貢献しているのは間違いない ・開発体制をRoRで構築した以上、RoRがこけるとRubyもこける ・一蓮托生 ・でも、たぶんRuby自体はこけないと思う・・・ ・細かいRuby関連の情報はこれのWikiを見てほしい ・branch ・メンテポリシーを定めた ・1.8系は2つ ・1.8.8で1.8.6が切られるかは不明 ・「自分は1.9担当だから知らん( ゚Д゚)y─┛~~」 ・1.9は一つだけ ・でも、1.9.2の後も、場合によっては1.9.1も・・・? ・support ・サポートレベルを4段階定義 ・サポート ・継続的なメンテがある ・全テストにPASSしている ・大体動く ・たぶん動く ・知らんがな( ゚Д゚)y─┛~~ ・ドキュメント ・有志がメンテ中 ・標準化 ・進めてはいる ・でも、自由な進化の妨げにもなるので微妙な面も ・一方で、お役所の調達には必須だったりとか・・・ ・RubySpec ・いろいろなRubyの間で互換性を保持するテストの仕組み ・仕様の安定性 ・もうかっちり仕様が固まった ・ブロックの仕様 ・lambda ・大きなレベルでの変更はもうない ・なので、安心して移行していい ・1.9.0はすべてのテストをPASSできなかった ・1.9.1は100% ・Railsはまだ対応しきれてない ・Gemを標準で取り込んだ ・そのためモジュール起動が高速化 ・以前はワンテンポ待たされたが、もう待たされない ・YARV ・中間コードを生成するようになったことが大きい ・つまり、他のVMで動かせるということ ・いろいろ進行中だが、まだ中間コード自体の仕様が固まってない ・Ruby1.9が固まってない、ということではないと思う ・M17N ・エンコードを内部で保持 ・違うもの同士で処理しようとすると、自動で変換 ・それがバグの温床になりそうだな・・・ ・エンコーディングを間違って処理しようとすると例外があがる ・String#each廃止 ・Rubyアソシエーション ・いくつかの企業が協業してRubyの普及を進めていく ・この一環がRuby認定試験と推測 ・つまり、お墨付きがあるわけか ・なら受けてみるか・・・ ・移行手順 ・$KCODEからマジックコメントへ ・ライブラリの対応確認 ・文字列周り確認 ・消されたメソッドはすでに使われてないか、他に手段があるもの ・それぞれ対応を探す ・最後に ・さっさと1.9に移行汁( ゚Д゚)y─┛~~ <感想> ・この人もかなり個性的 ・微妙に火の星座っぽい ・たぶん牡羊座か射手座あたり ・そういえばまつもと氏も牡羊座+天秤座か ・そんなのどうでもいいね(´・ω・`) ・Gem関連の起動が高速化されたのはかなり大きい ・今のシステムのネックがそこだけに ・さっさと移行はしたいけども、今のシステムはARを使っているので、 ARが1.9.1に対応してくれないと・・・ ・なお、「( ゚Д゚)y─┛~~」を多用したのは、本当にそんな雰囲気だったから ・やっぱり牡羊座っぽいな・・・ |
|
コメント
|
|
この記事のトラックバックURL
http://www.parrot-studio.com/studiwo/tb.php/144
トラックバック
|








