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

なんだろうね。言語仕様の説明=内部実装の説明になっていて
使うためではなく、言語の勉強のための言語だなぁと思った。
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 速度
0165nobodyさん
垢版 |
2008/08/15(金) 23:16:47ID:???
PHPのオブジェクト指向も後付けなのに、誰も突っ込まないのな。
そんなもんか。
0166nobodyさん
垢版 |
2008/08/15(金) 23:18:00ID:???
perlのひどさには敵わないw
0167nobodyさん
垢版 |
2008/08/15(金) 23:28:15ID:???
寧ろ後付でも酷くてもみんなが使いたがるperlの魅力に気が付いて欲しいw
0168nobodyさん
垢版 |
2008/08/16(土) 01:42:46ID:???
PHPのオブジェクト指向はごく普通だからな。ほとんどJava。
Perlの場合はクラスベースじゃないから。JavaScriptとかもそうだけど。
0169nobodyさん
垢版 |
2008/08/16(土) 03:32:51ID:???
本当はオブジェクト指向とかエロいこと考えなくてすむのがお気楽LL言語だったのかもしれない。
0170nobodyさん
垢版 |
2008/08/16(土) 04:00:50ID:???
>>168
Perlは分類上クラスベース。
Javascriptのようにインスタンス単位でメソッドを増やしたりする芸当はできないよ。
データメンバは増やせたりするけど。
0171nobodyさん
垢版 |
2008/08/16(土) 08:25:19ID:???
先を行く者を背中から撃つ者は、後から来る者に背中から撃たれる。
0172nobodyさん
垢版 |
2008/08/16(土) 12:27:40ID:???
インスタンスにメソッドを追加するのはRubyも出来る
0173nobodyさん
垢版 |
2008/08/16(土) 14:42:26ID:???
完全にオブジェクト指向であっても変数名に接頭辞が付かない言語は苦痛だ
0174nobodyさん
垢版 |
2008/08/16(土) 16:08:42ID:???
i とか s とか付けりゃいいんだろいけど、やっぱ接頭語として記号があると楽かな
0175nobodyさん
垢版 |
2008/08/16(土) 17:29:17ID:???
Rubyの場合、メソッドの()を省略できるから、メソッドなのか変数なのか区別がつかない。素直に()を強制すればよかったのに。
0177nobodyさん
垢版 |
2008/08/17(日) 01:43:09ID:???
>>173
そこはマイルールでいいんじゃないの?
0178nobodyさん
垢版 |
2008/08/18(月) 18:57:43ID:???
$が使いたいんだよ!わかるだろ!
0180nobodyさん
垢版 |
2008/08/19(火) 03:32:07ID:???
わからん・・・
わざわざシフトキーを多用したいなんて・・・
0181nobodyさん
垢版 |
2008/08/19(火) 12:56:03ID:???
[]や{}を使わない連想配列や配列はどう扱うの?
0182nobodyさん
垢版 |
2008/08/19(火) 15:23:01ID:???
Rubyの[]もメソッド名というのは、作者の無意味な自己満足に過ぎないと思う。
0184nobodyさん
垢版 |
2008/08/25(月) 06:58:00ID:YRD+4CK6
朝っぱらから元気だな、Ruby信者君
0185nobodyさん
垢版 |
2008/08/26(火) 11:32:03ID:???
実際 Perl の オブジェクト指向は Ruby だし
0187nobodyさん
垢版 |
2008/08/28(木) 11:14:54ID:???
>>182
data['hoge'] の動作を自前で設定できたらいいなと思ったことはないかい
data['hoge'] でも data['Hoge'] でも data['HOGE'] でも data[:hoge] でも data の hoge が呼べたらいいなとか
あと、メソッドだからプロファイラで Hoge#[] の使用回数がきちんとカウントされるぞ
ていうかこのへんは普段は意識することないし「実はメソッドだったんです!」「うわ徹底ぶりキモっ!」でいいとは思う
0188nobodyさん
垢版 |
2008/08/29(金) 02:04:05ID:oI9LreIE
あの Perl の後付け感は最高。
僕は、あの屋上屋を架すみたいに積み上げたり、既存文法の意義の変更とかで、
済し崩し的に拡張して行くあのゴチャゴチャ感が Perl らしくて好きだよ。
C++ も似た感じで好きだ。
0189nobodyさん
垢版 |
2008/08/29(金) 08:06:09ID:???
perlでやる程度の処理にoopなんぞ手間が増えるだけだから後付け仕様で十分
最近は車輪探す手間のほうがでかくなってるしな
0190nobodyさん
垢版 |
2008/08/30(土) 20:48:02ID:???
>>188
まったく同意見だ。C++が好きな理由も同じ。
0192nobodyさん
垢版 |
2008/09/01(月) 13:46:31ID:???
>>187ハッシュやリストの拡張クラス作ればいいだけじゃん。
[]がメソッド名なら、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:???
松本がいつも言うシンタックスシュガー、都合のいい言い訳にしか聞こえない。Railsもそうだけど、ユーザの感じる押しつけられ感が凄い。
0196nobodyさん
垢版 |
2008/09/04(木) 14:06:58ID:???
Railsの記述上の違和感はRubyではなくRails記法によるもの
Rubyは関係ないし、RailsのDSLっぽい無茶な書き方を嫌がってる人は少なくない
0197nobodyさん
垢版 |
2008/09/05(金) 06:22:58ID:4aFuBrsn
>>1 は、
>PHPの方がはるかに自然な形で実装しているわ。
って言ってるけど、PHP って他の組み込みの機能が何となく不自然な気がする。
何というか、統一感のないユーティリティ・ライブラリって感じ。
(だったような。ちょこっと触っただけだからかもしれないけど。
まぁ、PHPは言語と言うよりツール色)

