50年前のプログラミング言語 50年後のプログラミング言語

Slides:



Advertisements
Similar presentations
コンピュータサイエンス 概論 2015 平成 27 年 4 月 13 日(月) 担当教員:亀田弘之.
Advertisements

1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
香川 考司 香川研究室の紹介 香川 考司
第3回参考文献発表 PHP言語 岩永逸平.
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング基礎I(再) 山元進.
プログラミング言語としてのR 情報知能学科 白井 英俊.
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
稲葉 一浩 (k.inaba) Python と プログラミングコンテスト 稲葉 一浩 (k.inaba)
2008/03/01 D-BOF k.inaba はじめての initial D 2008/03/01 D-BOF k.inaba
オブジェクト指向言語論 知能情報学部 新田直也.
プログラミング基礎I(再) 山元進.
最適化ソルバーのための Python言語入門
VBA(Visual Basic Application)を使ったプログラミングの初歩概説
Ruby勉強会(第1回) 2006/06/29 竹内豪.
情報処理Ⅱ 2005年10月7日(金).
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
プログラミング言語論 第1回 導入 情報工学科 篠埜 功.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.

プログラミング 田浦健次朗.
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
プログラミング言語論 第1回 導入 情報工学科 篠埜 功.
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
C#とC++とオブジェクト指向 上甲 健史.
平成25年7月14日(月) 東京工科大学 コンピュータサイエンス学部 担当:亀田弘之
プログラミング言語入門 手続き型言語としてのJava
JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう.
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
プログラミング言語入門.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
Structured programming
東京工科大学 コンピュータサイエンス学部 亀田弘之
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
平成29年4月10日(月) 東京工科大学 コンピュータサイエンス学部 担当教員:亀田弘之
Introduction to Soft Computing
コンパイラ 2012年10月1日
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報とコンピュータ 静岡大学工学部 安藤和敏
平成28年4月11日(月) 東京工科大学 コンピュータサイエンス学部 担当教員:亀田弘之
第6回放送授業.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
skill-net(MILESTONE CAI,笈川他,1982)[Fortranの課題選択など]
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
3.1 シューティングゲームの当たり判定 当たったら死亡.
mi-5. プロダクションシステム 人工知能を演習で学ぶシリーズ(5)
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
プログラミング1 プログラミング演習I 第2回.
C#プログラミング実習 第1回.
This slide was a material for the “Reading PLDI Papers (PLDIr)” study group written by Kazuhiro Inaba ( ), under my own understanding of.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
プログラミング 2 静的変数.
Presentation transcript:

50年前のプログラミング言語 50年後のプログラミング言語 #spcamp 2010 BoF

“どんな技術であれ、100年後を予想できるなんて考えるのは傲慢だと 思われるかもしれない。 しかし、我々は既に50年の歴史を持っているということを 考えて欲しい。 過去50年の言語の進化がいかにゆっくりとしたものであるかを 考えれば、100年後を見るということも考え得る範囲だろう。” http://practical-scheme.net/trans/hundred-j.html (google: 百年の言語) 百年の言語 --- The Hundred-Year Language Paul Graham /訳: 川合史朗

50年前の言語 (1960) ALGOL APL COBOL FORTRAN LISP http://www.levenez.com/lang/ (google: computer language history)

今の言語 (2010) Ruby Python Perl PHP ECMAScript Scala Haskell OCaml Erlang JavaScript, ActionScript Scala Haskell OCaml Erlang C C++ Java C# Lisp CommonLisp Scheme Clojure

【議論タイム】 50年前の言語 と 今の言語 違いはなんだろう?

【議論タイム】 「50年後の言語」を 予測しよう! …の前に

“今 (2010)”の “研究者” が 考えている言語をご紹介

すごい型システム def item(s) return “<li>” + s + “</li>” end 例: Google “regular expression type” String item(String s) { return “<li>” + s + “</li>”; } # item(123) コンパイルエラー # item(“p(略)<<<越えられない壁<<<ruby”) 壊れた出力 String(<script>含まない) item(String(/[^<>]*/) s) { return “<li>” + s + “</li>”; } # item(“プギャー> (>_<)m9”) コンパイルエラー!

「スケッチ」プログラミング “だいたいこんな感じ” コーディング list reverse(list p) { list np = null; while(p) { np = new list; np.val = p; np.next = np; p = p.next; } return np; list reverse(list p) { list np = null; while(p) { np = new list; (? = ?;)* } return np; assert(forall i<N: get(p,i) == get(rev(p),N-1-i)); A. Solar-Lezama, “Sketching Approach to Program Synthesis”, 2009 他

「50年後の言語」を 考えてみよう! 【議論タイム】 「今の言語の不満なところが こう直ってるはず!」 「50年後のテクノロジーなら こんなこともできるはず!」

ところでそもそも プログラミング言語、って何? プログラミング言語(プログラミングげんご)とは、コンピュータに対する一連の動作の指示を記述するための人工言語の総称である[1] (wikipedia: プログラミング言語) 1.  ISO 5127—Information and documentation—Vocabulary, clause 01.05.10 では、プログラミング言語を「プログラムを記述するための人工言語」と定義している。

【議論タイム】 「プログラミング言語」を 「コンピュータへの指示」以外に 使えるでしょうか? …の前に、いくつかご紹介タイム

トラックの集配経路 トラックの運行スケジュールの最適化に、 プログラミング言語の最適化技法を使う Ichiro Sato, “A Specification Framework for Earth-friendly Logistics”, 2008, 他

人間の使う言語の「理解」 Chris Baker, “Wild Control Operators”, 2009, 他 (野生の制御構文)

人間の使う言語の「理解」 「xが2で割り切れるなら~」 「xが3で割り切れるなら~」 「xが2か3で割り切れるなら~」 if( x % 2 == 0 ) print(“yes”); 「xが3で割り切れるなら~」 if( x % 3 == 0 ) print(“yes”); 「xが2か3で割り切れるなら~」 if( x%2==0 || x%3==0 ) print(“yes”); △ if( x % (2 || 3)==0 ) print(“yes”); × if( x % (2 か 3) == 0 ) print(“yes”); !??

「か」は制御構文! … (x か y) … if( x % (2か3) == 0 ) print(“yes”); 制御構文の例 if(c) … 文 c の結果によって … を実行する/しない while(c) … 文 c の結果によって … を何回も実行したりしなかったり … (x か y) … if( x % (2か3) == 0 ) print(“yes”);  if( x%2==0 || x%3==0 ) print(“yes”); x と y によって 周りの … を何回も実行したり!! Perl6 の “ジャンクション” / Scala 等の “限定継続”

(x*x = 2 なら x は 分数で書けない) の証明 数学の“証明”をプログラミング 「√2 は無理数」 (x*x = 2 なら x は 分数で書けない) の証明

“証明” と “プログラミング” 型 その型の関数 型チェック ライブラリAPI 定理 証明 証明が論理的に正しい保証 既知の定理

【議論タイム】 「プログラミング言語」を 「コンピュータへの指示」以外に 使えるでしょうか?

まとめ “(1) 100年後の言語は、原理的には、 現在でも設計できる。 (2) そのような言語は、もし存在すれ ば、 現在でもプログラムを書くのに 良い言語かもしれない。 こんなふうにアイディアを並べて見ていると、 100年後の言語を、今、設計したくなってこないかい?” http://practical-scheme.net/trans/hundred-j.html (google: 百年の言語) 百年の言語 --- The Hundred-Year Language Paul Graham /訳: 川合史朗