トップページphp
985コメント235KB

Python vs Ruby vs PHP vs Perl

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/22(月) 20:28:32ID:???
どれを学べばいいの?
0683nobodyさん2006/07/07(金) 18:32:20ID:???
>>671
これはPerlでクラスを定義しているのかな?
おれPerlよくしらんのだけど、ぱっと見ただけでは何やってるのかさっぱりわからん。
「これより見やすく書いてみて」ってあるけど、たいがいの言語ならこれより見やすく書けるだろ。

class MyClass {
 var $name, $age;
}

class MyClass
 attr_accessor :name, :age
end

>>671の例は、たしかに簡潔なんだろうけど、わかりやすいとはとても思えん。
アクセッサが簡単に定義できるということをいいたかったのかな?
0684nobodyさん2006/07/07(金) 18:39:04ID:???
>>683
上のはPHPだろうけど、それはちょっと違うかと。
accessorメソッドを定義できたわけじゃないので。

>>671 は、PHPだとこの場合、メソッド4つ定義しなきゃだめだろ
と言いたいんでしょう。
まぁ >>671 はそんなに分かりやすくないと思うけど。

下のはRubyだね。そっちは正しい。
0685nobodyさん2006/07/08(土) 00:02:55ID:???
Perlのオブジェクト指向は見やすくはない。一般的な、他の言語のオブジェクト指向とは大きく書式が違うから。
ただし、簡潔さはある。Perlは冗長さを徹底的に排除できる言語だから。オブジェクト指向に限らないけど。
0686nobodyさん2006/07/08(土) 00:37:33ID:???
CPANの使うだけなら楽だわな
自分でクラス定義書こうとは思わないが
0687nobodyさん2006/07/08(土) 01:52:42ID:???
Perlはプログラムを理解する脳力をプログラマに責任転嫁し、
RubyはPerlの全ての罪をMatzにつぐなわせ、
Pythonはプログラマからタブ文字を奪いさる。
そしてPHPは全ての救い難き衆生を10万億土に得度する阿弥陀仏。ありがたや。
0688nobodyさん2006/07/08(土) 05:23:53ID:???
>>685
>簡潔さはある。
ねぇよw
メソッドに初期値いれるときどうするの?
0689nobodyさん2006/07/08(土) 05:30:32ID:???
>>685はPerl5と共に進化が止まっちゃってるんだろ。
0690nobodyさん2006/07/08(土) 05:35:26ID:???
つーか前の流れでモジュール使わなきゃ例外もまともにできんとか言われてるのに、
さっそく>>671でモジュールつかっちゃってるしw
0691nobodyさん2006/07/08(土) 05:43:32ID:???
>>684
PHPの例もそれで問題ないでしょ。
パブリックに取り出しも設定もできるんだし、
逆に>>671でやってることも取り出しと設定しか出来ない
もん定義してるだけでしょ?一緒じゃないの?
0692nobodyさん2006/07/08(土) 07:19:50ID:???
>>691
おいおい、一緒じゃねーよ。
インスタンス変数への直接アクセスと、アクセッサを介したアクセスは、
結局やることは同じかもしれんが、情報隠蔽という考え方からみて全然違う。
いくらなんでもそれはオブジェクト指向の基本をわかってない。
0693nobodyさん2006/07/08(土) 07:31:34ID:???
PerlもPHPも、もとはオブジェクト指向ではなかった言語に後からオブジェクト指向の
機能を付け加えたから、不自然な感じは否めない。特にPerl。

それに比べ、Pythonもあとからオブジェクト指向の機能が追加された点では同じなんだけど、
不自然さはない。
もとはモジュール指向の言語で、そのモジュール機能を拡張したのがPythonのクラスなんだけど、
それがすごく自然になじんでる。
アクセス制御がすこし弱いのと、メソッド定義において最初の引数にselfを明示的に
指定しなければいけないのが気になるけど、それ以外はよくできてる。

