トップページ⇒php
268コメント66KB

Perlのオブジェクト指向って無理やり実装だなw

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/06/09(月) 02:48:24ID:leLDOgm2
いまさらだが、後付感たっぷりでワロタ
PHPの方がはるかに自然な形で実装しているわ。

なんだろうね。言語仕様の説明=内部実装の説明になっていて
使うためではなく、言語の勉強のための言語だなぁと思った。
0010nobodyさん2008/06/09(月) 18:08:02ID:???
>>9
perlずっとやってきて心が揺らいでるんだが
泥臭い部分はみんな嫌い?
0011nobodyさん2008/06/09(月) 18:39:24ID:???
>>1
いまさらって書けば許されると思ったか馬鹿初心者。さすがに10年越しの話題は本気で痛いよ。
0012nobodyさん2008/06/09(月) 19:38:22ID:leLDOgm2
Perl6が出れば、そんな批判は過去のものとなる
0013nobodyさん2008/06/09(月) 20:24:51ID:???
Perl6ってオブジェクト指向言語なの?
0014nobodyさん2008/06/09(月) 20:34:32ID:???
一昔前に、どんなLLでも飲み込むPerlみたいなのの話題が出てたけど
その後の話まったく聞かないな
PHPもそれに飲み込まれるとか言い張ってる奴いたけど
今考えたらそんなの普通に存在価値ねーだろwww
0015nobodyさん2008/06/09(月) 21:41:23ID:???
うーん、まあ、そうなんだけど、それでもPerlでオブジェクト指向らしきものは出来る品。
というか、Perlはツール作ったり、WEBアプリ作ったりするのがメインなんで、オブジェクト指向なんてそれほど必要に迫られないし。
0016nobodyさん2008/06/10(火) 00:49:24ID:???
まあ、create_function(文字列) しかないウンコを頬張って喜ぶ>>1にはドン引きさせられるけどなw
0017nobodyさん2008/06/10(火) 00:59:59ID:???
phpの匿名関数には丼引きだけど
スレタイ的にはあまり関係ねえよな
そんなら俺はJavaScript最強説で泥沼化に参加するぜ

ごめん最強は無理ありすぎた
疑似スレッド処理やろうとしたらsetTimeout地獄に陥るし
構造凝るとコールバック関数の嵐になるし
0018nobodyさん2008/06/10(火) 01:03:21ID:???
Ruby最強でFA
0019nobodyさん2008/06/10(火) 11:20:06ID:???
RubyのオブジェクトシステムはSmalltalkばりに古くさいよ。
0020nobodyさん2008/06/10(火) 13:48:36ID:???
GoogleマンセーでPythonに即飛びついたりしなかったお前らが誇らしいよ。
インデントとか笑わせるなよ。
0021nobodyさん2008/06/10(火) 14:35:39ID:RGxt/Gkf
>>16
PHP6で改善されるんじゃなかったっけ?

PHP6とPerl6、どっちが先に出るか見ものだw
0022nobodyさん2008/06/10(火) 15:11:43ID:???
クロージャ使えると何がそんなに便利なの?使えなくても大して不便ではなくね?ドラスティックに変わるの?
0023nobodyさん2008/06/10(火) 18:03:58ID:???
あらゆる高級言語を扱ってきたLL神だが攻守最強はECMAScriptだと悟った
0024nobodyさん2008/06/10(火) 20:57:15ID:???
Periの場合、5.99の次は5.9910とか言うから永遠に6は出ない。
アキレスは亀に追いつけない。
0025nobodyさん2008/06/10(火) 21:00:02ID:???
間違えた。
5.99の次は5.910だ。
590900
591000
みたいに数字だけ増えていく。

実際、最近のバージョンアップでやってるしw
0026nobodyさん2008/06/10(火) 21:24:49ID:???
ネームスペースの無いPHPの方がPerlより断然キモいっつーの。
Perlのあの程度のオブジェクト指向に苦労するくらいだから
程度が知れるわな。
0027nobodyさん2008/06/10(火) 21:27:29ID:???
関数内でglobal書かせるのも
インスタンス化するごとにblessさせるのも似たようなもんだ。
無理矢理感って意味では。

