SlideShare a Scribd company logo
1 of 8
Download to read offline
プロトタイプベースOOPへの誘い




    Hachioji.pm #2 LT

       @ytnobody
あんた誰ですか?
●   twitter id: @ytnobody
    ●   本名: あずまさとし
        –   北海道函館市出身           近頃Elonaというローグライク
        –   1980年11月13日生まれ      ゲームにハマってます。
            ●   誕生日がキムタクと同じ!
                 – だからどうした

●   相模大野のITベンチャーに在籍
    ●   N/Wおよびサーバの構築/管理
    ●   最近は開発がメインに。
●   プライベート
    ●   ScalaとForthが楽しい今日この頃
プロトタイプベースOOPとは?
●   オブジェクト指向プログラミングの一種。
    ●   別名「インスタンスベースOOP」。
    ●   クラスの概念が無いとか、クラスとオブジェクトを区別しないと
        か。
    ●   新規オブジェクトの生成は、既存オブジェクトを複製すること
        で実現。
        –   基底オブジェクトが最低でも1つ存在
●   大抵の場合、OOP=クラスベースOOP
    ●   JavaもRubyもPythonもPHPもC++もScalaもetc...
    ●   無論、PerlのOOPもクラスベースOOP
        –   bless { ... }, MyClass; ってやりますよね
どんな言語で使えるか
                                                  ナニコレ?
●   SELF(セルフ)                                マイナー言語ばっかりじゃない。
    ●   プロトタイプベースOOPの元祖。                     こんなの使いたくないよーだ!
●   Lua(ルア)
    ●   ブラジル発のスクリプト言語。MMORPGの組み込み用等で人気。
●   Io(アイオー)
    ●   割と最近開発されたカッコイイ言語
        –   Actorとかco-routineが使えて、並行性もばっちり
        –   正規表現がPerlっぽい
        –   高階関数など、関数型言語の側面も併せ持つらしい
●   Cyan(サイアン)
    ●   2008年、一人の天才高校生によって開発された言語
●   Javascript
    ●   自前のjs作ったことのある人なら、一度は体験してるはず。
●   Perl
                                                何を言ってるんですか。
    ●   拙作「Plass」を使えば、結構簡単に書けます!                  これを見たらね、
    ●   実はこんなの使わなくても実現できますけどね><              「あー僕もプロトタイプOOPしたい」
                                              って言うに決まってるんですから!
今回のLTテーマ

 「Perl以外」




が、敢えてPerl
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'
プロトタイプOOPの功罪
●   メリット
    ●   概念的に簡易である
    ●   拡張が容易である
    ●   継承が容易である
    ●   オブジェクトに対してメソッド等を動的に結びつけること
        が可能
●   デメリット
    ●   オブジェクトの管理が煩雑になりがち
    ●   クラスの概念が無いので型チェックしようとすると曖昧に
        なる
ご清聴ありがとうございました!

More Related Content

What's hot

Small Basicをご存じですか?
Small Basicをご存じですか?Small Basicをご存じですか?
Small Basicをご存じですか?Tadahiro Higuchi
 
2014 08-30 life with roslyn
2014 08-30 life with roslyn2014 08-30 life with roslyn
2014 08-30 life with roslynshibuki
 
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けてRuby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて善弘 植木
 
コードに潜むC++の未定義動作達
コードに潜むC++の未定義動作達コードに潜むC++の未定義動作達
コードに潜むC++の未定義動作達Azaika At
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm鉄次 尾形
 
TypeScriptは明日から使うべき
TypeScriptは明日から使うべきTypeScriptは明日から使うべき
TypeScriptは明日から使うべきMasahiro Wakame
 
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由Kohei Taniguchi
 
インデントを減らそう
インデントを減らそうインデントを減らそう
インデントを減らそう知之 朝枝
 
俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターン俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターンMasayuki KaToH
 
インターフェイス実装の活用例 AS編
インターフェイス実装の活用例 AS編インターフェイス実装の活用例 AS編
インターフェイス実装の活用例 AS編Yoshitaka Kimisaki
 
pythonで始める筋トレ(競技プログラミング)
pythonで始める筋トレ(競技プログラミング)pythonで始める筋トレ(競技プログラミング)
pythonで始める筋トレ(競技プログラミング)shunki fujiwara
 
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#ssusera3d157
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部Masahiro Wakame
 

What's hot (19)

Small Basicをご存じですか?
Small Basicをご存じですか?Small Basicをご存じですか?
Small Basicをご存じですか?
 
2014 08-30 life with roslyn
2014 08-30 life with roslyn2014 08-30 life with roslyn
2014 08-30 life with roslyn
 
無名関数のすすめ
無名関数のすすめ無名関数のすすめ
無名関数のすすめ
 
初心者目線でIo t
初心者目線でIo t初心者目線でIo t
初心者目線でIo t
 
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けてRuby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて
 
コードに潜むC++の未定義動作達
コードに潜むC++の未定義動作達コードに潜むC++の未定義動作達
コードに潜むC++の未定義動作達
 
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipmIT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
 