こうしてみると、言語設計者のセンスの違いを感じる。
PythonかわいいよPython。
0694nobodyさん2006/07/08(土) 07:36:22ID:???
アクセス制御はもうみんな大人なんだから、て話だったな
selfはそのうち慣れる。むしろあった方が分かりやすいと俺は思うようになった
0695nobodyさん2006/07/08(土) 07:43:48ID:???
>>694
インスタンスメソッドの呼び出しや、インスタンス変数へのアクセスのためにselfを使うのはいい。
しかしインスタンスメソッドを定義するたびに、最初の引数にいちいちselfとしなきゃいけないのが面倒だし読みにくい。
これは慣れないし、なくしても害はないはず。

あ、あと親クラスのメソッドを呼び出すときがださい。親クラス名を書かなきゃいけないし。
super()とかで書けるほうがうれしい。
0696nobodyさん2006/07/08(土) 09:10:57ID:???
コードの可読性について語って。
ソースを納品させて、その担当の
プログラマーが辞めちゃったり、
氏んじゃったりしたら、別のプログラマーに
そのソースを渡して、続きを書いたりして
もらう、という状況を想定して。
0697nobodyさん2006/07/08(土) 09:54:42ID:???
>>696
> プログラマーが辞めちゃったり、
> 氏んじゃったりしたら、別のプログラマーに
> そのソースを渡して、続きを書いたりして
そんな職場ならすぐ逃げ出すのが先では?
0698nobodyさん2006/07/08(土) 10:53:54ID:???
>>697 無職はすっこんでなさい。
0699nobodyさん2006/07/08(土) 11:04:17ID:???
可読性は Python >= Ruby >> PHP >> Perl
Pythonはたいへん読みやすい。
Rubyで書かれたスクリプトは読みやすいんだけど、メタプログラミングされるとわけわかになりやすい。
Perlの読みにくさは頭ひとつ抜け出してる。Perlのモットーである「TMTOWTDI」(やり方はひとつではない)は、メンテする側からみると悪。
0700nobodyさん2006/07/08(土) 11:13:19ID:???
じゃあpythonを採用するお
0701nobodyさん2006/07/08(土) 14:10:08ID:???
>>696
ただ、>>696の前提で言うと、「その言語をマスターしている人員を確保できるかどうか」がもっとも重要な要因だと思う。
その意味で言うと、日本においてはPythonはPerlやPHPやRubyと比べてマイナーなので、Pythonを知っている人間を確保するのが難しい。
だから日本限定で考えるなら、Rubyのほうがいいと思う。
ヨーロッパならPythonがすごい人気なんだけどね。
0702nobodyさん2006/07/08(土) 14:37:54ID:???
ヨーロッパから人を確保すればいいんじゃね?
0703nobodyさん2006/07/08(土) 19:14:45ID:???
ぼけたつもりなんだろうか。。。
0704nobodyさん2006/07/09(日) 00:08:24ID:1tf/JQSh
PHPはパッケージが作れないのがいたいね。
このクラス・関数がどのファイルで定義されているのか追っていくのがキツイ。
パッケージがないから、ろくなライブラリが育たず、この5年で見ても死屍累々とすでに使われなくなったライブラリの山。
最近のPHPプログラマーが昔(と言っても3−4年前)のソース見ると、訳の分からないコードになってる。
0705nobodyさん2006/07/09(日) 04:07:40ID:???
>>704
だね。
OOひとつやるのにもモリモリモジュールだらけになっちゃうPerlと一緒で、
痛いよね。
この2言語はもう駄目だね。
0706nobodyさん2006/07/09(日) 04:43:57ID:???
Perlは廃れ始めると有名な人達がいわゆるクール(笑)な何かを作るから困る。
この悪循環でPerlは何年も延命してきている。たとえハック(笑)に優れていても、
彼らには人類にとって負の遺産を存続しているという罪悪感が無い。
突き詰めれば核兵器開発に携わる優秀な技術者と変わりない。
要するにただの馬鹿だ。
0707nobodyさん2006/07/09(日) 04:51:51ID:???
>>706
>突き詰めれば核兵器開発に携わる優秀な技術者と変わりない。
それは良くいいすぎ。
おじいちゃんが大好きな、過去を美化した昔話みたいなもんでしょ。
それ自体はボロボロだけど、おじいちゃんの脳は、それをどんどん素晴らしい物へと
変えていく。
0708nobodyさん2006/07/09(日) 05:40:49ID:???
お互いにこけにしあってるだけで、結局どんぐりの背比べじゃんw
0709nobodyさん2006/07/09(日) 05:44:26ID:???
>>708
どんぐりの背比べじゃなくて、どっちも使うなということです。
0710nobodyさん2006/07/09(日) 07:08:11ID:???
perl6は後方互換なしで0から再スタート
0711nobodyさん2006/07/09(日) 07:24:51ID:???
なるほどな、PerlはLightweight Language界のCOBOLというわけか。
言語としては時代遅れだけど、過去の遺産が大きくていまさら乗り換えられない。
0712nobodyさん2006/07/09(日) 07:35:08ID:???
>>710
その方がいいとは思うけどね。
出ればの話ですが…