ただPHPの変数の扱いがきもすぎるのは同意
0028nobodyさん2008/06/10(火) 23:35:51ID:???
> 関数内でglobal書かせるのも
えっ? グローバル変数なんか普通使わないでしょ?
0029nobodyさん2008/06/10(火) 23:38:09ID:???
何が何でもOOPって考えやめろよ。
メリットとデメリットを比較して、有利な方を使うだろ普通。
小規模だったら、OOP使わないよ。
0030nobodyさん2008/06/11(水) 00:07:10ID:???
PHPの変数スコープは関数単位もだん。なんつーか、ワープロのマクロ言語並。
0031nobodyさん2008/06/11(水) 00:17:02ID:???
こういうひねくれたスレを立ててPHP叩きをするPerlユーザーってキモイな
0032nobodyさん2008/06/11(水) 00:59:44ID:???
>>31
PHPユーザーの方がキモいから安心しろ。
0033nobodyさん2008/06/11(水) 01:51:10ID:???
>>30
クラスに書いたら、クラス単位だけど?

ねぇ。PHP知っている?
0034nobodyさん2008/06/11(水) 02:39:22ID:???
正直、rubyやpythonがここに上がらないのは当たれ前なんだよね。
むしろ、PerlやPHPの拡張によってOOPを強引にでも実現してきたことを誉めてあげたい。

バカにするけど、PHPなんて、
OOPだけ見れば、結構良く実装できてると思うよ。

Perlは、もうちょっとだけど……。
0035nobodyさん2008/06/11(水) 18:22:48ID:???
普通の言語は変数のスコープはブロック単位なんだよ。
PHP以外の言語をやったことがあればすぐに分かること。
0036nobodyさん2008/06/11(水) 21:22:50ID:???
ねぇ?本当に他の言語やってる?

ブロック単位のスコープがあるかは半々ってところだろ。

まあよめ。
http://blog.livedoor.jp/dankogai/archives/50960425.html

0037nobodyさん2008/06/11(水) 22:00:04ID:???
oopの話題でoopが得意じゃない人のブログ出すとかwww
0038nobodyさん2008/06/12(木) 01:55:28ID:???
おや、スコープの話で不利になったから、オブジェクト指向の話に戻すんですねw
0039nobodyさん2008/06/12(木) 03:26:01ID:???
ハッスルしてるphp厨は全スルーが常識
0040nobodyさん2008/06/12(木) 21:41:26ID:???
↑スルーできない場合の典型的な言い訳
0041nobodyさん2008/06/12(木) 23:57:46ID:???
いやスルーするしないの前の話
馬鹿なの?
0042nobodyさん2008/06/13(金) 02:28:20ID:???
Rubyはブロック内でレキシカルスコープを作る。
0043nobodyさん2008/06/13(金) 02:46:57ID:???
PHPは5でもネームスペースが無いから
正直使い物にならない。
0044nobodyさん2008/06/13(金) 03:09:53ID:???
同様の理由で、C言語も使いものにならない
0045nobodyさん2008/06/13(金) 08:32:50ID:???
C/C++,Java,VB,C#もブロック内でレキシカル変数を作れる罠。
0046nobodyさん2008/06/13(金) 13:46:16ID:???
JavaScriptは?

っていうか関数レベルのスコープがあれば
ブロックレベルのスコープは無くても良いなぁ。

