狠狠撸
Submit Search
メタプログラミングと搁耻产测
?
8 likes
?
3,106 views
Kurume Institute of Technology
Follow
久留米ビジネスプラザ Ruby講習会 2014/03/29 前座のお話
Read less
Read more
1 of 29
Download now
Download to read offline
More Related Content
メタプログラミングと搁耻产测
1.
メタプログラミングと Ruby 電子認証局市民ネットワーク福岡 佐塚秀人 2014/3/29 1
2.
近所の小学生 少年A: ば?か! 少年B: ば?かって言うやつが馬鹿なんだぞ! 2014/3/29 2
3.
メタプログラマー プログラムつくるのがプログラマー プログラムをつくるプログラムをするプログラマー 2014/3/29 3
4.
メタって? Meta? 2014/3/29 4
5.
メタ-なんとか ? メタ(meta-)とは、「高次な-」「超-」「-間 の」「-を含んだ」「-の後ろの」等の意味の接頭語。 ギリシャ語から。 ? コンピュータの世界ではよく出てくる言葉なんだ ?
メタ-言語 ? メタ-文法 ? メタ-データ ? メタ-プログラミング 2014/3/29 5
6.
メタプログラミング ? プログラムする機能をプログラムする ? プログラムを生成するようなプログラムをする ?
プログラムを生成しながら動くプログラムをつくる ? プログラミング言語の機能をプログラムする 2014/3/29 6
7.
Myプログラミング ? 書きたいように書けるプログラミング言語 ? より簡潔に書ける文法や機能 ?
目的にあった記法 DSL ? 組み込み言語 2014/3/29 7
8.
プログラムを動かすしくみを 自分で作る ? コンパイラ ? インタプリタ これは作るのはけっこうたいへんだ 既存の言語をカスタマイズ… ?
マクロ?プロセッサ ? トランスレータ ? コンパイラ?コンパイラ(パーザジェネレータ) 2014/3/29 8
9.
Cのプリプロセッサ Cのプリプロセッサは簡単だがいろいろできる? #define begin { #define
end ;} これでC言語をPascal風に記述できる begin x = 10; y = 20 end { x = 10; y = 20; } 2014/3/29 9
10.
昔からUnixにある道具 ? m4 --
マクロプロセッサ ? yacc, lex -- コンパイラ?コンパイラ C言語を変換したり、加工したりする道具 C++言語はもともとはC言語へのトランスレータだった 2014/3/29 10
11.
LISPを知ってますか? ? 世界で2番めに作られた高級言語 ? 1958年、ジョン?マッカーシー ?
プログラムもデータもすべてリスト構造で表現 ? インタプリタ言語 プログラムも内部でリスト構造をしている プログラムをプログラムで操作し、すぐ実行できる メタプログラミングの世界へ! 2014/3/29 11
12.
LISPプログラム 2014/3/29 12
13.
defmacro (defmacro revdo (&rest
lis) (revserse lis) ) > (revdo 1 2 3 +) 6 実行前にプログラムの構造を自由に変更できる ※ただし、リスト表現の範囲だけどね? 2014/3/29 13
14.
インタプリタ言語は素敵 ? 解釈機能自体をプログラミングできるようにできる ? 自分自身の機能を変更できる ?
メタプログラミングで自由自在! ? メタプログラミングの世界へ! 2014/3/29 14
15.
関数型言語 ? 関数を組みわせるプログラミングモデル ? 高階関数 ?
関数自身引数とする関数 ? 関数を組み合わせる機能を関数で記述できる ? 関数 = プログラムのパーツ ? プログラムする機能をプログラムできる! ? メタプログラミングの世界へ! 2014/3/29 15
16.
オブジェクト指向言語 ? オブジェクト指向言語の元祖:Smalltalk80 ? クラスとインスタンス ?
クラスはオブジェクトのひな形 ? Smalltalk80ではクラスもオブジェクト ? クラスをダイナミックに操作できる ? インタプリタ自体がオブジェクト指向で作られている ? メタプログラミングの世界へ! 2014/3/29 16
17.
Ruby ? インタプリタ言語 ? 関数型言語の機能 ?
Smalltak80を継承するオブジェクト指向言語 ? メタプログラミングならRubyでしょ! 2014/3/29 17
18.
Rubyを大改造? ? Ruby on
Rails ? メタプログラミングを駆使したフレームワーク ? 言語の基本機能を積極的に改変する ? Ruby on Railsの記法(文法?)の実現 2014/3/29 18
19.
RubyでDSL ? DSL:ドメイン特化言語 ? Ruby+メタプログラミングで実現 ?
組み込み言語をRubyで… ? mRuby+メタプログラミング… ? 組み込みDSLで簡単プログラミング 2014/3/29 19
20.
やわらかRuby ? オープンクラス/モンキーパッチ ? 柔軟でゆる?い文法 ?
イテレータを基本とした制御構造 ? 手続きブロック ? 関数表現(λ式) 2014/3/29 20
21.
オープンクラス ? クラスの定義をいつでも追加?変更可能 ? クラス機能に自由にパッチ(モンキーパッチ) ?
特異クラス 2014/3/29 21
22.
メソッド?コマンド?宣言? foo(a, b, c) は foo
a, b, c と書いてもいい ご自由に解釈を… 文法上の宣言と思っていたものが、実はメソッド呼び Ex. private宣言 2014/3/29 22
23.
好きに作ろう繰り返し ? イテレータで自由につくる繰り返し ? timesの機能(kai)はこんな風に追加できてしまう class
Fixnum def kai i = 0 while i < self do yield i i += 1 end end end 2014/3/29 23
24.
クラスもメソッドも ? クラスはClassクラスのメソッドなので MyClass =
Class.new(MySuperClass) { … } ? メソッドをつくるメソッド def mymethod(x) { … } は define_method(:mymethod) {|x| … } と書けるし define_method :mymethod do |x| … end でもいい 2014/3/29 24
25.
Rubyの仕組みはおもしろい ? どこからがメタプログラミングなのか? ? RubyはRubyでプログラムされている。 ?
Rubyはかなり自由に手を入れられる。 ? Ruby言語がRubyではない。 2014/3/29 25
26.
DSLの方針 ? 構文はイテレータ ? 一括定義は関数、ブロック、 2014/3/29 26
27.
mRubyでメタプログラミング ? Rubyはかなり大きい ? ちいさなRuby、mRuby ?
組み込み言語として使えるRuby ? C言語じゃなくてmRubyを使う理由 ? メタプログラミングが可能だから… 2014/3/29 27
28.
こんな本が読まれているよう です。 2014/3/29 28
Download