0713nobodyさん2006/07/09(日) 09:58:52ID:???
>>712
本家見てれば分かるけど、今更出ないという事はありえない。
0714nobodyさん2006/07/09(日) 10:24:35ID:???
>>713
本家見てないから分かりません。
0715nobodyさん2006/07/09(日) 11:47:24ID:???
Gentoo : IntelR PentiumR?4 Computer Language Shootout Benchmarks
http://shootout.alioth.debian.org/gp4/index.php
0716nobodyさん2006/07/09(日) 13:03:53ID:???
>>715
Ruby遅いな・・・
0717nobodyさん2006/07/09(日) 16:51:53ID:???
>>713
じゃぁいつ出るの?
0718nobodyさん2006/07/09(日) 16:57:26ID:???
perl6ってまだ仕様もfixしてないんじゃなかったか
欲張りに機能盛り込む議論ばっかりやってて何年も決まらない
pugsがあっても、もう既に破綻してると思うんだが
0719nobodyさん2006/07/09(日) 18:27:34ID:???
PHP6で
if (...) class {...} else class {...}
こんなんできるようにするか議論されてるらしいけど、どうなのこれ?
0720nobodyさん2006/07/09(日) 19:17:37ID:???
>719
そもそも最近の言語で特殊なシンタックスなしにそれができないなんてどうかしてる
0721nobodyさん2006/07/09(日) 19:39:12ID:???
>>720
どういうとき使うの?
0722nobodyさん2006/07/09(日) 19:47:57ID:???
>>720
ほとんど不要なものが実装されてないくらいで、どうかしてると思う方がどうかしてる
0723nobodyさん2006/07/09(日) 20:47:35ID:???
if (cond) { class ... } else { class ... }くらいできないの?
0724nobodyさん2006/07/09(日) 23:13:25ID:???
>perl6は後方互換なしで0から再スタート
言語としてのPerl6ならそれで正しい
インタプリタ/コンパイラとしての"perl6"は後方互換はあるよ。