おれ、そんなに長い関数書かないしw
0047nobodyさん2008/06/16(月) 11:40:21ID:???
Perlって
0048nobodyさん2008/06/17(火) 09:30:30ID:???
Perlでクラスを使ってみたいが、
毎回コンストラクタを自力実装するのが面倒で。
0049nobodyさん2008/06/17(火) 13:51:05ID:???
そこでMooseですよ
0050nobodyさん2008/06/17(火) 22:14:08ID:???
コンストラク作るのは面倒じゃないだろ。その仕組みを理解するのは面倒というか大変だが。
0051nobodyさん2008/06/21(土) 13:06:50ID:???
>>1
比較相手にPHPを持ち出し、しかもPHPの方がマシって…wwwww
PHPは糞中の糞
0052nobodyさん2008/06/21(土) 14:14:24ID:???
perlよりは上等だよ
0053nobodyさん2008/06/22(日) 18:07:57ID:???
>>51
サーバサイドスクリプトとして比較するならPHPの方が上に決まってんじゃん
0054nobodyさん2008/06/22(日) 18:34:19ID:???
まあ、PHP以外の、PerlとかRubyとか知ってる人にとっては、PHPの低機能はつらいものがあるよ。
初心者が書いても、上級者が書いても、同じようなコードにしかならないんだから。
プログラム書いててこれほどつまらない言語はない。
0055nobodyさん2008/06/22(日) 18:45:36ID:???
ふむ、同意だけど

もしかしたらそれで逆に
保守性の水準を確保してたりしてな
0056nobodyさん2008/06/22(日) 18:54:53ID:???
同じ様なコードにしかならないことが低機能?イミフ
0057nobodyさん2008/06/22(日) 20:38:16ID:???
コードを書くことが目的なんでしょw

$_ みたいな同じ名前の変数ばかり多用する
醜いソースかいたりなw
0058nobodyさん2008/06/22(日) 21:34:09ID:???
Javaのように厳密に書くことも出来なければ、PerlやRubyのように記述性が高いというわけでもない。簡単だから覚えるのは速いのが唯一の長所。それがPHP。
0059nobodyさん2008/06/22(日) 23:33:15ID:???
でもまあ、クラスの定義を
普通に class キーワードを使って
かけるのはすばらしいと思うよ。

class Foo extends Bar {
 private $a;

 function __construct() {}
 function func() {}
}

$foo = new Foo();
$foo->func();

オブジェクト指向を知っている人なら誰だってすぐわかるでしょ?
自然なオブジェクト指向。
0060nobodyさん2008/06/23(月) 00:03:23ID:???
クラスベースOOPの書法が大好きなのは判わんでもないけどさ
そもそもクラスベースってほんとに良いものなのかとか語られる昨今だしな
ECMAScrips3rdの単純さと汎用性の兼ね合いなんか絶妙だしな
0061nobodyさん2008/06/23(月) 00:16:33ID:???
世の中の主流はクラスベースOOP
0062nobodyさん2008/06/23(月) 00:24:08ID:???
うん判るのよそれは
boost触っててクラスとかもうどうでもよくね見たいに
脳味噌が腐った豆腐になってる馬鹿の戯れ言です

rubyやpythonその辺の手懐けかた上手いよな
perlにはこの際、我が道突っ切ってもらった方が面白そうな
0063nobodyさん2008/06/24(火) 08:04:23ID:???
文法は一番PHPがわかりやすいというか、自然だわな。CやJavaやPerlなんかを知ってれば、特別学習しないでもだいたい予測つく。
0064nobodyさん2008/06/25(水) 20:05:34ID:eRXwF1Bb
つか、OOPの書き方そのものの参考文献が少なすぎるんだよ。

 ・OOPとは……知ってるから!
 ・言語XXXでOOP……基礎過ぎるから!
 ・言語XXXでデザインパターン……急に高度過ぎるから!

もっと、初・中級者向けのOOP書き方入門が欲しいですよ。

オブジェクト指向Perlマスターコースだって?
あんなの日本語じゃねーよ(読破したけどさw)
0065nobodyさん2008/06/25(水) 22:44:06ID:???
>>64
>・言語XXXでOOP……基礎過ぎるから!
>・言語XXXでデザインパターン……急に高度過ぎるから!
そこは別に飛躍してなくね?