Perl 5 の OOP は、確かに他の言語の OOP 機能からの見方で見ると不自然に見えるけど、
Perl 言語からの見方で見ると、とても自然に見える。
それに、専用の文法でがちがちに固めていなくて、幾つかの機能の組み合わせで実現するやり方は、
見方によっては美しくも感じる(Unix っぽい美学)。
0198nobodyさん
垢版 |
2008/09/05(金) 18:27:12ID:???
PHPって、せっかく例外の仕組み備えたのに、なんで組み込み関数は例外を投げないんだろう。
0199nobodyさん
垢版 |
2008/09/05(金) 20:46:59ID:???
それは、C++は例外の仕組みあるのに、
なんで組み込みの関数(fopenなど)は例外を投げないんだろう。
といっているのと同じことだぞ。
0200nobodyさん
垢版 |
2008/09/05(金) 21:55:58ID:???
PHPが例外が糞なのと、C++は関係ないから。
0201nobodyさん
垢版 |
2008/09/05(金) 23:06:27ID:???
両方とも後方互換性のためでしょ。
0202nobodyさん
垢版 |
2008/09/05(金) 23:37:58ID:???
PHPに互換性なんてないじゃん。お得意のPHP_INIで設定を変えればいいだけ。
0203nobodyさん
垢版 |
2008/09/06(土) 09:50:10ID:???
>>200
誰も糞とかいってねーよw

前からある関数が例外を出さない理由だろうが。
0204nobodyさん
垢版 |
2008/09/06(土) 09:51:15ID:???
>>202
C++もコンパイルオプションで設定を変えればいいだけのはずなんだがw
0205nobodyさん
垢版 |
2008/09/06(土) 12:53:01ID:NNHSMBQO
要するに例外機構が実質的に機能しないPHPはウンコということ。
0206nobodyさん
垢版 |
2008/09/06(土) 13:01:18ID:???
組み込み関数じゃなくて組み込みクラス使えばいいじゃん。
いつまで過去の遺物使ってんの。
0207nobodyさん
垢版 |
2008/09/06(土) 14:10:27ID:???
だよなぁ。C++でも過去の関数は例外を使っていない。
その理由は互換性維持なわけだが、
そういうあたりまえ発想が言語をPHPに変えるだけで出てこなくなる。

そして、なぜかPHPは例外機構が機能しないとかわけのわからんことを言い出す。
0208nobodyさん
垢版 |
2008/09/06(土) 14:53:51ID:???
>>206
> 組み込み関数じゃなくて組み込みクラス使えばいいじゃん。
それがないからダメなんだろ。
0209nobodyさん
垢版 |
2008/09/06(土) 15:12:30ID:???
論点がずれてきていますね。

組み込み関数が例外を投げない理由から
組み込み関数は互換性のために例外を投げないのは当たり前。
組み込みクラスがない(?)からダメという話へ。

もう組み込み関数が例外を投げない理由の話は終わりましたね?

見事話がずれました。私の狙ったとおりです。フフン。
0210nobodyさん
垢版 |
2008/09/06(土) 15:17:53ID:???
PHPの組み込み関数は例外を投げない。
PHP5対応のライブラリがそろっていれば、それを使うが、それもない。
従って、自分でラッパーを書いて例外を投げるようにしないといけない。糞。
0211nobodyさん
垢版 |
2008/09/06(土) 15:18:10ID:???
話の軸と言えるほどに固執する話題がないだけだ
Perl仕事のヘルプに行ったとき食ったラーメン屋のギョーザのタレが美味かったといえばきっと食い物話になる
その程度の拘りしかない
0212nobodyさん
垢版 |
2008/09/06(土) 15:19:18ID:???
PHPは配列とか文字列とかの組み込みの要素もきちんとクラスにしてメソッドつけたほうがいいと思います
0213nobodyさん
垢版 |
2008/09/06(土) 15:42:25ID:???
>>212
そうすっと具体的にどんなメリットが?
0214nobodyさん
垢版 |
2008/09/06(土) 17:35:32ID:???
Zendの実質標準ライブラリ使えよw
0216nobodyさん
垢版 |
2008/09/09(火) 12:41:23ID:???
> sub funcname {
> my($arg1, $arg2, $arg3) = @_;
> # do something
> }
> 関数定義に仮引数がなくて毎回こう書かないとだめみたいなんだけど、
> 誰も文句言わないのこれ?ほんとに?


