X



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

なんだろうね。言語仕様の説明=内部実装の説明になっていて
使うためではなく、言語の勉強のための言語だなぁと思った。
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触ったこと無いけど、最近本も充実してきたし、手出してみるかな。
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:???
ポチろうと思ってて忘れてたわ
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の扱いをかなり複雑にしているよな。
なんでそんなものを作ったのか理解できない。

他の言語にはそんなもの無くてもうまくやっていけてるじゃないか。
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を省略できたりするところだと思うんだけど

そんな些細なところじゃないと思うんだけど
0111nobodyさん
垢版 |
2008/08/03(日) 01:54:17ID:???
$@とか$/とかの特殊変数はたいした問題じゃない。使うのは限られてるし、そういうもんだと思えばどうってことない。忘れたら、調べればいいだけ。
isset()なのかis_set()なのか忘れてしまうのと変わらない。
0112nobodyさん
垢版 |
2008/08/03(日) 04:48:01ID:???
正規表現とか$_なんかは奇妙に見えるな。

for(1..40) {
print $_ . "..aho\n" if /3/;
}
0113nobodyさん
垢版 |
2008/08/03(日) 22:19:46ID:???
行末が ; で終わってない言語はクソ
0114nobodyさん
垢版 |
2008/08/03(日) 23:54:50ID:???
おっとECMAScriptの悪口はそこまでにしてもらおうか
0115nobodyさん
垢版 |
2008/08/04(月) 02:25:58ID:???
>>110
いろんなものを省略できるところ。
コンテキストという概念
bless
UTFフラグ
0116nobodyさん
垢版 |
2008/08/04(月) 02:36:41ID:???
perlは記述するコードをUTF8(BOM無し)固定にすりゃいいんだよね
そうすりゃちったぁラクになるべ?
0117nobodyさん
垢版 |
2008/08/04(月) 02:44:47ID:???
コンテキストを省略、blessを省略、何のことだ?
Perlは複雑なデータ構造を表す場合、リファレンスを使う必要があり、リファレンス・デリファレンスで記号が長く続き、読みづらくなるというのはある。
すべてを順番付きのハッシュで済ませらるPHPと比べると、断然見づらい。
が、仕事でプログラムをするような人間が、Cのポインタが分からないとか、Perlのリファレンスが分からないとか、論外だな。
趣味のプログラマーにとってPerlが難解だというのはそうかもしれないが。
0118nobodyさん
垢版 |
2008/08/04(月) 02:51:00ID:???
おそらくUTF8の話は、ム板から得た知識だろうが、マルチバイトを扱う時にUTF8フラグをつける、出力するときに外す、だけでいいことだ。
そもそもUTF8フラグのせいで、ソースが読みづらくなるなんてことは有り得ない話。
0119nobodyさん
垢版 |
2008/08/04(月) 19:54:52ID:???
>>118
本当にそれだけなら、内部で勝手にやってくれという話。
なんでコードでUTF8フラグをつけたり消したりする命令があるのか。

それはUTF8フラグあるせいで、いろんなライブラリが、
UTF8フラグをつけていたり、つけていなかったりするから。

UTF8フラグの存在がなければ、そんな混乱は起きないんだがな。
0120nobodyさん
垢版 |
2008/08/04(月) 19:56:09ID:???
>>117
仕事だから、難解なものでもやれというのはわかる。

だが、今はやるかやらないかの話はしていない。