OOPの基礎が判ったら、ちょっと実践パターン見て行きましょうか……
という流れだし
逆にどうしろと。

単に、実感湧かないってことかもしれないな。
Perlじゃないけど、俺はるびま出張版として出版された「正しいRuby
コードの書き方講座」が言語問わず参考になった。
他人の成果物の設計に駄目出ししまくるだけの本wなので、妙に実感あったw
青木に煽られない程度のコードを保ちたいなという、欲求が探究心に繋がった感じ。
ああいう傾向の本、言語問わず他にねえもんかな。

>あんなの日本語じゃねーよ(読破したけどさw)
逆に読みたくなるぜ、その感想w
多分おれはヘン
0066nobodyさん2008/06/26(木) 00:52:18ID:???
>>65
たぶん、分かってるとは思うけど、
OOP基礎 → デザパタ本は、急に難しくなりすぎだよ。
OOP基礎本は、本当に基礎の基礎しか書いてないもん。
その方向は間違ってないんだけどさ。

その間を埋める本がないんだよ。

つまり、>>65のいう「正しいRubyコードの書き方講座」や
Periで言えば、宮川氏のML(いつものことながら途中で飽きやがった!)のような。

デザパタってある程度実践詰んでないと、
意味……というかメリット理解できないじゃん。

Ruby触ったこと無いけど、最近本も充実してきたし、手出してみるかな。
0067nobodyさん2008/06/28(土) 14:14:12ID:SGqDbYHd
私はこれで Perl から乗り換えました。
http://web.archive.org/web/20010427071311/www.ruby-lang.org/ja/column/v0004.html

バベル案内
http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm
Perlもまた、間もなくなくなる。

Perl, Python, Ruby の比較
http://www.shido.info/py/python1.html

perl/Ruby、これから覚えるべきなのは?
http://q.hatena.ne.jp/1145610898
0068nobodyさん2008/06/29(日) 01:47:37ID:???
しかし何でPHP5は寸前のところでnamespaceをなくしてしまったのか。
クラス名をアンダーバーで繋げるという回避策は悲しすぎる。
唯一悔やまれる点だわ。
0069nobodyさん2008/06/29(日) 02:20:58ID:???
そんなにネームスペースって必要かなぁ?

アンダーバーでつなげればいいだけでしょ?
0070nobodyさん2008/06/29(日) 02:30:45ID:???
それがまんどくせえんだよ
0071nobodyさん2008/06/29(日) 02:40:05ID:???
>>70
えっ?
(ネームスペースがあるほかの言語で)ネームスペースの部分省略してるの?
もし名前がかぶったらどうするの?
0072nobodyさん2008/06/29(日) 11:24:57ID:???
ネームスペースがない、パッケージがないのは、PHPにろくなクラスライブラリがない理由の一つだな。
好き勝手にファイル名やクラス名をつけるから、使いまわしが利かない。
0073nobodyさん2008/06/29(日) 11:41:43ID:???
すごいこじ付けを見たw
0074nobodyさん2008/07/01(火) 17:19:40ID:???
ネームスペースがかぶったらどうすんの?
0075nobodyさん2008/07/04(金) 23:38:23ID:???
PHP5.3からnamespage復活するのってホント?
0076nobodyさん2008/07/08(火) 05:19:35ID:TOo0hU7/
目次 - oreilly.co.jp -- Online Catalog: 初めてのRubyより 1章 ようこそ、Rubyのある生活へ
1.1 Rubyの特徴
1.1.1 オブジェクト指向言語
1.1.2 より良いPerl
http://blog.livedoor.jp/dankogai/archives/51077051.html
0077nobodyさん2008/07/08(火) 08:36:37ID:???
ポチろうと思ってて忘れてたわ
0078nobodyさん2008/07/09(水) 00:13:50ID:???
>>24
ペリw
0079nobodyさん2008/07/11(金) 16:14:23ID:???
>>72
>ネームスペースがない、パッケージがないのは、PHPにろくなクラスライブラリがない理由の一つだな。
それは探せる頭が無いだけ。
ネイティブインストールしなきゃ使えないPerlモジュールより、よっぽど充実してて汎用も効くクラス多いよ。
0080nobodyさん2008/07/12(土) 02:14:10ID:???
PHPにまともなクラスライブラリなんてないよ。あるのは膨大な組み込み関数とあまたあるフレームワーク付属のヘルパークラスだけ。
0081nobodyさん2008/07/12(土) 02:47:00ID:???
まともなクラスライブラリが無い。ってことは
足りないクラスライブリががあるってことだよな?

