■Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1
42 : デフォルトの名無しさん : 2011/11/12(土) 23:53:51.20
Pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ
端末からのテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに
PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?
けどまぁ、情弱な文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか
45 : デフォルトの名無しさん : 2011/11/13(日) 01:41:24.25
数値計算や端末からのテキスト処理なんてWeb系じゃ大して使わないからなあ…
43 : デフォルトの名無しさん : 2011/11/13(日) 00:04:23.30
PHPが未だに現役なのは、単に歴史的な経緯でしかないだろ
Pythonに関しては、ZopeさえコケていなければWebサーバ用LLとして大成功していたはずなのに、
Railsなんかが登場したおかげで、すっかり影が薄くなってしまいますた….
44 : デフォルトの名無しさん : 2011/11/13(日) 00:49:55.28
zopeってコケてたんだ
ってか、railsにインスパイアされたフレームワークって今じゃ幾らでもあるよね
djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、
pythonやPHPの方がユーザー数は圧倒的に多いと思うんだけど
本家のrailsって、他を遥かに越えるほど良いものなんだっけ?
48 : デフォルトの名無しさん : 2011/11/13(日) 08:30:25.68
44
Zopeが登場した当時、「RDB+PHPはもう古い、これからはOODB+ZopeがWebの中軸になる!」と
さかんに宣伝され、雑誌でもZope特集が組まれていた
少なくとも自分はZopeからPythonという言語を知ったし、その時点でRubyは知らなかった
そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう
今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい
djangoとCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう
しかしRailsはRailsでコミュニティの活動が活発だし、その進化は異常に早い
Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoやCakePHPから
何かのイノベーションが提示されでもされない限り、後発のdjangoやCakePHPがRailsに追いつくのは無理
Railsは決して技術的に完璧なWebフレームワークではないんだけどね….(たとえばSeaSideのような…. )
だからこそ「もしもZopeが….だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている
51 : デフォルトの名無しさん : 2011/11/13(日) 12:55:40.83
C a k e P H P は う ん こ
遅い、設計が古い、動作がおかしいの3重苦
日本では流行ってないけど海外だとYiiが流行ってきてる
55 : デフォルトの名無しさん : 2011/11/13(日) 17:31:12.14
CakePHP使ってんの?
可哀そうにw
53 : デフォルトの名無しさん : 2011/11/13(日) 14:44:48.55
求人がPHPばかりだから、PHPやるしかないだろ。
57 : デフォルトの名無しさん : 2011/11/13(日) 19:34:04.95
でもやっぱりいつもの使い慣れたLL(Python/Ruby)で
Webサービスを書きたいってのがある
73 : デフォルトの名無しさん : 2011/11/15(火) 17:32:46.07
アメリカの言語ユーザー数は
Python>>>>>>>>Ruby
求人数は
Ruby on Rails>>>>>>>>Django
http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=
どういうことなの?
74 : デフォルトの名無しさん : 2011/11/15(火) 17:48:15.59
RubyはRails以外に使い道がないから
75 : デフォルトの名無しさん : 2011/11/15(火) 17:54:35.50
海外ではRubyは昨今のRailsバブルのお陰で
もはやWeb系スタートアップの共通語になってるらしいからね
求人数が多いのはそのためだと思うよ
76 : デフォルトの名無しさん : 2011/11/15(火) 18:03:23.05
なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・
Pythonのほうが使いやすいと思うのだがフレームワークはRailsが優位なんだろうか
77 : デフォルトの名無しさん : 2011/11/15(火) 18:23:14.33
Djangoは周辺ライブラリが微妙だし本体も鈍くさい感じがする。
でも、FlaskはSinatraより好きだから、Pythonが嫌いってわけではない。むしろ好き。
ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。
78 : デフォルトの名無しさん : 2011/11/15(火) 18:38:46.28
同感だ
同じように思っている人が他にもいて安心した
79 : デフォルトの名無しさん : 2011/11/15(火) 18:54:37.13
PHPやJava、Scalaには
Railsみたいなフレームワークあるのに
Pythonにはいいのないんだよな
80 : デフォルトの名無しさん : 2011/11/15(火) 21:19:09.89
PHPはフレームワークが乱立しすぎているから、RailsをPHPで実装してみようというやつが出てきた。
Scalaも注目されだしたのはつい最近のことだしな。
それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、
いつの間にかフェードアウト。
ただ、どうやってもRailsもどきがRailsを超えることはできないのは間違いない。
83 : デフォルトの名無しさん : 2011/11/15(火) 21:25:38.55
パクリはオリジナルを超えられない(キリッ って定型句だけど、
これってキリッって言いたいだけだと思う。
後発品が先に出たものを超えたものなんていくらでもあるから。
84 : デフォルトの名無しさん : 2011/11/15(火) 21:30:04.39
D言語って超えたって?
85 : デフォルトの名無しさん : 2011/11/15(火) 21:31:12.00
B言語って超えたって?
86 : デフォルトの名無しさん : 2011/11/15(火) 21:53:33.76
でもRailsはRubyの黒魔術を使いまくりだからな
PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない
90 : デフォルトの名無しさん : 2011/11/15(火) 22:50:07.81
スタートアップなんて根無し草の集まりにとって、
googleが囲った言語にcoolさを見出せないんだろ
123 : デフォルトの名無しさん : 2011/11/20(日) 11:32:16.79
まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ
91 : デフォルトの名無しさん : 2011/11/15(火) 22:52:42.98
そういう理由じゃなくてRailsのほうが単純に情報もプラグインも多いからでしょ
3 : デフォルトの名無しさん : 2011/11/15(火) 23:07:07.67
linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん
わざわざ不合理で不完全な言語を使うなんて
社会からハミ出た奴らの精神的な作用によるものじゃないの?
95 : デフォルトの名無しさん : 2011/11/15(火) 23:20:20.21
djangoの情報とプラグインが増えないという、
現実に対する鬱憤を吐いてるようにしか聞こえないな
もしも
>linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん
真実であるのなら、今頃はdjangoの情報とプラグインが溢れかえっているはず
104 : デフォルトの名無しさん : 2011/11/16(水) 01:20:49.05
Python信者乙。
yumや、gdbとgnomeの拡張がpythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。
ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。
94 : デフォルトの名無しさん : 2011/11/15(火) 23:15:11.93
というか、世界中のPythonプログラマが Remeber Zope!! を合い言葉に
打倒RailsたるWebフレームワークを開発しているはずだけど、
いまだにRailsを超えるプロダクトが登場しないのはナゼ?
Railsも登場してから、かなりの年月が経過しているんだけどなぁ….
その間にもRailsはRails 3が登場して、REST/AJAXの強化等の進化が継続しているよ
347 : デフォルトの名無しさん : 2011/12/09(金) 10:16:35.22
Ruby では
ary.map {|x| x**2}
となるものが、Python では
map(lambda x: x**2, ary)
となり、lambda の本体が1つの式では表現しきれなくなると
def mapper(x):
…..
map(mapper, ary)
と書き換える必要があります。
348 : デフォルトの名無しさん : 2011/12/09(金) 10:24:20.94
Pythonのlambdaを用いた階乗計算
f = lambda x:(x and f(x-1)*x)or 1
RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから、
andやorを使った不自然な記述をしなくても
f = lambda{|x|if x == 0 then 1 else x*f.call(x-1) end}
または
f = lambda{|x|x == 0 ? 1 : x*f.call(x-1)}
と書けます。lambda内でreturnが使えますから、書きたければ
f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}
でもOKです。
390 : デフォルトの名無しさん : 2011/12/10(土) 15:35:41.62
348
これはPythonをdisっているように見せかけてRubyをdisっているのか? と一瞬思ってしまったw
だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…
そしてどっちもlambda式の中で束縛変数の名前で再帰可能、と
350 : デフォルトの名無しさん : 2011/12/09(金) 11:12:13.28
要素に対する関数の適用と、抽出を組み合わせる場合
Python
print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]
暗号のように見える。
Ruby
puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}
思考の流れと、コードの流れが一致しているので書きやすい。
351 : デフォルトの名無しさん : 2011/12/09(金) 11:22:55.04
だれだPythonなら書き方はひとつとか言ってるのは
map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))
354 : デフォルトの名無しさん : 2011/12/09(金) 12:22:07.37
pythonて可読性が高いのをうたってる割にはそこいまいちだよね
353 : デフォルトの名無しさん : 2011/12/09(金) 12:10:08.46
Rubyの場合には、左から右へと無名関数がデータフローあるいは
パイプラインのように並ぶから、コードが読みやすい
関数型プログラミングに不慣れな初心者でも、参照透明性のあるコードが自然に書ける
プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby
それと比較すると、Pythonのコードは、関数型プログラミングというものが
いかに高度で難解なものであるかという事をもったいぶってプログラマに押し付ける
もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう
356 : デフォルトの名無しさん : 2011/12/09(金) 12:53:45.66
階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す
result_list = source_list.map { |elem|
x = foo(elem.x) # ここが局所宣言を書く部分
y = bar(elem.y) # ここも局所宣言の続き
x + y # 最後に評価された式の値が、無名関数のリターン値になる
}
Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから、
x = foo(…) のような代入文がいくつでも(= 複雑な処理でも)書ける
このポイントは、実用的なプログラムを関数型風で書こうとした時に、威力を発揮する
357 : デフォルトの名無しさん : 2011/12/09(金) 12:59:21.07
余計分かりづらくなった
358 : デフォルトの名無しさん : 2011/12/09(金) 13:17:26.54
リスト内包表記が暗号みたいと言ってる奴は
高卒ドカタなんだろうなぁと可哀想になる
大学で数学に触れる機会があれば
集合の表記に似せてることが分かるから
386 : デフォルトの名無しさん : 2011/12/10(土) 01:41:34.46
数学とかで慣れてるし区切りが関数のがわかりやすい
359 : デフォルトの名無しさん : 2011/12/09(金) 13:46:31.97
355
>map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。
関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね
Rubyの魅力はこれから関数型プログラミングを学ぼうとする初心者、 あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ
360 : デフォルトの名無しさん : 2011/12/09(金) 13:53:28.85
Rubyだと直感的に書けるコードも
[1,4,3,2].sort.reverse.map{|x| x.to_s}.join(’-')
Pythonだと読みにくい。
‘-’.join(map(str, reversed(sorted([1,4,3,2]))))
361 : デフォルトの名無しさん : 2011/12/09(金) 14:07:17.88
360
Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると…..
364 : デフォルトの名無しさん : 2011/12/09(金) 14:28:55.99
カッコだらけのコードを分かりやすくする基本的な方法は静的単一代入じゃないか
Rubyのやり方は基本ではなく玄人のやり方だろ
372 : 369 : 2011/12/09(金) 16:21:03.82
Pythonでは組み込みの型でメソッドチェインはやって欲しくないな
listにmap,filterメソッドができたとしても、
似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。
シーケンスプロトコルの利点が活かせない。
383 : デフォルトの名無しさん : 2011/12/10(土) 01:17:28.39
372
外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてますね
Rubyユーザーは列挙可能なものはmapやselectできて当然だろって思ってる気がします
377 : デフォルトの名無しさん : 2011/12/09(金) 18:41:51.79
Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる
得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない
Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い
379 : デフォルトの名無しさん : 2011/12/09(金) 18:48:52.27
Pythonのユーザー調教っぷりは異常
「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く
387 : デフォルトの名無しさん : 2011/12/10(土) 13:40:40.74
リストの内包表記はシンプルに書けるときは使うけど
基本その場でdefするのがPython風なんだと思う。
389 : デフォルトの名無しさん : 2011/12/10(土) 14:40:31.04
無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像。
384 : デフォルトの名無しさん : 2011/12/10(土) 01:23:49.48
outer(center(inter( arg )))
これを読みづらいと感じるのは、左から右に流れる
日本語文に慣れているからだと思うが、
もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?
385 : デフォルトの名無しさん : 2011/12/10(土) 01:34:57.89
なるほど、ということは右から左、左から右どっちでも行ける言語が最高ですね
F#のパイプライン演算子最高ということで