Perlのオブジェクト指向って無理やり実装だなw
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/06/09(月) 02:48:24ID:leLDOgm2PHPの方がはるかに自然な形で実装しているわ。
なんだろうね。言語仕様の説明=内部実装の説明になっていて
使うためではなく、言語の勉強のための言語だなぁと思った。
0102nobodyさん
2008/07/20(日) 01:21:38ID:???0103nobodyさん
2008/07/24(木) 12:41:16ID:???0104nobodyさん
2008/08/02(土) 01:11:51ID:U1SzvOGohttp://itpro.nikkeibp.co.jp/article/NEWS/20060620/241346/
DHH:いろんなPerlソースを見ていると,頭が爆発しそうでした。
なぜかというと,どのコードを見てもスタイルがそれぞれ違って,
正しいのはどれかがわからない。
それぞれおもしろいんだけど,自己主張が激しすぎると感じました。
一方で,Rubyで書いたものはどれも,
同じことをする場合はだいたい似たように見える。
この「統一感」がすごく重要でした。
0106nobodyさん
2008/08/02(土) 15:59:10ID:???0107nobodyさん
2008/08/02(土) 23:05:16ID:???0108nobodyさん
2008/08/03(日) 00:32:48ID:???PHPなんかだと、コンテントタイプヘッダが自動で出力されるとか、最近は減ったけどregister globalsがオンになってるせいで、それこそやりたい放題に書いてもそれなりに動いてしまう。
多分、書き慣れたPerlが怪奇に見えるのは、関数に()が省略できたり、returnを省略できたりするところだと思うんだけど、それはRubyも一緒だよね。
0109nobodyさん
2008/08/03(日) 00:44:26ID:???そんな些細なところじゃないと思うんだけど
0110nobodyさん
2008/08/03(日) 01:52:23ID:???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:???0116nobodyさん
2008/08/04(月) 02:36:41ID:???そうすりゃちったぁラクになるべ?
0117nobodyさん
2008/08/04(月) 02:44:47ID:???Perlは複雑なデータ構造を表す場合、リファレンスを使う必要があり、リファレンス・デリファレンスで記号が長く続き、読みづらくなるというのはある。
すべてを順番付きのハッシュで済ませらるPHPと比べると、断然見づらい。
が、仕事でプログラムをするような人間が、Cのポインタが分からないとか、Perlのリファレンスが分からないとか、論外だな。
趣味のプログラマーにとってPerlが難解だというのはそうかもしれないが。
0118nobodyさん
2008/08/04(月) 02:51:00ID:???そもそもUTF8フラグのせいで、ソースが読みづらくなるなんてことは有り得ない話。
0119nobodyさん
2008/08/04(月) 19:54:52ID:???本当にそれだけなら、内部で勝手にやってくれという話。
なんでコードでUTF8フラグをつけたり消したりする命令があるのか。
それはUTF8フラグあるせいで、いろんなライブラリが、
UTF8フラグをつけていたり、つけていなかったりするから。
UTF8フラグの存在がなければ、そんな混乱は起きないんだがな。
0120nobodyさん
2008/08/04(月) 19:56:09ID:???仕事だから、難解なものでもやれというのはわかる。
だが、今はやるかやらないかの話はしていない。
難解なのか、難解ではないのかの話。
答えは出ている。難解だ。
0121nobodyさん
2008/08/04(月) 21:06:24ID:???PerlのOOなんて変数に名前空間結びつけただけだろ
0122nobodyさん
2008/08/04(月) 21:16:33ID:???ついてなけりゃbyte単位だから処理違うしな
inしてきたものにはかならずフラグつけてoutのときにはずせば混乱はない
decode, encodeってのがちょい紛らわしいネーミングだとおもうけど
0123nobodyさん
2008/08/04(月) 21:37:34ID:???暗黙的なスタイルと明示的なスタイルが混在して、もうわけわかめ。
0124nobodyさん
2008/08/05(火) 01:23:55ID:???UTF8フラグとソースコードの読みづらさは関係ないし。
0125nobodyさん
2008/08/05(火) 01:42:33ID:???読む側、書く側、双方ともに
0126nobodyさん
2008/08/05(火) 09:27:52ID:???0128nobodyさん
2008/08/05(火) 13:46:43ID:???サンプルを自分の書き方に直せない人が多いだけなんだと思う
まぁ利用者が多いゆえの弊害だと思う
0131nobodyさん
2008/08/05(火) 19:44:17ID:y2irazDOJAVAみたいな型の指定を強制してステップをかける言語の方が記述性が低い分、統一感は高いと思うが、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:???0136nobodyさん
2008/08/06(水) 17:00:44ID:???つまり、一つの関数内で同じ変数名の変数を
違う目的に使わないって事だけど、
これ、言語に限らずコーディング規約としてでてくる。
多分だれしも納得がいく理由だろう。
$_ はそれと同じ問題をはらんでいる。
変数名にはわかりやすい名前をつけましょう。
0137nobodyさん
2008/08/06(水) 17:52:20ID:???局所化されてるから、安心して同じ変数名を使いまわしていい。
他の言語のように、条件分岐やループの深いところで突然多次元配列に値を入れたりすることがないし、実行されない処理についてもコンパイラがエラーを検知してくれるから、発生しづらい条件のエラーがすぐにわかる。
ただ、strictプラグマはPerlのコード品質を押し上げているわけだけど、KENTのCGIレベルのプログラマーからだとジャンプアップが大きく、初級のプログラマーがPHPに流れる原因にもなってる。
が、PHPはどう書いてもそれなりに動いてしまうばっかりにレベルの停滞を招いてるという面もある。
0138nobodyさん
2008/08/06(水) 18:02:05ID:???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:???print $data;
}
って何か気持ち悪いんだよな・・・
でいつもこうしてます
foreach $data (@datas) {
print $data;
}
0140nobodyさん
2008/08/06(水) 20:39:27ID:???0141nobodyさん
2008/08/06(水) 21:32:17ID:???そう言われると俺も @data とか @file とかにしてたwww
あなたはやっぱり @lists とかにしてるの?
リストそのものが複数形だとおもうんだけど 。。。 あれ違うか?w
0142nobodyさん
2008/08/06(水) 21:36:39ID:???0143nobodyさん
2008/08/07(木) 01:45:13ID:???> Perlのファニーレターは、可読性を上げる点でも役立ってる。
> Perlでは普通こう書く。
> foreach $data (@data) {
> print $data;
> }
foreach my $datum (@data) {
print $datum;
}
0144nobodyさん
2008/08/07(木) 01:47:11ID:???> あなたはやっぱり @lists とかにしてるの?
foreach my $elem (@list) {
print $elem;
}
ナドト
0145nobodyさん
2008/08/07(木) 03:54:18ID:???$tmpとか$nとか$iとか、数行のブロック内でしか使わない一時的な変数のためにイチイチ長ったらしい変数名を使うのは可読性が下がる。
コードの大事なポイントをぼかしてしまうから。
0146nobodyさん
2008/08/07(木) 05:17:58ID:???書いてあることがすべて正しいとは思わないけどbetter practiceが見つかるのは間違いないです
0148nobodyさん
2008/08/07(木) 13:36:43ID:???0149nobodyさん
2008/08/07(木) 15:47:43ID:???ああ、俺がアホだった・・ 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:???0154nobodyさん
2008/08/07(木) 23:28:05ID:???0155nobodyさん
2008/08/08(金) 00:05:16ID:+HJwvv2Xhttp://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
0156nobodyさん
2008/08/08(金) 01:58:02ID:???この程度では乗り換えるに値しない
まぁ、Switch Case 文はデフォで欲しいですがw
0158nobodyさん
2008/08/08(金) 17:18:36ID:ZoI5nNziPHPみたいにデータ型によらず同じ記号であっても。
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:???0163nobodyさん
2008/08/09(土) 10:35:24ID:???0164nobodyさん
2008/08/11(月) 14:58:12ID:5LE+LZJY0165nobodyさん
2008/08/15(金) 23:16:47ID:???そんなもんか。
0166nobodyさん
2008/08/15(金) 23:18:00ID:???0167nobodyさん
2008/08/15(金) 23:28:15ID:???0168nobodyさん
2008/08/16(土) 01:42:46ID:???Perlの場合はクラスベースじゃないから。JavaScriptとかもそうだけど。
0169nobodyさん
2008/08/16(土) 03:32:51ID:???0170nobodyさん
2008/08/16(土) 04:00:50ID:???Perlは分類上クラスベース。
Javascriptのようにインスタンス単位でメソッドを増やしたりする芸当はできないよ。
データメンバは増やせたりするけど。
0171nobodyさん
2008/08/16(土) 08:25:19ID:???0172nobodyさん
2008/08/16(土) 12:27:40ID:???0173nobodyさん
2008/08/16(土) 14:42:26ID:???0174nobodyさん
2008/08/16(土) 16:08:42ID:???0175nobodyさん
2008/08/16(土) 17:29:17ID:???0178nobodyさん
2008/08/18(月) 18:57:43ID:???0179nobodyさん
2008/08/19(火) 02:03:57ID:z5IDWLYshttp://subtech.g.hatena.ne.jp/cho45/20080818/1218995299
0180nobodyさん
2008/08/19(火) 03:32:07ID:???わざわざシフトキーを多用したいなんて・・・
0181nobodyさん
2008/08/19(火) 12:56:03ID:???0182nobodyさん
2008/08/19(火) 15:23:01ID:???0183nobodyさん
2008/08/25(月) 05:10:09ID:etndctNH0184nobodyさん
2008/08/25(月) 06:58:00ID:YRD+4CK60185nobodyさん
2008/08/26(火) 11:32:03ID:???0186nobodyさん
2008/08/28(木) 05:22:41ID:dedtAPQImerb
http://wiki.merbivore.com/pages/tutorials
0187nobodyさん
2008/08/28(木) 11:14:54ID:???data['hoge'] の動作を自前で設定できたらいいなと思ったことはないかい
data['hoge'] でも data['Hoge'] でも data['HOGE'] でも data[:hoge] でも data の hoge が呼べたらいいなとか
あと、メソッドだからプロファイラで Hoge#[] の使用回数がきちんとカウントされるぞ
ていうかこのへんは普段は意識することないし「実はメソッドだったんです!」「うわ徹底ぶりキモっ!」でいいとは思う
0188nobodyさん
2008/08/29(金) 02:04:05ID:oI9LreIE僕は、あの屋上屋を架すみたいに積み上げたり、既存文法の意義の変更とかで、
済し崩し的に拡張して行くあのゴチャゴチャ感が Perl らしくて好きだよ。
C++ も似た感じで好きだ。
0189nobodyさん
2008/08/29(金) 08:06:09ID:???最近は車輪探す手間のほうがでかくなってるしな
0191nobodyさん
2008/08/30(土) 23:27:24ID:???0192nobodyさん
2008/09/01(月) 13:46:31ID:???[]がメソッド名なら、arr[1] = 'a'はarr.[](1,'a')こんな感じに書くべきだけど、それじゃ変だからローカルルールででっち上げてるわけでしょ。
その勝手な感じについていけない。
0193nobodyさん
2008/09/01(月) 18:57:28ID:???Ruby から見れば、for 文 と each メソッドの関係のような単なるシンタックスシュガーに過ぎない
irb> h = Hash.new
irb> h.[]=('key1','value1')
irb> p h
{"key1"=>"value1"}
irb> p h.[]('key1')
"value1"
誰も array[i] 形式や hash[key] の使用を勧めてはいないぞ
記号だけのメソッドが気になるなら、Array#push や Hash#store を使うといい
0194nobodyさん
2008/09/02(火) 01:34:16ID:???0195nobodyさん
2008/09/04(木) 13:09:19ID:NZf+T+5v初めてPerl触って思ったこととか - ずっと君のターン
ttp://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/technohippy/20080903%231220457999
0196nobodyさん
2008/09/04(木) 14:06:58ID:???Rubyは関係ないし、RailsのDSLっぽい無茶な書き方を嫌がってる人は少なくない
0197nobodyさん
2008/09/05(金) 06:22:58ID:4aFuBrsn>PHPの方がはるかに自然な形で実装しているわ。
って言ってるけど、PHP って他の組み込みの機能が何となく不自然な気がする。
何というか、統一感のないユーティリティ・ライブラリって感じ。
(だったような。ちょこっと触っただけだからかもしれないけど。
まぁ、PHPは言語と言うよりツール色)
Perl 5 の OOP は、確かに他の言語の OOP 機能からの見方で見ると不自然に見えるけど、
Perl 言語からの見方で見ると、とても自然に見える。
それに、専用の文法でがちがちに固めていなくて、幾つかの機能の組み合わせで実現するやり方は、
見方によっては美しくも感じる(Unix っぽい美学)。
0198nobodyさん
2008/09/05(金) 18:27:12ID:???0199nobodyさん
2008/09/05(金) 20:46:59ID:???なんで組み込みの関数(fopenなど)は例外を投げないんだろう。
といっているのと同じことだぞ。
0200nobodyさん
2008/09/05(金) 21:55:58ID:???0201nobodyさん
2008/09/05(金) 23:06:27ID:???■ このスレッドは過去ログ倉庫に格納されています