その足りないクラスライブラリ、いってみて。
0082nobodyさん2008/07/12(土) 03:46:28ID:???
少なくともPearにあるライブラリのPHP5・E_STRICT対応版
0083nobodyさん2008/07/12(土) 11:27:01ID:???
notice出ちゃなんでだめなの?
0084nobodyさん2008/07/12(土) 15:03:35ID:???
もしかしてここ間違ってないですか?っていう程度。
意図的にそうしているのなら問題ない。
0085nobodyさん2008/07/12(土) 20:15:01ID:???
本来ZendフレームワークがPearを引き継ぐはずだったけど、そうはなりませんでした。
0086nobodyさん2008/07/12(土) 20:18:18ID:???
2-3号前のWEB+DBプレスの座談会に書いてあったけど、普通そこそこPHPやってると飽きる。他の言語に行く。だから、ユーザコミュニティのレベルが一向に上がらない。
0087nobodyさん2008/07/12(土) 22:00:02ID:???
>>86
それは飲み屋での雑談よりも信頼すべき話なのか?
0088nobodyさん2008/07/13(日) 06:47:45ID:???
小山哲氏って日本のPHP界じゃトップクラスの有名人だと思うけど、PHPのダメさをあれだけ自覚して語ってるのにはちょっと好印象を持った。仕事として割り切ってるんだろうな。
0089nobodyさん2008/07/13(日) 09:48:13ID:aIClzZPC
Ruby 及び Perl におけるクラスの生成について。
http://b.hatena.ne.jp/entry/http://tomato.or.tp/programming/memo/class/class.html
0090nobodyさん2008/07/14(月) 18:01:42ID:???
>>88
> 小山哲氏って日本のPHP界じゃトップクラスの有名人だと思うけど
だれ?

デイトレーダー? 日本の歴史学者?

ぐぐってもわからないや。
0091nobodyさん2008/07/14(月) 18:15:31ID:???
日本のPHP界っていうほどのコミュニティがあるの?
0092nobodyさん2008/07/18(金) 11:00:23ID:UyOFQs+N
344 :デフォルトの名無しさん:2008/07/18(金) 00:56:41
>>334
同意。
PerlのEncodeは終わってる。

言っておくが、自分には使える。
Perl好きだし、Encodeモジュールもわかっているつもり。
ただ、そこまでPerlにはまっていない周りには使えないし、わかってもらえない。
これが致命的。
(よくはまるのは、UTF-8フラグのついた文字列と
バイト列としての UTF-8文字列の違いとかのあたり)

それに、ソースコードを UTF-8 で書くと、システムがローカルエンコーディングの場合
ファイルを開いたりするのさえ面倒。

Unicode がらみのスクリプトを書くたびに、

sub e { Encode::encode('cp932', $_[0]) }
sub d { Encode::decode('cp932', $_[0]) }
sub E { map { Encode::encode('cp932', $_) } @_ }
sub D { map { Encode::decode('cp932', $_) } @_ }
↑こんなのを上に貼って、
open IN, e"日本語.txt";
とか書いたり、デバッグする時に
b 30 ($str eq d"日本語")
とかやったりしてるけど、正直言って超バッドノウハウ。
人が見てもやっぱりわからないし。
0093nobodyさん2008/07/18(金) 12:29:11ID:???
UTF-8フラグの存在がUnicodeの扱いをかなり複雑にしているよな。
なんでそんなものを作ったのか理解できない。