難解なのか、難解ではないのかの話。
答えは出ている。難解だ。
0121nobodyさん
垢版 |
2008/08/04(月) 21:06:24ID:???
だからどこら辺が難解なの?
PerlのOOなんて変数に名前空間結びつけただけだろ
0122nobodyさん
垢版 |
2008/08/04(月) 21:16:33ID:???
フラグついてりゃ3byte文字も1文字換算だし
ついてなけりゃbyte単位だから処理違うしな
inしてきたものにはかならずフラグつけてoutのときにはずせば混乱はない
decode, encodeってのがちょい紛らわしいネーミングだとおもうけど
0123nobodyさん
垢版 |
2008/08/04(月) 21:37:34ID:???
明示的にデコードしなくてもフラグ付くことがあるのが問題。
暗黙的なスタイルと明示的なスタイルが混在して、もうわけわかめ。
0124nobodyさん
垢版 |
2008/08/05(火) 01:23:55ID:???
もともとの話はPerlのソースコードが読みづらいかどうかだから。
UTF8フラグとソースコードの読みづらさは関係ないし。
0125nobodyさん
垢版 |
2008/08/05(火) 01:42:33ID:???
それってスタイル、好み、技量の問題じゃないの?
読む側、書く側、双方ともに
0126nobodyさん
垢版 |
2008/08/05(火) 09:27:52ID:???
utf8フラグが勝手に付くって何のことだ?
0127nobodyさん
垢版 |
2008/08/05(火) 13:42:50ID:???
>>107
それをプロジェクト内のPerlプログラマ全員にやらせてみろよ
0128nobodyさん
垢版 |
2008/08/05(火) 13:46:43ID:???
色んな書き方が出来る反面 「自分の書き方」 をもてない奴がコピペばかりしたり、
サンプルを自分の書き方に直せない人が多いだけなんだと思う
まぁ利用者が多いゆえの弊害だと思う
0129nobodyさん
垢版 |
2008/08/05(火) 14:14:52ID:???
>>127
それはPerl以外の言語にもいえる事では
0130nobodyさん
垢版 |
2008/08/05(火) 15:04:15ID:???
>>129
Perlは他言語に比べ突出してると思う。
でもコード規約でなんとかなる。
0131nobodyさん
垢版 |
2008/08/05(火) 19:44:17ID:y2irazDO
PERLの記述性はそのままRUBYにも当てはまる。
JAVAみたいな型の指定を強制してステップをかける言語の方が記述性が低い分、統一感は高いと思うが、PYTHON以外のスクリプト言語はどれも大差ない。
0132nobodyさん
垢版 |
2008/08/05(火) 21:03:27ID:???
コード規約で何とかしないで
Pragmaでも作ってほしいね。
$_ の使用を禁止するとか
0133nobodyさん
垢版 |
2008/08/05(火) 22:48:20ID:???
$_ は可読性の低下を招くので使わないようにしてる
0134nobodyさん
垢版 |
2008/08/06(水) 11:40:34ID:???
$_を使わないことで可読性は上がるだろう
しかしそれだったらrubyかPHP使う
0135nobodyさん
垢版 |
2008/08/06(水) 15:54:52ID:???
$_ の問題だけで Perl を使わない理由にはならない
0136nobodyさん
垢版 |
2008/08/06(水) 17:00:44ID:???
同じ変数を使いまわさない。
つまり、一つの関数内で同じ変数名の変数を
違う目的に使わないって事だけど、
これ、言語に限らずコーディング規約としてでてくる。
多分だれしも納得がいく理由だろう。

$_ はそれと同じ問題をはらんでいる。

変数名にはわかりやすい名前をつけましょう。
0137nobodyさん
垢版 |
2008/08/06(水) 17:52:20ID:???
Perlはstrictプラグマが標準で、変数を宣言して使うから、不用意に変数を初期化したり、ゴミとして残ることがない。
局所化されてるから、安心して同じ変数名を使いまわしていい。
他の言語のように、条件分岐やループの深いところで突然多次元配列に値を入れたりすることがないし、実行されない処理についてもコンパイラがエラーを検知してくれるから、発生しづらい条件のエラーがすぐにわかる。
ただ、strictプラグマはPerlのコード品質を押し上げているわけだけど、KENTのCGIレベルのプログラマーからだとジャンプアップが大きく、初級のプログラマーがPHPに流れる原因にもなってる。
が、PHPはどう書いてもそれなりに動いてしまうばっかりにレベルの停滞を招いてるという面もある。
0138nobodyさん
垢版 |
2008/08/06(水) 18:02:05ID:???
Perlのファニーレターは、可読性を上げる点でも役立ってる。
Perlでは普通こう書く。
foreach $data (@data) {
print $data;
}
PHPでは、こう書くしかない。
foreach ($data as $tmp) {
print $tmp ;
}
あるいは、こうしてみたり。
foreach ($data_list as $data) {
print $data ;
}
変数名からだけでデータ型が分かるのがPerlの可読性の高さ。
0139nobodyさん
垢版 |
2008/08/06(水) 18:50:51ID:???
foreach $data (@data) {
print $data;
}
って何か気持ち悪いんだよな・・・
でいつもこうしてます
foreach $data (@datas) {
print $data;
}
0141nobodyさん
垢版 |
2008/08/06(水) 21:32:17ID:???
>>139
そう言われると俺も @data とか @file とかにしてたwww
あなたはやっぱり @lists とかにしてるの?
リストそのものが複数形だとおもうんだけど 。。。 あれ違うか?w
0142nobodyさん
垢版 |
2008/08/06(水) 21:36:39ID:???
いくら名前空間が別でも同じ名前にはしないな。
0143nobodyさん
垢版 |
2008/08/07(木) 01:45:13ID:???
>>138
> Perlのファニーレターは、可読性を上げる点でも役立ってる。
> Perlでは普通こう書く。
> foreach $data (@data) {
> print $data;
> }

