Your SlideShare is downloading. ×
0
Alluren of prototype-based OOP
Alluren of prototype-based OOP
Alluren of prototype-based OOP
Alluren of prototype-based OOP
Alluren of prototype-based OOP
Alluren of prototype-based OOP
Alluren of prototype-based OOP
Alluren of prototype-based OOP
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Alluren of prototype-based OOP

939

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
939
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. プロトタイプベースOOPへの誘い Hachioji.pm #2 LT @ytnobody
  • 2. あんた誰ですか?● twitter id: @ytnobody ● 本名: あずまさとし – 北海道函館市出身 近頃Elonaというローグライク – 1980年11月13日生まれ ゲームにハマってます。 ● 誕生日がキムタクと同じ! – だからどうした● 相模大野のITベンチャーに在籍 ● N/Wおよびサーバの構築/管理 ● 最近は開発がメインに。● プライベート ● ScalaとForthが楽しい今日この頃
  • 3. プロトタイプベースOOPとは?● オブジェクト指向プログラミングの一種。 ● 別名「インスタンスベースOOP」。 ● クラスの概念が無いとか、クラスとオブジェクトを区別しないと か。 ● 新規オブジェクトの生成は、既存オブジェクトを複製すること で実現。 – 基底オブジェクトが最低でも1つ存在● 大抵の場合、OOP=クラスベースOOP ● JavaもRubyもPythonもPHPもC++もScalaもetc... ● 無論、PerlのOOPもクラスベースOOP – bless { ... }, MyClass; ってやりますよね
  • 4. どんな言語で使えるか ナニコレ?● SELF(セルフ) マイナー言語ばっかりじゃない。 ● プロトタイプベースOOPの元祖。 こんなの使いたくないよーだ!● Lua(ルア) ● ブラジル発のスクリプト言語。MMORPGの組み込み用等で人気。● Io(アイオー) ● 割と最近開発されたカッコイイ言語 – Actorとかco-routineが使えて、並行性もばっちり – 正規表現がPerlっぽい – 高階関数など、関数型言語の側面も併せ持つらしい● Cyan(サイアン) ● 2008年、一人の天才高校生によって開発された言語● Javascript ● 自前のjs作ったことのある人なら、一度は体験してるはず。● Perl 何を言ってるんですか。 ● 拙作「Plass」を使えば、結構簡単に書けます! これを見たらね、 ● 実はこんなの使わなくても実現できますけどね>< 「あー僕もプロトタイプOOPしたい」 って言うに決まってるんですから!
  • 5. 今回のLTテーマ 「Perl以外」が、敢えてPerl
  • 6. Plassを使った プロトタイプベースOOPの一例humanオブジェクトを作成use Plass;my $human = plass hello => sub { ,"Hi. My name is ".shift->name."." }; humanオブジェクトを継承したprogrammerオブジェクトを作成 my $programmer = $human->plass( code => sub { bless { work => $_[1] }, Code } );programmerオブジェクトを継承したmikeオブジェクトを作成my $mike = $programmer->plass( name => mike); mikeさんからのご挨拶です。 $mike->hello; ### Hi. My name is mike.では彼にコードを作ってもらいます。my $thing = $mike->code;print ref( $thing ); ### Code
  • 7. プロトタイプOOPの功罪● メリット ● 概念的に簡易である ● 拡張が容易である ● 継承が容易である ● オブジェクトに対してメソッド等を動的に結びつけること が可能● デメリット ● オブジェクトの管理が煩雑になりがち ● クラスの概念が無いので型チェックしようとすると曖昧に なる
  • 8. ご清聴ありがとうございました!

×