他の言語にはそんなもの無くてもうまくやっていけてるじゃないか。
0094nobodyさん2008/07/18(金) 12:34:30ID:???
>>92の元書き込み
http://pc11.2ch.net/test/read.cgi/tech/1180713251/l50
0095nobodyさん2008/07/18(金) 22:19:32ID:???
PHPだと全部mb_に差し替えないと行けない。
0096nobodyさん2008/07/18(金) 22:29:23ID:???
> PHPだと全部mb_に差し替えないと行けない。

見てのとおり、すごくわかりやすいルールです。

一方Perlの場合・・・複雑すぎて
ここでは説明し切れません ;;
0097nobodyさん2008/07/18(金) 23:17:48ID:???
複雑者ねー世。外人が作ったライブラリでも日本人が作ったライブラリでも透過的に扱える。
0098nobodyさん2008/07/18(金) 23:21:26ID:???
ただし、外人が作ったライブラリがUTF-8(UTF8フラグ)を考慮して
ちゃんと作られている場合は。だろ?
0099nobodyさん2008/07/19(土) 01:30:32ID:???
最近でたオブジェクト指向Perlの本ってアルパカ本と比べてどうなの?
0100nobodyさん2008/07/19(土) 01:53:35ID:???
Encodeは始め面倒だな〜と思ってJcodeに逃げてたけど使い慣れてくるとしっくりとくる。
0101nobodyさん2008/07/19(土) 18:13:37ID:???
そりゃPerl標準なんだからしっくりこないとダメだろw

問題は、慣れないといけないような仕様だってことだ。
0102nobodyさん2008/07/20(日) 01:21:38ID:???
別にJcodeで済むんだったら、Jcodeでもいいけどな。
0103nobodyさん2008/07/24(木) 12:41:16ID:???
Ruby = オブジェクト指向Perl でしょ?
0104nobodyさん2008/08/02(土) 01:11:51ID:U1SzvOGo
「美しいコードを書けるからRubyを選んだ」---Ruby on Rails作者 David Heinemeier Hansson氏:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20060620/241346/


DHH:いろんなPerlソースを見ていると,頭が爆発しそうでした。
なぜかというと,どのコードを見てもスタイルがそれぞれ違って,
正しいのはどれかがわからない。
それぞれおもしろいんだけど,自己主張が激しすぎると感じました。
一方で,Rubyで書いたものはどれも,
同じことをする場合はだいたい似たように見える。
この「統一感」がすごく重要でした。
0105nobodyさん2008/08/02(土) 11:29:04ID:???
>>104
Perlは確かにひどいが、Rubyも大して統一感なんてないけどな…
0106nobodyさん2008/08/02(土) 15:59:10ID:???
Perlはuse strictを使えるのがいい。
0107nobodyさん2008/08/02(土) 23:05:16ID:???
Perlはひどい書き方ができるけどきれいに書こうと思えば書けるだろ。
0108nobodyさん2008/08/03(日) 00:32:48ID:???
strictプラグマを使えば、PerlはLLの中で一番厳密なコーディングを強制される。
PHPなんかだと、コンテントタイプヘッダが自動で出力されるとか、最近は減ったけどregister globalsがオンになってるせいで、それこそやりたい放題に書いてもそれなりに動いてしまう。
多分、書き慣れたPerlが怪奇に見えるのは、関数に()が省略できたり、returnを省略できたりするところだと思うんだけど、それはRubyも一緒だよね。
0109nobodyさん2008/08/03(日) 00:44:26ID:???
>書き慣れたPerlが怪奇に見えるのは、関数に()が省略できたり、returnを省略できたりするところだと思うんだけど

そんな些細なところじゃないと思うんだけど
0110nobodyさん2008/08/03(日) 01:52:23ID:???
じゃ、どの辺?
■ このスレッドは過去ログ倉庫に格納されています