全部parrotが吸収するからそれが出来る。
0725nobodyさん2006/07/09(日) 23:38:14ID:???
Parrotってもう出来上がってるの?
まだなら、いつ頃出来上がる予定なの?
0726nobodyさん2006/07/10(月) 00:08:08ID:???
今利用できないものに、実用的な意味はない。
0727nobodyさん2006/07/11(火) 03:39:24ID:byVkHhC7
自分でインストールすれば使えるよ、ずっと前から
ただ、変なインストールしようとすると対応してない場合があるっぽい(自分でナントカしろと説明書にかいてある・・・w
Windowsなら、もうコピーするだけの奴を公開してくれてる人が居るので簡単に使える。
0728nobodyさん2006/07/14(金) 00:59:43ID:g/iLFj37
何やかんやで、結局使われてるのはPHPだね。
0729nobodyさん2006/07/14(金) 10:04:00ID:wmyV4wcm
勝利宣言は思考停止
0730nobodyさん2006/07/14(金) 10:34:40ID:???
IT後進国ではperlとphpがメインで使われてます。
世界的に見れば、あらゆるシーンで使用されているpythonが便利です。
0731nobodyさん2006/07/14(金) 11:06:06ID:???
世界中後進国だらけだな。
0732nobodyさん2006/07/14(金) 21:30:06ID:???
まあ、功深刻の方が多いと思うよ
0733nobodyさん2006/07/17(月) 18:16:08ID:???
多いというか全部の国がそうなりそうだな。
0734nobodyさん2006/07/18(火) 02:08:23ID:???
try:
    >>733
except US,DE:
    print "hello!"
0735nobodyさん2006/07/18(火) 09:08:37ID:???
PythonがPerlやPHPを押しのけてメインというぐらいに
使用率とかで普及してるん?
0736nobodyさん2006/07/18(火) 12:19:03ID:???
ヨーロッパでは。
例えばRedHatやFedraの管理ツールはぜんぶPython。
Google社内の管理ツールもPython。
0737nobodyさん2006/07/18(火) 12:49:15ID:???
>>736
RedHatもGoogleもアメリカですが。
0738nobodyさん2006/07/18(火) 13:20:27ID:???
pythonが日本以外ではわりと使われているのは確かだ。
日本で使われていないのはrubyなんていうのがあるせいだな。

言語(文法)としてのデキや優劣は使う人次第であったり、好き嫌いも含まれると思うが、
パフォーマンスや不具合などをみれば、python > ruby で、pythonの方が優秀だ。
これは単純に世界での使用者の人口比率に比例しているだけだがな。

使用人口をwebという分野でみれば、php > python だ。
スクリプトとしてみれば、 python > php だな。

ただし、phpは節操なしで、ポリシーなくなんでも取り込んだせいで、言語としては最悪だ。

え?perl?まだいたの?
0739nobodyさん2006/07/18(火) 14:04:28ID:???
rubyはPC98でpythonはPC/AT互換みたいなもんだ
0740nobodyさん2006/07/18(火) 14:07:57ID:???
ただ最近はRailsのお陰で、向こうのLinux系の雑誌でも
Rubyの特集があったりするよ。
0741nobodyさん2006/07/18(火) 18:40:44ID:???
>>740>>739 風に言うなら。

エロゲーのお陰で、向こうのPC系の雑誌でも
PC98の特集があったりするよ。
0742nobodyさん2006/07/18(火) 23:36:01ID:???
少なくともいままでの経験からいうと
ruby pythonは鯖管が入れてくれない

ひどいとこだとperlもcコンパイラも入れてくれないので
「bshとawkとsedでなんとかしろ」とか言われちゃったりする

めんどくさい仕事は増やさない、それが鯖管
0743nobodyさん2006/07/18(火) 23:42:47ID:???
不幸だね。
0744nobodyさん2006/07/19(水) 01:05:50ID:???
昼は棍棒片手にマンモス狩りに行ってそう
0745nobodyさん2006/07/19(水) 02:15:48ID:???
スクリプターと鯖缶って仲悪いのか
0746nobodyさん2006/07/19(水) 08:58:39ID:???
いまどきawkはありえない。
0747nobodyさん2006/07/19(水) 09:33:08ID:???
いまどきそんな鯖少ないと思うけどな
ruby入ってる所も多くなって来たし
0748nobodyさん2006/07/19(水) 09:42:50ID:???
sedなんて今世紀に入ってからはじめて見た
まだ生きてたのか
0749nobodyさん2006/07/19(水) 11:13:15ID:???
サーバーそのものの管理に
Perl や Python 使ってそうなもんだけどな。
0750nobodyさん2006/07/19(水) 11:21:02ID:???
1:サーバがVAX
2:サーバがPDP
3:サーバがDSLite
0751nobodyさん2006/07/19(水) 11:58:35ID:???
今PHP使いだけど、Pythonを勉強しようと思う。

マニュアルなどを斜め読みして期待してるのは、
1.実行速度が早そう
2.Windows用にexe化できる(コードを隠蔽できる)
3.PHP-GTKより簡単にGUIを作れそう(資料も多そう)
てなところ。

GUIがほしいのでJavaにしようかと思ったけどちょっと寄り道してみる。
Python使いの方、これらの期待は妥当でしょうか。
0752nobodyさん2006/07/19(水) 12:23:25ID:???
ゆとり教育の影響か、「日本語」で資料が揃っているという条件も大きいですね。

Ruby > Python
0753nobodyさん2006/07/19(水) 12:39:42ID:???
Rubyの日本語資料ってどこにあるの?
0754nobodyさん2006/07/19(水) 12:46:46ID:???
>>753
http://www.amazon.co.jp/

Pythonについて日本語で書かれた本、少ないと思いませんか?
行き詰った時に、Googleで英語サイトに行かないといけないのは、語学が堪能じゃない人には少々厳しいですね orz
0755nobodyさん2006/07/19(水) 12:46:49ID:???
パフォーマンスが特に高いわけじゃないし、py2exeはソースをZIPで固めてexeの末尾に付けるだけ。
だれでも解凍してソース読める。GUIは知らない。
0756nobodyさん2006/07/19(水) 12:48:36ID:???
>>754
行き詰まったときにそもそもGoogleでヒットする資料すらないんだが...
07577542006/07/19(水) 12:50:28ID:???
Pythonユーザーさんは、ノウハウを日本人に還元するという意味で、出版社にPython本の企画持ち込んでみて。
07587512006/07/19(水) 13:07:36ID:???
>>755
そうですか。
ソース見られても良いけど、データベースの接続パスワードなんかは
あんまり見られたくないなと思ってたもので。
まあDB側で適切なユーザ設定しとけばいいんですけどね。
0759nobodyさん2006/07/19(水) 13:54:02ID:???
そこでBoost.Pythonですよ
0760nobodyさん2006/07/19(水) 14:33:03ID:???
>>757
日本のpythonユーザは閉鎖的なんで無理です
0761nobodyさん2006/07/19(水) 15:02:45ID:???
>>755
出来上がった実行ファイルってどうやって解凍するんですか?
今、手元にpy2exeで作ったファイルがあるので試してみたいです。
0762nobodyさん2006/07/19(水) 15:20:36ID:???
unzip 実行ファイル
0763nobodyさん2006/07/19(水) 15:58:22ID:???
(1)pythonってexe作れるの?
(2)rubyってexe作れるの?
(3)PHPってEXE作れるの?
(4)PerlってEXE作れるの?
(5)pythonってソース隠せるの?
(6)rubyってソース隠せるの?
(7)PHPってソース隠せるの?
(8)Perlってソース隠せるの?
0764nobodyさん2006/07/19(水) 17:47:28ID:???
1. py2exe
5. .py > .pyc, decompyle ?
0765nobodyさん2006/07/19(水) 18:18:48ID:???
(2) Exerb
(4) PAR
0766nobodyさん2006/07/19(水) 18:46:34ID:???
(7) コンパイルする
(8) コンパイルする(perlcc)
0767nobodyさん2006/07/19(水) 19:52:44ID:???
そこでhaskellですよ
07687422006/07/19(水) 20:02:56ID:???
>>746
>>748
そう思っていた時期が私にもありました(AA略

世の中には不思議なことなどなにもないのだよ…
0769nobodyさん2006/07/19(水) 23:43:41ID:???
Python初心者です。

Pythonのスレが無いので質問させていただきます。
Python日本ユーザ会ではWindows用日本語環境用インストーラとして
version 2.3を配布していますが、ソースをUTF-8で書くなら通常版の
version 2.4を入れても良いのでしょうか?
0770nobodyさん2006/07/20(木) 00:20:13ID:???
>>769
いいんじゃね?

つか気になるならニホンゴ使わなきゃもっといいんじゃね?
0771nobodyさん2006/07/20(木) 00:21:14ID:???
あとついでに誘導

Pythonのお勉強 Part10
http://pc8.2ch.net/test/read.cgi/tech/1151508809/
0772nobodyさん2006/07/20(木) 00:51:31ID:???
標準ドキュメントはWebで一通りそろっているから、
本がないからといってそうそう嘆くこともないと思うが>python

個人的にはCGIをちょこちょこ使うだけなんで、日本語サイトでいっぱい
配布されてるPerl/PHP > あんまり配布されてないPython/rubyぐらいの認識。
0773nobodyさん2006/07/20(木) 02:09:31ID:???
>>763-766
結論
(1)pythonってexe作れるの?作れる
(2)rubyってexe作れるの?作れる
(3)PHPってEXE作れるの?不明
(4)PerlってEXE作れるの?作れる
(5)pythonってソース隠せるの?無理
(6)rubyってソース隠せるの?不明
(7)PHPってソース隠せるの?できる
(8)Perlってソース隠せるの?できる

追加質問
(9)ハスケルってexe作れるの?
(10)ハスケルってソース隠せるの?
0774nobodyさん2006/07/20(木) 02:18:59ID:???
(5) バイトコードにコンパイルして.pycか.pyo配れば隠せる。
0775nobodyさん2006/07/20(木) 05:10:29ID:???
>773
おまえはそろそろレスをきちんと読んで自重しろ
Haskellなんて使いこなせると思ってんのか
0776nobodyさん2006/07/20(木) 07:57:12ID:???
そういう>>775は使いこなしてるのか。
0777nobodyさん2006/07/20(木) 10:10:01ID:???
Python勉強中。。。
Pythonのオンラインドキュメント検索機能付けてくれんかなw
それかchm形式のマニュアルがほしい。
今はPDFを落として検索してるけどファイルを切り替えて検索するのめんどい。
でもあるだけ感謝しなくちゃね。

ところでネットで拾ったソースで
unicode('あいう', 'utf_8').encode('japanese.sjis', 'replace')
という記述があって意味も分かるんだけど、unicodeのその他のメソッドを
調べるためにはどこを見たらいいのだろう。。。検索にヒットしない
0778nobodyさん2006/07/20(木) 10:45:28ID:???
>>777
というか、ほとんどstrと同じみたいですが、・・・
http://www.python.jp/doc/release/lib/string-methods.html
>以下は 8 ビット文字列および Unicode オブジェクトでサポートされるメソッドです:
0779nobodyさん2006/07/20(木) 10:46:13ID:???
pydoc使ったらいいんじゃない?
0780nobodyさん2006/07/20(木) 10:53:30ID:???
>>773
ハスケルはむしろネイティブコード吐く処理系の方が多い。
0781nobodyさん2006/07/20(木) 10:55:29ID:???
for k in dir(unicode):
v = getattr(unicode, k, None)
help(v)
07827772006/07/20(木) 11:43:34ID:???
>>778
ありがとうございます。
まだチュートリアル読んだばかりで全体が見えてないので、もっとマニュアル見なきゃいけないですね。

>>779
pydocですか。調べてみます。

>>781
とりあえずzfillの使い方が出てきました。
dir(unicode)でメソッドの一覧が見えるんですね。おもしろい。

あ、ちょっと読み返したム板にスレがあるんですね。失礼しました。
0783nobodyさん2006/07/20(木) 11:48:20ID:???
>>777
ttp://www.python.jp/pub/doc_jp/Python24jp_chm.zip
■ このスレッドは過去ログ倉庫に格納されています