foreach my $datum (@data) {
print $datum;
}

0144nobodyさん
垢版 |
2008/08/07(木) 01:47:11ID:???
>>141
> あなたはやっぱり @lists とかにしてるの?

foreach my $elem (@list) {
print $elem;
}

ナドト
0145nobodyさん
垢版 |
2008/08/07(木) 03:54:18ID:???
名前空間が別なのではない。変数のスコープが別なのだ。
$tmpとか$nとか$iとか、数行のブロック内でしか使わない一時的な変数のためにイチイチ長ったらしい変数名を使うのは可読性が下がる。
コードの大事なポイントをぼかしてしまうから。
0146nobodyさん
垢版 |
2008/08/07(木) 05:17:58ID:???
変数名やらコーディング規約やらはPerl Best Practicesを読むといいですよ
書いてあることがすべて正しいとは思わないけどbetter practiceが見つかるのは間違いないです
0147nobodyさん
垢版 |
2008/08/07(木) 12:57:23ID:???
>>139
dataは既に複数形で、単数形はdatum云々、、、、
0149nobodyさん
垢版 |
2008/08/07(木) 15:47:43ID:???
>>141 >>143 >>147
ああ、俺がアホだった・・ dataの時はdatumを使います
でもいつも厳密には考えてなく
my @dates = localtime;
my $date = sprintf '%04d/%02d/%02d', $dates[5] + 1900, $dates[4] + 1, $dates[3];
のような事もしちゃってます。こっちのが気持ち悪いか・・・
Perl6では@date[1]のように参照出来るらしいから感覚的に少しはマシになるのかも
0150nobodyさん
垢版 |
2008/08/07(木) 21:02:27ID:???
横レスすると手を抜いて配列に入れるんじゃなくて
スカラーでもハッシュでもいいから名前付けたほうが見やすいわかりやすいのは明白
0151nobodyさん
垢版 |
2008/08/07(木) 21:05:44ID:???
変数名の頭に$とか@とかつけるのが
そもそも変。
0152nobodyさん
垢版 |
2008/08/07(木) 21:43:13ID:???
そう?俺はわかりやすいからいいけど
欲を言えば
0153nobodyさん
垢版 |
2008/08/07(木) 23:20:00ID:???
PerlからPHPに移ってからは@を使う妥当性が全然わからなくなった。
0154nobodyさん
垢版 |
2008/08/07(木) 23:28:05ID:???
@rrayとか$calarてのはやめて欲しいないな。これもPerl文化か?
0156nobodyさん
垢版 |
2008/08/08(金) 01:58:02ID:???
>>私はこれで Perl から乗り換えました。
この程度では乗り換えるに値しない

まぁ、Switch Case 文はデフォで欲しいですがw
0157nobodyさん
垢版 |
2008/08/08(金) 02:46:52ID:???
>>156
givenとwhenでよければありますよ。
バージョン5.10以上ですけど。
0158nobodyさん
垢版 |
2008/08/08(金) 17:18:36ID:ZoI5nNzi
変数には記号がある方が分かりやすい。
PHPみたいにデータ型によらず同じ記号であっても。
JAVAとかC#みたいにIDE前提でカラーリングされてればなくても良いけど。
その点じゃRUBYが一番見づらい。
0159nobodyさん
垢版 |
2008/08/08(金) 17:23:11ID:???
変数という意味で記号をつけるのはわかるが、
配列やスカラーやハッシュを区別する為の記号ってのは
意味がわからない。

他の言語を見ればわかるように、そんな区別なんかしなくても
問題なく実装できてるじゃん。
0160nobodyさん
垢版 |
2008/08/08(金) 20:57:31ID:???
ハンガリアン記法見ても分かるように、変数名からデータ型が分かれば可読性が上がる。
0161nobodyさん
垢版 |
2008/08/09(土) 00:16:40ID:???
可読性とコーディングをいうまえに明示的に宣言できる構造体をくれ
0162nobodyさん
垢版 |
2008/08/09(土) 00:39:15ID:???
そんなあなたに Class::Struct
0164nobodyさん
垢版 |
2008/08/11(月) 14:58:12ID:5LE+LZJY
ruby perl 比較 python ruby perl ruby perl 違い ruby perl php ruby perl 速度
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況