TypeScriptは明日から使うべき
TypeScriptは明日から使うべきTypeScriptは明日から使うべき
TypeScriptは明日から使うべき
 
恋に落ちるRuby
恋に落ちるRuby恋に落ちるRuby
恋に落ちるRuby
 
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
オブジェクト指向プログラマが今関数型言語を学ばないといけない理由
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
 
HTML基礎
HTML基礎HTML基礎
HTML基礎
 
インデントを減らそう
インデントを減らそうインデントを減らそう
インデントを減らそう
 
俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターン俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターン
 
jQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScriptjQuery 対応ライブラリと TypeScript
jQuery 対応ライブラリと TypeScript
 
インターフェイス実装の活用例 AS編
インターフェイス実装の活用例 AS編インターフェイス実装の活用例 AS編
インターフェイス実装の活用例 AS編
 
pythonで始める筋トレ(競技プログラミング)
pythonで始める筋トレ(競技プログラミング)pythonで始める筋トレ(競技プログラミング)
pythonで始める筋トレ(競技プログラミング)
 
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 

Viewers also liked

Египет 18.10 - 23.10.2007
Египет  18.10 -  23.10.2007Египет  18.10 -  23.10.2007
Египет 18.10 - 23.10.2007Anna Katrulina
 
Gmm 2015 messaggio papa francesco
Gmm 2015 messaggio papa francescoGmm 2015 messaggio papa francesco
Gmm 2015 messaggio papa francescoMaike Loes
 
Vlada menshosti fin2
Vlada menshosti fin2Vlada menshosti fin2
Vlada menshosti fin2Iryna Shvets
 
Service learning presentation
Service learning presentationService learning presentation
Service learning presentationDiane Nguyen
 
Watch my doc!
Watch my doc!Watch my doc!
Watch my doc!stoliros
 
Io vangelo iii_avvento_anno_b_14 dicembre
Io vangelo iii_avvento_anno_b_14 dicembreIo vangelo iii_avvento_anno_b_14 dicembre
Io vangelo iii_avvento_anno_b_14 dicembreMaike Loes
 
Study space times
Study space timesStudy space times
Study space timesstoliros
 
Lectionline XXVI domenica del t o 28 settembre 2014
Lectionline XXVI domenica del t o 28 settembre 2014Lectionline XXVI domenica del t o 28 settembre 2014
Lectionline XXVI domenica del t o 28 settembre 2014Maike Loes
 
LU fakultāšu Domnieku seminars
LU fakultāšu Domnieku seminarsLU fakultāšu Domnieku seminars
LU fakultāšu Domnieku seminarsPeteris Jurcenko
 
Newmedia biz oa biz sales app_이항녕
Newmedia biz oa biz sales app_이항녕Newmedia biz oa biz sales app_이항녕
Newmedia biz oa biz sales app_이항녕Hang Nyeong Lee
 
Brainstorm of genre and music magazines
Brainstorm of genre and music magazinesBrainstorm of genre and music magazines
Brainstorm of genre and music magazinesstoliros
 

Viewers also liked (20)

Arp Attack
Arp AttackArp Attack
Arp Attack
 
Египет 18.10 - 23.10.2007
Египет  18.10 -  23.10.2007Египет  18.10 -  23.10.2007
Египет 18.10 - 23.10.2007
 
Generos cine
Generos cine Generos cine
Generos cine
 
Gender
GenderGender
Gender
 
Gmm 2015 messaggio papa francesco
Gmm 2015 messaggio papa francescoGmm 2015 messaggio papa francesco
Gmm 2015 messaggio papa francesco
 
Oa html 5
Oa html 5Oa html 5
Oa html 5
 
Vlada menshosti fin2
Vlada menshosti fin2Vlada menshosti fin2
Vlada menshosti fin2
 
Service learning presentation
Service learning presentationService learning presentation
Service learning presentation
 
Watch my doc!
Watch my doc!Watch my doc!
Watch my doc!
 
alcoholic addiction
alcoholic addiction alcoholic addiction
alcoholic addiction
 
Latitude Africa
Latitude AfricaLatitude Africa
Latitude Africa
 
Io vangelo iii_avvento_anno_b_14 dicembre
Io vangelo iii_avvento_anno_b_14 dicembreIo vangelo iii_avvento_anno_b_14 dicembre
Io vangelo iii_avvento_anno_b_14 dicembre
 
Study space times
Study space timesStudy space times
Study space times
 
.
..
.
 
Lectionline XXVI domenica del t o 28 settembre 2014
Lectionline XXVI domenica del t o 28 settembre 2014Lectionline XXVI domenica del t o 28 settembre 2014
Lectionline XXVI domenica del t o 28 settembre 2014
 
LU fakultāšu Domnieku seminars
LU fakultāšu Domnieku seminarsLU fakultāšu Domnieku seminars
LU fakultāšu Domnieku seminars
 
