Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
world-of-languages.pdf
Search
Yukihiro Matsumoto
February 21, 2012
8
1.3k
world-of-languages.pdf
Yukihiro Matsumoto
February 21, 2012
Tweet
Share
More Decks by Yukihiro Matsumoto
See All by Yukihiro Matsumoto
30 Years of Ruby
matz
0
310
mruby VM
matz
0
61
Contribute to Ruby (RubyKaigi 2022)
matz
0
180
Ruby_through_Reserved_Words.pdf
matz
0
120
Ruby after 25 years
matz
1
1k
What is software made of?
matz
0
590
Streem
matz
8
3.6k
Ruby Everywhere
matz
11
120k
Featured
See All Featured
Building Adaptive Systems
keathley
38
2.3k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
How to Ace a Technical Interview
jacobian
276
23k
How GitHub (no longer) Works
holman
310
140k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
GraphQLとの向き合い方2022年版
quramy
43
13k
Thoughts on Productivity
jonyablonski
67
4.3k
YesSQL, Process and Tooling at Scale
rocio
169
14k
The Cult of Friendly URLs
andyhume
78
6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
4 Signs Your Business is Dying
shpigford
180
21k
Transcript
言語の世界 Powered by Rabbit 0.9.2 言語の世界 ネットワーク応用通信研究所 楽天 技術研究所 Rubyアソシエーション
@yukihiro_matz まつもとゆきひろ Yukihiro "Matz" Matsumoto
言語の世界 Powered by Rabbit 0.9.2 プログラミング言語って? 言語ってなんだろう?
言語の世界 Powered by Rabbit 0.9.2 プログラミング言語って? プログラム=手順書 手順書記述用人工言語
言語の世界 Powered by Rabbit 0.9.2 プログラミング言語って? プログラム=理想記述 思考表現用人工言語
言語の世界 Powered by Rabbit 0.9.2 せめぎあうふたつの立場 機械のためか? 人間のためか?
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) FORmula TRANslator
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) 人間のため 数式でプログラムできるよう
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) 機械のため 速く計算できるためにはどんなことでも
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) ループアンローリング ベクトル化
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) 背景 コンピュータが遅かった
言語の世界 Powered by Rabbit 0.9.2 FORTRAN (1954) 背景 「言語の常識」がまだなかった
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) LISt Processor
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) 人間のため 数学的概念からスタート ラムダ計算
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) 機械のため IBM704計算機 car=content
of address register cdr=content of data register
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) 人間のため ガーベージコレクター
言語の世界 Powered by Rabbit 0.9.2 LISP (1958) 人間のため Lispプログラマは値はなんでも知っている が、コストについてはなにも知らない
言語の世界 Powered by Rabbit 0.9.2 LISP vs FORTRAN 人間主義 vs
機械主義
言語の世界 Powered by Rabbit 0.9.2 勝者は? Algol!
言語の世界 Powered by Rabbit 0.9.2 漁夫の利 原始的すぎるFORTRAN 数学的すぎるLISP 求められたのはアルゴリズム記述
言語の世界 Powered by Rabbit 0.9.2 新たな伝統の誕生 Algolは滅びぬ! 何度でもよみがえるさ
言語の世界 Powered by Rabbit 0.9.2 Algol属 Algol → PL/I Algol
→ Pascal
言語の世界 Powered by Rabbit 0.9.2 Algol属 Ada, Eiffel, C, C++,
Java,...
言語の世界 Powered by Rabbit 0.9.2 Lispへの揺り戻し Smalltalk, Scheme, Ruby,...
言語の世界 Powered by Rabbit 0.9.2 言語のカンブリア爆発 カンブリア爆発 古生代カンブリア紀の 間に突如として今日見 られる動物の「門」が出
そろった現象
言語の世界 Powered by Rabbit 0.9.2 言語のカンブリア爆発 言語のカンブリア爆発 1960年代後半から 1970年代前半までに 多種多様な言語が誕
生した現象
言語の世界 Powered by Rabbit 0.9.2 言語のカンブリア爆発 現在の「重要」な言語分類の基礎 システムプログラミング言語 C:1972 オブジェクト指向言語
Simula:1967 スクリプト言語 Shell:1971 関数型言語 ML:1972
言語の世界 Powered by Rabbit 0.9.2 言語のカンブリア爆発 「変な言語」も 配列指向言語 APL:1960 論理型言語
Prolog:1972 並列言語 アクターモデル:1973
言語の世界 Powered by Rabbit 0.9.2 つまり、どういうことか キバヤシ 優れた言語のアイディ アは1970年代までに 出揃っているのだよ!
MMRメンバー なんだってーーっ!!
言語の世界 Powered by Rabbit 0.9.2 言語設計者受難の時代 どうせ既存のものの組 み合わせさ
言語の世界 Powered by Rabbit 0.9.2 そうは言っても 人気の言語はそれなりに新しい Perl (1986) Python
(1990) Ruby (1995) PHP(1995)
言語の世界 Powered by Rabbit 0.9.2 そうは言っても 人気の言語はそれなりに新しい Java (1995) C#
(2000) Scala (2003) Erlang (1986)
言語の世界 Powered by Rabbit 0.9.2 新しい? とは言っても10年、20年
言語の世界 Powered by Rabbit 0.9.2 新しい? 言語の世界じゃ10年く らいじゃまだまだはなた れ小僧さ
言語の世界 Powered by Rabbit 0.9.2 新しい言語の動機 作りたかったから 新しいパラダイム 新しい環境 新しい制約
言語の世界 Powered by Rabbit 0.9.2 新しいパラダイム 構造化プログラミング オブジェクト指向プログラミング 関数型プログラミング
言語の世界 Powered by Rabbit 0.9.2 新しいパラダイム ここ20年くらい登場してないなあ
言語の世界 Powered by Rabbit 0.9.2 新しいパラダイム 過去のパラダイムの組み合わせ
言語の世界 Powered by Rabbit 0.9.2 新しいパラダイム 既存のパラダイムの組み合わせ 並列+関数型 オブジェクト指向+関数型 並列+論理型
言語の世界 Powered by Rabbit 0.9.2 既存のパラダイムの組み合わせ バランスの良い組み合わせ
言語の世界 Powered by Rabbit 0.9.2 新しい環境 新しいOS 新しいCPU 新しいアプリケーション
言語の世界 Powered by Rabbit 0.9.2 新しいアプリケーション Web MapReduce
言語の世界 Powered by Rabbit 0.9.2 新しい制約 CPU数 メモリ量 データ量 アクセス量
言語の世界 Powered by Rabbit 0.9.2 どこまでが言語か 文法 ライブラリ アーキテクチャ
言語の世界 Powered by Rabbit 0.9.2 どこまでが言語か デザインパターン コミュニティ エコシステム
言語の世界 Powered by Rabbit 0.9.2 どこまでが言語か 思想 人格
言語の世界 Powered by Rabbit 0.9.2 温故知新
言語の世界 Powered by Rabbit 0.9.2 歴史から学ぶ
言語の世界 Powered by Rabbit 0.9.2 歴史のパターン
言語の世界 Powered by Rabbit 0.9.2 歴史の振り子 集中 vs 分散
言語の世界 Powered by Rabbit 0.9.2 歴史の振り子 性能 vs 生産性
言語の世界 Powered by Rabbit 0.9.2 歴史の振り子 静的 vs 動的
言語の世界 Powered by Rabbit 0.9.2 歴史の振り子 正確さ vs 柔軟さ
言語の世界 Powered by Rabbit 0.9.2 未来の言語 APL
言語の世界 Powered by Rabbit 0.9.2 APL APLによるライフゲーム
言語の世界 Powered by Rabbit 0.9.2 未来の言語 Whitespace
言語の世界 Powered by Rabbit 0.9.2 Whitespace Whitespaceによるhello world
言語の世界 Powered by Rabbit 0.9.2 未来の言語 新しいぶどう酒は新し い皮袋に [「マタイ 9:17」より引用]
言語の世界 Powered by Rabbit 0.9.2 旧来の言語 古いぶどう酒は古い皮 袋に
言語の世界 Powered by Rabbit 0.9.2 未来の言語 大規模分散 高抽象度
言語の世界 Powered by Rabbit 0.9.2 未来へのパラメータ データ量 アクセス量 CPU数
言語の世界 Powered by Rabbit 0.9.2 データ量 ビッグデータ
言語の世界 Powered by Rabbit 0.9.2 アクセス量 クラウド ソーシャルゲーム
言語の世界 Powered by Rabbit 0.9.2 CPU数 マルチコア クラウド
言語の世界 Powered by Rabbit 0.9.2 未来の言語 Erlang Node.js R SQL
の発展形
言語の世界 Powered by Rabbit 0.9.2 Erlang 分散 アクターモデル
言語の世界 Powered by Rabbit 0.9.2 Node.js 大量アクセス 非同期I/O
言語の世界 Powered by Rabbit 0.9.2 R 統計・解析 ビッグデータ連携 (R-ODM)
言語の世界 Powered by Rabbit 0.9.2 SQL 宣言的データ取得 高抽象度 Hive
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ プログラミングの楽しさ
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語=プログラミング
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語実装=プログラミング
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語実装=プログラミング総合芸術
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語設計=プログラミング
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ 言語設計=発想をプログラミング
言語の世界 Powered by Rabbit 0.9.2 言語の楽しさ We program you!
言語の世界 Powered by Rabbit 0.9.2 Enjoy Programming!