あははははhahahah
0217nobodyさん
垢版 |
2008/09/09(火) 12:45:03ID:???
まあ、Perlはオブジェクト指向言語ではないからね。
言語としては手続き型、オブジェクト指向風に
使える書き方の紹介と便利関数を追加しただけ。

C言語でオブジェクト指向やるようなもん。

PHPの場合、オブジェクト指向言語としての仕様を追加している。
0218nobodyさん
垢版 |
2008/09/10(水) 00:35:51ID:???
十数年前に変態的に後付けされた機能に向かって鬼の首を取ったようにそんな事言われてもなぁ・・
0219nobodyさん
垢版 |
2008/09/10(水) 02:01:53ID:???
十数年前レベルwww
0220nobodyさん
垢版 |
2008/09/10(水) 02:18:33ID:???
そんなに書式を気にするなら、moose使えば?
0221nobodyさん
垢版 |
2008/09/10(水) 07:30:55ID:???
こう書けるPerlは記述生が高い。

use strict;
use warnings;

sub func1 {
my %arg = (
'name' => 'yamada',
'age' => 18,
@_
);
print "$arg{name} $arg{age}\n"
}

func1(name=>'tanaka');
0222nobodyさん
垢版 |
2008/09/10(水) 10:06:02ID:???
たかがキーワード引数のこと?
0223nobodyさん
垢版 |
2008/09/10(水) 11:11:59ID:???
>>221
記述性? よりも 自然言語に近いほうが
人として読みやすいとは思わないかい?

つまり、標準の値を定義する。
標準の値を引数で上書きする。の方が

標準の値と引数を変数に入れる。(書いてないけど、後のほうが優先になるよ)

よりも。
0224nobodyさん
垢版 |
2008/09/10(水) 11:31:15ID:???
>>221の方が遙かに読みやすいと思うが。
仮引数を指定する形式だと、誤れば、コンパイルエラーを引き起こせるので、その点では有利だが。

0225nobodyさん
垢版 |
2008/09/10(水) 22:04:20ID:???
書きやすい読みやすいに正解があるならこんなに多数の言語は存在しない

結局「最初に覚えた言語が一番」って話になるから論争も絶えないんだよなぁ
0226nobodyさん
垢版 |
2008/09/11(木) 05:31:38ID:???
Perl関係のスレって、いつのまにかPHPのスレになっちゃうよね
0227nobodyさん
垢版 |
2008/09/11(木) 06:14:43ID:???
Perlアンチスレは大概は入り口で挫折してPHPに逃げてった子供が立てるからな
0229nobodyさん
垢版 |
2008/09/11(木) 13:11:37ID:UuWkCkeJ
strict の壁とか、そんなんどこの言語に逃げても無駄じゃないw
0230nobodyさん
垢版 |
2008/09/11(木) 18:43:41ID:???
> Perlアンチスレは大概は入り口で挫折してPHPに逃げてった子供が立てるからな

それで目的が達成できるのだから
何の問題も無いだろう?
0231nobodyさん
垢版 |
2008/09/11(木) 18:52:34ID:???
自分がわからないものをわかる人間の存在が許せないってわけか。
0232nobodyさん
垢版 |
2008/09/11(木) 20:36:05ID:???
できることは同じなのに、俺はわかっているんだと悦になれる。
0233nobodyさん
垢版 |
2008/09/11(木) 20:55:04ID:???
そんなことでスレたてるなよw
0234nobodyさん
垢版 |
2008/09/11(木) 23:52:51ID:???
なにもかも失った可哀想な人を鞭打つなよ
0235nobodyさん
垢版 |
2008/09/12(金) 16:15:03ID:???
パールとかピーエッチピーなんて知らないほうが賢いってわけ。そう俺。
ところで半角英字ってどうやって打つの?
0236nobodyさん
垢版 |
2008/09/12(金) 16:18:55ID:???
俺は中学の頃、「PHPはPerlのサブセットだから、あんなの知らなくていい」って言いふらしてた。
周りも知らないから、それでよかった。
無知って素晴らしい。
0237nobodyさん
垢版 |
2008/09/12(金) 17:20:20ID:???
人間は海のサブセット
0238nobodyさん
垢版 |
2008/09/12(金) 21:12:53ID:???
中学生でもうPerlできたってこと?
0239nobodyさん
垢版 |
2008/09/12(金) 23:51:54ID:???
出来ない理由はないだろ

■ このスレッドは過去ログ倉庫に格納されています

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