Newmedia biz oa biz sales app_이항녕
Newmedia biz oa biz sales app_이항녕Newmedia biz oa biz sales app_이항녕
Newmedia biz oa biz sales app_이항녕
 
Apple on fire
Apple on fireApple on fire
Apple on fire
 
Brainstorm of genre and music magazines
Brainstorm of genre and music magazinesBrainstorm of genre and music magazines
Brainstorm of genre and music magazines
 
Hachioji.pm #13 LT
Hachioji.pm #13 LTHachioji.pm #13 LT
Hachioji.pm #13 LT
 

Similar to Alluren of prototype-based OOP

最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!Yuji Nojima
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49shoma h
 
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworksYAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworksNaoto Koshikawa
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)hajikami
 
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクトPhjosh(仮)プロジェクト
Phjosh(仮)プロジェクトMoriyoshi Koizumi
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)nomuken
 
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたPhpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたAkira Kaneda
 
20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみたShugo Numano
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)parrotstudio
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできることモノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできることKazumi IWANAGA
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドYAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドkeroyonn
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話Naoto Koshikawa
 
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!仕事でも Groovy を使おう!
仕事でも Groovy を使おう!Oda Shinsuke
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2Takuya Nishimoto
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Yusuke Wada
 

Similar to Alluren of prototype-based OOP (20)

最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
 
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
Pythonista による Pythonista のための Scala 紹介 in BPStudy #49
 
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworksYAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)
 
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクトPhjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)
 
Lombok ハンズオン
Lombok ハンズオンLombok ハンズオン
Lombok ハンズオン
 
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたPhpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
 
20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできることモノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドYAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
仕事でも Groovy を使おう!
仕事でも Groovy を使おう!仕事でも Groovy を使おう!
仕事でも Groovy を使おう!
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
 
社内勉強会1 go lang
社内勉強会1 go lang 社内勉強会1 go lang
社内勉強会1 go lang
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
 

More from azuma satoshi

finally (not finally)
finally (not finally)finally (not finally)
finally (not finally)azuma satoshi
 
時を駆けるINSERT.pptx
時を駆けるINSERT.pptx時を駆けるINSERT.pptx
時を駆けるINSERT.pptxazuma satoshi
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャazuma satoshi
 
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1azuma satoshi
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyazuma satoshi
 
Perlbeginnes 9 opening
Perlbeginnes 9 openingPerlbeginnes 9 opening
Perlbeginnes 9 openingazuma satoshi
 
Perlbeginners proposal
Perlbeginners proposalPerlbeginners proposal
Perlbeginners proposalazuma satoshi
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解するazuma satoshi
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようazuma satoshi
 
ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向azuma satoshi
 
Perlbeginnes 4 keynote
Perlbeginnes 4 keynotePerlbeginnes 4 keynote
Perlbeginnes 4 keynoteazuma satoshi
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話azuma satoshi
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talkazuma satoshi
 
Perlbeginnes 2 keynote
Perlbeginnes 2 keynotePerlbeginnes 2 keynote
Perlbeginnes 2 keynoteazuma satoshi
 
Perl Beginners #1 keynote
Perl Beginners #1 keynotePerl Beginners #1 keynote
Perl Beginners #1 keynoteazuma satoshi
 
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向azuma satoshi
 

More from azuma satoshi (20)

finally (not finally)
finally (not finally)finally (not finally)
finally (not finally)
 
時を駆けるINSERT.pptx
時を駆けるINSERT.pptx時を駆けるINSERT.pptx
時を駆けるINSERT.pptx
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
 
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
 
L tthon
L tthonL tthon
L tthon
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
 
Perlbeginnes 9 opening
Perlbeginnes 9 openingPerlbeginnes 9 opening
Perlbeginnes 9 opening
 
Perlbeginners proposal
Perlbeginners proposalPerlbeginners proposal
Perlbeginners proposal
 
Chibapm01 lt
Chibapm01 ltChibapm01 lt
Chibapm01 lt
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解する
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
 
ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向
 
Perlbeginnes 4 keynote
Perlbeginnes 4 keynotePerlbeginnes 4 keynote
Perlbeginnes 4 keynote
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talk
 
PSGIへの誘い
PSGIへの誘いPSGIへの誘い
PSGIへの誘い
 
Perlbeginnes 2 keynote
Perlbeginnes 2 keynotePerlbeginnes 2 keynote
Perlbeginnes 2 keynote
 
Hachiojipm 14 LT
Hachiojipm 14 LTHachiojipm 14 LT
Hachiojipm 14 LT
 
Perl Beginners #1 keynote
Perl Beginners #1 keynotePerl Beginners #1 keynote
Perl Beginners #1 keynote
 
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向
 

Alluren of prototype-based OOP

  • 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したい」 って言うに決まってるんですから!
  • 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の功罪 ● メリット ● 概念的に簡易である ● 拡張が容易である ● 継承が容易である ● オブジェクトに対してメソッド等を動的に結びつけること が可能 ● デメリット ● オブジェクトの管理が煩雑になりがち ● クラスの概念が無いので型チェックしようとすると曖昧に なる