1 :
nobodyさん :
2008/06/09(月) 02:48:24 ID:leLDOgm2 いまさらだが、後付感たっぷりでワロタ PHPの方がはるかに自然な形で実装しているわ。 なんだろうね。言語仕様の説明=内部実装の説明になっていて 使うためではなく、言語の勉強のための言語だなぁと思った。
自然なオブジェクトについて興味があるんですが それはどんな形ですか?
そら自然なのはSmalltalkだろjk
PHPもだろ
Perlはオブジェクトをnewしたときの処理を 自分でいちいち書かないといけないw
C言語でオブジェクト指向を 無理やりやっているのと 同じ感じがするな。 PHPはclass XXX extends YYYY {} なんて オブジェクト指向言語なら当たり前に使える構文が使える。 わかりやすい。
いつの話してんの? Perl使ってないけど 今のPerlはましになってるんだろ?
なってないよw まだblessとかいうものを使ってオブジェクトのリファレンスを返せば ほ〜ら。オブジェクト指向っぽくならね? って世界だ。
ちょっとPerlで便利なライブラリがあるから、 久々に使ってみたが、やっとPerlがキモイ理由がわかった。 シンボルテーブルとか型グロブとかリファレンスとか、 本来内部仕様であるべき話が表に出てきているからだ。 たとえば、C++なら仮想関数を実装するときVTABLE内の 関数ポインタを・・・・うんぬんかんぬんって説明があって、 それをやる為の関数がこれですから呼び出してね。と オブジェクト指向の内部データを直接いじらなきゃ いけない。これがPerlの普及を妨げているんだなぁと思った。
>>9 perlずっとやってきて心が揺らいでるんだが
泥臭い部分はみんな嫌い?
>>1 いまさらって書けば許されると思ったか馬鹿初心者。さすがに10年越しの話題は本気で痛いよ。
12 :
nobodyさん :2008/06/09(月) 19:38:22 ID:leLDOgm2
Perl6が出れば、そんな批判は過去のものとなる
Perl6ってオブジェクト指向言語なの?
一昔前に、どんなLLでも飲み込むPerlみたいなのの話題が出てたけど その後の話まったく聞かないな PHPもそれに飲み込まれるとか言い張ってる奴いたけど 今考えたらそんなの普通に存在価値ねーだろwww
うーん、まあ、そうなんだけど、それでもPerlでオブジェクト指向らしきものは出来る品。 というか、Perlはツール作ったり、WEBアプリ作ったりするのがメインなんで、オブジェクト指向なんてそれほど必要に迫られないし。
まあ、create_function(文字列) しかないウンコを頬張って喜ぶ
>>1 にはドン引きさせられるけどなw
phpの匿名関数には丼引きだけど スレタイ的にはあまり関係ねえよな そんなら俺はJavaScript最強説で泥沼化に参加するぜ ごめん最強は無理ありすぎた 疑似スレッド処理やろうとしたらsetTimeout地獄に陥るし 構造凝るとコールバック関数の嵐になるし
Ruby最強でFA
RubyのオブジェクトシステムはSmalltalkばりに古くさいよ。
GoogleマンセーでPythonに即飛びついたりしなかったお前らが誇らしいよ。 インデントとか笑わせるなよ。
21 :
nobodyさん :2008/06/10(火) 14:35:39 ID:RGxt/Gkf
>>16 PHP6で改善されるんじゃなかったっけ?
PHP6とPerl6、どっちが先に出るか見ものだw
クロージャ使えると何がそんなに便利なの?使えなくても大して不便ではなくね?ドラスティックに変わるの?
あらゆる高級言語を扱ってきたLL神だが攻守最強はECMAScriptだと悟った
Periの場合、5.99の次は5.9910とか言うから永遠に6は出ない。 アキレスは亀に追いつけない。
間違えた。 5.99の次は5.910だ。 590900 591000 みたいに数字だけ増えていく。 実際、最近のバージョンアップでやってるしw
ネームスペースの無いPHPの方がPerlより断然キモいっつーの。 Perlのあの程度のオブジェクト指向に苦労するくらいだから 程度が知れるわな。
関数内でglobal書かせるのも インスタンス化するごとにblessさせるのも似たようなもんだ。 無理矢理感って意味では。 ただPHPの変数の扱いがきもすぎるのは同意
> 関数内でglobal書かせるのも えっ? グローバル変数なんか普通使わないでしょ?
何が何でもOOPって考えやめろよ。 メリットとデメリットを比較して、有利な方を使うだろ普通。 小規模だったら、OOP使わないよ。
PHPの変数スコープは関数単位もだん。なんつーか、ワープロのマクロ言語並。
こういうひねくれたスレを立ててPHP叩きをするPerlユーザーってキモイな
>>31 PHPユーザーの方がキモいから安心しろ。
>>30 クラスに書いたら、クラス単位だけど?
ねぇ。PHP知っている?
正直、rubyやpythonがここに上がらないのは当たれ前なんだよね。 むしろ、PerlやPHPの拡張によってOOPを強引にでも実現してきたことを誉めてあげたい。 バカにするけど、PHPなんて、 OOPだけ見れば、結構良く実装できてると思うよ。 Perlは、もうちょっとだけど……。
普通の言語は変数のスコープはブロック単位なんだよ。 PHP以外の言語をやったことがあればすぐに分かること。
oopの話題でoopが得意じゃない人のブログ出すとかwww
おや、スコープの話で不利になったから、オブジェクト指向の話に戻すんですねw
ハッスルしてるphp厨は全スルーが常識
↑スルーできない場合の典型的な言い訳
いやスルーするしないの前の話 馬鹿なの?
Rubyはブロック内でレキシカルスコープを作る。
PHPは5でもネームスペースが無いから 正直使い物にならない。
同様の理由で、C言語も使いものにならない
C/C++,Java,VB,C#もブロック内でレキシカル変数を作れる罠。
JavaScriptは? っていうか関数レベルのスコープがあれば ブロックレベルのスコープは無くても良いなぁ。 おれ、そんなに長い関数書かないしw
Perlって
Perlでクラスを使ってみたいが、 毎回コンストラクタを自力実装するのが面倒で。
そこでMooseですよ
コンストラク作るのは面倒じゃないだろ。その仕組みを理解するのは面倒というか大変だが。
>>1 比較相手にPHPを持ち出し、しかもPHPの方がマシって…wwwww
PHPは糞中の糞
perlよりは上等だよ
>>51 サーバサイドスクリプトとして比較するならPHPの方が上に決まってんじゃん
まあ、PHP以外の、PerlとかRubyとか知ってる人にとっては、PHPの低機能はつらいものがあるよ。 初心者が書いても、上級者が書いても、同じようなコードにしかならないんだから。 プログラム書いててこれほどつまらない言語はない。
ふむ、同意だけど もしかしたらそれで逆に 保守性の水準を確保してたりしてな
同じ様なコードにしかならないことが低機能?イミフ
コードを書くことが目的なんでしょw $_ みたいな同じ名前の変数ばかり多用する 醜いソースかいたりなw
Javaのように厳密に書くことも出来なければ、PerlやRubyのように記述性が高いというわけでもない。簡単だから覚えるのは速いのが唯一の長所。それがPHP。
でもまあ、クラスの定義を 普通に class キーワードを使って かけるのはすばらしいと思うよ。 class Foo extends Bar { private $a; function __construct() {} function func() {} } $foo = new Foo(); $foo->func(); オブジェクト指向を知っている人なら誰だってすぐわかるでしょ? 自然なオブジェクト指向。
クラスベースOOPの書法が大好きなのは判わんでもないけどさ そもそもクラスベースってほんとに良いものなのかとか語られる昨今だしな ECMAScrips3rdの単純さと汎用性の兼ね合いなんか絶妙だしな
世の中の主流はクラスベースOOP
うん判るのよそれは boost触っててクラスとかもうどうでもよくね見たいに 脳味噌が腐った豆腐になってる馬鹿の戯れ言です rubyやpythonその辺の手懐けかた上手いよな perlにはこの際、我が道突っ切ってもらった方が面白そうな
文法は一番PHPがわかりやすいというか、自然だわな。CやJavaやPerlなんかを知ってれば、特別学習しないでもだいたい予測つく。
64 :
nobodyさん :2008/06/25(水) 20:05:34 ID:eRXwF1Bb
つか、OOPの書き方そのものの参考文献が少なすぎるんだよ。 ・OOPとは……知ってるから! ・言語XXXでOOP……基礎過ぎるから! ・言語XXXでデザインパターン……急に高度過ぎるから! もっと、初・中級者向けのOOP書き方入門が欲しいですよ。 オブジェクト指向Perlマスターコースだって? あんなの日本語じゃねーよ(読破したけどさw)
>>64 >・言語XXXでOOP……基礎過ぎるから!
>・言語XXXでデザインパターン……急に高度過ぎるから!
そこは別に飛躍してなくね?
OOPの基礎が判ったら、ちょっと実践パターン見て行きましょうか……
という流れだし
逆にどうしろと。
単に、実感湧かないってことかもしれないな。
Perlじゃないけど、俺はるびま出張版として出版された「正しいRuby
コードの書き方講座」が言語問わず参考になった。
他人の成果物の設計に駄目出ししまくるだけの本wなので、妙に実感あったw
青木に煽られない程度のコードを保ちたいなという、欲求が探究心に繋がった感じ。
ああいう傾向の本、言語問わず他にねえもんかな。
>あんなの日本語じゃねーよ(読破したけどさw)
逆に読みたくなるぜ、その感想w
多分おれはヘン
>>65 たぶん、分かってるとは思うけど、
OOP基礎 → デザパタ本は、急に難しくなりすぎだよ。
OOP基礎本は、本当に基礎の基礎しか書いてないもん。
その方向は間違ってないんだけどさ。
その間を埋める本がないんだよ。
つまり、
>>65 のいう「正しいRubyコードの書き方講座」や
Periで言えば、宮川氏のML(いつものことながら途中で飽きやがった!)のような。
デザパタってある程度実践詰んでないと、
意味……というかメリット理解できないじゃん。
Ruby触ったこと無いけど、最近本も充実してきたし、手出してみるかな。
67 :
nobodyさん :2008/06/28(土) 14:14:12 ID:SGqDbYHd
しかし何でPHP5は寸前のところでnamespaceをなくしてしまったのか。 クラス名をアンダーバーで繋げるという回避策は悲しすぎる。 唯一悔やまれる点だわ。
そんなにネームスペースって必要かなぁ? アンダーバーでつなげればいいだけでしょ?
それがまんどくせえんだよ
>>70 えっ?
(ネームスペースがあるほかの言語で)ネームスペースの部分省略してるの?
もし名前がかぶったらどうするの?
ネームスペースがない、パッケージがないのは、PHPにろくなクラスライブラリがない理由の一つだな。 好き勝手にファイル名やクラス名をつけるから、使いまわしが利かない。
すごいこじ付けを見たw
ネームスペースがかぶったらどうすんの?
PHP5.3からnamespage復活するのってホント?
76 :
nobodyさん :2008/07/08(火) 05:19:35 ID:TOo0hU7/
ポチろうと思ってて忘れてたわ
>>72 >ネームスペースがない、パッケージがないのは、PHPにろくなクラスライブラリがない理由の一つだな。
それは探せる頭が無いだけ。
ネイティブインストールしなきゃ使えないPerlモジュールより、よっぽど充実してて汎用も効くクラス多いよ。
PHPにまともなクラスライブラリなんてないよ。あるのは膨大な組み込み関数とあまたあるフレームワーク付属のヘルパークラスだけ。
まともなクラスライブラリが無い。ってことは 足りないクラスライブリががあるってことだよな? その足りないクラスライブラリ、いってみて。
少なくともPearにあるライブラリのPHP5・E_STRICT対応版
notice出ちゃなんでだめなの?
もしかしてここ間違ってないですか?っていう程度。 意図的にそうしているのなら問題ない。
本来ZendフレームワークがPearを引き継ぐはずだったけど、そうはなりませんでした。
2-3号前のWEB+DBプレスの座談会に書いてあったけど、普通そこそこPHPやってると飽きる。他の言語に行く。だから、ユーザコミュニティのレベルが一向に上がらない。
>>86 それは飲み屋での雑談よりも信頼すべき話なのか?
小山哲氏って日本のPHP界じゃトップクラスの有名人だと思うけど、PHPのダメさをあれだけ自覚して語ってるのにはちょっと好印象を持った。仕事として割り切ってるんだろうな。
89 :
nobodyさん :2008/07/13(日) 09:48:13 ID:aIClzZPC
>>88 > 小山哲氏って日本のPHP界じゃトップクラスの有名人だと思うけど
だれ?
デイトレーダー? 日本の歴史学者?
ぐぐってもわからないや。
日本のPHP界っていうほどのコミュニティがあるの?
92 :
nobodyさん :2008/07/18(金) 11:00:23 ID: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"日本語")
とかやったりしてるけど、正直言って超バッドノウハウ。
人が見てもやっぱりわからないし。
UTF-8フラグの存在がUnicodeの扱いをかなり複雑にしているよな。 なんでそんなものを作ったのか理解できない。 他の言語にはそんなもの無くてもうまくやっていけてるじゃないか。
PHPだと全部mb_に差し替えないと行けない。
> PHPだと全部mb_に差し替えないと行けない。 見てのとおり、すごくわかりやすいルールです。 一方Perlの場合・・・複雑すぎて ここでは説明し切れません ;;
複雑者ねー世。外人が作ったライブラリでも日本人が作ったライブラリでも透過的に扱える。
ただし、外人が作ったライブラリがUTF-8(UTF8フラグ)を考慮して ちゃんと作られている場合は。だろ?
最近でたオブジェクト指向Perlの本ってアルパカ本と比べてどうなの?
Encodeは始め面倒だな〜と思ってJcodeに逃げてたけど使い慣れてくるとしっくりとくる。
そりゃPerl標準なんだからしっくりこないとダメだろw 問題は、慣れないといけないような仕様だってことだ。
別にJcodeで済むんだったら、Jcodeでもいいけどな。
Ruby = オブジェクト指向Perl でしょ?
104 :
nobodyさん :2008/08/02(土) 01:11:51 ID:U1SzvOGo
「美しいコードを書けるからRubyを選んだ」---Ruby on Rails作者 David Heinemeier Hansson氏:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20060620/241346/ DHH:いろんなPerlソースを見ていると,頭が爆発しそうでした。
なぜかというと,どのコードを見てもスタイルがそれぞれ違って,
正しいのはどれかがわからない。
それぞれおもしろいんだけど,自己主張が激しすぎると感じました。
一方で,Rubyで書いたものはどれも,
同じことをする場合はだいたい似たように見える。
この「統一感」がすごく重要でした。
>>104 Perlは確かにひどいが、Rubyも大して統一感なんてないけどな…
Perlはuse strictを使えるのがいい。
Perlはひどい書き方ができるけどきれいに書こうと思えば書けるだろ。
strictプラグマを使えば、PerlはLLの中で一番厳密なコーディングを強制される。 PHPなんかだと、コンテントタイプヘッダが自動で出力されるとか、最近は減ったけどregister globalsがオンになってるせいで、それこそやりたい放題に書いてもそれなりに動いてしまう。 多分、書き慣れたPerlが怪奇に見えるのは、関数に()が省略できたり、returnを省略できたりするところだと思うんだけど、それはRubyも一緒だよね。
>書き慣れたPerlが怪奇に見えるのは、関数に()が省略できたり、returnを省略できたりするところだと思うんだけど そんな些細なところじゃないと思うんだけど
じゃ、どの辺?
$@とか$/とかの特殊変数はたいした問題じゃない。使うのは限られてるし、そういうもんだと思えばどうってことない。忘れたら、調べればいいだけ。 isset()なのかis_set()なのか忘れてしまうのと変わらない。
正規表現とか$_なんかは奇妙に見えるな。 for(1..40) { print $_ . "..aho\n" if /3/; }
行末が ; で終わってない言語はクソ
おっとECMAScriptの悪口はそこまでにしてもらおうか
>>110 いろんなものを省略できるところ。
コンテキストという概念
bless
UTFフラグ
perlは記述するコードをUTF8(BOM無し)固定にすりゃいいんだよね そうすりゃちったぁラクになるべ?
コンテキストを省略、blessを省略、何のことだ? Perlは複雑なデータ構造を表す場合、リファレンスを使う必要があり、リファレンス・デリファレンスで記号が長く続き、読みづらくなるというのはある。 すべてを順番付きのハッシュで済ませらるPHPと比べると、断然見づらい。 が、仕事でプログラムをするような人間が、Cのポインタが分からないとか、Perlのリファレンスが分からないとか、論外だな。 趣味のプログラマーにとってPerlが難解だというのはそうかもしれないが。
おそらくUTF8の話は、ム板から得た知識だろうが、マルチバイトを扱う時にUTF8フラグをつける、出力するときに外す、だけでいいことだ。 そもそもUTF8フラグのせいで、ソースが読みづらくなるなんてことは有り得ない話。
>>118 本当にそれだけなら、内部で勝手にやってくれという話。
なんでコードでUTF8フラグをつけたり消したりする命令があるのか。
それはUTF8フラグあるせいで、いろんなライブラリが、
UTF8フラグをつけていたり、つけていなかったりするから。
UTF8フラグの存在がなければ、そんな混乱は起きないんだがな。
>>117 仕事だから、難解なものでもやれというのはわかる。
だが、今はやるかやらないかの話はしていない。
難解なのか、難解ではないのかの話。
答えは出ている。難解だ。
だからどこら辺が難解なの? PerlのOOなんて変数に名前空間結びつけただけだろ
フラグついてりゃ3byte文字も1文字換算だし ついてなけりゃbyte単位だから処理違うしな inしてきたものにはかならずフラグつけてoutのときにはずせば混乱はない decode, encodeってのがちょい紛らわしいネーミングだとおもうけど
明示的にデコードしなくてもフラグ付くことがあるのが問題。 暗黙的なスタイルと明示的なスタイルが混在して、もうわけわかめ。
もともとの話はPerlのソースコードが読みづらいかどうかだから。 UTF8フラグとソースコードの読みづらさは関係ないし。
それってスタイル、好み、技量の問題じゃないの? 読む側、書く側、双方ともに
utf8フラグが勝手に付くって何のことだ?
>>107 それをプロジェクト内のPerlプログラマ全員にやらせてみろよ
色んな書き方が出来る反面 「自分の書き方」 をもてない奴がコピペばかりしたり、 サンプルを自分の書き方に直せない人が多いだけなんだと思う まぁ利用者が多いゆえの弊害だと思う
>>127 それはPerl以外の言語にもいえる事では
>>129 Perlは他言語に比べ突出してると思う。
でもコード規約でなんとかなる。
131 :
nobodyさん :2008/08/05(火) 19:44:17 ID:y2irazDO
PERLの記述性はそのままRUBYにも当てはまる。 JAVAみたいな型の指定を強制してステップをかける言語の方が記述性が低い分、統一感は高いと思うが、PYTHON以外のスクリプト言語はどれも大差ない。
コード規約で何とかしないで Pragmaでも作ってほしいね。 $_ の使用を禁止するとか
$_ は可読性の低下を招くので使わないようにしてる
$_を使わないことで可読性は上がるだろう しかしそれだったらrubyかPHP使う
$_ の問題だけで Perl を使わない理由にはならない
同じ変数を使いまわさない。 つまり、一つの関数内で同じ変数名の変数を 違う目的に使わないって事だけど、 これ、言語に限らずコーディング規約としてでてくる。 多分だれしも納得がいく理由だろう。 $_ はそれと同じ問題をはらんでいる。 変数名にはわかりやすい名前をつけましょう。
Perlはstrictプラグマが標準で、変数を宣言して使うから、不用意に変数を初期化したり、ゴミとして残ることがない。 局所化されてるから、安心して同じ変数名を使いまわしていい。 他の言語のように、条件分岐やループの深いところで突然多次元配列に値を入れたりすることがないし、実行されない処理についてもコンパイラがエラーを検知してくれるから、発生しづらい条件のエラーがすぐにわかる。 ただ、strictプラグマはPerlのコード品質を押し上げているわけだけど、KENTのCGIレベルのプログラマーからだとジャンプアップが大きく、初級のプログラマーがPHPに流れる原因にもなってる。 が、PHPはどう書いてもそれなりに動いてしまうばっかりにレベルの停滞を招いてるという面もある。
Perlのファニーレターは、可読性を上げる点でも役立ってる。 Perlでは普通こう書く。 foreach $data (@data) { print $data; } PHPでは、こう書くしかない。 foreach ($data as $tmp) { print $tmp ; } あるいは、こうしてみたり。 foreach ($data_list as $data) { print $data ; } 変数名からだけでデータ型が分かるのがPerlの可読性の高さ。
foreach $data (@data) { print $data; } って何か気持ち悪いんだよな・・・ でいつもこうしてます foreach $data (@datas) { print $data; }
print for @data;
>>139 そう言われると俺も @data とか @file とかにしてたwww
あなたはやっぱり @lists とかにしてるの?
リストそのものが複数形だとおもうんだけど 。。。 あれ違うか?w
いくら名前空間が別でも同じ名前にはしないな。
>>138 > Perlのファニーレターは、可読性を上げる点でも役立ってる。
> Perlでは普通こう書く。
> foreach $data (@data) {
> print $data;
> }
foreach my $datum (@data) {
print $datum;
}
>>141 > あなたはやっぱり @lists とかにしてるの?
foreach my $elem (@list) {
print $elem;
}
ナドト
名前空間が別なのではない。変数のスコープが別なのだ。 $tmpとか$nとか$iとか、数行のブロック内でしか使わない一時的な変数のためにイチイチ長ったらしい変数名を使うのは可読性が下がる。 コードの大事なポイントをぼかしてしまうから。
変数名やらコーディング規約やらはPerl Best Practicesを読むといいですよ 書いてあることがすべて正しいとは思わないけどbetter practiceが見つかるのは間違いないです
>>139 dataは既に複数形で、単数形はdatum云々、、、、
PBP!PBP!
>>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]のように参照出来るらしいから感覚的に少しはマシになるのかも
横レスすると手を抜いて配列に入れるんじゃなくて スカラーでもハッシュでもいいから名前付けたほうが見やすいわかりやすいのは明白
変数名の頭に$とか@とかつけるのが そもそも変。
そう?俺はわかりやすいからいいけど 欲を言えば
PerlからPHPに移ってからは@を使う妥当性が全然わからなくなった。
@rrayとか$calarてのはやめて欲しいないな。これもPerl文化か?
155 :
nobodyさん :2008/08/08(金) 00:05:16 ID:+HJwvv2X
>>私はこれで Perl から乗り換えました。 この程度では乗り換えるに値しない まぁ、Switch Case 文はデフォで欲しいですがw
>>156 givenとwhenでよければありますよ。
バージョン5.10以上ですけど。
158 :
nobodyさん :2008/08/08(金) 17:18:36 ID:ZoI5nNzi
変数には記号がある方が分かりやすい。 PHPみたいにデータ型によらず同じ記号であっても。 JAVAとかC#みたいにIDE前提でカラーリングされてればなくても良いけど。 その点じゃRUBYが一番見づらい。
変数という意味で記号をつけるのはわかるが、 配列やスカラーやハッシュを区別する為の記号ってのは 意味がわからない。 他の言語を見ればわかるように、そんな区別なんかしなくても 問題なく実装できてるじゃん。
ハンガリアン記法見ても分かるように、変数名からデータ型が分かれば可読性が上がる。
可読性とコーディングをいうまえに明示的に宣言できる構造体をくれ
そんなあなたに Class::Struct
つ Moose
164 :
nobodyさん :2008/08/11(月) 14:58:12 ID:5LE+LZJY
ruby perl 比較 python ruby perl ruby perl 違い ruby perl php ruby perl 速度
PHPのオブジェクト指向も後付けなのに、誰も突っ込まないのな。 そんなもんか。
perlのひどさには敵わないw
寧ろ後付でも酷くてもみんなが使いたがるperlの魅力に気が付いて欲しいw
PHPのオブジェクト指向はごく普通だからな。ほとんどJava。 Perlの場合はクラスベースじゃないから。JavaScriptとかもそうだけど。
本当はオブジェクト指向とかエロいこと考えなくてすむのがお気楽LL言語だったのかもしれない。
>>168 Perlは分類上クラスベース。
Javascriptのようにインスタンス単位でメソッドを増やしたりする芸当はできないよ。
データメンバは増やせたりするけど。
先を行く者を背中から撃つ者は、後から来る者に背中から撃たれる。
インスタンスにメソッドを追加するのはRubyも出来る
完全にオブジェクト指向であっても変数名に接頭辞が付かない言語は苦痛だ
i とか s とか付けりゃいいんだろいけど、やっぱ接頭語として記号があると楽かな
Rubyの場合、メソッドの()を省略できるから、メソッドなのか変数なのか区別がつかない。素直に()を強制すればよかったのに。
$が使いたいんだよ!わかるだろ!
179 :
nobodyさん :2008/08/19(火) 02:03:57 ID:z5IDWLYs
わからん・・・ わざわざシフトキーを多用したいなんて・・・
[]や{}を使わない連想配列や配列はどう扱うの?
Rubyの[]もメソッド名というのは、作者の無意味な自己満足に過ぎないと思う。
183 :
nobodyさん :2008/08/25(月) 05:10:09 ID:etndctNH
184 :
nobodyさん :2008/08/25(月) 06:58:00 ID:YRD+4CK6
朝っぱらから元気だな、Ruby信者君
実際 Perl の オブジェクト指向は Ruby だし
186 :
nobodyさん :2008/08/28(木) 05:22:41 ID:dedtAPQI
>>182 data['hoge'] の動作を自前で設定できたらいいなと思ったことはないかい
data['hoge'] でも data['Hoge'] でも data['HOGE'] でも data[:hoge] でも data の hoge が呼べたらいいなとか
あと、メソッドだからプロファイラで Hoge#[] の使用回数がきちんとカウントされるぞ
ていうかこのへんは普段は意識することないし「実はメソッドだったんです!」「うわ徹底ぶりキモっ!」でいいとは思う
188 :
nobodyさん :2008/08/29(金) 02:04:05 ID:oI9LreIE
あの Perl の後付け感は最高。 僕は、あの屋上屋を架すみたいに積み上げたり、既存文法の意義の変更とかで、 済し崩し的に拡張して行くあのゴチャゴチャ感が Perl らしくて好きだよ。 C++ も似た感じで好きだ。
perlでやる程度の処理にoopなんぞ手間が増えるだけだから後付け仕様で十分 最近は車輪探す手間のほうがでかくなってるしな
>>188 まったく同意見だ。C++が好きな理由も同じ。
混☆沌☆招☆来
>>187 ハッシュやリストの拡張クラス作ればいいだけじゃん。
[]がメソッド名なら、arr[1] = 'a'はarr.[](1,'a')こんな感じに書くべきだけど、それじゃ変だからローカルルールででっち上げてるわけでしょ。
その勝手な感じについていけない。
別にメソッドとして書いてもいいよ(そっちのほうが計測不能なレベルでわずかに速い) 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 を使うといい
松本がいつも言うシンタックスシュガー、都合のいい言い訳にしか聞こえない。Railsもそうだけど、ユーザの感じる押しつけられ感が凄い。
195 :
nobodyさん :2008/09/04(木) 13:09:19 ID:NZf+T+5v
Railsの記述上の違和感はRubyではなくRails記法によるもの Rubyは関係ないし、RailsのDSLっぽい無茶な書き方を嫌がってる人は少なくない
197 :
nobodyさん :2008/09/05(金) 06:22:58 ID:4aFuBrsn
>>1 は、
>PHPの方がはるかに自然な形で実装しているわ。
って言ってるけど、PHP って他の組み込みの機能が何となく不自然な気がする。
何というか、統一感のないユーティリティ・ライブラリって感じ。
(だったような。ちょこっと触っただけだからかもしれないけど。
まぁ、PHPは言語と言うよりツール色)
Perl 5 の OOP は、確かに他の言語の OOP 機能からの見方で見ると不自然に見えるけど、
Perl 言語からの見方で見ると、とても自然に見える。
それに、専用の文法でがちがちに固めていなくて、幾つかの機能の組み合わせで実現するやり方は、
見方によっては美しくも感じる(Unix っぽい美学)。
PHPって、せっかく例外の仕組み備えたのに、なんで組み込み関数は例外を投げないんだろう。
それは、C++は例外の仕組みあるのに、 なんで組み込みの関数(fopenなど)は例外を投げないんだろう。 といっているのと同じことだぞ。
PHPが例外が糞なのと、C++は関係ないから。
両方とも後方互換性のためでしょ。
PHPに互換性なんてないじゃん。お得意のPHP_INIで設定を変えればいいだけ。
>>200 誰も糞とかいってねーよw
前からある関数が例外を出さない理由だろうが。
>>202 C++もコンパイルオプションで設定を変えればいいだけのはずなんだがw
205 :
nobodyさん :2008/09/06(土) 12:53:01 ID:NNHSMBQO
要するに例外機構が実質的に機能しないPHPはウンコということ。
組み込み関数じゃなくて組み込みクラス使えばいいじゃん。 いつまで過去の遺物使ってんの。
だよなぁ。C++でも過去の関数は例外を使っていない。 その理由は互換性維持なわけだが、 そういうあたりまえ発想が言語をPHPに変えるだけで出てこなくなる。 そして、なぜかPHPは例外機構が機能しないとかわけのわからんことを言い出す。
>>206 > 組み込み関数じゃなくて組み込みクラス使えばいいじゃん。
それがないからダメなんだろ。
論点がずれてきていますね。 組み込み関数が例外を投げない理由から 組み込み関数は互換性のために例外を投げないのは当たり前。 組み込みクラスがない(?)からダメという話へ。 もう組み込み関数が例外を投げない理由の話は終わりましたね? 見事話がずれました。私の狙ったとおりです。フフン。
PHPの組み込み関数は例外を投げない。 PHP5対応のライブラリがそろっていれば、それを使うが、それもない。 従って、自分でラッパーを書いて例外を投げるようにしないといけない。糞。
話の軸と言えるほどに固執する話題がないだけだ Perl仕事のヘルプに行ったとき食ったラーメン屋のギョーザのタレが美味かったといえばきっと食い物話になる その程度の拘りしかない
PHPは配列とか文字列とかの組み込みの要素もきちんとクラスにしてメソッドつけたほうがいいと思います
Zendの実質標準ライブラリ使えよw
215 :
nobodyさん :2008/09/09(火) 10:51:59 ID:ASwZl4YO
> sub funcname { > my($arg1, $arg2, $arg3) = @_; > # do something > } > 関数定義に仮引数がなくて毎回こう書かないとだめみたいなんだけど、 > 誰も文句言わないのこれ?ほんとに? あははははhahahah
まあ、Perlはオブジェクト指向言語ではないからね。 言語としては手続き型、オブジェクト指向風に 使える書き方の紹介と便利関数を追加しただけ。 C言語でオブジェクト指向やるようなもん。 PHPの場合、オブジェクト指向言語としての仕様を追加している。
十数年前に変態的に後付けされた機能に向かって鬼の首を取ったようにそんな事言われてもなぁ・・
十数年前レベルwww
そんなに書式を気にするなら、moose使えば?
こう書けるPerlは記述生が高い。 use strict; use warnings; sub func1 { my %arg = ( 'name' => 'yamada', 'age' => 18, @_ ); print "$arg{name} $arg{age}\n" } func1(name=>'tanaka');
たかがキーワード引数のこと?
>>221 記述性? よりも 自然言語に近いほうが
人として読みやすいとは思わないかい?
つまり、標準の値を定義する。
標準の値を引数で上書きする。の方が
標準の値と引数を変数に入れる。(書いてないけど、後のほうが優先になるよ)
よりも。
>>221 の方が遙かに読みやすいと思うが。
仮引数を指定する形式だと、誤れば、コンパイルエラーを引き起こせるので、その点では有利だが。
書きやすい読みやすいに正解があるならこんなに多数の言語は存在しない 結局「最初に覚えた言語が一番」って話になるから論争も絶えないんだよなぁ
Perl関係のスレって、いつのまにかPHPのスレになっちゃうよね
Perlアンチスレは大概は入り口で挫折してPHPに逃げてった子供が立てるからな
use strictの壁は厚い
229 :
nobodyさん :2008/09/11(木) 13:11:37 ID:UuWkCkeJ
strict の壁とか、そんなんどこの言語に逃げても無駄じゃないw
> Perlアンチスレは大概は入り口で挫折してPHPに逃げてった子供が立てるからな それで目的が達成できるのだから 何の問題も無いだろう?
自分がわからないものをわかる人間の存在が許せないってわけか。
できることは同じなのに、俺はわかっているんだと悦になれる。
そんなことでスレたてるなよw
なにもかも失った可哀想な人を鞭打つなよ
パールとかピーエッチピーなんて知らないほうが賢いってわけ。そう俺。 ところで半角英字ってどうやって打つの?
俺は中学の頃、「PHPはPerlのサブセットだから、あんなの知らなくていい」って言いふらしてた。 周りも知らないから、それでよかった。 無知って素晴らしい。
人間は海のサブセット
中学生でもうPerlできたってこと?
出来ない理由はないだろ
最近は幼稚園でC言語の勉強してるところもあるらしいな。この前幼稚園のそばを通りかかったら子供がC、Cって連呼してた。
>>240 それは君の事を見て言っているんだよ。
しっしっ、あっちいけ。
しーっしーっ、見てはダメ。
どっちかな?
べっこあめとか言ってるあの時代に中学生がその発言を出来るなんて相当だろ
去年のことかもしれないのに何故bekkoame?
PHPがPerlだった頃の話だと推測してるんだろ。
PHPのうた PHP PHP PHP PHP PHP PHP PHP ... 人恋しくて誰かにしがみつき 弱虫ばっかりで おや?こんな時間にJASRACの方向から誰かきたようだ
246 :
nobodyさん :2008/10/04(土) 04:24:57 ID:IqLPvWyz
Perl
http://anond.hatelabo.jp/20080731154801 sigil 汚い、my our local 汚い。
->が汚い、ドットにしてよ。Perl6ではドットになるんだって?やったぁ。
とにかくコードを見るだけでげんなりする。
クラス機構が後付けなのがめんどくせー。Exporter使うのだるい。
とにかく文法がアレすぎる。あ、でも後置修飾子はおきにいり。
でもはえー、ちょうはえー。
ライブラリ超使える。もうなんでもできる。
総評:肉は腐りかけがうまい。
247 :
nobodyさん :2008/10/04(土) 10:09:49 ID:IZRHlZJM
perlが一番使いやすいよ どの言語よりも短い言葉で書けるからな 可読性・・それは素人が言う言い訳だろ? 結局は可読性よりアーキテクチャだと思っているが
笑
Perl6はまだ先の話のようだし、 5.xでautobox系モジュールを充実させて欲しいなぁ。
短く書けるのはRubyも互角だな。Perlのいいとこは、変数の宣言を強制できるとこだな。最低レベルのプログラマーはこれだけで排除されるから。
251 :
nobodyさん :2008/10/05(日) 14:27:09 ID:jtLGUyfx
先を行く者を背中から撃つ者は、やがて後から来る者も撃ち始める。
じゃあ俺は後から来るものを撃ってから 先を行くものを撃とう
じゃあ俺は家で寝てる
Rail とかフレームワークって個人でちまちまサイトやってる限り必要無いよね?
なんか iTune とかと同じ臭いを感じる > Rail はともかく、統合 Web フレームワーク自体が個人には過ぎた代物だ 別に Ruby on Rails に限った話ではない PHP の Zend や Symfony だって、個人が扱うのはかなり荷が重いというかむしろ趣味の領域
そもそもプログラミング自体が個人にとっては趣味の領域
個人にとって趣味の領域じゃないものって何?
トイレ
プログラミングは人生
フレームワークを導入することが趣味の範囲ってことで、プログラミングが趣味なんだから それに関わる全てが趣味とは言えないんじゃないかなと。 と勝手に解釈してマヂレスしてみる
>>258 Greeもモバゲーもニコニコも個人から始まったんだぜ
どれも娯楽産業だが…
金銀Perlのオブジェクト
PythonとかRubyは「綺麗なオブジェクト指向」 Perlの美学は「結果は一緒でしょ」 PHPは知らん まあ過程の労力と結果が見合ってればそれでおk
266 :
nobodyさん :2012/01/11(水) 00:16:08.47 ID:nyY0CUMc
Acacia k62ptju arise in stability Ashley Scared The Sky ARTEMA Before My Life Fails bilo'u break your fist Capture of the Sky Crossfaith
せやな
return bless {} Hosh;