Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
言語の世界 Powered by Rabbit 0.9.2 言語の世界 ネットワーク応用通信研究所 楽天 技術研究所 Rubyアソシエーション @yukihiro_matz まつもとゆきひろ Yukihiro "Matz" Matsumoto
Slide 2
Slide 2 text
言語の世界 Powered by Rabbit 0.9.2 プログラミング言語って? 言語ってなんだろう?
Slide 3
Slide 3 text
言語の世界 Powered by Rabbit 0.9.2 プログラミング言語って? プログラム=手順書 手順書記述用人工言語
Slide 4
Slide 4 text
言語の世界 Powered by Rabbit 0.9.2 プログラミング言語って? プログラム=理想記述 思考表現用人工言語
Slide 5
Slide 5 text
言語の世界 Powered by Rabbit 0.9.2 せめぎあうふたつの立場 機械のためか? 人間のためか?
Slide 6
Slide 6 text
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) FORmula TRANslator
Slide 7
Slide 7 text
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) 人間のため 数式でプログラムできるよう
Slide 8
Slide 8 text
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) 機械のため 速く計算できるためにはどんなことでも
Slide 9
Slide 9 text
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) ループアンローリング ベクトル化
Slide 10
Slide 10 text
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) 背景 コンピュータが遅かった
Slide 11
Slide 11 text
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) 背景 「言語の常識」がまだなかった
Slide 12
Slide 12 text
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) LISt Processor
Slide 13
Slide 13 text
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) 人間のため 数学的概念からスタート ラムダ計算
Slide 14
Slide 14 text
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) 機械のため IBM704計算機 car=content of address register cdr=content of data register
Slide 15
Slide 15 text
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) 人間のため ガーベージコレクター
Slide 16
Slide 16 text
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) 人間のため Lispプログラマは値はなんでも知っている が、コストについてはなにも知らない
Slide 17
Slide 17 text
言語の世界 Powered by Rabbit 0.9.2 LISP vs FORTRAN 人間主義 vs 機械主義
Slide 18
Slide 18 text
言語の世界 Powered by Rabbit 0.9.2 勝者は? Algol!
Slide 19
Slide 19 text
言語の世界 Powered by Rabbit 0.9.2 漁夫の利 原始的すぎるFORTRAN 数学的すぎるLISP 求められたのはアルゴリズム記述
Slide 20
Slide 20 text
言語の世界 Powered by Rabbit 0.9.2 新たな伝統の誕生 Algolは滅びぬ! 何度でもよみがえるさ
Slide 21
Slide 21 text
言語の世界 Powered by Rabbit 0.9.2 Algol属 Algol → PL/I Algol → Pascal
Slide 22
Slide 22 text
言語の世界 Powered by Rabbit 0.9.2 Algol属 Ada, Eiffel, C, C++, Java,...
Slide 23
Slide 23 text
言語の世界 Powered by Rabbit 0.9.2 Lispへの揺り戻し Smalltalk, Scheme, Ruby,...
Slide 24
Slide 24 text
言語の世界 Powered by Rabbit 0.9.2 言語のカンブリア爆発 カンブリア爆発 古生代カンブリア紀の 間に突如として今日見 られる動物の「門」が出 そろった現象
Slide 25
Slide 25 text
言語の世界 Powered by Rabbit 0.9.2 言語のカンブリア爆発 言語のカンブリア爆発 1960年代後半から 1970年代前半までに 多種多様な言語が誕 生した現象
Slide 26
Slide 26 text
言語の世界 Powered by Rabbit 0.9.2 言語のカンブリア爆発 現在の「重要」な言語分類の基礎 システムプログラミング言語 C:1972 オブジェクト指向言語 Simula:1967 スクリプト言語 Shell:1971 関数型言語 ML:1972
Slide 27
Slide 27 text
言語の世界 Powered by Rabbit 0.9.2 言語のカンブリア爆発 「変な言語」も 配列指向言語 APL:1960 論理型言語 Prolog:1972 並列言語 アクターモデル:1973
Slide 28
Slide 28 text
言語の世界 Powered by Rabbit 0.9.2 つまり、どういうことか キバヤシ 優れた言語のアイディ アは1970年代までに 出揃っているのだよ! MMRメンバー なんだってーーっ!!
Slide 29
Slide 29 text
言語の世界 Powered by Rabbit 0.9.2 言語設計者受難の時代 どうせ既存のものの組 み合わせさ
Slide 30
Slide 30 text
言語の世界 Powered by Rabbit 0.9.2 そうは言っても 人気の言語はそれなりに新しい Perl (1986) Python (1990) Ruby (1995) PHP(1995)
Slide 31
Slide 31 text
言語の世界 Powered by Rabbit 0.9.2 そうは言っても 人気の言語はそれなりに新しい Java (1995) C# (2000) Scala (2003) Erlang (1986)
Slide 32
Slide 32 text
言語の世界 Powered by Rabbit 0.9.2 新しい? とは言っても10年、20年
Slide 33
Slide 33 text
言語の世界 Powered by Rabbit 0.9.2 新しい? 言語の世界じゃ10年く らいじゃまだまだはなた れ小僧さ
Slide 34
Slide 34 text
言語の世界 Powered by Rabbit 0.9.2 新しい言語の動機 作りたかったから 新しいパラダイム 新しい環境 新しい制約
Slide 35
Slide 35 text
言語の世界 Powered by Rabbit 0.9.2 新しいパラダイム 構造化プログラミング オブジェクト指向プログラミング 関数型プログラミング
Slide 36
Slide 36 text
言語の世界 Powered by Rabbit 0.9.2 新しいパラダイム ここ20年くらい登場してないなあ
Slide 37
Slide 37 text
言語の世界 Powered by Rabbit 0.9.2 新しいパラダイム 過去のパラダイムの組み合わせ
Slide 38
Slide 38 text
言語の世界 Powered by Rabbit 0.9.2 新しいパラダイム 既存のパラダイムの組み合わせ 並列+関数型 オブジェクト指向+関数型 並列+論理型
Slide 39
Slide 39 text
言語の世界 Powered by Rabbit 0.9.2 既存のパラダイムの組み合わせ バランスの良い組み合わせ
Slide 40
Slide 40 text
言語の世界 Powered by Rabbit 0.9.2 新しい環境 新しいOS 新しいCPU 新しいアプリケーション
Slide 41
Slide 41 text
言語の世界 Powered by Rabbit 0.9.2 新しいアプリケーション Web MapReduce
Slide 42
Slide 42 text
言語の世界 Powered by Rabbit 0.9.2 新しい制約 CPU数 メモリ量 データ量 アクセス量
Slide 43
Slide 43 text
言語の世界 Powered by Rabbit 0.9.2 どこまでが言語か 文法 ライブラリ アーキテクチャ
Slide 44
Slide 44 text
言語の世界 Powered by Rabbit 0.9.2 どこまでが言語か デザインパターン コミュニティ エコシステム
Slide 45
Slide 45 text
言語の世界 Powered by Rabbit 0.9.2 どこまでが言語か 思想 人格
Slide 46
Slide 46 text
言語の世界 Powered by Rabbit 0.9.2 温故知新
Slide 47
Slide 47 text
言語の世界 Powered by Rabbit 0.9.2 歴史から学ぶ
Slide 48
Slide 48 text
言語の世界 Powered by Rabbit 0.9.2 歴史のパターン
Slide 49
Slide 49 text
言語の世界 Powered by Rabbit 0.9.2 歴史の振り子 集中 vs 分散
Slide 50
Slide 50 text
言語の世界 Powered by Rabbit 0.9.2 歴史の振り子 性能 vs 生産性
Slide 51
Slide 51 text
言語の世界 Powered by Rabbit 0.9.2 歴史の振り子 静的 vs 動的
Slide 52
Slide 52 text
言語の世界 Powered by Rabbit 0.9.2 歴史の振り子 正確さ vs 柔軟さ
Slide 53
Slide 53 text
言語の世界 Powered by Rabbit 0.9.2 未来の言語 APL
Slide 54
Slide 54 text
言語の世界 Powered by Rabbit 0.9.2 APL APLによるライフゲーム
Slide 55
Slide 55 text
言語の世界 Powered by Rabbit 0.9.2 未来の言語 Whitespace
Slide 56
Slide 56 text
言語の世界 Powered by Rabbit 0.9.2 Whitespace Whitespaceによるhello world
Slide 57
Slide 57 text
言語の世界 Powered by Rabbit 0.9.2 未来の言語 新しいぶどう酒は新し い皮袋に [「マタイ 9:17」より引用]
Slide 58
Slide 58 text
言語の世界 Powered by Rabbit 0.9.2 旧来の言語 古いぶどう酒は古い皮 袋に
Slide 59
Slide 59 text
言語の世界 Powered by Rabbit 0.9.2 未来の言語 大規模分散 高抽象度
Slide 60
Slide 60 text
言語の世界 Powered by Rabbit 0.9.2 未来へのパラメータ データ量 アクセス量 CPU数
Slide 61
Slide 61 text
言語の世界 Powered by Rabbit 0.9.2 データ量 ビッグデータ
Slide 62
Slide 62 text
言語の世界 Powered by Rabbit 0.9.2 アクセス量 クラウド ソーシャルゲーム
Slide 63
Slide 63 text
言語の世界 Powered by Rabbit 0.9.2 CPU数 マルチコア クラウド
Slide 64
Slide 64 text
言語の世界 Powered by Rabbit 0.9.2 未来の言語 Erlang Node.js R SQL の発展形
Slide 65
Slide 65 text
言語の世界 Powered by Rabbit 0.9.2 Erlang 分散 アクターモデル
Slide 66
Slide 66 text
言語の世界 Powered by Rabbit 0.9.2 Node.js 大量アクセス 非同期I/O
Slide 67
Slide 67 text
言語の世界 Powered by Rabbit 0.9.2 R 統計・解析 ビッグデータ連携 (R-ODM)
Slide 68
Slide 68 text
言語の世界 Powered by Rabbit 0.9.2 SQL 宣言的データ取得 高抽象度 Hive
Slide 69
Slide 69 text
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ プログラミングの楽しさ
Slide 70
Slide 70 text
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語=プログラミング
Slide 71
Slide 71 text
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語実装=プログラミング
Slide 72
Slide 72 text
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語実装=プログラミング総合芸術
Slide 73
Slide 73 text
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語設計=プログラミング
Slide 74
Slide 74 text
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語設計=発想をプログラミング
Slide 75
Slide 75 text
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ We program you!
Slide 76
Slide 76 text
言語の世界 Powered by Rabbit 0.9.2 Enjoy Programming!