【Perl,PHP】LLバトルロワイヤル13【Ruby,Python】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/10/25(月) 03:23:510002デフォルトの名無しさん
2010/10/25(月) 03:31:390003デフォルトの名無しさん
2010/10/25(月) 03:47:55エントリーは、Perl、PHP、Python、Ruby、JavaScript・・・
さあ、死ぬまで語りやがれ!!!
■LLとは?
軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、
コードの作成や修正が容易と見なされるプログラミング言語のことを指す。
ここでいう「軽さ」はプログラマの負担の軽重を指し、
実行速度に優れているという意味ではない。
現在の水準では
・インタプリタ
・動的型
・正規表現
・クロージャ
などを利用できるものがLLと呼ばれることが多い。(Wikipediaより)
過去スレは容量オーバーのため>>2に分離
0004デフォルトの名無しさん
2010/10/25(月) 03:49:11死ね
0005デフォルトの名無しさん
2010/10/25(月) 03:49:24【Perl,PHP】LLバトルロワイヤル12【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1284382120/
■過去スレ
【Perl,PHP】LLバトルロワイヤル11【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1276128624/
【Perl,PHP】LLバトルロワイヤル10【Ruby,Python
http://pc12.2ch.net/test/read.cgi/tech/1270996206/
【Perl,PHP】LLバトルロワイヤル9【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1267553581/
【Perl,PHP】LLバトルロワイヤル8【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1259287439/
【Perl,PHP】LLバトルロワイヤル7【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1248487404/
【Perl,PHP】LLバトルロワイヤル6【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1244166510/
【Perl,PHP】LLバトルロワイヤル5【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1238720336/
【Perl,PHP】LLバトルロワイヤル4【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1234635513/
【Perl,PHP】LLバトルロワイヤル3【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1215319832/
【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1209289408/
【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1188997302/
0006デフォルトの名無しさん
2010/10/25(月) 04:24:36PHP は COBOL, ASP, Java みたいに限られた用途に特化した言語だと思う。
0007デフォルトの名無しさん
2010/10/25(月) 04:28:130008デフォルトの名無しさん
2010/10/25(月) 08:32:230009デフォルトの名無しさん
2010/10/25(月) 10:16:530010デフォルトの名無しさん
2010/10/25(月) 10:47:520011デフォルトの名無しさん
2010/10/25(月) 11:31:38PerlやPythonの方がマシ
0012デフォルトの名無しさん
2010/10/25(月) 12:27:330013デフォルトの名無しさん
2010/10/25(月) 20:57:030014デフォルトの名無しさん
2010/10/26(火) 03:17:53forやwhileで回す文化?
0015デフォルトの名無しさん
2010/10/26(火) 03:44:210016デフォルトの名無しさん
2010/10/26(火) 07:31:43for DragonよりかはWhile Dragonの方がかっこいいです
0017デフォルトの名無しさん
2010/10/26(火) 07:33:00Pythonには外部イテレータを簡単に作れるジェネレータがある
0018デフォルトの名無しさん
2010/10/26(火) 08:07:43ジェネレータの方が簡単なのでみんな外部イテレータを使ってるだけ
0019デフォルトの名無しさん
2010/10/26(火) 09:26:47簡単に作れるって、eachとかmapとかinjectとか、毎回自分で定義すんの?めんどくさ
0020デフォルトの名無しさん
2010/10/26(火) 09:32:17無知って言えばいいのかな
0021デフォルトの名無しさん
2010/10/26(火) 09:33:01外部イテレータ文化なので外部イテレータと組み合わせて使うforを使うのだというか。
0022デフォルトの名無しさん
2010/10/26(火) 09:59:11vs
シンボルも理解できないPython信者
ファイッ!!
0023デフォルトの名無しさん
2010/10/26(火) 10:01:160024デフォルトの名無しさん
2010/10/26(火) 10:24:14eachがPythonのforとほぼ同じ。
0025デフォルトの名無しさん
2010/10/26(火) 10:47:230026デフォルトの名無しさん
2010/10/26(火) 11:01:01iteratorを意識した特殊仕様の不純物なんだよな
だが便利なのでRubyでは多用されている
一方Pythonのlambdaは非常に非力なので、多用されない
ループ的な処理を高階関数でやると関数呼び出しのオーバヘッドで遅くなるから、
というのも理由にされている(らしい)
それは実際その通りで、C++のように関数呼び出しをインライン消去できない言語では
そうならざるを得ないんだが、
Pythonはもともと糞遅い言語なのでそれは二次的な理由で、
lambdaの非力さと、Rubyのブロックつきメソッドのような
構文的サポートがないことにより、単にPythonで似たようなことをやろうとしても
不便なので誰もやらない、ということにつきると俺は思っている
0027デフォルトの名無しさん
2010/10/26(火) 11:17:33File.open(...) { |f| ... }
みたいなパターンの奴は、Pythonではwithブロックを使う
with open(..) as f: ...
ただしCPythonはリファレンスカウントなので、それを使うまでもない
ことが多い
0028デフォルトの名無しさん
2010/10/26(火) 13:21:45e.each{|x| ... } → for x in e: ...
e.map{|x| ... } → [ ... for x in e] または map(xを引数にとる関数, e)
e.select{|x| ... } → [ x for x in e if ... ] または filter(xを引数にとる関数, e)
e.inject(init){|t,x| ... } → reduce(tとxを引数にとる関数, e, init)
Pythonあんまり使わんから解らんけど、reduceって内包表記じゃ書けないの?
まあresult=initしてfor x in e: result=...でいい気はするけど
0029デフォルトの名無しさん
2010/10/26(火) 13:48:44内包表記って「リストを返す」もんだから、その時点でreduce()とは別物
まあおおざっぱに言ってmap()/filter()の相当物だわな
無理に書けばこんなコードになる
def make_accumulator(init, f):
_ = [ init ]
def thunk(x):
_[0] = f(_[0], x)
return _[0]
return thunk
def my_reduce(f, xs, init):
acc = make_accumulator(init, f)
return [acc(x) for x in xs][-1]
print my_reduce(lambda x, y: x + y, range(1, 11), 0)
0030デフォルトの名無しさん
2010/10/26(火) 14:00:00lamdaが非力なのは意図的なので、lamdaが非力な言い訳だとお前が思うのは、お前の中だけの正解だな。
0031デフォルトの名無しさん
2010/10/26(火) 14:02:36Pythonはlambdaが非力で実に鬱陶しいと思った記憶しかないがなあ
もともと式言語なら中に式しか書けなくとも問題はないが、
何でも文、文、文な手続き型ベッタリの言語だし
せっかくファーストクラスの関数を持ってるのに、この辺でかなり台無し
0032デフォルトの名無しさん
2010/10/26(火) 14:03:42まあ馬鹿馬鹿しいからこんなコードを書く奴はいないが
0033デフォルトの名無しさん
2010/10/26(火) 14:10:01http://www.python.jp/doc/2.4/lib/module-timeit.html
timeit.Timer('for i in xrange(10): oct(i)', 'gc.enable()').timeit()
なんじゃこりゃw
0034デフォルトの名無しさん
2010/10/26(火) 14:17:52何が恥ずかしいの?
独立した環境で式を実行するために式を文字列で渡しているだけだよね。
構文で独立した環境を作る機能をサポートしないといけない?
0035デフォルトの名無しさん
2010/10/26(火) 14:21:13reduce は each と同じく、ただのループか、 reduce() 関数使うのがPythonicだな。
0036デフォルトの名無しさん
2010/10/26(火) 14:24:05そりゃあんた、素直に式や関数などのオブジェクトを渡したい、というニーズのほうが
独立した環境で計測したい、というニーズよりもずっと多いだろうよ
初心者はREPL上で
def foo(): ....
timeit.Timer(foo).timeit(10000)
となぜ書けないかを疑問に思い、
次に
timeit.Timer('foo').timeit(10000)
と書いてなぜ動かないかを疑問に思うわけだ
0037デフォルトの名無しさん
2010/10/26(火) 14:25:15まあどうでもいい話だが
0038デフォルトの名無しさん
2010/10/26(火) 14:28:14reduce()はPythonicではないらしいぞ
http://www.artima.com/weblogs/viewpost.jsp?thread=98196
0039デフォルトの名無しさん
2010/10/26(火) 14:29:53これは動くよ? 2.6からだけど
0040デフォルトの名無しさん
2010/10/26(火) 14:37:01あー、そうなのか
そりゃすまんかった
0041デフォルトの名無しさん
2010/10/26(火) 14:44:28(Lisp脳以外の普通の人間にとっては、)reduceはtirivialではなくて、
reduce の殆どのユースケースは sum, any, all でカバーでき、それ以外も
ループを使って書いた方が読みやすいから、 functools に追い出すよって話ね。
一応、モジュールに移動されたからそれを使うのが全てにおいてPythonicじゃない
というわけじゃない。(もしそうなら移動じゃなくて削除されるか、せめてdeprecatedになる)
殆どのユースケースではPythonicではないというだけだ。
0042デフォルトの名無しさん
2010/10/26(火) 14:54:00別にLisper専用ってことはないだろ
関数型言語にfoldがあるのは当然として、
C++にはaccumulate、C#にはAggregate、Rubyにはinject、という具合に
それを備えた言語は多い
0043デフォルトの名無しさん
2010/10/26(火) 15:00:36うん、Pythonだってreduceを無くすわけじゃない。あくまでも min max sum といった
ビルトイン関数群から降格されるだけ。
non trivial = 悪、では無いからね。
0044デフォルトの名無しさん
2010/10/26(火) 23:00:49Pythonなら「lambda使わなくてもできるんだし、Pythonicじゃない」という理由もありそう。
そういや、lambdaを採用したのは失敗って作者がいってなかったけ?
0045デフォルトの名無しさん
2010/10/26(火) 23:05:000046デフォルトの名無しさん
2010/10/26(火) 23:11:130047デフォルトの名無しさん
2010/10/26(火) 23:16:27単純な使い方しかしなけりゃ便利だし害もない。
顔をしかめて読んだり、行の真ん中読んだら初めの方を読み直したりしないと読めないコードはPythonでは嫌われる傾向にある。
0048デフォルトの名無しさん
2010/10/26(火) 23:19:54std::vector<int> someList;
int total = 0;
std::for_each(someList.begin(), someList.end(), [&total](int x) {
total += x;
});
std::cout << total;
こんな小汚い構文だが、こんなものでも無いよりはマシとかC++の人は
思ってるんだぞ(たぶん)
0049デフォルトの名無しさん
2010/10/26(火) 23:30:55structを関数内で定義するとテンプレートから参照できなくてエラーになるから
簡単なコードを渡すためだけでも離れた場所にstructを定義しないといけなかった。
JavaもC++よりはましだけど、関数一つ渡すためにclassを定義しないといけなかった
からクロージャや関数型変数の導入が考えられている。
それに対して、Pythonの場合実装が1行の関数を作るのには def foo(): を
つけるだけで良くて、コード上のオーバーヘッドが圧倒的に少ない。
関数内で名前付き関数を作るのが十分に簡単お手軽だから、lambdaの出番は
本当にちょっとした式だけで良い。
0050デフォルトの名無しさん
2010/10/26(火) 23:39:220051デフォルトの名無しさん
2010/10/26(火) 23:51:13勿論lambdaを捨ててしまっても、Pythonで「出来ること」に差は無いけど
「書きやすさ」には差がでるよね
俺はLLではそこは重視してるよ
たとえば>>29の例をgroovyで考える
groovyには内包表記は無いから「mapで無理やり貧者のreduceを作る」というお題と
読み替えると、以下のように書ける
>>29よりずっと簡潔だ
List.metaClass.foldLeft = {init, f ->
delegate.collect{init = f(init, it)}[-1]
}
println((1..10).foldLeft(0){ x, y -> x + y })
0052デフォルトの名無しさん
2010/10/27(水) 00:05:020053デフォルトの名無しさん
2010/10/27(水) 00:13:07そもそもプログラム書いてて「mapで無理やり貧者のreduceを作る」必要は全く無いからな。
reduceを作るならlamdaもmapも使わずにループを使えば良い。
def my_reduce(func, xs, init):
for x in xs:
init = func(init, x)
return init
>>29はあくまでも内包表記で無理やりreduceした例であって、lamdaの強さが書きやすさに
大きな影響を与える例ではない。
0054デフォルトの名無しさん
2010/10/27(水) 00:13:15なぜPythonでは>>51のように書けないのか考えてみるといい
0055デフォルトの名無しさん
2010/10/27(水) 00:14:460056デフォルトの名無しさん
2010/10/27(水) 00:16:29ループで十分だから。
0057デフォルトの名無しさん
2010/10/27(水) 00:19:21http://www.unixuser.org/~euske/doc/python/python-lisp-j.html
技術野郎の復讐---Revenge of the Nerds---
http://www.shiro.dreamhost.com/scheme/trans/icad-j.html
「技術野郎の復讐---Revenge of the Nerds---」への反響
http://www.shiro.dreamhost.com/scheme/trans/icadmore-j.html
PythonとLispの関係について
http://www.shiro.dreamhost.com/scheme/trans/IsPythonLisp-j.html
0058デフォルトの名無しさん
2010/10/27(水) 00:19:45そ、Pythonだとそう書くことになるんだよね
> >>29はあくまでも内包表記で無理やりreduceした例であって、
> lamdaの強さが書きやすさに大きな影響を与える例ではない。
Pythonで>>51のように書けないのは、lambdaが弱いからだよ
そして、higher order functionを使いたいケースというのは別にループに
限らない
0059デフォルトの名無しさん
2010/10/27(水) 00:22:550060デフォルトの名無しさん
2010/10/27(水) 00:24:38単にhigher order functionを使った「抽象化」がしにくい/使いにくいってことさ
上の例は、確かに無用なくだらない例に過ぎないが
0061デフォルトの名無しさん
2010/10/27(水) 00:25:25>>51のように書けなくても、>>53のように書けるから全く困ってないし、
Pythonの人達は >>51 よりも >>53 の方が読みやすいと思ってるんだよ。
>そして、higher order functionを使いたいケースというのは別にループに
>限らない
そして、Pythonは名前付き関数を簡単に定義できるから、lamdaが式しか
書けなくても higher order function を使いたいケースで特に困らない。
0062デフォルトの名無しさん
2010/10/27(水) 00:28:41そのhigher order functionを使いたいケースで、確かにPythonでも
書けるし困らないかもしれないが、
「困らない」といいつつ、その記述力には上で見たとおりの差があるんだよ
実際、うまく書けないからループに逃げたんだろう?
0063デフォルトの名無しさん
2010/10/27(水) 00:30:530064デフォルトの名無しさん
2010/10/27(水) 00:31:07def my_reduce(f, xs, init):
def g(x, acc=[init]):
acc[0] = f(acc[0], x)
return acc[0]
return [g(x) for x in xs][-1]
と書いてみるテスト。
0065デフォルトの名無しさん
2010/10/27(水) 00:32:370066デフォルトの名無しさん
2010/10/27(水) 00:33:38そう書くと>>29よりは大分短くなるね
0067デフォルトの名無しさん
2010/10/27(水) 00:35:29「こいつう、待て待て〜〜〜〜」
とかそういうアレか
0068デフォルトの名無しさん
2010/10/27(水) 00:35:34信じられないかもしれないが、Pythonの人達は逃げてるのではなくて、
本当に心のそこから >>51 よりも >>53 の方がシンプルで読みやすいと
思っているんだ。
0069デフォルトの名無しさん
2010/10/27(水) 00:38:11いやそれは分かる、俺だって>>53のほうが読みやすいと思う
が、問題はそうじゃない
ここではたまたまmap()だが、既存の抽象化された高階関数を「利用」する際の
利便性を問うていて、そういった際にlambdaの記述力が問題になるのに、
題意を無視してループで書いてしまうのは「逃げ」だ、と言ってるんだよ
0070デフォルトの名無しさん
2010/10/27(水) 00:38:400071デフォルトの名無しさん
2010/10/27(水) 00:46:54ttp://www.amazon.co.jp/dp/4873114713/
pythonの章は読んだ?
0072デフォルトの名無しさん
2010/10/27(水) 00:48:06lambdaの記述力については、Guideが意図的にあんまり持たないようにしてる。
けど、仮に
lambda x,y:
statements...
みたいにかけたとしても、
def foo(x, y):
statements...
と比べて特にメリットがあるとは思えない。
0073デフォルトの名無しさん
2010/10/27(水) 00:50:10例えば obj.onclick = lambda: self._onclick(3) とは書けるけど、
obj.onclick = lambda: raise TestException("Button3 is clicked") とはかけないから、
def _onclick():
raise TestException("Button3 is clicked")
obj.onclick = _onclick
と3行(2行でも書けるけど)に分けて書かないといけない。
この制約の利点を無理に上げるとすれば、、この程度の不自由さと引き換えに、
Lisp脳の人が書いたlamdaを乱用したコードが排除できてメンテしやすい。
0074デフォルトの名無しさん
2010/10/27(水) 00:54:06ただの推測なんだが、Pythonの構文自体が理由で、「ブロックの後に
何かをつなげる」ことがやりにくいからってのは無いのかね
だから色んなものを式にしにくいんじゃねーかと俺は疑っていた
あのJavaですら匿名インナークラスの定義とインスタンス化が
「式」になっているわけだが
lambdaに関しては、文はさておいても
6文字もタイプさせるのをやめて、Scalaの_やgroovyのitのような
ワイルドカードを使えるようになるだけでも大分マシなように思う
0075デフォルトの名無しさん
2010/10/27(水) 00:57:470076デフォルトの名無しさん
2010/10/27(水) 01:00:09多分言ってる事は正しいんだけど、そもそもPythonの価値観がそんな
書きやすさは最初から無視しているんだと思うよ。
式をネストさせて複雑な式を作るよりも、シンプルな式で複数の文を作った方が
読みやすいと考えるのがPython的な考え方なんじゃないかな。
0077デフォルトの名無しさん
2010/10/27(水) 01:00:11ワイルドカードは便利だぜ
py: [ x for x in xs if x > 0 ]
py: filter(lambda x: x > 0, xs)
scala: xs.filter(_ > 0)
同じ意味だが、上のは冗長で三回もxをタイプしなければならない
2番目はxが2回に減っているが、lambdaのせいで全体の長さはむしろ増えている
0078デフォルトの名無しさん
2010/10/27(水) 01:03:300079デフォルトの名無しさん
2010/10/27(水) 01:04:19気にするだろう!多い日も安心だし!
0080デフォルトの名無しさん
2010/10/27(水) 01:04:55確かにそれは便利。
でも、Pythonだと
1) 新規に記号を割り当てる => 記号を割り当てるほどの事ではない。
2) _ に特殊暗黙ルールを割り当てる => 特殊暗黙ルールなんてイヤ!
って感じで、受け入れられないだろうな。
0081デフォルトの名無しさん
2010/10/27(水) 01:08:30なんだよ、2chのくせに的確な分析じゃねーか
内容に98パーセント同意
Pythonのlambdaってほんとうに複数文をサポートできるように拡張できないのかなあ
>>73とかみると、Pythonが残念な子に見えて仕方ない。
>>74
いやそのとおりだと思うし、改善できないかと思って話してみたんだけど、
Pythonな人は「Pythonのやり方こそ正しい」としか言わないから
てんで話にならない。
0082デフォルトの名無しさん
2010/10/27(水) 01:10:47そりゃ、言語設計者はポリシー持って言語仕様をコントロールしないといけないから、
受け入れられない要求に対しては「(Pythonでは)Pythonのやり方こそ正しい」としか
言わないだろうな。
0083デフォルトの名無しさん
2010/10/27(水) 01:11:230084デフォルトの名無しさん
2010/10/27(水) 01:14:50ttp://www.amazon.co.jp/dp/4873114713/
pythonの章は読んだ?
0085デフォルトの名無しさん
2010/10/27(水) 01:17:02これでもっと単純になる。
def my_reduce(f, xs, init):
a = [init]
return [a.append(f(a[i], x)) or a[-1] for i,x in enumerate(xs)][-1]
0086デフォルトの名無しさん
2010/10/27(水) 01:24:32「Pythonな人」を「言語設計者」と読み違えるおまえの頭に乾杯、いや完敗。
0087デフォルトの名無しさん
2010/10/27(水) 01:26:57Pythonでもわかりにくいコードはいくらでも書けるという、わかりやすい例だな。
0088デフォルトの名無しさん
2010/10/27(水) 01:30:32おーすげー!
上の方で煽ってたのは俺だが、その発想は俺にはなかった
が、xs.append(y) or xsとかなら、Pythonでは貧者のconsとしてたまに使うな
(consをそう書かなければならない時点で既にヤバいと思うが)
0089デフォルトの名無しさん
2010/10/27(水) 01:30:50え?言語拡張の話を言語設計者の居ない所で提案してたの?
回答が何であっても生産性ゼロだよね。何がしたかったの?
0090デフォルトの名無しさん
2010/10/27(水) 01:35:51RubyとPythonの言い争いは一般人の同属嫌悪的な雰囲気なのに対して、
Lispの人が全く異物な概念を連れてきて、「Lispのように書けないRuby/PythonのXXは粗悪だ」
って言うのは、何か宗教じみたものを感じてしまう。
0091デフォルトの名無しさん
2010/10/27(水) 01:36:17lambdaは関数だから基本的には値を返すべきものだとは思うが。
def raise_func(ex):
raise ex
みたいな関数は、用意してくれててもいいよね。
クラスに使うこと考えたら
def raise_method(self, ex):
raise ex
になるから、用意するってのも微妙なのかもしれんが。
0092デフォルトの名無しさん
2010/10/27(水) 01:40:30そいつらはこっちで頑張って欲しいよね
関数型言語は何故普及しないのかを考える
http://hibari.2ch.net/test/read.cgi/tech/1286791669/
0093デフォルトの名無しさん
2010/10/27(水) 01:42:55俺のことを言ってるんなら、別に俺はLispの人じゃないよ!
勘違いしないでね!
大体Lispの人だったらlambdaとかタイプすんのうぜーとか言わないよ
どこの自虐ギャグだそれ
0094デフォルトの名無しさん
2010/10/27(水) 01:43:470095デフォルトの名無しさん
2010/10/27(水) 01:47:010096デフォルトの名無しさん
2010/10/27(水) 01:49:45> (consをそう書かなければならない時点で既にヤバいと思うが)
cdrをxs[1:]と表現すると、リストのコピーになってしまうのはもっとヤバい。
0097デフォルトの名無しさん
2010/10/27(水) 01:51:17うむ。コピーでいいんなら、consもxs + [y]でいいんだけどいちいちコピーすんな
ボケぇ!
まあ
[x, [y, [z,....]]]
とか書いてもいいが禿げしくうざくて禿げそうだ
こんなんやってもmapとかfilterとか使えないし
0098デフォルトの名無しさん
2010/10/27(水) 01:51:500099デフォルトの名無しさん
2010/10/27(水) 01:52:17[y] + xsね
0100デフォルトの名無しさん
2010/10/27(水) 02:11:03「俺カッコイイ」ってのとJavaっぽく書いてJVMの効率上げるのとのバランスで悩む言語という
認識であってる?
Pythonの人がScalaやったら、「再起じゃなくてループでいいじゃん。可読性良くて効率良いし」
って言って、ただの書きやすいJavaにしかならなさそう。
0101デフォルトの名無しさん
2010/10/27(水) 02:19:02俺はScalaの人では無いから知らんが、俺なら多分悩むだろうな
関数型っぽくどころか、ただのforループもScalaのは遅かった
もっとも性能が大事な部分はいっそJavaで書いてもいいし、JVMや.NETの言語は
Python + Cの100倍は容易に連携できるのだから、それで
問題はなさそうにも思える
あーあとJVM言語は末尾再帰は全部無意味だよ
Clojureは仕方が無いので末尾再帰を最適化してほしい場合は
recurで明示するようになっている
0102デフォルトの名無しさん
2010/10/27(水) 02:28:590103デフォルトの名無しさん
2010/10/27(水) 02:30:16ス、スカラの人なんかじゃないんだもん!
0104デフォルトの名無しさん
2010/10/27(水) 02:33:56C系言語のプリミティブなforとはまるで別物じゃなかったっけ
0105デフォルトの名無しさん
2010/10/27(水) 02:36:39そうそう、だから遅い
つってもJavaだと
for (x: xs) {}
をxsが配列や何かの場合はプリミティブなforに展開するので、同じぐらい速いのだが
0106デフォルトの名無しさん
2010/10/27(水) 02:44:16拡張forは単なる頻出処理のショートカット、
シンタックスシュガーだから
それはまたちょっと別の話じゃないのかなあ
0107デフォルトの名無しさん
2010/10/27(水) 02:47:27うん一緒にしちゃあ可哀想なんだが、ScalaではJavaのfor並に速いループを
書きたければ、現状while()を使うしかなくて、Javaより酷いコードになるのがね
0108デフォルトの名無しさん
2010/10/27(水) 02:52:380109デフォルトの名無しさん
2010/10/27(水) 04:30:220110デフォルトの名無しさん
2010/10/27(水) 07:48:46少なくともJavaよりはLL
0111デフォルトの名無しさん
2010/10/27(水) 08:32:330112デフォルトの名無しさん
2010/10/27(水) 09:04:07Pythonって後続で似てる言語ってあるのかな
0113デフォルトの名無しさん
2010/10/27(水) 09:06:500114デフォルトの名無しさん
2010/10/27(水) 09:48:170115デフォルトの名無しさん
2010/10/27(水) 09:59:59>え?言語拡張の話を言語設計者の居ない所で提案してたの?
ええええーーー?なんで「提案」になるの?
たんに、こうできたらいいよね、とヨタ話してるだけじゃん。
>回答が何であっても生産性ゼロだよね。何がしたかったの?
知り合いとだべってるだけなんだけど、>>89にとっては生産性ゼロなんだろうね。
ああそうか、友達がいないから他人との他愛ない会話が「生産性ゼロ」なんて思うのだろう。
今日も話し相手を求めて2chにやってくるPython信者乙。前スレでは大活躍だったね。
現スレもよろしく!
あとおまえのtwitterでのつぶやきも生産性ゼロってことに気づこうぜ。
0116デフォルトの名無しさん
2010/10/27(水) 10:08:470117デフォルトの名無しさん
2010/10/27(水) 10:42:020118デフォルトの名無しさん
2010/10/27(水) 10:45:04>>73 のように短い文1つの関数を一行で書きたいケースのみって事でFA?
0119デフォルトの名無しさん
2010/10/27(水) 10:56:07例えばCやJavaのような言語でいちいちブロックに全部名前つけろと言われたら嫌だろう
というか俺は嫌だ
(1..10).each {
これをする
あれをする
}
みたいなのに、いちいち名前をひねりだしてつけたくない
Rubyのブロックつきメソッドのようなものの記述力は、高階関数を
CやJavaのブロックのように水や空気のように使える構造として
容易に書けるようにしているから多用されている
(高階関数のeachがforループと同じぐらいの感覚で書けるのが分かるだろう)
少なくともPythonのlambdaはそれを拒み、より抽象度の低い書きかたに
ユーザを導く
0120デフォルトの名無しさん
2010/10/27(水) 11:13:170121デフォルトの名無しさん
2010/10/27(水) 11:18:11要約すると、名前つけたくないのね。
1つの文に複数の処理を詰め込まない。文を分けて名前を付ける。っていうのはPythonの
ポリシーだから、どうしても無名が良い人にはPythonは合わないかもね。
>(高階関数のeachがforループと同じぐらいの感覚で書けるのが分かるだろう)
逆に言えば、eachが使いにくくてもforループでも同じくらい楽に書けるよね。
lamdaのせいで書きにくくなっている例としては不適切。
0122デフォルトの名無しさん
2010/10/27(水) 11:21:48そのeachがforループと同じくらいの記述能力しかないなら、そうできることに意味はないんじゃないの?
array.each {
statements...
}
が
for a in array:
statements...
に比べて勝っている点ってどこにあるのよ?
確かにPythonは、lambdaで文を処理することを意図的に拒んでいる。
多少の記述力を犠牲に、読みにくいコードになることを避けようとしている。
なので、単純に、記述力の大小でいうとPythonの記述力が低いことは疑う余地がないし、そこで戦うつもりはないよ。
Python使いの主張は、こうだ。
そう記述できないことで、失ったものもあるが、それ以上のものを得ている。
0123デフォルトの名無しさん
2010/10/27(水) 11:25:55関数型プログラミングの知見なわけで、それに真っ向から背を向けているのが
Pythonのポリシーであり、GvRがそれを是としている、ということだと私は理解しているが。
0124デフォルトの名無しさん
2010/10/27(水) 11:29:35> 要約すると、名前つけたくないのね。
そう。というか、さっきも言ったが、
function loop_body(i) { print(i) }
for (i = 0; i < 10; ++i) loop_body
とか単にブロックを書くかわりに毎度毎度書かされたら嫌だろう
それと同じことだよ
>>122
高階関数にループしかできないと思ってるんなら、意味が無いようにしか
見えないかもな
高階関数は、ループ以外の色んなものを抽象化できる
Rubyでは、その抽象を組み込みループのようなものと
大差ない感覚で利用できるようになっている
0125デフォルトの名無しさん
2010/10/27(水) 12:06:30Schemeもちょっとはかじった人間だから、高階関数だけで何でもできることだって知ってるよ。
けど、lambda式で文が書けないだけで高階関数はPythonでも使えるし、
Schemeでも複雑な関数だと入れ子にしないでletの中に書くことだってある。
lambda式の記述力の低さがすごく辛く感じられる場面って、どれくらいある?
0126125
2010/10/27(水) 12:09:58できなくもないかもしれんが「関数だけ」に訂正した方が無難ですね。スマソ
0のかわりにlambda f,z: z使うんですか?とか意地悪いわないでね。
0127デフォルトの名無しさん
2010/10/27(水) 12:38:53うーむ……可能不可能の話ではなくて、要は快不快の話でしかないので、
平行線かもな
Schemeでは
(with-input-from-file foo (lambda () (....)))
とか書く
groovyなら
new File(foo).eachLine { ... }
とか書くだろう
Pythonにはこれに相当するものは一応あるが、それは高階関数じゃなくて
withステートメントだ
with open(foo) as f: 〜
あれは、要はlambdaがまともなら本来不要な代物で、不便だから導入されたんだろう
(たぶんね)
だが、withは中途半端で、withのボディは決めうちで一回走るだけだ
つまり、新たな構文要素まで導入したのに、高階関数に柔軟性において
劣ってるんだよ
0128デフォルトの名無しさん
2010/10/27(水) 14:02:59Pythonは単に、高階関数が役に立つ場面の殆どを別のもっと具体的で効率の良い
構文に割り当ててるだけ。メリットは速度と可読性。
あと、 >>127、 eachLine {} よりも with の方が行単位アクセス以外にも使えて汎用的だろ。
0129デフォルトの名無しさん
2010/10/27(水) 14:08:10あー。適当に書いたけど、eachLine {}は正確には対応してないね
new File(foo).withInputStream { f -> ... }
とでも読み替えて
0130デフォルトの名無しさん
2010/10/27(水) 14:17:48これは全く同意できない
lambdaがそんなに嫌ならPythonのwithはRubyのブロックつきメソッドと
同等の機能を提供することも可能にできたはずで、可読性も劣らないだろうが
実際にはRAIIでしかない
それに、
new File(foo).withInputStream { f ->
...
}
が可読性において劣るか?
速度が理由ってのはマジならお笑いだ
整数の足し算するにもいちいちオブジェクト作ったり消したりしてんのに
高階関数における関数呼び出しのオーバーヘッドなんて、それこそどうでもいいだろう
0131デフォルトの名無しさん
2010/10/27(水) 14:42:26そのケースだと可読性に差は無いな。
無名関数を許すと可読性の悪いコードが生産されやすいという程度の問題。
それと、関数呼び出しのオーバーヘッドって、オブジェクトの生成&破棄に比べて大きいよ?
C++とかインライン展開ができる言語だったり、スタックフレームの生成がすごく軽量な言語では
ともかく、Pythonではオブジェクト生成の方が軽い。
0132デフォルトの名無しさん
2010/10/27(水) 14:47:47だから、整数の足し算ってオブジェクト作ったり消したりする
だけじゃなくて、メソッド呼び出しもするだろう
まさかループの中でやる仕事がオブジェクト作ったり消したりする「だけ」
なんてことはないよね?普通
それに遅くなるから便利であっても××の機能は提供しない云々は、
俺に言わせればプログラマを舐めきった余計なお世話
遅くてもいい場所で便利な××の機能を使うユーザの自由はあってしかるべきだし、
そもそも遅いのが気になるぐらいなら最初からPythonなんか使わないぞ
0133デフォルトの名無しさん
2010/10/27(水) 14:55:31Pythonはeachに相当する機能が無かったからループだけやった。
http://paste.bradleygill.com/index.php?paste_id=58965
>>132
だから、ループ以外にPythonでは上手く書けない便利な例を出してって。
ループだとムダに遅くなるだけで、まったく便利じゃないんだから。
0134デフォルトの名無しさん
2010/10/27(水) 14:57:43Pythonでループをreduce()で書きなおしたところで、他の言語に比べれば
大した問題になるとは思えなかった
ただのループが十分過ぎるほど遅いからだ
これがScalaとかなら話は別で、関数呼び出しの差が大きな性能の違いとなって出てくる
だからC++のインライン化は本質的に重要だ
ま、PythonでもPsycoかませば別だが、まさかPsyco前提とも考えにくい
0135デフォルトの名無しさん
2010/10/27(水) 15:02:20> だから、ループ以外にPythonでは上手く書けない便利な例を出してって。
だから、不便なだけで、Pythonでも書けるよ?
当たり前だろう、Pythonには高階関数があるのだから
出来る出来ないではなく、
>>124
で書いたような気持ち悪さを許容するかどうかの問題でしかない
もっともPythonユーザも不便と感じたようだから、>>130のように
高階関数として書けるもののために、わざわざwithをひねりだした
だがwithではRAIIしかできないのだから、不十分だと言ってるんだよ
0136133
2010/10/27(水) 15:05:49それでもPythonのループより5倍遅い。>>133のコードって何か余計なことしてる?
0137デフォルトの名無しさん
2010/10/27(水) 15:07:55PythonとRubyの性能を比べても仕方が無いだろ
ここではPythonで高階関数を使うと致命的に速度が低下するかどうかを
問題にしているのだから、
Pythonでforとreduceの差を測れば十分
0138デフォルトの名無しさん
2010/10/27(水) 15:08:03Ruby遅!
0139133
2010/10/27(水) 15:10:200140133
2010/10/27(水) 15:14:28Ruby 1.9 と Python 2.6 なら大して違わなかった。スマソ。
0141133
2010/10/27(水) 15:26:05致命的に、なんて誰も言ってない。
ループの方が読みやすいと感じる人が多くて、ループの方が若干性能が良いなら、
ループだけで十分だよね、という話。PythonはRubyやPerlと違って書き方を幾つも
準備する言語じゃないから。
一応、reduceとloopの差を計測してみた。大体3倍だけど、今度はreduceがRubyのeachより
遅くなってる。Pythonの関数呼び出しが重いのか、Rubyのブロックが関数呼び出しより軽く
実行できる仕組みになってるのか、どっちだろ。
http://paste.bradleygill.com/index.php?paste_id=58969
0142デフォルトの名無しさん
2010/10/27(水) 15:35:02本来ならlambda一つで十分なもののために
異常に用途の限定された専用構文withを作ったわけだろう?
同様に、map()やfilter()はあるが、リスト内包も生み出した
むしろ逆だと思うけどな
0143デフォルトの名無しさん
2010/10/27(水) 15:39:450144133
2010/10/27(水) 15:50:56書き方が一つしかない言語なんて汎用言語ではあり得ないだろ。。。
0145133
2010/10/27(水) 15:55:25> 平行線かもな
なんだ、結論に自分でも気づいてるんじゃないか。
Pythonは何でもlamdaで書いてしまうのが不快と考えて設計されている。
何でもlamdaで書きたい人はPythonに合わなくて当たり前。
劣っているとかそういう話じゃない。
0146デフォルトの名無しさん
2010/10/27(水) 17:07:12lambda x,y: x+y
じゃなくて
operator.add
だったらどう?
0147133
2010/10/27(水) 17:20:38もちろんC言語の関数だからPythonのスタックフレーム用意する必要なくて高速になるけど、
今話題にしているのは任意の関数を呼び出すことだから、 lambda で計測しないと意味無いよね?
0148デフォルトの名無しさん
2010/10/27(水) 17:58:04関数型のそれや、名前付きなら書けるのに…
0149デフォルトの名無しさん
2010/10/27(水) 18:12:31x if test else y
みたいな奴の話じゃなくて?
マジレスするとな、最大の問題点はタイプしにくいことだ
lamdaでこのスレを検索してみるといいぞ
0150デフォルトの名無しさん
2010/10/27(水) 18:17:022.5で3項演算付いたのか、知らんかったスマン
…ちょっと実装が遅い気もするけど、まあいいや
0151デフォルトの名無しさん
2010/10/27(水) 18:20:52for i in xrange(1000):
sum = reduce(lambda x,y: x+y, xrange(10000), 0)
loop()
def loop():
def add(x, y):
return x + y
for i in xrange(1000):
sum = reduce(add, xrange(10000), 0)
loop()
後者がちょっとだけ速い
0152デフォルトの名無しさん
2010/10/27(水) 18:31:39こんなん後付で作るぐらいなら最初からifを式に汁!とか思うよな
だが
if True:
operator.add
else:
operator.sub
(1, 2)
とか書くのは無理目だから仕方が無いのだろう
Pythonが文だらけなのは、}やendや)))))))))を書かなくていい代わりの
負債なのだと思う
ところで予約語なのにPythonユーザによって名前を間違えられまくっている
ラムちゃんに対する賠償とか謝罪とかツッコミはないのか!!
0153133
2010/10/27(水) 19:10:36普段lambdaなんて使ってないから手が覚えてないのよ。
vimならコードハイライトしてくれるからそれでハマることはないんだけどね。
0154デフォルトの名無しさん
2010/10/27(水) 19:14:37書いてる内容に全く変化が無いだろ?自分の知識の範疇から抜けだした解説が出来ないからね。w
0155デフォルトの名無しさん
2010/10/27(水) 19:14:44> 普段lambdaなんて使ってないから手が覚えてないのよ。
実際、そうなんだろうなと俺は思っていたぞ
lambdaをそもそも使わない人には
lambdaつかえねーだりーと言っても通じるわけはないんだ
俺はstructがあまりに手に馴染んでいるから
abstractをよくabstructと書いてしまうんだが
0156デフォルトの名無しさん
2010/10/27(水) 19:19:52-er と -or の使い分けは死ねる
>>152
文だらけだけど
if (ch = "\n") ... ではまらなくなったり一行が短くなったりで
メリットは拾っていけば結構あるんじゃないか
式指向の言語は一行80文字に収まらなくて汚くなりがち
0157133
2010/10/27(水) 19:25:39あと、vimだとlamまで入力したら C-p で補完してるな。
だから、lambdaって最後まで手で書くのって2ちゃんに書き込むときか、IPythonじゃない
インタラクティブシェルを使うときぐらい。
常に単語補完を使うと、typoで変数名間違えて悩むことが無い。
0158デフォルトの名無しさん
2010/10/27(水) 19:43:27-er と -or の使い分けは死ねる
禿同!
マジ死ねる
> if (ch = "\n")
これはJavaやC#のように、ifのtest式は厳密にboolean値しか
認めないようにすればいいだけだと思う
まあ、Cでも、gccはwarning言うよね
if (p = strchr(s, '\n')) *p = 0;
みたいな正当な場合にも文句言ってくるので
()を余計につけたりする必要があってウザいけど
0159デフォルトの名無しさん
2010/10/27(水) 20:45:290160デフォルトの名無しさん
2010/10/27(水) 21:23:15その例の場合、わざわざプロシージャ使わなくても
x > 0
でいいんじゃないの?という意見もあったりなかったり
0161デフォルトの名無しさん
2010/10/27(水) 21:29:13xs > 0
の間違い
0162デフォルトの名無しさん
2010/10/27(水) 22:26:42そんときにlambdaのスペル間違えまくったな確かにw
あれは打たないと覚えないと思うわ
0163Perl忍者 ◆M5ZWRnXOj6
2010/10/27(水) 22:27:010164デフォルトの名無しさん
2010/10/27(水) 22:31:45それついたのも、Pythonの複雑な式やだやだ精神からだろうなぁ。
もともと複雑だから付けなかったけど、andとorで強引にやる方法があるので、付けることになったんだと思う。
根拠はない。ただの推測。
0165デフォルトの名無しさん
2010/10/27(水) 23:55:57上いってるやつといってないやつの会話を見てるようだぞw
0166デフォルトの名無しさん
2010/10/28(木) 00:16:020167デフォルトの名無しさん
2010/10/28(木) 01:05:440168デフォルトの名無しさん
2010/10/28(木) 01:10:200169デフォルトの名無しさん
2010/10/28(木) 01:22:010170デフォルトの名無しさん
2010/10/28(木) 01:45:25それがわかりやすいとは思えないけど、できたらすごいよね。
0171デフォルトの名無しさん
2010/10/28(木) 01:55:40Python aims to combine "remarkable power with very clear syntax", and its standard library is large and comprehensive.
Its use of indentation for block delimiters is unusual among popular programming languages.
Python使いが文章を書いたなら
Python is a general-purpose high-level programming language.
Python is designed philosophy emphasizes code readability.
Python aims to combine "remarkable power with very clear syntax"
Python's standard library is large and comprehensive.
def use_of_indent():
use of indentation for block delimiters
Python's use_of_indent() is unusual among popular programming languages.
やべーwwwちょーよみやすいwww
0172デフォルトの名無しさん
2010/10/28(木) 02:01:350173デフォルトの名無しさん
2010/10/28(木) 02:33:00英語の苦手な俺には下の方が読みやすい。
誰かの言ってた他言語ユーザーの読みやすさってこういうことなんだなww
0174デフォルトの名無しさん
2010/10/28(木) 03:24:480175デフォルトの名無しさん
2010/10/28(木) 06:59:27filenames = glob.glob('*.html')
def tmp(name):
m = re.search(r'(¥w+)-(¥d+)', name)
return m.group(1), int(m.group(2))
filenames.sort(key=tmp)
うーん今いち。いちいち関数定義を書かなきゃいけないし、テンポラリな関数がsort()より先に来ちゃうし。
できればテンポラリな関数よりメインの処理であるsort()が先に来てほしいよね。
filenames = Dir.glob('*.html')
filenames.sort_by! {|name| name =~ /(¥w+)-(¥d+)/ and [$1, $2.to_i] }
こっちのほうが自然に頭から読み下せる。
他の関数言語なら、いちいちテンポラリな関数を定義しなくて済むし、テンポラリな関数より
メインの処理となる関数名のほうが先に出てくるから、理解しやすい。
それに慣れるとPythonのやり方は不自由を感じる。
こうとか本当に書けないのかな。
filenames.sort(key=lambda name:
m = re.search(r'(¥w+)-(¥d+)', name)
return m.group(1), int(m.group(2))
)
>>127
Pythonエキスパート(と書いて信者と読む)は何をいっても聞く耳持たないって。
前スレでわかっただろ?相手するだけ無駄。
> あれは、要はlambdaがまともなら本来不要な代物で、不便だから導入されたんだろう
同意。ほんとは要らないはずなんだよな、あんな機能。
0176デフォルトの名無しさん
2010/10/28(木) 07:50:20もう別の言語使えよ。使い分けも出来んのか
0177デフォルトの名無しさん
2010/10/28(木) 08:01:15> Pythonのlambdaをこねくり回そうとしてるのPythonユーザーじゃないだろ
複数のLL同士を比較するスレで、Pythonの欠点について話してるんだから
むしろ非Pythonユーザも入って来るのが当たり前だろ
Pythonista同士でやるなら本スレでやればいい話
そして別の言語使え、はちと暴論すぎる。
「名前付けろ」ぐらいならまだ解らんでもないんだが。
0178デフォルトの名無しさん
2010/10/28(木) 08:11:440179デフォルトの名無しさん
2010/10/28(木) 08:11:53一次関数の名前をtmpじゃなくてorderとかにすれば軽減される話ではあるけど、
確かにその例ではRubyの方が頭から読み下せて好ましいね。
Pythonの場合だと、関数内で定義された関数を一旦読み飛ばして、どう使われて
いるかを把握してから内部関数を読まないといけない。
でも、関数の引数の中で関数を定義するのは、 reverse=True みたいにオプショナルな
別の引数もとる場合は読みにくくならない?sortならkey自体がオプショナルだからkeyを
最後に持っていけるけど、高階関数が第一引数として必須な場合もあるんだしさ。
「こう書きたい」っていう話は判るけど、Pythonとしては推奨する書き方を1つにしたくて、
数行の処理が必要で、引数の中に直接書いた方が読みやすいってのはレアケースだから
名前付き関数を推奨してる。
0180デフォルトの名無しさん
2010/10/28(木) 08:12:540181デフォルトの名無しさん
2010/10/28(木) 08:19:460182デフォルトの名無しさん
2010/10/28(木) 08:21:04endの面倒さはselfの面倒さとほぼ等価なので、そこを叩き合っても無限ループだけどな。
0183デフォルトの名無しさん
2010/10/28(木) 08:23:17ここで否定しているやつらはPythonの設計者の意図に聞く耳持たない奴だけだろ。
Python信者が他の言語のユーザーの意見に聞く耳持たないって言う前に、自分がPythonの設計意図に
聞く耳を持てよ。
0184デフォルトの名無しさん
2010/10/28(木) 08:28:05filenames.sort(key=lambda name:
(lambda m:
(m.group(1), int(m.group(2))))(re.search(r'(\w+)-(\d+)', name)))
書けなくもない…が、ますます読めないなw
名前付きのほうがまだ読みやすそうだ
(ところでこのコード、マッチしないファイル名あったらどうすんだw)
>>179
引数の中に直接書くのが読みにくくて名前付き関数を推奨してるなら
lambda自体の存在理由が無くないか?
実際、使う場面が無いだろあれ。俺もdef以外でやることまず無いし。
正直(特に関数型出身者を)混乱させるだけの仕様だと思う。最初からdefしか無いなら迷わないし。
0185デフォルトの名無しさん
2010/10/28(木) 08:30:17むしろ、設計者がlambdaを導入した意図を知りたいな。
>>181
そうだね、endが多くなると邪魔だね。
…で、それが邪魔だとlambdaはどう良くなるんだ
0186デフォルトの名無しさん
2010/10/28(木) 08:31:12> ここで否定しているやつらはPythonの設計者の意図に聞く耳持たない奴だけだろ。
> Python信者が他の言語のユーザーの意見に聞く耳持たないって言う前に、自分がPythonの設計意図に
> 聞く耳を持てよ。
聞く聞かないのレベルが全然違う話を混同すんなよw
0187デフォルトの名無しさん
2010/10/28(木) 08:32:00lambdaの場合は単に「式の中に文を書けない」って制限のデメリットだけどな。
式と文をごっちゃにしてたら問題なかった。
0188デフォルトの名無しさん
2010/10/28(木) 08:33:26さすがに、 x * 2 + 1 とか、超シンプルな式までいちいちdefでやらせるのは面倒すぎだろ。
0189デフォルトの名無しさん
2010/10/28(木) 08:43:58seqfunc(lambda x: x*2+1, seq)
def f(x):
return x * 2 + 1
seqfunc(f, seq)
…俺なら後者選ぶなあ。
それほど面倒さは変わらないし、後でちょっとだけ変更したい時に
lambdaじゃ無理になって書き直すほうが面倒だ。
0190methane
2010/10/28(木) 08:44:25ちゃんと聴いてたのに聞く耳持たない奴認定されて、、、あんまりだ。
0191デフォルトの名無しさん
2010/10/28(木) 08:46:49不特定多数に反応を求めた時点で、そんなことは普通に想定できる話。
想定が甘かったな。
0192methane
2010/10/28(木) 08:57:28特にスクリプト言語としてPythonを見ている人にとっては >>175 みたいなちょっとした
ストレスの積み重ねがキツイだろうね。
0193デフォルトの名無しさん
2010/10/28(木) 09:08:280194デフォルトの名無しさん
2010/10/28(木) 09:19:20lambdaで書けるよ。それ。
読みにくくなるから書きたくないけど。
withはlambdaがないからじゃなくて、入る・出るの機能の抽象化としてできた。
lambdaがあると本来必要ないはずのものは多いけど、
例えばlambdaがあったらintいらないとは(効率の問題を無視したとしても)全く思わないなぁ。
0195デフォルトの名無しさん
2010/10/28(木) 10:17:17>でも、関数の引数の中で関数を定義するのは、 reverse=True みたいにオプショナルな
>別の引数もとる場合は読みにくくならない?
ならねーよ。読みにくくなるような設計にしてるのがまずいとは思わないのか。
> sortならkey自体がオプショナルだからkeyを
>最後に持っていけるけど、高階関数が第一引数として必須な場合もあるんだしさ。
そんな設計にしてるのがまずいってだけだろ。
・クロージャを第1引数にもってこなくてすむRubyやGroovy
・関数が最初の引数になっても違和感のない関数型言語
いいかげんPython信者はほかの言語けなすまえにそれらを勉強しろや。
0196デフォルトの名無しさん
2010/10/28(木) 10:20:28f(x, y)
(lambda y, x: f(x, y))(y, x)
0197デフォルトの名無しさん
2010/10/28(木) 10:24:00foo(..) {|bar|...}
with foo(..) as bar: ...
withとブロック付きメソッドは可読性において変わらないし
コンテキストマネージャとブロック付きメソッドを実装する場合、その実装の
手間も変わらないどころか、中身はほとんど同じものになるのだから
チャーチ数のような極論を持ち出すのはどうかと思うが
0198デフォルトの名無しさん
2010/10/28(木) 10:25:17あれだな、旗色が悪くなると他の言語の別の欠点をとりだして話の流れを変えようとしているんだな。なるほど。信者らしい行動だ。
バトルすれだし、いいぞもっとやれ。
>>194
>lambdaで書けるよ。それ。
>読みにくくなるから書きたくないけど。
じゃあ意味ないじゃん。
> 例えばlambdaがあったらintいらない
まるで意味不明。
0199デフォルトの名無しさん
2010/10/28(木) 10:27:59わりと重要だわな
ま、>>196の言うとおりに、自分でどうとでも出来るけど
Rubyのブロック付きメソッド(groovyなどもパクっている)の場合は
ブロック/クロージャ引数が最後の場合に、それが特別扱いされる仕様だね
0200デフォルトの名無しさん
2010/10/28(木) 10:29:43Pythonのlambdaを強力にしたらって仮定の話をしてるだけで誰もRubyを貶してないよ。
0201デフォルトの名無しさん
2010/10/28(木) 10:29:58my_reduce = lambda f, xs, init: (lambda a: [a.append(f(a[0], x)) or a.pop(0) for x in xs][-1])([init])
残念ながら、例外の発生は、別の例外を発しうる処理を利用する以外にはlambdaじゃできない。
けど、いわゆる普通の計算はlambdaで十分できるはず。
0202デフォルトの名無しさん
2010/10/28(木) 10:30:52「with文は可読性が悪い」とか「実装のためがかかる」とはだれも言ってない。
たんに「関数言語ばりのlambdaがあればwith文はいらないはず」と言ってるだけ。
ほんと話をずらすのが好きだな。というか、相手のいいたいことがわからないだけか。
アスペ乙
0203デフォルトの名無しさん
2010/10/28(木) 10:32:35ちょっと待てwww
いきなりアスペ扱いか
> ほんと話をずらすのが好きだな
って俺を誰だと思ってるんだか知らないが、なぜそんなに喧嘩腰?
0204デフォルトの名無しさん
2010/10/28(木) 10:38:130205デフォルトの名無しさん
2010/10/28(木) 10:41:09そこまで分かってるなら、Pythonはあえてブロック付きメソッドを拒否してることにも気づいてるんだろ?
0206デフォルトの名無しさん
2010/10/28(木) 10:41:42いやそうじゃなくてさ、どーも>>202は何か勘違いしてると思うんだよな
>>197は俺が今日始めてつけたレスだし、俺のレスの意図も読み違えてると
思うんだわ
>>202は少し冷静になったほうがいいよ
0207デフォルトの名無しさん
2010/10/28(木) 10:41:52> 俺を誰だと思ってるんだか知らないが
そりゃしらねーよww
0208methane
2010/10/28(木) 10:42:05「関数言語ばりのlambda」をブロックとして使いやすく実装したのがRubyで、その頻出する用途を
直接構文でカバーしたのがPythonというだけだよね?
元の話題は、「Pythonのlambdaは文が使えないから不便だ」というものなので、
「Pythonの○○はlambdaが強力だったらlambdaでできるよ」じゃなくて、
「lambdaが強力だったらできる○○が今のPythonじゃ面倒だよ」という指摘をしないと的外れだと思う。
>>73 とか >>175 の指摘の方が的を射ている。
0209デフォルトの名無しさん
2010/10/28(木) 10:43:21つか、lambdaがあればブロックつきメソッドもいらないんじゃないの?
0210デフォルトの名無しさん
2010/10/28(木) 10:45:230211デフォルトの名無しさん
2010/10/28(木) 10:48:200212デフォルトの名無しさん
2010/10/28(木) 10:57:13あとブロックはそれ単体でリテラルみたいに使えないってのも設計として微妙なところ。
0213デフォルトの名無しさん
2010/10/28(木) 10:59:00俺は中の人じゃないから分からんけど、要は「WAY」を増やしたくないんだろう、と
思っているよ
0214デフォルトの名無しさん
2010/10/28(木) 10:59:47え?
f = {|x|
...
}
f(x)
みたいにできないの?
0215デフォルトの名無しさん
2010/10/28(木) 11:05:14CLだと関数と普通の値を分けているので、関数と同じ名前の変数を
使えるかわりに、#'とかfuncallとか書く必要があるよね
0216methane
2010/10/28(木) 11:06:46>>181 の指摘って無関係な煽りに見えて、実は結構関係するんだよな。
endあるいは } を省略した代償として、式に書き下せない処理は名前付き関数にしないといけない。
0217デフォルトの名無しさん
2010/10/28(木) 11:11:01似てはいるけど、Lisp-1かLisp-2かというのは名前空間の話なのでちょっと違う。
>>214
できない。Proc.new {|x| ...} か lambda {|x| ...} を使う。今では推奨されてないという話になってるけど
proc {|x| ...} というのもあった。
0218デフォルトの名無しさん
2010/10/28(木) 11:13:32たぶん、Cでいうところのコンマ演算子がないことと、代入が文なこと(式と文が明確に分かれていて、式にできることが少ない)が、もっと大きな要因。
0219デフォルトの名無しさん
2010/10/28(木) 11:13:40> 似てはいるけど、Lisp-1かLisp-2かというのは名前空間の話なのでちょっと違う。
なるほど、ありがとう
0220デフォルトの名無しさん
2010/10/28(木) 11:14:42できないのかよ...
ブロック付きメソッド渡す場面で、そのProcかlambdaを渡すことはできるんだよね?
0221デフォルトの名無しさん
2010/10/28(木) 11:22:18foo = lambda {
...
}
f(x, &foo)
↑これが↓これとほぼ同じ。
f(x){
...
}
0222デフォルトの名無しさん
2010/10/28(木) 11:40:580223デフォルトの名無しさん
2010/10/28(木) 11:58:18f(x, &(foo(n)))みたいになるわけか。
0224デフォルトの名無しさん
2010/10/28(木) 13:45:18代入が文なのも勿論そうだけど
破壊的操作を行うメソッドの多くがNoneを返す仕様なので、
(式だが)式の中で使いやすいようにはできてないってのもあると思うな
>>201が書いている例
a.append(f(a[0], x)) or a.pop(0)
は、代入が式なら単に
a[0] = f(a[0], x)
でいいし、そもそもリストをアキュミュレータにする必要が無い
Pythonの代入には、自由変数にまつわる問題もあるので、より使いにくい
λが単体として問題というより、Pythonの言語仕様がさまざまに絡み合って、
Pythonにおけるλをより使いにくく、無理に書けばcrypticなコードに
なりがちにしているように見える
が、見ての通り、crypticになるのは、必ずしもλのせいではなくて、
要はPythonの言語仕様全般とのインピーダンスアンマッチ、につきると思う
0225デフォルトの名無しさん
2010/10/28(木) 13:46:07そもそもRubyは「関数」を返すことが出来ない。
ブロック(=Procクラスのインスタンス)を返すことは出来るから
まあ意味合いとして似たようなことはできるんだけど。
そもそもRubyには「関数」ってオブジェクトが無いんだわ。
・関数とは、メソッドの一種を便宜上そう呼ぶに過ぎない
・メソッドは必ずオブジェクトに所属する
(いわゆる「関数」と呼ばれるものも例外でなく、「トップレベルでのself」(通称main)に所属する)
・関数が無い代わりに、無名の「手続きの塊」を扱うProcクラスがある
・ブロックやlambdaはProcクラスのインスタンスとして扱われる
ちなみにメソッドや関数の定義内で def を使っても「関数内関数」のようにならず
「メソッドを呼んだ際にメソッドを定義する」という動作になってしまうのも
defが「メソッドの定義」であり、所属先がその際のselfになってしまうから。
「関数内関数」とか「関数を値として使う」みたいなことをしたいときは、Procクラス(lambdaもこれ)を利用する。
0226デフォルトの名無しさん
2010/10/28(木) 18:18:05島根の真実。
松江とかひどい状態なんだぞ。
どこでもRubyだもん。Ruby以外のことがしにくくてしょうがない。
Rubyにあらずんば人にあらずみたいな気がする。
Javaでやりますっつっても役人に全く受けない。予算が付かない。
Rubyの波に乗りなさいって言われてもなぁ。。。。
塩屋が邪魔くさくってしょうがない。
0227デフォルトの名無しさん
2010/10/28(木) 18:24:320228デフォルトの名無しさん
2010/10/28(木) 18:37:330229デフォルトの名無しさん
2010/10/28(木) 20:30:44米子でもあわないだろうけど
0230デフォルトの名無しさん
2010/10/28(木) 20:59:070231デフォルトの名無しさん
2010/10/28(木) 21:02:120232デフォルトの名無しさん
2010/10/28(木) 21:30:31とにかくそのIDの奴の言う事が気に入らないもんだから
何とかしてそのIDの奴のレス勢力を無力化、無効化してやりたいのだが、
かといってどこにツッコミ所があるのか具体的に指摘出来ないし
論破出来る知識も自信も自分には無い、
何より、ヘタにレスを書いてしまうと自分の無知を曝け出す結果となって
かえって自分が周囲の嘲笑の的となってしまうのが怖い。
そこで、とりあえず無言でレスアンカーだけを付けておく事で
「こいつイタイなw晒し上げw」と必死に周囲に印象付けようとする。
具体的指摘を伴わない無言レスアンカーなら
自分の勘違いだったところで自分はちっとも傷付かずに済むからな。
肝心のどう “イタイ” のかについては周囲の流れにお任せ。
きっと読んだ人それぞれが頭の中で勝手に考えてくれるさ!!
抽出廚、レスアンカー厨からは
「ママ、ぼく悔しいよ! こいつをやっつけてよ!」
という悲痛な叫びが聞こえてくる。
0233Perl忍者 ◆M5ZWRnXOj6
2010/10/28(木) 21:45:140234デフォルトの名無しさん
2010/10/28(木) 21:47:00死ね
0235デフォルトの名無しさん
2010/10/28(木) 23:32:43ttp://tabesugi.net/memo/2004/82.html#202238
> それからもうひとつは全然べつの話だが、Python がサイコーなのは オブジェ
> クト至高言語なことでも関数風味なことでもなく、「手続き言語として」サイ
> コーなのだ、 ということに気づいた。今になってみると、Python がとりわけ
> 直観をサポートするようにできていたのは、 インデントだけではないと思う。
> いい例がタプルである。 これは、本来なら一度にひとつの値しか使えないとこ
> ろ (配列の要素とか、関数からの返り値とか、 変数への代入) に複数の値をま
> とめて渡すことができるので、結果としていくつもの状態を 別々に管理するよ
> うな状況で気をもまなくてすんでしまう。これによって制御構造が極端に単純
> でも、 あまり気にならない。これにひきかえ、たとえばループを表すのに
> Ruby のイテレータがわかりやすいとは 到底思えないし、Scheme の末尾再帰が
> わかりやすいとも思えない (複雑な状態遷移があるものを書くとウンザリする)。
> 彼らのアプローチは概念的に単純ではあるが、それによってループが直感的に
> 書けるかというと べつにそういうわけでもないのだ。
「オブジェクト*至高*言語」というのはSmalltalkやRubyを揶揄してるんだろうな。
0236デフォルトの名無しさん
2010/10/28(木) 23:33:25関数型言語としてみたら、代入ってできる必要なくね?
0237デフォルトの名無しさん
2010/10/28(木) 23:37:21ttp://tabesugi.net/memo/2004/82.html#121731
> Computer Programming for Everybody というエッセイを見てはげしく同意する。
> すげー。Guido はこんなことを考えていたのか。 やはり他のスクリプト言語作
> 者とは格が違う。そもそも Perl や Ruby というのは 一部のオタクどもが楽を
> するためだけに存在している言語で、 かれら教育のことなんか何も考えてない。
> しょせんかれらは狭い世界に閉じこもる運命にあるのだ。 それにひきかえ
> Guido はもっとずっと遠くを見ている。エライ。この点で、Python は Scheme
> や Squeak と (理念的に) 肩をならべるものだと思う。しかし Scheme や
> Squeak はセンスがよくても、 実用性という面で Python とは比較にならない
> くらい不便という重大な欠点がある。 もっとも Python もいきなりこんなに便
> 利になったわけではないから、今後 Scheme やら Squeak やらが 発展して便利
> になることもあるかもしれない…けど、実際にはそんなことはなさそうな気がす
> る。 なぜなら彼らは「言語」のことしか考えてなさそうだから! ここがポイン
> トだな。つまり、教育のことだけを考えていたのでは言語は使ってもらえず、
> かといって実用性のことだけを考えていても教育には不向きということか。 両
> 方をうまくバランスさせないとだめなのだ。そこまで言語開発者が考えている
> プログラミング言語は Python ぐらいじゃないかと思う。
0238デフォルトの名無しさん
2010/10/28(木) 23:39:14> い、 日常的に使うソフトウエアを自分でいじれるようになる)」というのは、
> ぺるりん先生もまえに同じことを授業で話していたが、彼も Python が現時点
> では いちばん理想に近いといっていた。Alice Project のこともあるし。 やっ
> ぱそういう遠大なビジョンをもっている人はエライよな。 なぜなら、そういっ
> た計画は将来、本当に重要なものになるだろうし (そうでなければ世の中は非
> 常に暗いものになる)、しかもそれを実現するのには 数十年あるいは数百年と
> いうレベルの長い長い時間がかかりそうだからである。 そして、そういう活動
> をしている人がほとんど米国にばっかりいるというのは (Guido のこの研究計
> 画書も DARPA にあてたものだ)、なんだか心配だ。
>
> ということで、これでますます選民思想が強化されました。 Ruby なんかと一
> 緒にされちゃ困るね。(なにがどう困るのだかは知らない)
選民思想だという自覚はあるだけ前スレの信者よりましか。
しかしこの人もRubyを目のかたきにしてるな。RubyのなにがそうPython信者を熱くさせるのか知りたい。
0239デフォルトの名無しさん
2010/10/28(木) 23:39:500240デフォルトの名無しさん
2010/10/28(木) 23:46:02ネット中のPythonの記事を探し回ってんのか?
0241デフォルトの名無しさん
2010/10/29(金) 00:07:590242デフォルトの名無しさん
2010/10/29(金) 00:12:570243デフォルトの名無しさん
2010/10/29(金) 00:22:310244デフォルトの名無しさん
2010/10/29(金) 00:25:51PythonユーザーはRubyと聞いただけで嫌悪感を持つってのはあると思う
PythonスレにRuby最高とか楽しいとか日本人ならRuby使えとかやられまくったからな
0245デフォルトの名無しさん
2010/10/29(金) 00:28:28今でもブログやツイッターは監視されてるようだしな
0246デフォルトの名無しさん
2010/10/29(金) 00:40:48Pythonは参照透明性を重視した関数型言語ではないのだから
Pythonでコードを書く限り実質的に代入は必要だろ
仮にPythonでループの代わりに末尾再帰で書いても最適化はされないのだから、
糞遅い上にスタックオーバーフローになるだけ
0247デフォルトの名無しさん
2010/10/29(金) 01:01:50昔 Java スレにも shige という奴が居てだな…
0248デフォルトの名無しさん
2010/10/29(金) 04:21:41関数型言語のλでも、値の束縛は大概出来ると思うのだが?
多くはletとかでサポートしてるだろ
0249デフォルトの名無しさん
2010/10/29(金) 04:40:48バインドできるのは一回だけだし。
0250デフォルトの名無しさん
2010/10/29(金) 07:14:25むしろそいつがどうの言うレスでRubyスレでも迷惑してたんだけど
最近だとC#マンセー Windowsでは使い物にならねー厨が一時期いくつかのスレに来なかった?
Rubyのスレにもきてたが
Windowsでは使い物にならね、は同意だが正論でも荒らされてはわな
0251デフォルトの名無しさん
2010/10/29(金) 07:15:40どっちでもいいけど
0252デフォルトの名無しさん
2010/10/29(金) 07:27:51Rubyのブロックはwithを作るようなもんなんだろう。
withのような簡単な制御構造や内部DSLを作りやすい。
この使い方がRails以降多用されている。空気のように〜と上ででていたが実際そう。
だけど上であまり強調されていない理由は、その流れをRubyユーザーがあまりよく思っていないからじゃないか?
Rubyスレでも話題が出ると不満がでることが多々ある。
いきすぎた制御構造の拡張や、内部DSLってさ、
ようするに宣言っぽくかけてRubyらしく振舞わないRubyスクリプトなんだよね
ブロックのネストの度に省略されたselfがバンバン変化する
信じられるかい?
このブロックでメソッドを定義したらどうなるのだろう?
>>225のようにトップレベルに定義されるのだろうか?
別のクラスやモジュールに定義されていないか?
こんな疑問を持ちながら、selfを確かめながら、挙動をソースを見ながら(ドキュメントじゃないぞ)
使わないといけないんだよ、ブロックは。
0253デフォルトの名無しさん
2010/10/29(金) 07:33:25「ブロックが悪いんじゃない、メタプログラミングをブロックを使って多用しているのが悪いんだ」と
実際そうだ。
だが、実際はブロックはすでにlambdaの範疇を超えてるんだよ。
メタプログラミングと切っては切れない。
だから単純に比較できない
> ようするに宣言っぽくかけてRubyらしく振舞わないRubyスクリプトなんだよね
これもおかしくて、ブロックとメタプログラミングの使用はRubyらしい。
だが、ブロックとメタプログラミングを使わずにRubyを書いているときとは全く違った使い方になる
それくらいの意味。
0254デフォルトの名無しさん
2010/10/29(金) 08:15:46そんなに心配ならJavaScriptみたく保存しておきたい時点でのselfを代入しとけばいいんじゃね
まあ別物と比較するのはフェアじゃないな。
…で、lambdaどうすんだ
0255デフォルトの名無しさん
2010/10/29(金) 08:42:160256デフォルトの名無しさん
2010/10/29(金) 09:45:38値の束縛はできるよ。けど、letなくても値の束縛は出来るよね。
0257デフォルトの名無しさん
2010/10/29(金) 10:22:52letはlambdaの構文糖なので、lambdaがあればletは一応実現できる
ま、Pythonではiterative processは末尾再帰でなくループで書くべきだし
ランタイムも破壊的操作を前提としたものが多い
Pythonでお上品ぶろうとしたってまるで意味は無いが
0258デフォルトの名無しさん
2010/10/29(金) 22:22:110259デフォルトの名無しさん
2010/10/30(土) 01:38:550260デフォルトの名無しさん
2010/10/30(土) 09:47:52…ところでこのスレ的にはPythonとPerlが入ってて欲しいのだが
>>257-258
別に上品とか下品とか関係なくね?
どっちかっつーと、中途半端で紛らわしい存在って感じ
0261デフォルトの名無しさん
2010/10/31(日) 08:51:090262デフォルトの名無しさん
2010/10/31(日) 09:03:41PHP(プ とか人格からにじみ出てるけど Web プログラマ(笑)どうし仲良くしてろよって感じ。
0263Perl忍者 ◆M5ZWRnXOj6
2010/10/31(日) 11:32:200264デフォルトの名無しさん
2010/10/31(日) 15:47:560265デフォルトの名無しさん
2010/10/31(日) 17:52:12Ruby厨はネトウヨの集合体みたいになったわけだ
0266Perl忍者 ◆M5ZWRnXOj6
2010/10/31(日) 20:41:54気分爽快だった
0267デフォルトの名無しさん
2010/10/31(日) 21:11:220268デフォルトの名無しさん
2010/10/31(日) 21:11:590269デフォルトの名無しさん
2010/10/31(日) 21:16:280270デフォルトの名無しさん
2010/11/01(月) 03:36:14267の書き込みは刑事責任が問われる書き込みです。
この類の書き込みで逮捕された事件も少なくありません。
268が通報したので、IPアドレスを元に捜索が入ると思いますが
もし逮捕されない結果になったとしても犯罪を犯したという反省が必要です。
0271デフォルトの名無しさん
2010/11/01(月) 04:20:33信者キメェ
0272デフォルトの名無しさん
2010/11/01(月) 04:54:40いたずら、殺人依頼、脅迫
いずれの目的であっても脅迫罪として立件される
0273デフォルトの名無しさん
2010/11/01(月) 05:07:22んー、分からないでもないが、変なの
0274デフォルトの名無しさん
2010/11/01(月) 05:15:37みんなのアイドルLarryちゃんが悲しむから物騒な流れはやめて
>>258
Haskellも無名関数は謙抑的に用いるのが行儀いいらしいね
代わりにletやらwhere使えってことで
Pythonの態度も似たようなものか
0275デフォルトの名無しさん
2010/11/01(月) 05:17:35殺人宣言と同程度の不安がありそうだから犯罪と判断されるのが正当でしょう。
当然、殺人宣言が発見された場合は、ほぼ確実に逮捕へ踏み込むのが現状だけどね。
0276デフォルトの名無しさん
2010/11/01(月) 05:20:190277デフォルトの名無しさん
2010/11/01(月) 05:22:16勘違いをされないように。
0278Perl忍者 ◆M5ZWRnXOj6
2010/11/01(月) 07:23:580279Perl忍者 ◆M5ZWRnXOj6
2010/11/01(月) 07:25:380280Perl忍者 ◆M5ZWRnXOj6
2010/11/01(月) 07:27:450281デフォルトの名無しさん
2010/11/01(月) 07:28:27日本テレビ 10月31日16:25〜17:25
おっぱいをもんだりつまんだり
ttp://pic.2ch.at/s/20mai00307899.jpg ttp://pic.2ch.at/s/20mai00307900.jpg
ttp://pic.2ch.at/s/20mai00307901.jpg ttp://pic.2ch.at/s/20mai00307902.jpg
ttp://pic.2ch.at/s/20mai00307903.jpg ttp://pic.2ch.at/s/20mai00307904.jpg
ttp://pic.2ch.at/s/20mai00307905.jpg ttp://pic.2ch.at/s/20mai00307906.jpg
ttp://pic.2ch.at/s/20mai00307907.jpg ttp://pic.2ch.at/s/20mai00307908.jpg
ttp://pic.2ch.at/s/20mai00307909.jpg ttp://pic.2ch.at/s/20mai00307910.jpg
0282デフォルトの名無しさん
2010/11/01(月) 09:20:080283デフォルトの名無しさん
2010/11/01(月) 11:59:210284デフォルトの名無しさん
2010/11/01(月) 12:36:44http://twitter.com/yukihiro_matz/statuses/29317109670
0285デフォルトの名無しさん
2010/11/01(月) 12:49:550286デフォルトの名無しさん
2010/11/01(月) 12:52:590287デフォルトの名無しさん
2010/11/01(月) 13:11:540288デフォルトの名無しさん
2010/11/01(月) 13:15:14というかPythonって火がついてた時期ってあるの?
火は付かないけど、地味に人気を保ち続けてるイメージが強い
ある意味、その浸透の仕方が好きでもあるんだが
0289デフォルトの名無しさん
2010/11/01(月) 13:17:300290デフォルトの名無しさん
2010/11/01(月) 13:36:16でもそれってGoogleだけで完結しちゃってね?
多少の人気は出て使用人口は増えたかも知れないが
それだけで、Pythonを使う上での変革はあんまり無かった
Perl/CGIやRuby on Railsは、その言語に新しい使い方をもらしただよ
0291デフォルトの名無しさん
2010/11/01(月) 13:56:49>安定期に入った時期を比較してなんの意味があるんだろう
Rubyみたいに些細なことでコア履いたりしないってことさ
鍛えられ方が違うんだよ
0292デフォルトの名無しさん
2010/11/01(月) 13:57:03yukihiro_matz: 英語圏でRubyとPythonを比較する記事を見ることが少なくなってきた
のは、RubyとPythonでクラスタが分離してきたからか。逆に日本語でRubyとPythonを
比較 する記事を見かけるのは国内でのPythonの地位が向上したからか。
∩_
〈〈〈 ヽ
____ 〈⊃ }
/⌒ ⌒\ | |
/( ●) (●)\ ! !
/ :::::⌒(__人__)⌒:::::\| l
| |r┬-| | / <こいつ最高にアホだお
\ ` ー'´ //
/ __ /
(___) /
0293デフォルトの名無しさん
2010/11/01(月) 14:09:210294デフォルトの名無しさん
2010/11/01(月) 14:16:07Rubyは相手にされていないってだけなのに
本人もPythonスレでRubyの宣伝していた時代を黒歴史だって認めてるのに
ただの口から出任せでなにも反省してないことが丸わかり
0295デフォルトの名無しさん
2010/11/01(月) 14:17:390296デフォルトの名無しさん
2010/11/01(月) 14:30:35マチクタビレタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < Rubyホ(モ)ルモンラーメンまだ〜
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 宍道湖七珍 |/
0297デフォルトの名無しさん
2010/11/01(月) 14:42:150298デフォルトの名無しさん
2010/11/01(月) 14:55:250299デフォルトの名無しさん
2010/11/01(月) 15:04:25http://twitter.com/yukihiro_matz/statuses/29317109670
yukihiro_matz: 英語圏でRubyとPythonを比較する記事を見ることが少なくなってきた
のは、RubyとPythonでクラスタが分離してきたからか。逆に日本語でRubyとPythonを
比較 する記事を見かけるのは国内でのPythonの地位が向上したからか。
∩_
〈〈〈 ヽ
____ 〈⊃ }
/⌒ ⌒\ | |
/( ●) (●)\ ! !
/ :::::⌒(__人__)⌒:::::\| l
| |r┬-| | / <こいつ最高にアホだお
\ ` ー'´ //
/ __ /
(___) /
0300デフォルトの名無しさん
2010/11/01(月) 15:21:03∩_
〈〈〈 ヽ
____ 〈⊃ }
/⌒ ⌒\ | |
/( ●) (●)\ ! !
/ :::::⌒(__人__)⌒:::::\| l
| |r┬-| | / <こいつ最高にアホだお
\ ` ー'´ //
/ __ /
(___) /
0301デフォルトの名無しさん
2010/11/01(月) 15:50:00調子ぶっこいてみせる態度がいかに馬鹿っぽく見えるかとかわかりそうなものだけれどもね。
モルモン教徒がクリスチャンを名乗ることが詐称行為に当たる点は不問に付すとしても、だ。
0302デフォルトの名無しさん
2010/11/01(月) 15:52:170303デフォルトの名無しさん
2010/11/01(月) 21:39:310304デフォルトの名無しさん
2010/11/01(月) 21:42:280305デフォルトの名無しさん
2010/11/01(月) 22:17:320306デフォルトの名無しさん
2010/11/02(火) 00:46:100307デフォルトの名無しさん
2010/11/02(火) 01:03:05plone
django
0308デフォルトの名無しさん
2010/11/03(水) 00:36:28ttp://d.hatena.ne.jp/masatoi/20101102/1288654204
Ruby vs Lisp, ファイト!
0309デフォルトの名無しさん
2010/11/03(水) 01:18:01Pythonエキスパートさん、名前欄書き忘れてますよ。
それからPython信者がどんなにわめいたところで、
あなた自身の価値はあなたがバカにしているMatzよりずっと低いままですよ。
0310methane
2010/11/03(水) 04:00:47俺はモルモン教を批判したことはないし、Matzは尊敬しているし、今までpypiに登録してる
パッケージのバージョンアップしてた。 >>301 とは別人だよ。
0311デフォルトの名無しさん
2010/11/03(水) 04:40:03むしろ一身に尊敬を集めているがゆえに安心したバカが面白半分に
アンチを名乗ってるだけじゃなイカ?
0312デフォルトの名無しさん
2010/11/03(水) 05:05:460313デフォルトの名無しさん
2010/11/03(水) 05:48:53祭り上げられてることについて本人がどう思ってるか知らないけど
公的な発言力が増すことはRuby使い以外にとっても利点が大きい
0314デフォルトの名無しさん
2010/11/03(水) 08:28:39そういう人多そう
0315デフォルトの名無しさん
2010/11/03(水) 08:59:42s/Matz/GvR/
s/Matz/Theo/
0316デフォルトの名無しさん
2010/11/03(水) 09:01:410317デフォルトの名無しさん
2010/11/03(水) 09:28:03たとえば
0318デフォルトの名無しさん
2010/11/03(水) 11:46:19そして自分が作った言語の方が他の言語よりも親しみを感じるのも当然
他の言語をdisりたくなる理由は理解できる
0319デフォルトの名無しさん
2010/11/03(水) 12:03:02優れていると思っているところを自慢するのも勝手だが
他の言語をdisるのは全くの筋違い
0320デフォルトの名無しさん
2010/11/03(水) 12:10:080321Perl忍者 ◆M5ZWRnXOj6
2010/11/03(水) 12:34:43お前みたいなやつら
0322デフォルトの名無しさん
2010/11/03(水) 12:51:36蟹飯はPascalをdisりまくってたな
0323デフォルトの名無しさん
2010/11/03(水) 19:33:07その言葉、Python信者にそのままお返しします。
0324デフォルトの名無しさん
2010/11/04(木) 03:31:59ほうがLL言語より優れていますが?
0325デフォルトの名無しさん
2010/11/04(木) 04:59:10マウスに手を持っていかなくても出来るの?
0326デフォルトの名無しさん
2010/11/04(木) 08:18:31Python信者に何言っても無駄だって。
自分はtwitterでさんざんPHPやRubyをけなしておいて「あれは個人的な感想です」と言い張っておきながら、
他人のtwitterでのつぶやきに対しては「他の言語をdisるな」だもんね。話が通じる相手じゃない。
0327デフォルトの名無しさん
2010/11/04(木) 08:19:090328デフォルトの名無しさん
2010/11/04(木) 08:20:190329デフォルトの名無しさん
2010/11/04(木) 08:26:51どうみても↓のほうがdisってるくせに、これは「感想」で済ましちゃうんだよね。
ttp://twitter.com/methane/status/16673043960
C++とJavaがある程度分かっていると、Pythonはサラッとチュートリアル読んだだけで、
(メタクラスとか高度な部分を除き)大抵のコードは読むことができた。Rubyはムリ。
ttp://twitter.com/methane/status/16673105203
Rubyの世界では、DRYがよく叫ばれている。Repeatしないために、どんどんルールを作る。
一方、PythonのZenにはDRYがない代わりに、 "Special casesarn't special enough to
break the rules." というものがある。
ttp://twitter.com/methane/status/16673188444
たとえば、Rubyはメソッド呼び出しの括弧を省略できるけど、Pythonは省略できない。
括弧を書くというRepeatを行った分、特殊メソッド以外の呼び出しは一目瞭然。
ttp://twitter.com/methane/status/16673278223
あと、Rubyはsuperの引数を省略すると、自分の引数がそのまま渡される。
Pythonは普通に引数なしで呼び出す。Rubyの方がタイプ数少ないけど、特別な暗黙ルールを
作れば作るほど、一見さんには意味不明になっていく。
ttp://twitter.com/methane/status/17241429240
GREE Fast Processor とか、ぶっちゃけどう考えても非効率なPHPをある程度マトモな形に
無理やり修正しているだけで、最初からPython使っていれば全く問題なく綺麗に効率的な
構成がとれるんですけどね。APCも設定ファイルのコンパイルも、Pythonなら不要。
0330デフォルトの名無しさん
2010/11/04(木) 08:29:040331デフォルトの名無しさん
2010/11/04(木) 08:29:370332デフォルトの名無しさん
2010/11/04(木) 08:41:250333デフォルトの名無しさん
2010/11/04(木) 09:01:42液パイ乙。擁護レスすんの速すぎるよお前w
0334デフォルトの名無しさん
2010/11/04(木) 09:04:410335332
2010/11/04(木) 09:15:11いや、そんなツイート(を書く奴)を擁護する気はさらさら起こらないわ
経験者にとっても可読性が低い言語は叩いて構わないが
一見さんにとっての可読性を気にするなんてもうどうしようもない
(保守するのは一見か? 勉強もせずいきなりコード読むのか?)
Haskellが一見にとってイミフだから叩くのと同じぐらいDQNな行為だ
と釣られてみる
0336デフォルトの名無しさん
2010/11/04(木) 10:31:04326 名前: デフォルトの名無しさん Mail: sage 投稿日: 2010/11/04(木) 08:18:31
>>323
Python信者に何言っても無駄だって。
自分はtwitterでさんざんPHPやRubyをけなしておいて「あれは個人的な感想です」と言い張っておきながら、
他人のtwitterでのつぶやきに対しては「他の言語をdisるな」だもんね。話が通じる相手じゃない。
327 名前: デフォルトの名無しさん Mail: sage 投稿日: 2010/11/04(木) 08:19:09
何この妄想厨
328 名前: デフォルトの名無しさん Mail: sage 投稿日: 2010/11/04(木) 08:20:19
いつものツイッター監視厨だろ
0337デフォルトの名無しさん
2010/11/04(木) 10:31:49自分がblogに突撃するゲハ厨並に馬鹿な真似をやってるんなら
相手を馬鹿にはできないよ
0338デフォルトの名無しさん
2010/11/04(木) 10:38:270339デフォルトの名無しさん
2010/11/04(木) 10:47:20マルチしている>>292やここぞとばかりににdisってる>>294はまったくスルーしてるくせに
それへの批判はいちいち反応してるパイソンの人って、どんな精神構造してるのか知りたい。
あれかな、自分のツイートは何書いても「感想」で、他人のツイートは「dis」よばわり
していることの矛盾に自分でも気づいているから、妄想厨とでも言わなきゃ反論できなのかな。
>>337
本人乙
0340デフォルトの名無しさん
2010/11/04(木) 10:48:510341337
2010/11/04(木) 10:54:00本人認定来たよw
>>292みたいなAAマルチ厨なんか相手にするわけないだろ
methaneネタは最初は面白かったがMatzみたいな大物じゃなくてどうでもいい奴だから
すぐ飽きる
シンボルも知らない厨房だったじゃないか
言ってることからして、コンピュータサイエンスを学んだこともないんだろ
またいつもの厨房か、と思われたくなければ、冷静になれよ、と言ってる
0342デフォルトの名無しさん
2010/11/04(木) 11:18:040343デフォルトの名無しさん
2010/11/04(木) 11:20:18>>336
45秒www
はやすぎるwwww
0344methane
2010/11/04(木) 12:09:332chではよくあるけど、「Python信者」みたいなレッテル張りを始めたとたんにそれが
1つの人格のように感じてしまうのは良くないよ。
Python信者は沢山居て、俺と >>292 は別人なんだから、「Python信者はダブスタだ」みたいな
指摘は意味が無い。
>>335
別に一見さんに対する可読性が良いからPythonはRubyより良い言語だって主張する気は無いよ。
あくまでも、C++が99%の職場で他人も改造するようなバッチ処理を書くとか、そういう場面では
Pythonが一見さんにも読みやすくて良いんじゃないかと思ってつぶやいただけ。
一見さんに対する可読性に限らず、言語はいろんな側面を持っていて、どの側面が重要なのかは
場面によって異なる。
PHPのパフォーマンスの話だって、秒間数千リクエストのサイトをMVCフレームワークを使って
構築しようと思わなければ問題にならないし、mod_phpの利便性とかphpの良い点もちゃんとわかってる。
0345デフォルトの名無しさん
2010/11/04(木) 13:30:350346デフォルトの名無しさん
2010/11/04(木) 17:40:00……と思ってC#のコード書いてみたけど、やっぱりちょっと面倒くさかったw
Pythonで
http://codepad.org/f7JQm3CK
これぐらいのコードが
C#だと
http://pastie.org/1271708
これぐらいになった
まあこれぐらいで型安全と速度が手に入ると思えば上出来なのかな
C#使いならもっと簡潔に書くんだろうし
0347デフォルトの名無しさん
2010/11/04(木) 18:07:58ツイッター監視厨は他にやることないのかよ
0348Perl忍者 ◆M5ZWRnXOj6
2010/11/04(木) 18:36:500349デフォルトの名無しさん
2010/11/04(木) 19:12:54C#ってがんがん改良・拡張されていくなぁ
一企業が作ってるのと
コミュニティが作ってるものの違いか
0350デフォルトの名無しさん
2010/11/04(木) 19:16:430351デフォルトの名無しさん
2010/11/04(木) 19:27:49python信者のツイッター発言がコピペされると怒るけど、matzのツイッターがマルチでコピペされることはスルーするのは変だなと思ったけど
328がmatzのツイッターを監視してマルチコピペしているのだと考えたら納得がいった。
0352デフォルトの名無しさん
2010/11/04(木) 19:29:58お前はコピペについてどう思ってんの?
0353デフォルトの名無しさん
2010/11/04(木) 19:31:14頭悪すぎ。コピペ野郎とは会話も成立しない
0354デフォルトの名無しさん
2010/11/04(木) 19:32:07def queens(size: Int) = {
def safe(x: Int, y: Int, x_ : Int, y_ : Int) =
x != x_ && y != y_ && (x - x_).abs != (y - y_).abs
def solve(y: Int): List[List[(Int, Int)]] = {
if(y == 0) List(List())
else for {
qs <- solve(y - 1)
x <- 1 to size if qs.forall{case (_x, _y) => safe(x, y, _x, _y)}
} yield (x,y) :: qs
}
solve(size)
}
for(x <- queens)
println(x)
0355デフォルトの名無しさん
2010/11/04(木) 19:32:310356デフォルトの名無しさん
2010/11/04(木) 19:33:03for(x <- queens(8))
println(x)
0357デフォルトの名無しさん
2010/11/04(木) 19:36:09おー、さすがにC#よりは全然いいね
C#はJavaに比べればかなり頑張ってるけど、微妙なところでまだ不便さを感じたYO
0358デフォルトの名無しさん
2010/11/04(木) 19:36:140359デフォルトの名無しさん
2010/11/04(木) 19:44:24なにいい子ぶってんの?バトルスレなんだから、前スレ通りPython信者は言いたい放題言えばいいよ。
>別に一見さんに対する可読性が良いからPythonはRubyより良い言語だって主張する気は無いよ。
まさに>>323の通りだな。
0360デフォルトの名無しさん
2010/11/04(木) 19:46:20プログラミング言語に関しては無知だから煽ることしかできないのか馬鹿が死ねよ
0361methane
2010/11/04(木) 19:55:21良い子ぶるもなにも、前スレでもTwitterでも最初から限定された条件でのPythonのメリットを
言っているだけで、「だからRuby/PHPはクソ、Python万歳」なんて主張は一切してないよ。
そういう主張をしている痛いPython信者キャラとしてみている人がいるだけ。
0362デフォルトの名無しさん
2010/11/04(木) 20:11:26でも本当に好きなのはPerlだよな。
0363デフォルトの名無しさん
2010/11/04(木) 20:20:430364デフォルトの名無しさん
2010/11/04(木) 20:58:52痛いPython信者さんは、Python以外ではどんな言語が好きですか?
0365methane
2010/11/04(木) 21:25:24C++は、ヘッダとソースを分けるのが面倒だったりビルドに時間がかかったりするけど、
プログラムしてて楽しい。
といっても言語が好きというわけじゃないな。C++を使う必要性があるようなパフォーマンスを
気にする課題が好き。アセンブラが必要になる場面とか燃える。
あとは、Erlang、Go、Valaなんかも気になってる。
基本的に構文よりも、ライブラリなどの実用性とCPUとメモリ両方の実行効率が言語を気に入る条件。
0366デフォルトの名無しさん
2010/11/04(木) 21:32:29お前は何が大好きなの?
0367デフォルトの名無しさん
2010/11/04(木) 21:39:28型推論が強力になってる気がした(きのせいかも)
C#よりはいいかなあ
でも似た傾向のコードになる言語ばかりだと、つまらないですね
let queens size =
let safe x y pos = match pos with
| (x_, y_) -> x <> x_ && y <> y_ && abs(x - x_) <> abs(y - y_)
let rec solve y = seq {
if y = 0 then yield []
else
for qs in solve (y - 1) do
for x in 1..size do
if qs |> Seq.forall (safe x y) then yield (x, y)::qs }
solve size
0368デフォルトの名無しさん
2010/11/05(金) 00:39:520369デフォルトの名無しさん
2010/11/05(金) 00:43:09goでおながいしまs
0370デフォルトの名無しさん
2010/11/05(金) 01:10:15その人は放っといてやって。
0371デフォルトの名無しさん
2010/11/05(金) 01:49:36def queens(size):
def safe(l, x0, y0):
return all(x != x0 and y != y0 and abs(x - x0) != abs(y - y0) for x, y in l)
def solve(y):
if y == 0:
return [[]]
else:
ls = [l + [(x, y)] for x in range(1,size+1) for l in solve(y-1) if safe(l, x, y)]
return ls
return solve(size)
for ans in queens(8):
print ans
0372デフォルトの名無しさん
2010/11/05(金) 04:17:12>>346
0373デフォルトの名無しさん
2010/11/05(金) 09:08:15PerlはObjective-Cに抜かれたな。Pythonも時間の問題で、安泰なLLはPHPだけ。
Obj-Cと逆に下落を続けるVBはとうとうPythonを下回った。Perl/Rubyを下回るのも時間の問題。
0374デフォルトの名無しさん
2010/11/05(金) 23:27:17面倒なんだが、なんか良い方法あるの?
0375デフォルトの名無しさん
2010/11/05(金) 23:37:17C++ 0.08
C# 0.851
F# 1.602
Scala 1.663
Python 7.946
C++のコードはこれ
http://codepad.org/bO7Zg25g
汎用プリンタが無い言語は地味にだるいな、と思った
0376デフォルトの名無しさん
2010/11/05(金) 23:45:030377デフォルトの名無しさん
2010/11/05(金) 23:51:32exe化する意味は無いのでは
以前のコードは関数safeの条件式に少し無駄があったので
http://codepad.org/FsSMAc9V
のように書き換えた
psycoもかけてみたけど、このコードではほとんど差がないようだった
0378デフォルトの名無しさん
2010/11/05(金) 23:54:210379デフォルトの名無しさん
2010/11/05(金) 23:55:080380デフォルトの名無しさん
2010/11/05(金) 23:58:21似たようなコードのなかでC#が速いのはコンパイラが
よく最適化されているということかと思った
ただ、F#やScalaとの差が高々倍程度なので、それならばF#やScalaを選ぶ人が
多いのではとも
C++は完全にべた書きなので速いのはあたりまえ
この品揃えの中でPythonが遅いのもあたりまえ
0381デフォルトの名無しさん
2010/11/06(土) 00:00:00そんなことはお前の実験の100年前から分かってる
0382デフォルトの名無しさん
2010/11/06(土) 00:00:530383デフォルトの名無しさん
2010/11/06(土) 00:03:100384デフォルトの名無しさん
2010/11/06(土) 00:05:570385デフォルトの名無しさん
2010/11/06(土) 00:08:450386デフォルトの名無しさん
2010/11/06(土) 00:09:51それはクソだぜなるほどな
0387デフォルトの名無しさん
2010/11/06(土) 00:16:13ttp://twitter.com/methane/status/16673043960
C++とJavaがある程度分かっていると、Pythonはサラッとチュートリアル読んだだけで、
(メタクラスとか高度な部分を除き)大抵のコードは読むことができた。Rubyはムリ。
ttp://twitter.com/methane/status/16673105203
Rubyの世界では、DRYがよく叫ばれている。Repeatしないために、どんどんルールを作る。
一方、PythonのZenにはDRYがない代わりに、 "Special casesarn't special enough to
break the rules." というものがある。
ttp://twitter.com/methane/status/16673188444
たとえば、Rubyはメソッド呼び出しの括弧を省略できるけど、Pythonは省略できない。
括弧を書くというRepeatを行った分、特殊メソッド以外の呼び出しは一目瞭然。
ttp://twitter.com/methane/status/16673278223
あと、Rubyはsuperの引数を省略すると、自分の引数がそのまま渡される。
Pythonは普通に引数なしで呼び出す。Rubyの方がタイプ数少ないけど、特別な暗黙ルールを
作れば作るほど、一見さんには意味不明になっていく。
ttp://twitter.com/methane/status/17241429240
GREE Fast Processor とか、ぶっちゃけどう考えても非効率なPHPをある程度マトモな形に
無理やり修正しているだけで、最初からPython使っていれば全く問題なく綺麗に効率的な
構成がとれるんですけどね。APCも設定ファイルのコンパイルも、Pythonなら不要。
0388デフォルトの名無しさん
2010/11/06(土) 00:19:49Pythonユーザー視点からの発言としては全く妥当だけど、何が問題なのかなあ
他のプログラマ兼ブロガー、エッセイストと比較して、どう糞なのかワカンネ
あと、原著者と内容、翻訳自体に問題はないの?本、読んだことあるの?
0389デフォルトの名無しさん
2010/11/06(土) 00:25:400390デフォルトの名無しさん
2010/11/06(土) 00:28:25お前がそれを言うなよ(w
0391デフォルトの名無しさん
2010/11/06(土) 00:29:220392デフォルトの名無しさん
2010/11/06(土) 00:29:29他のプログラマ兼ブロガー、エッセイストと比較して、どう糞なのかワカンネ
あと、原著者と内容、翻訳自体に問題はないの?本、読んだことあるの?
0393デフォルトの名無しさん
2010/11/06(土) 00:30:110394デフォルトの名無しさん
2010/11/06(土) 00:31:040395デフォルトの名無しさん
2010/11/06(土) 00:31:59だからどう問題があるのか少しは具体的に言えないのかよ
0396デフォルトの名無しさん
2010/11/06(土) 00:36:11これだけ短くて純粋な計算(?)だとやっぱり見慣れたC++かな。なんか安心する。
0397methane
2010/11/06(土) 00:48:02Twitterでは思ったこと・感じたことを気軽につぶやきますが、翻訳文では個人の感想や
感情が入らないようにしっかり考えています。
0398デフォルトの名無しさん
2010/11/06(土) 00:59:28| queens |
queens := [:size |
| safe solve |
safe := [:dp | dp x * dp y ~= 0 and: [dp x abs ~= dp y abs]].
solve := nil.
solve := [:y |
y = 0 ifTrue: [#(())] ifFalse: [
((solve value: y - 1) collect: [:qs | (1 to: size)
select: [:x | qs allSatisfy: [:pos | safe value: x@y - pos]]
thenCollect: [:x | {x@y}, qs]]) concatenation]].
solve value: size].
Transcript closeAllViews; open.
(queens value: 8) do: [:each | Transcript cr; show: each]
0399デフォルトの名無しさん
2010/11/06(土) 01:00:060400デフォルトの名無しさん
2010/11/06(土) 01:03:02http://codepad.org/b6mrBkhu
Codepadで使えるみたいだったけど、srfi-1をどうやったらimportさせられるかが
わからなかった
safe?のありえなさでだいぶ割りを食っているw
0401methane
2010/11/06(土) 01:11:17http://codepad.org/XwQJSHNw
これで 2.2sec で、 >>377 とほとんど変わらない。
で、これを次のように cython にかけてみると 0.4sec になった。
cython --embed queen.py
gcc `python-config --cflags` `python-config --ldflags` queen.c
./a.out
0402methane
2010/11/06(土) 01:20:12整数を C の int にしたら 0.2sec
Pythonのリストやタプルを使うのを止めたら10倍くらい早くできると思うけど、もはや
Pythonの原型が無くなるなw
0403デフォルトの名無しさん
2010/11/06(土) 01:26:59いちいちコードに含めるのはナンセンスだよね。
一見さんには辛いかもしれないけど、そういう人たちのための補助的な情報は
コードにではなく書籍とかウェブとかに載せておけばいい。
コードには初心者にも上級者にも必要な本質だけが載っているべきだと僕は思うよ
0404デフォルトの名無しさん
2010/11/06(土) 01:28:280405デフォルトの名無しさん
2010/11/06(土) 01:58:10本質だけを書いて申し分ない速度が得られるならそもそも言語ごとに速度の比較などしないのだ。
0406デフォルトの名無しさん
2010/11/06(土) 01:59:20うちの環境(Python2.6)で、そのループ版と>>377を走らせてみたけど
ほとんど違いがないけど
両方8〜9sといったところで、違いは誤差の範囲
もちろんCythonは速いだろうけど
0407デフォルトの名無しさん
2010/11/06(土) 02:00:480408デフォルトの名無しさん
2010/11/06(土) 02:05:400409デフォルトの名無しさん
2010/11/06(土) 02:17:17逆に言えば構造やロジックをどう書こうと、同じ仕様なら最適化後には同じになっていてほしい。
0410デフォルトの名無しさん
2010/11/06(土) 02:18:390411デフォルトの名無しさん
2010/11/06(土) 02:22:530412デフォルトの名無しさん
2010/11/06(土) 02:27:13>>403は、要するに出力部とかはいちいち書かんでいいい、という意味なのかと
思ったが
0413デフォルトの名無しさん
2010/11/06(土) 02:32:250414デフォルトの名無しさん
2010/11/06(土) 02:35:170415デフォルトの名無しさん
2010/11/06(土) 02:49:31書いたの俺だけどさ
0416デフォルトの名無しさん
2010/11/06(土) 04:07:350417デフォルトの名無しさん
2010/11/06(土) 04:10:500418デフォルトの名無しさん
2010/11/06(土) 04:15:050419デフォルトの名無しさん
2010/11/06(土) 04:46:140420デフォルトの名無しさん
2010/11/06(土) 07:56:33みんなバカぶりを見たくて仕方がないんだね
0421デフォルトの名無しさん
2010/11/06(土) 11:03:26Pythonの書いたの俺だけど、
リストをくっつける処理で毎回コピーが発生するのが無駄だなと思いながら書いてた。
なんかうまいことジェネレータ書いたら、速くなるのかもしれん。
他の言語、そこらへんの処理どうやってるか読み取れなかったんだが、やっぱりコピーしてるの?
あるいは、LISPでいうところのconsみたいに、cdr部分をコピーせずにリストの連結してる?
0422デフォルトの名無しさん
2010/11/06(土) 11:15:36リスト内包よりループの方が速いってこと?
0423デフォルトの名無しさん
2010/11/06(土) 11:48:03>>406だが、うちでは>>377と>>401に有意な速度差はなかったよ
Python環境があるんなら、自分で試せばいい
0424デフォルトの名無しさん
2010/11/06(土) 11:50:41http://codepad.org/fjU4CJLb
ちょっとしんどかった
0425デフォルトの名無しさん
2010/11/06(土) 11:53:09関数型のやつは基本的にconsだね
C#のやつのCons()はconsなんだけど、その後でToList()しているのでこれも無駄
0426デフォルトの名無しさん
2010/11/06(土) 12:42:240427デフォルトの名無しさん
2010/11/06(土) 12:46:56ツッコまれたから読んだことない本を糞本よ呼ぶのはやめたんですねw良いことだと思います
0428デフォルトの名無しさん
2010/11/06(土) 13:00:39tab をやめてスペースのみでインデントしたのは評価出きる
0429methane
2010/11/06(土) 14:25:20ごめん、説明不足だった。
>>401みたいに書き換えたのは、>>377がそのままだとCythonでコンパイルできなかったから。
>>401と>>377はやってる処理は同じだし、実行時間も>>377とほぼ同じ。
>>377や>>401はC++のコードに比べてy座標をリストのインデックスではなく(x,y)のタプルで
管理しているし、しかも座標列をタプルで表してyが変わるたびにタプルの連結をしているから、
C++よりも処理は重いはず。
C++のコードを移植したら時間が 3/4 くらいには縮んだ。
http://codepad.org/ABj8FfkF
0430methane
2010/11/06(土) 14:34:36http://codepad.org/pkZ4sLPz
でも、このコードをCythonにかけてもなぜか >>401 のCythonより遅い。
このコードをベースにチューニングすれば>>402は超えられると思うけど。
Cythonは、平坦なPythonのコードがScala並には速くなる(しかも起動時間は速い)のが魅力。
JITコンパイルよりもAOTコンパイルの方が安定して性能が伸びて使いやすい。
0431デフォルトの名無しさん
2010/11/06(土) 18:15:230432デフォルトの名無しさん
2010/11/06(土) 18:29:240433デフォルトの名無しさん
2010/11/06(土) 21:36:450434デフォルトの名無しさん
2010/11/07(日) 12:17:33solveを回す回数を減らさない限り、軽くならないんじゃないかと思う。
0435methane
2010/11/07(日) 13:32:12solve を回す回数はC++と同じだから、Cythonがちゃんと仕事してくれる(Pythonオブジェクトを回避して
Cで計算する)ようにしたらsolveを回す回数を減らさなくても軽くなるよ。
>>430 をベースに、Cython用に少し改造したら 0.05secになった。
http://codepad.org/aTEP7OpZ
元の2.2secから0.05secで44倍速くなってるから、>>375で言えばC++の2倍強の速度になる。
これはlistとかはPythonオブジェクトをそのまま使ってて、計算中にCのintで十分なところだけintに
してやった。
abs使うとPythonのabs使うために一旦Pythonの数値型に変換するところがCythonまだまだだ。
0436デフォルトの名無しさん
2010/11/07(日) 14:08:09枝狩りのためにテストしてるところ(そこがinnermost loopになってるので)
よって、>>430の改良がかなり効いてる(それだけで倍ぐらい速くなる)はずよ
もとのC++のコードは、そこで「無駄なこと」をしてるので、実は効率が悪い
まあ、Pythonでそこまでやる意味が俺にはわからないが…
素直に最初からC/C++で書いたほうがいいような状態だろう
ところでCythonってどんぐらい安定してるんだ?
>>401は0.13だとコンパイルできたが、0.12だとエラーになるのだが
0437436
2010/11/07(日) 14:35:28そこの比較だけ変えても大した影響ないみたいだな
0438デフォルトの名無しさん
2010/11/07(日) 14:44:11空気読んでトレンドに従ってルールを守ることこそが「素直」で
それを無視したら統制がとれなくなって暴走すると思ってるから
そういう意味では、とても重要なことなんだ
0439methane
2010/11/07(日) 15:30:09たとえばPythonから使えるクラスをCで定義するのが面倒なときにCythonが便利というだけで、
上記のような計算の高速化はオマケだと思ってる。
ただ、PythonにはNumPyみたいに数値計算とか統計とかをするライブラリが充実しているので、
そういった目的でPythonを使っている人には、Pythonで作った計算関数を後から簡単に5倍10倍
高速に出来るのは魅力的だろうね。
上の例は計算目的が最初からはっきりしてたから最初からC++で書けば良いけど、
統計処理とかだとインタラクティブな環境で試行錯誤しながら関数を作り上げていけるPythonが
便利だろうから。
0440デフォルトの名無しさん
2010/11/07(日) 15:30:48重い部分だけ別言語で書くってことが簡単にできる言語が、LLとしてはいいんじゃないの?
0441440
2010/11/07(日) 15:33:48確かに、C++で書くのさえ面倒な部分書くのにはいいかもね。
けど、CPythonで動かせないのがなんだかなぁ。
なんとか互換性保ったままできないのかなぁ
0442methane
2010/11/07(日) 15:53:58CPythonで動かせるよ。CPythonの拡張モジュールを作るのがCythonの一番便利な使い方。
Cythonは、Cython用の(Pythonライクな)コードを、Pythonの拡張モジュール用のCコードに変換してくれる。
例えば >>435 では [].append を引数に渡しているけれど、実際に PyList_New でCPythonの
リストオブジェクトを作って、 PyObject_GetAttr で append 属性を取り出してっていう、CPythonの
拡張モジュールAPIを使ったコードに変換されている。
cdefで書いたsolve関数は高速だけど、Pythonから直接呼べない。
でもdefで書いたtest関数は普通にPythonから実行できるし、solveを呼びたかったらsolveをラップする
関数を def で定義したら良い。
0443デフォルトの名無しさん
2010/11/07(日) 16:07:430444methane
2010/11/07(日) 16:11:51サイソンって発音してるね。
最近は発表を動画で公開する文化が定着していて、発音調べるときに動画検索ができて便利。
0445デフォルトの名無しさん
2010/11/07(日) 16:19:520446デフォルトの名無しさん
2010/11/07(日) 16:36:59さすがにもとのC++より速いってことはないみたいよ
ただ、ほとんど差は無い
両方gccの-O2でコンパイルして
うちでは
0.08sと0.11sぐらいです
0447デフォルトの名無しさん
2010/11/07(日) 16:41:53Cのobjとリンクできる言語ならいくらでもあるし
ffiでCのコードよべる言語もいくらでもあるけど
ヘッダをとりこめないと、#includeの一行で済むことに手間をかけないといけない
C++の強みってけっきょくそこだと思う
その代償として言語仕様がカオスだけど
0448デフォルトの名無しさん
2010/11/07(日) 17:35:14昔から CINT&ROOT が存在していた訳で、なんとなく無理矢理 Python へ結びつけようとする、
あるいは Python しか知らない素人の感想にしか聞こえないんだよな。
ここLL言語のバトルスレだよな?
0449デフォルトの名無しさん
2010/11/07(日) 17:44:240450デフォルトの名無しさん
2010/11/07(日) 17:45:11いいえPythonスレです
0451デフォルトの名無しさん
2010/11/07(日) 17:58:59ウケタ
0452デフォルトの名無しさん
2010/11/07(日) 18:48:45>>421の指摘している理由によって効率がわるい
関数的なリストでは探索木が木として保持されるが
配列ではそれぞれの枝毎にルートからの配列を持つことになり無駄
この程度のサイズでは無視できる範疇だけれども
C++の方法は素直な深さ優先/バックトラッキングで
現在探索中の枝の状態しか持たないのでメモリ効率は最善
一方関数型の方法は、抽象度が高く並列化もしやすいはず
という感じですかね
俺もCythonまで持ち出して特定の言語でパフォーマンスチューニングを
延々やる意味がわからない
興味がある人は並列化を試すといいのでは
0453デフォルトの名無しさん
2010/11/07(日) 18:50:39やっぱり、そうだっかw
CINTは(C++と比較すると)テンプレートの実装に難があるし、
STLはもちろんBoostも使えない。ただし、LL(軽量言語)として見れば、
95%のC/C++と互換性のあるインタプリタだし、
CINTでアルゴリズムを試行錯誤して、本番はC/C++でコンパイルするのは何ら支障は無い。
Boostみたいな最新の数値計算ライブラリは利用できないけど、代わりにROOTがある。
ありふれた単なるC/C++教育用の処理系ではなく、CERNでの導入/活用実績も十二分にある。
ちなみに、作者はRubyと同じく日本人だよ。(...と、餌を撒いておこうw)
数値計算分野に限定すれば、どうあがいてもPythonに勝ち目は無い。
もちろん「Pythonを使う事こそが目的」であるなら、スルー汁
0454デフォルトの名無しさん
2010/11/07(日) 18:51:540455デフォルトの名無しさん
2010/11/07(日) 19:00:02というか、PHP/Rubyに対するPythonの絶対的優位性って、性能くらいしかないんだろ
Zopeは派手にコケちまったし、今さらWebプログラミングでPHP/Railsを超えるのは無理でそ
せいぜい、GNUの公式LLとして選ばれた事をネタにオナるのが、いいとこなんじゃないのかな
0456デフォルトの名無しさん
2010/11/07(日) 19:05:470457デフォルトの名無しさん
2010/11/07(日) 19:12:31むしろそのためだけにPython使ってる人が多いくらい
0458デフォルトの名無しさん
2010/11/07(日) 19:20:20LLとしてPythonに手を出すくらいなら先にJavaScripyだし、Rubyなら最新の1.9とRails3で手一杯だろ
いまさら、派手コケしたPythonに関わるのは面倒なだけ
Pythonでやれることの大半は、Ruby/Perlで済む
Webの世界だと、PythonエキスパートによればGoogleに採用された事が自慢らしいから、
性能の話題と合わせて、それもこのPythonスレのオナネタにして夢を見てればいいんでないかい?
PHP/Railsプログラマは関わってられまへんw
0459デフォルトの名無しさん
2010/11/07(日) 19:31:300460デフォルトの名無しさん
2010/11/07(日) 19:31:42これ豆
0461デフォルトの名無しさん
2010/11/07(日) 19:33:19やっぱWebプログラマみたいな底辺ってお前みたいにオナオナ言ってる奴ばっかりなの?
0462デフォルトの名無しさん
2010/11/07(日) 19:40:020463デフォルトの名無しさん
2010/11/07(日) 19:45:430464デフォルトの名無しさん
2010/11/07(日) 19:54:15そこまで必死になる必要がないから
というか、Ruby1.9/Rails3/CSS/HTML5/JavaScript2.0...etc 勉強する事が山ほどあって、
つぶやく暇なんてありまへん
Pythonプログラマがうらやましいッスw
0465Perl忍者 ◆M5ZWRnXOj6
2010/11/07(日) 20:07:10知識をつけたい とか 色々やりたい
日々勉強 などツイッタで自己紹介しとけよ
0466デフォルトの名無しさん
2010/11/07(日) 20:08:27だけど、確かにやりたいことがあるなら2ch見てる場合じゃねーよな
俺はいろいろ諦めたけどw
0467Perl忍者 ◆M5ZWRnXOj6
2010/11/07(日) 20:09:010468Perl忍者 ◆M5ZWRnXOj6
2010/11/07(日) 20:13:17マック使ってんだろうな
>>というか、Ruby1.9/Rails3/CSS/HTML5/JavaScript2.0...etc 勉強する事が山ほどあって、
だいたいこんなキモいweb系やってるってことは
すべてがマックのターミナルから始まったでしょ
君のwが半角な時点でクソマカかLinuxインストール厨房を物語ってるよ
0469Perl忍者 ◆M5ZWRnXOj6
2010/11/07(日) 20:19:19厨房が好きな飲み物 無糖ブラックコーヒーってわめくほどの痛さ
0470デフォルトの名無しさん
2010/11/07(日) 20:22:150471デフォルトの名無しさん
2010/11/07(日) 20:23:370472デフォルトの名無しさん
2010/11/07(日) 20:25:53まあ、そういう可哀そうな話はマ板でやれよ
しかし、言語の話をしようにもPython以外は奴隷で議論に参加できないのか(´・ω・)カワイソス
0473デフォルトの名無しさん
2010/11/07(日) 20:27:41早漏乙
0474デフォルトの名無しさん
2010/11/07(日) 20:34:53コテハン12級のくせに偉そうにするな!
0475Perl忍者 ◆M5ZWRnXOj6
2010/11/07(日) 21:23:30クロールがどうたらとかわめいてるバカみたいなかすばっかり
0476methane
2010/11/07(日) 21:27:57Cythonネタ引っ張りすぎたな。反応があったからつい。
もちろん、分野や条件を限定すればPythonより良い言語はあるだろう。
WindowsでGUIアプリを作るならPythonよりもC#をオススメするし、
Webプログラミングに興味を持ってる初心者にはPHPをオススメする。
Pythonは汎用言語で、Webプログラミングも数値計算もGUIアプリもスクリプティングも
こなせる、しかもいくつかの分野では専用言語にも引けを取らないのが魅力。
すでにPythonでGUIプログラムを作れる人が、ちょっとWebアプリ作るとか、
ちょっと数値計算するとか、そのたびにいちいち専用言語を覚えなくても良い。
メジャーなLLの中ではPythonが一番広い分野で使われていると思う。
0477Perl忍者 ◆M5ZWRnXOj6
2010/11/07(日) 21:37:240478デフォルトの名無しさん
2010/11/07(日) 21:50:180479デフォルトの名無しさん
2010/11/07(日) 22:30:42要するに、
Pythonとは、何でもできるけど、何一つ結果を残せない器用貧乏な言語
ってことね。
>>476の応用分野は、すべてRubyでも(Perlでも)可能、あるいは得意分野だし。
あえて(Rubyと比較して)Pythonの優位性をとけば、ちょっと速くてWindows対応に優れていること
くらいじゃないのかな。あと構文が簡潔だから、中高生/文系学部の教育用言語には適しているね。
ただし、GUIであれば、Ruby/TkとRuby-GNOME2という拡張ライブラリの作者は日本人だから、
日本語のドキュメントは豊富でサポートも安心できるし、Webプログラミングであれば、
Rails vs. Zope で誰の目から見ても結果は明らか。また、
>メジャーなLLの中ではPythonが一番広い分野で使われていると思う。
とあるけど、推薦図書/必読図書スレ 57 によれば、世界的に見て Pythonユーザ数(34508タグ)と
Rails + Rubyユーザ数(20050 + 13617タグ)は、ほぼ同数。Python派の口癖は
ruby が普及してるのは日本だけ、全世界的には python が圧倒的!
だったけど、これも否定された。結局、どれも主観あるいは無知からくる誤認な評価ばかりだよ。
0480デフォルトの名無しさん
2010/11/07(日) 22:38:29物は言い様
ってことね。
0481デフォルトの名無しさん
2010/11/07(日) 22:40:320482デフォルトの名無しさん
2010/11/07(日) 22:42:51こりゃ詭弁だ。重複はねえのかよ
0483デフォルトの名無しさん
2010/11/07(日) 22:44:46書式としては、確かに優秀かもなw
0484デフォルトの名無しさん
2010/11/07(日) 22:48:32なぜZopeはRailsのようにWebの世界で成功を収めることに失敗したのか?
に答えて欲しい。前スレでも質問したけどスルーされちまったんだよな。エキスパートならZopeは知っているよね。
それほど(思わずツブヤいてしまうほど)Pythonが優れているのなら、Zopeは成功していたはずなんだけどなぁ....。
当時は(SoftwareDesigin誌だったかな?)では「次世代のWebフレームワーク」として派手に登場し、
世間で大いに騒がれていたように記憶している。でも現実には後発のRailsがリーダーシップを握ってしまった。
それとも自称Pythonエキスパートにとって、Web技術は無視すべき存在なのかな?
もっと現実を見ようよ by ドラエモン(AA略
それともPythonコミュニティにとってZopeは禁句なのかな? まあ、暇なのはうらやましいけどねw
0485484
2010/11/07(日) 22:51:31> なぜZopeはRailsのようにWebの世界で成功を収めることに失敗したのか?
以下のように訂正。
なぜZopeはWebの世界で成功を収めることに失敗したのか? なぜRailsに負けたのか?
0486デフォルトの名無しさん
2010/11/07(日) 22:54:28普通比べるならDjangoだろ、お前の頭は何年前でとまってるねんw
0487デフォルトの名無しさん
2010/11/07(日) 22:54:55おちおち呟いてられない世界かよw
0488デフォルトの名無しさん
2010/11/07(日) 22:55:01rakeのような、スケルトンジェネレータその他多機能コマンドは同梱なのかな
もしそうじゃなければ、それらが決定的な差になった可能性はある
そこは、言語どうこうじゃなく、ユーザビリティの差だろう
0489デフォルトの名無しさん
2010/11/07(日) 22:56:500490デフォルトの名無しさん
2010/11/07(日) 22:58:30覚えたての単語ならべて偉そうに言ってると恥じかくよ
0491デフォルトの名無しさん
2010/11/07(日) 22:58:38同じPython使いからも煙たがられているエキスパート厨房なんです
0492デフォルトの名無しさん
2010/11/07(日) 23:01:280493デフォルトの名無しさん
2010/11/07(日) 23:02:03そんなつもりは無かったんだけど
Zopeを知らないのは確かだからごめん
0494デフォルトの名無しさん
2010/11/07(日) 23:06:000495デフォルトの名無しさん
2010/11/07(日) 23:06:590496デフォルトの名無しさん
2010/11/07(日) 23:09:43>>490-492が指摘したいことはまったくわからない
0497methane
2010/11/07(日) 23:10:49解説を流し読みした個人の感想では、ZODBとかいうデータストア使っている時点で使いにくいと思った。
データストレージはメンテナンスに非常に気を使う部分で、メインのデータストレージはやっぱり
MySQLとか信頼できてメンテナンスのノウハウがあるものを使いたい。
多分、ZopeはLAMPという言葉が一般的になる以前の設計なんじゃないかな?
全く触ってない第三者としての感想なので話半分で。
0498デフォルトの名無しさん
2010/11/07(日) 23:11:550499デフォルトの名無しさん
2010/11/07(日) 23:13:28cdefってあったら、CPythonじゃSyntaxErrorでるけど。
そこ消して何か別のものに差し替えるの?
>>447
拡張子を.py.cにして、
python foo.py
の代わりに、
gcc -E -P foo.py.c | python
で実行する。
コメントは#じゃなくて//で始める。
0500methane
2010/11/07(日) 23:15:30いや、Cython queen.pyx したあとに、 gcc `python-config --cflags` queen.c -o queen してから、
Pythonで
>>> import queen
>>> queen.test()
ってしてみて。
0501デフォルトの名無しさん
2010/11/07(日) 23:15:54むだに意地張ってるんじゃねえよ
>>496で指摘してるのは、>>496には>>490-492の意味がわからないっていうことだけだろうが
うまいこと書いたつもりで馬鹿書いてるよあんたw
0502デフォルトの名無しさん
2010/11/07(日) 23:19:26そう思って、コピーの代わりにitertools.chainでつなげることも試してみたけど、
そんなに大きい配列じゃなかったらかなぁ。逆に効率が悪かった。
コピーには時間かかるけど、たどるのは楽なんじゃないかなぁ。
0503デフォルトの名無しさん
2010/11/07(日) 23:19:350504デフォルトの名無しさん
2010/11/07(日) 23:20:210505デフォルトの名無しさん
2010/11/07(日) 23:20:25同じレベルで>>496は馬鹿だと思うよ。ああ、コイツ日本語すら読めないんだなって。
0506デフォルトの名無しさん
2010/11/07(日) 23:21:270507デフォルトの名無しさん
2010/11/07(日) 23:22:340508デフォルトの名無しさん
2010/11/07(日) 23:24:46Ruby/TkとRuby-GNOME2のドキュメントって、結局TkとGNOME2のドキュメントに当たらないといけなくなってどうせ英語じゃんってことはないの?
0509デフォルトの名無しさん
2010/11/07(日) 23:26:57なるほど。そういう風にするのか。thx
0510デフォルトの名無しさん
2010/11/07(日) 23:28:310511デフォルトの名無しさん
2010/11/07(日) 23:31:22少ない人材リソースながら選択と集中的効果を出したんじゃないの。
べつに言語が優秀だとかそういう話じゃないよ。
0512デフォルトの名無しさん
2010/11/07(日) 23:36:18Java、Perl、Pythonその他も含めたWEBフレームワークとして
RoRが当たったってことなんだと思うんだけど
0513デフォルトの名無しさん
2010/11/07(日) 23:38:56itertoolsでチェインしたら、ただのlinked listであるconsリストより
そりゃ効率は悪いんじゃないかな
consリストもあると嬉しいんだけど、なんで無いんだろうね
JavaやC#にはLinkedListもあるけど、これも全然役に立たないし
0514デフォルトの名無しさん
2010/11/07(日) 23:41:20DSL的な拡張がし易かった、ってのがRoRが生まれた一因なんじゃないかな。
やり方次第でほとんど別の言語みたいな環境が作り出せる、ってのは
Rubyの長所でもあり、短所でもあると思う
0515デフォルトの名無しさん
2010/11/07(日) 23:43:19英語が苦手な人が多いのはそうだと思うが
Railsしか無いってのは確実に誤りだと思うぞ
というかそもそもRubyの得意分野ってWebじゃなくてテキスト処理じゃね?
Perlもそういう勘違いされてるがあれも本来はテキスト処理言語だし
0516デフォルトの名無しさん
2010/11/07(日) 23:43:57Webではデータを右から左に流すような、似たような仕事を楽チンに書きたいという
需要がとても多いのではと推測するんだけど
そういうユースケースではDSLがとても有用なのでは
↓というわけで以下マクロの話
0518デフォルトの名無しさん
2010/11/07(日) 23:45:09選択と集中って素晴らしいじゃないですか。
教育用言語で、この素晴らしい考え方をどうやって教えるつもりですか?
それとも、教える気なんてないの?
0519デフォルトの名無しさん
2010/11/07(日) 23:46:49RoRが当たった理由にはならんだろう
このスレ住人の意識がそっちにはいかないだけなのか、
意図的にずらしてるのかよくわからない流れだ
0520デフォルトの名無しさん
2010/11/07(日) 23:47:12何言ってんの?
0521デフォルトの名無しさん
2010/11/07(日) 23:47:290522デフォルトの名無しさん
2010/11/07(日) 23:50:07当たったのは、宣伝とかの話をのぞけば、
それが優れたデザインで開発が楽だと思われた、アピールできたからじゃないの
が、何もない土壌にそういうものは生まれないわけで、その土壌が
DSLだという話なのでは
0523デフォルトの名無しさん
2010/11/07(日) 23:53:44教育用だとか、初心者がいちいち専用言語を覚える必要がないとか書いていたから
胡散臭いと思って聞いてみたんですが
やっぱり教育なんてどうでもいいんですよね
0524484
2010/11/07(日) 23:54:11レスありがとう。
当時を振り返ると、LAMPというキーワードこそ存在していなかったけど、Linux/BSD上でPHPとRDBを動かす
いわゆる「WEB-DB連携」は、そこそこ普及していた。その一方で、過去に大いに期待を集めたOODBは
既に衰退しつつあった。そんな背景の中で、現実のRDBを選択せずOODBを実装したという、ありがちな
自己の技術力を過信するあまり「マクロ的な技術動向」を読めず敗退した例ということなんでしょうね。
もしもその時点でZopeデベロッパがストレージとしてRDBを選択していたら、時代は変わっていたのかもしれない。
0525デフォルトの名無しさん
2010/11/07(日) 23:55:48教育用って、なんの教育?
0526デフォルトの名無しさん
2010/11/07(日) 23:57:52実務と一緒くたにするなよ。それはRubyやPerlで教育しても同じことだろ
0527デフォルトの名無しさん
2010/11/07(日) 23:59:53"generalizing from no examples at all" にならないために。
0528デフォルトの名無しさん
2010/11/08(月) 00:01:110529デフォルトの名無しさん
2010/11/08(月) 00:02:34自分の経験を元にRubyで書いたWebフレームワークがRoR
RoRの成功した理由はともかくとして、そもそもなぜDHHはRubyを選んだかというと
>私は達人プログラマの2人とMartin Fowlerの大ファンなんですけど、それも関係していますね。
>彼らから何度となくRubyの話を聞くんです。
(中略)
>Rubyは、それはもう、ものすごくフィットしたんです。私の脳に完璧にフィットしました。
http://capsctrl.que.jp/kdmsnr/wiki/transl/?AnInterviewWithDHH
Pythonはよく知らなかったと語っている
……まあその、きっかけがあるのは大事という話になるw
0530デフォルトの名無しさん
2010/11/08(月) 00:06:13教育用言語を名乗る言語は数あれど
実際に多くのプログラマが学ぶ共通語ってのが無い。
0531デフォルトの名無しさん
2010/11/08(月) 00:09:560532デフォルトの名無しさん
2010/11/08(月) 00:11:34Pythonも教育用に使われてるだけで、そのために設計された言語じゃないよ
ttp://www.rakunet.org/TSNET/TSpython/35/1067.html
教育用というとSqueakが一番に思い浮かぶ
0533デフォルトの名無しさん
2010/11/08(月) 00:11:350534デフォルトの名無しさん
2010/11/08(月) 00:14:02黒板がもっとも普及してる実装なんだし。
0535デフォルトの名無しさん
2010/11/08(月) 00:16:16メモリ管理とかはあまり気にせずに扱えて、Javaで書かれた書籍が結構あって
実務でも趣味でもそこそこのシェア、か。
なるほど、確かにJavaがその位置に居るのかも知れんな。
処理速度がイマイチで、色んな環境で使われるってのも昔のBASICを思い出すなw
0536デフォルトの名無しさん
2010/11/08(月) 00:16:41Ruby/Tkについては、ググレば見つかるけど作者のWikiの他、ネットに日本語の情報が有るし、書籍も2冊あるから、
ほぼ英語は不要と言える。後、何か問題があっても、Ruby公式MLで質問すれば、過去に何度も作者自身が
的確かつ新設に対応してくれている。これの魅力は大きい。
Ruby-GNOME2は詳しく知らないが、公式ページには、一般的な3ペインのメーラや2chブラウザなら書けるくらいの
日本語情報は揃っている。また、作者が日本人だから日本語の公式MLもある。
もちろん本格的なアプリ開発であれば英語は必要になるけど、「最初の一歩」が日本語で済むっていうのは、
初心者はもちろん、熟練者にとっても魅力ではないかと思う。英語がペラペラな人でもない限り。
これらは、どちらもGUIプログラミングにおける「Pythonには無い、Rubyの魅力」だよ。
さあ、これに対して、「Rubyには無い、Pythonの魅力」を大いに語ってくれ。
Windows対応の良さとか、他にもあるはずだと思う。
0537デフォルトの名無しさん
2010/11/08(月) 00:18:52ラムダ計算の授業では、黒板がカッコで大混乱に陥った記憶がある
Schemeも似たような理由で
あまり向いているとは思えないが……エディタの支援がないと
0538デフォルトの名無しさん
2010/11/08(月) 00:20:38カッコを適当に省いてインデントで構造を表すのかと思ったけど
そうでもないのか
0539デフォルトの名無しさん
2010/11/08(月) 00:22:35>>455、>>458、>>479
0540デフォルトの名無しさん
2010/11/08(月) 00:22:470541デフォルトの名無しさん
2010/11/08(月) 00:23:560542デフォルトの名無しさん
2010/11/08(月) 00:23:570543デフォルトの名無しさん
2010/11/08(月) 00:26:17逆に英語の情報が異常に充実してるっていうのはメリットになるかも >Python
英語さえ厭わなければ大抵の疑問はググると答えが見つかる
しかもコミュニティの気風として中途半端な答えだとすぐにツッコミが入るからS/N比が良い
0544デフォルトの名無しさん
2010/11/08(月) 00:27:49その3つ、すべて漏れのカキコなんだけどw
しかも、どれも決定的な優位性じゃないし
他には無いの? Pythonには XXX ができるけど、Ruby じゃできない!ってネタ
0545デフォルトの名無しさん
2010/11/08(月) 00:28:36あれはその場限りのお遊びデータとして貼ったのに
そういうナイーブな使い方をされるとは正直思ってなかった
0546デフォルトの名無しさん
2010/11/08(月) 00:31:20日本語が決定的な優位性と思ってる人には
pythonのとっつきやすさ、導入のしやすさは十分決定的なはずだけど
0547デフォルトの名無しさん
2010/11/08(月) 00:35:44そのPythonのとっつきやすさってのはなにを基準に主張してるんだろ
ある程度のとっつきやすさや導入のしやすさは、このスレで対象に
している言語はみんな持ってるんじゃね?
まったくの素人が一番とっつきやすいのは、ブラウザに搭載されている
JavaScriptだったり、Windowsでシェルスクリプトを書けるVBScriptだったり
するわけで
0548デフォルトの名無しさん
2010/11/08(月) 00:41:540549544
2010/11/08(月) 00:54:52その「if 日本語が決定的 then Pythonはとっつきやすい」という論理展開について、具体的な例をあげてくれ。
第三者から見て(感覚的に)分かる例を。でないとコメントのしようがない。>>544では具体例を挙げているよね?
0550デフォルトの名無しさん
2010/11/08(月) 00:59:26いや、一見してJavaScriptやVBScriptがとっつきやすいように感じてしまうのは、素人だったりする。
Rubyの動的な性質は良くも悪くも指摘される事だけど、これらはプロトタイプベースの言語だから、
Ruby以上に変態的に動的な性質がある。構文が単純だから入門用だと感じるのは、まだまだだな。
0551デフォルトの名無しさん
2010/11/08(月) 00:59:46んなことはない
「開発環境」って言われて少しも引かない素人はいない、と思う
Windowsのメモ帳でできるよ、っていうのは決定的な導入のしやすさじゃないのかな
俺が知らないだけで、Pythonのインストールって、例えばActivePerlのインストールより
決定的に簡単なのか?
開発環境まで含めて考えると、少なくともWindowsでは、やっぱりJavaもしくはC#なんかが
Pythonより遙かにとっつきやすい気もしないでもないが
0552デフォルトの名無しさん
2010/11/08(月) 01:01:07Pythonでも他の言語でも英語が分からなくて「最初の一歩」で苦労したなんてあんまりないな
だって日本語の入門資料なんてそこらへんにあるでしょ
>>550
日本語で書いてくれ
0553デフォルトの名無しさん
2010/11/08(月) 01:07:58お前が前提としてるのがインストールすらできないアホなのか
VisualStudioもなんなく扱える奴なのか分からん
0554デフォルトの名無しさん
2010/11/08(月) 01:08:13ちょ、ちょっとまって
JavaScriptはともかく
VBScriptがプロトタイプベース?
0555553
2010/11/08(月) 01:13:53んだね。確かによく分からんな
一応、ソフトのインストール・アンインストール含めたWindowsの操作が一通りできる人間、が前提
>>546の「導入のしやすさ」の前提がよくわからんので書いた例として捉えてくれ
0557デフォルトの名無しさん
2010/11/08(月) 01:18:430558デフォルトの名無しさん
2010/11/08(月) 01:20:080559デフォルトの名無しさん
2010/11/08(月) 01:21:460560デフォルトの名無しさん
2010/11/08(月) 01:34:49まず一般論として、自分は英和辞典を前提にすれば技術英語を何とか読める程度の英語力しかないから、
新しい事(たとえば形式的仕様記述とか高階型推論とか)を勉強しようとする時、
まずはざっと日本語のサイトを軽く読み通し、(もしあれば)日本語の入門書を購入する。
そうして概念の全体像を何となく把握した上で、英語のサイトや論文/書籍に取りかかる。
それが苦にならない>>552とかは、英語に自信があるか、既にかなりのスキルがあるってことではないかと。
で、この文脈での話題はGUIプログラミングについてなんだけど、たとえば以下のリンクはRubyの場合。
しかも(>>536で書いたように)公式な日本語MLがある。
・Ruby/Tk Wiki(作者の個人ページで公式なものではない)
http://www.dumbo.ai.kyutech.ac.jp/nagai/RubyTk/
・Ruby-GNOME2公式ホームページ
http://ruby-gnome2.sourceforge.jp/ja/
これらを超える情報を提供してくれる日本語の解説サイトって、Pythonにはあるの?
また公式な(Binding開発のコアメンバが対応してくれる)MLって、Pythonにはあるの?
具体例が無ければ、>>552の主観的な「かんそうぶん」にしか読めないなよ。
それとも「俺の考えに誤りは無い」あるいは「俺の考えは言わなくても相手は理解できる」っていう
独善的なのがPythonコミュニティの特性なのかな?(なんかPython派ってそんな人ばかり....)
0561デフォルトの名無しさん
2010/11/08(月) 01:44:23○ 読めないなり
0562デフォルトの名無しさん
2010/11/08(月) 01:44:27そうして概念の全体像を何となく把握した上で、英語のサイトや論文/書籍に取りかかる。
これは一般論なのか、これが苦になるのは一般論なのか
お前の個人的な感想だろ
0563デフォルトの名無しさん
2010/11/08(月) 01:48:37http://www.shido.info/py/index.html
http://www.geocities.jp/m_hiroi/light/#python_tkinter
0564デフォルトの名無しさん
2010/11/08(月) 01:55:33consよりは悪いと思うが、コピーはしなくなる。
0565デフォルトの名無しさん
2010/11/08(月) 01:56:35うん、確かに上段は自分の感想だよ。でも、それは英語が苦手な人に共通な「一般論」だと思うんだけど。
逆に、未知の概念について、いきなり英語でも無問題な>>552が特殊なケースなのでは?と主張している。
Do you undestand?
あと、結局はPythonのGUIライブラリについて、具体例(日本語の解説サイト等)は示してもらえないのね。
それって、結局は
英語が不得意な人にとって、GUIプログラミングに関して(Pytonよりも)Rubyのほうがとっつきやすい、
って事を>>552,562が(間接的に)認めたことになるんだけど....。
間違いは誰にでもあるんだから、素直にそれを認めればいいのに。だからPython派ってのは.....アレなんだよ。
0566デフォルトの名無しさん
2010/11/08(月) 01:58:030567デフォルトの名無しさん
2010/11/08(月) 01:59:18上は、いわゆる恥pyの人のサイトか
http://www.shido.info/py/python1.html
Pythonが参照渡しだとか
Pythonの関数名が関数へのアドレスをあらわすだとか
面白いサイトだよな
0568デフォルトの名無しさん
2010/11/08(月) 01:59:210569デフォルトの名無しさん
2010/11/08(月) 02:00:180570デフォルトの名無しさん
2010/11/08(月) 02:02:29いくら叩いても構わないと思うが
Ruby/Tk の人を叩くのはやめてあげてマジで
0571デフォルトの名無しさん
2010/11/08(月) 02:02:37とか思ってるんだが偏見だろうか
0572デフォルトの名無しさん
2010/11/08(月) 02:04:19Do you understand何て言ってない。Do you undestand?だ
0573デフォルトの名無しさん
2010/11/08(月) 02:06:25その程度のページでいいのなら、Ruby/Tkにもありますよ。
・Ruby/Tkチュートリアル
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby%2FTk+%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB
・逆引き Ruby/Tk
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=%B5%D5%B0%FA%A4%ADRuby%2FTk
・Ruby/Tk サンプルプログラム集
http://www.mnet.ne.jp/~tnomura/tksample.html
0574デフォルトの名無しさん
2010/11/08(月) 02:06:52rubyを酷評してるから根に持ってるのかw
0575デフォルトの名無しさん
2010/11/08(月) 02:08:11いや、恥pyの人は主にPythonユーザに評判が悪いと思っていたのだが...
Pythonについて書いてること大嘘だし
Rubyの人は知りもしないんじゃないの?
0576デフォルトの名無しさん
2010/11/08(月) 02:08:26あるよ
http://hibari.2ch.net/test/read.cgi/tech/1269609576/
0577デフォルトの名無しさん
2010/11/08(月) 02:11:09つまんないとこにケチをつけるなあと自分でも思わない?
失礼な表現だってことに違いはないのに
0578デフォルトの名無しさん
2010/11/08(月) 02:12:52それがRubyにあってPythonにないものなの?それで、よしRubyを使おう、と思うの?
Pythonを使う理由は、あるいはRubyを使わない理由はそこだとRubyの人は思ってるの?
0579デフォルトの名無しさん
2010/11/08(月) 02:13:06GUIならTkinterよりもWindowsサポートを攻撃したほうが効果的だぜ
Ruby厨じゃ反論できねえから
0580578
2010/11/08(月) 02:14:10つまりRubyの人が重要視してることが、本当に重要なのかと言うこと
0581デフォルトの名無しさん
2010/11/08(月) 02:14:57はい。Pythonの優位性はWindowsサポートです。Python大勝利。Ruby厨発狂死亡www
0582デフォルトの名無しさん
2010/11/08(月) 02:17:130583デフォルトの名無しさん
2010/11/08(月) 02:23:32http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?GLib::Object
これのどこが日本語だって?
0584デフォルトの名無しさん
2010/11/08(月) 02:26:55背比べなんかどうでもいいだろ
0585デフォルトの名無しさん
2010/11/08(月) 02:28:21せっかく今Rubyの人いるみたいだから
なんか書いてよ
0586デフォルトの名無しさん
2010/11/08(月) 02:30:130587デフォルトの名無しさん
2010/11/08(月) 02:32:33出来のいいバインディングならバインディングのドキュメントより元ライブラリのドキュメントの方が役に立つことになる。
なので、それが日本語でもあんまり役に立たない。
UbuntuのRubyバインディングQtみたいに、なぜか落ちる(もう直った?落ちて使えなくて使うのやめた)とかだと、MLが日本語だと原因探りやすいが。
0588573
2010/11/08(月) 02:34:07いや、大差は無いと考えていますよ。もしTkinterのサイト紹介が無くても、Rubyが決定的に優位とまでは言えないと。
ただ、作者が日本人で直接会話できるのは(英語が不得手な人には)魅力かな?という程度で、
しかもRuby/Tkは作者のWikiで(整理されていないけど)かなりの情報が提供されてるから、(Tkについては)やや有利かな。
いずれにせよGUIアプリ開発者の熱意があれば、(英語の問題を含めて)とっつきやすさにRubyとPythonで差は無いと見てる。
0589デフォルトの名無しさん
2010/11/08(月) 02:36:18別にエキスパートしかコード書いちゃいけないわけじゃないでしょw
上の流れとか、その辺の言語も誰か書くだろうと思ってたのに誰もかかないまま
例の人が一人で頑張りだしたから何だかなあと思っていた
0590デフォルトの名無しさん
2010/11/08(月) 02:36:560591methane
2010/11/08(月) 02:42:43殆どこの一人と、ちょくちょく外国人が一人の二人がメインコミッタか。
この規模で、企業のバックアップとかじゃなくて、完全ボランティアなんだよね?本当に尊敬する。
ただ、チュートリアルだけならPyGTKも個人サイトで解説しているところがいくつかある。
チュートリアルの先も、日本語リファレンスが無い代わりにアプリなら山ほどあるから参考にしたい
GUIがきっと見つかる。
リファレンスに判りにくい部分があっても、IPythonでインタラクティブに動作を確認しながら開発できる。
あと、PyGTKだけで5人以上メインコミッタがいるほうが、トラックナンバー1よりなんとなく安心できる。
採用アプリが多い分、地雷を先に誰かが踏んでくれている確率が多い気がする。
だから、本当に英語アレルギーで無い限り、やっぱりPythonの方が良いんじゃないかなぁ。
0592デフォルトの名無しさん
2010/11/08(月) 02:48:46GTKは糞
もう一度言う
GTKは糞
0593methane
2010/11/08(月) 02:48:47GTKアプリを作り始めたい人にどっちを勧めるかという話ね。
完全に興味本位なんだけど、Ruby-gnomeって、Ruby 1.8系だとスレッドはどう実装されてるの?
Rubyのスレッドとgtkのスレッドを完全に分離してるのかな?
0594methane
2010/11/08(月) 02:53:30Windowsでは最新版が不安定だったりするし、僕は知らないけどMacでもなんか不具合あるらしいね。
Windowsを含むクロスプラットフォームでGUIやるならPython+Qtかwx がオススメだけど、
Windowsを無視して良いんだったら、Linux版はruby-gtk、Mac版はRubyCocoaで2種類のGUIを作ったら
良いんじゃない?
0595デフォルトの名無しさん
2010/11/08(月) 02:58:10なるほど
Ruby のひとが Windows 無視する原因はその辺にあるんだな
0596デフォルトの名無しさん
2010/11/08(月) 03:00:13GUI作る上で必要なのはpythonやrubyの知識じゃなくて、GTKなりQtなりの知識なんだから
0597デフォルトの名無しさん
2010/11/08(月) 03:03:230598methane
2010/11/08(月) 03:09:49Ruby 1.8 だと、GTKのメインスレッドをRubyのスレッドに割り当てて、それ以外のGTKスレッドから
Rubyが呼ばれないように注意してプログラムしないとセグフォになるのか。
やっぱり、汎用言語はネイティブスレッドをサポートしないとGUIフレームワークやブロックする
API周りの実装が面倒だよね。Ruby1.9への移行が早く終わると良いな。
(Python3はやっと来年から本格化しそう)
0599デフォルトの名無しさん
2010/11/08(月) 03:35:10ZopeはSmalltalkみたく環境込みのOOでめちゃ楽しかったな。
管理画面でポトペタしてサイト構築できたから土方にも配慮してたし
なんで流行らんかったんだろ。
遅いしバグも多かったけど。
0600デフォルトの名無しさん
2010/11/08(月) 04:26:02土方には難しすぎて理解不能だったからだろ
Railsはちょうど土方のレベルに合ってたから流行った
0601デフォルトの名無しさん
2010/11/08(月) 04:41:02まさに、それが理由でRuby1.9に移行した。
やっぱネイティブスレッドはいい
0602デフォルトの名無しさん
2010/11/08(月) 09:54:43ちゃんとセックスしてるか?
0603デフォルトの名無しさん
2010/11/08(月) 11:23:420604デフォルトの名無しさん
2010/11/08(月) 12:17:050605デフォルトの名無しさん
2010/11/08(月) 12:59:350606デフォルトの名無しさん
2010/11/08(月) 13:10:29でもSQLは認めざるをえないのだ・・・
0607デフォルトの名無しさん
2010/11/08(月) 13:34:27JavaFXってこんなんなんでしょ
LLでGUIならこんな感じであるべきだと思う
var window = Frame {
title:"JavaFX!"
width:200
height:120
content:BorderPanel {
top:Label {
text:bind textData.value
font:new Font("Serif", "BOLD", 18)
}
center:TextField {
value:bind textData.input
font:new Font("Serif", "PLAIN", 12)
}
bottom:Button {
text:"OK"
action:operation(){
textData.value = "You typed \"{textData.input}\" !";
}
}
}
};
0608デフォルトの名無しさん
2010/11/08(月) 14:14:50Javaとかに差をつけられる分野なのに、逆に負けてる
0609デフォルトの名無しさん
2010/11/08(月) 14:45:02GUIは需要がないから。
買い被るやつはたくさんいるけど。
0610デフォルトの名無しさん
2010/11/08(月) 14:49:500611デフォルトの名無しさん
2010/11/08(月) 14:50:420612デフォルトの名無しさん
2010/11/08(月) 15:10:23S式で書けそうだな。拒否反応のでないS式というべきか。
0613デフォルトの名無しさん
2010/11/08(月) 15:20:49その通り
GUIの数少ないモチベーションのひとつは、そうやって罵倒されることへの恐怖だ
0614デフォルトの名無しさん
2010/11/08(月) 15:24:430615デフォルトの名無しさん
2010/11/08(月) 15:30:20http://pyjs.org/
0616デフォルトの名無しさん
2010/11/08(月) 16:19:39http://pastie.org/1280934
楽なのかどうなのかよくわからんw
paintComponentオーバーライドして自前描画とかは
さすがに宣言的にはできないようだ
0617デフォルトの名無しさん
2010/11/08(月) 17:48:20まぁ、LLでGUIはこれからなんでしょ。
最近はJavaのよく出来たGUIアプリも見られるけど、初期の頃は酷かったし。
0618デフォルトの名無しさん
2010/11/08(月) 19:19:460619デフォルトの名無しさん
2010/11/08(月) 19:27:22Rubyとか世界的に見たら三流言語だから!
0620デフォルトの名無しさん
2010/11/08(月) 19:28:08これからって・・・
10年以上前に整備しておくべきものだろ
0621PHPくのいち(yumilcy
2010/11/08(月) 19:31:12女忍者なの(○`ε´○)/
0622デフォルトの名無しさん
2010/11/08(月) 19:47:03自分がやるわけじゃないからって、簡単に考えすぎ
0623デフォルトの名無しさん
2010/11/08(月) 19:51:510624デフォルトの名無しさん
2010/11/08(月) 20:18:18具体的な需要がないことには、優先順位もなにもないし
0625デフォルトの名無しさん
2010/11/08(月) 20:48:59特定業務アプリとか、そういう話だろうか。
0626デフォルトの名無しさん
2010/11/08(月) 21:08:46普及しまくってると思うけど
0627デフォルトの名無しさん
2010/11/08(月) 21:55:58出来は知らんけど。
0628デフォルトの名無しさん
2010/11/08(月) 21:57:40俺が自分用につくってるGUIアプリは全部Javaだ。なんつうか、Javaは
ネットワークとGUI関係は他の言語より設計がよい。
0629デフォルトの名無しさん
2010/11/08(月) 22:02:512chビューワのV2Cとか、かなり出来がいいよね
>>627
http://stackoverflow.com/questions/1570175/scala-and-swing-gui-applications
これか
Scalaならもう少しdeclarativeにかけたほうがかっこいいのに、と
思った
DSL記述力は高いはずなんだから
0630デフォルトの名無しさん
2010/11/08(月) 22:08:27そうでなければ新しく作る意味が無い
CのGTKも、C++のQtも、javaのSWINGも
Objective-CのCocoaは使ったこと無いから言及は避ける
0631デフォルトの名無しさん
2010/11/08(月) 23:05:29Ruby/Tkなら、>>607の言う「LLでGUIならこんな感じであるべき」姿は、既に実現できているよ。(10年以上前に!!)
Javaのような静的言語では、JavaFXのような別の新言語を憶える必要があるけど、Rubyならそんなのは無用。
また、標準で提供されていないウィジェットも、Ruby/Tkで記述してクラス定義すればいいから無問題。
これらは、少なくとも2001年には実装されていた。(Ruby/Tk解説書である「256倍本 界道編」の出版が2002年12月)
require 'tk'
text_data = Struct.new(:text, :input).new(TkVariable.new, TkVariable.new)
TkRoot.new(:title => 'Ruby/Tk!') { |window|
TkLabel.new(window,
:textvariable => text_data.text,
:font => TkFont.new([:serif, 18, [:bold]])
).pack
TkEntry.new(window,
:textvariable => text_data.input,
:font => TkFont.new([:serif, 12, [:normal]])
).pack
TkButton.new(window,
:text => 'OK',
:command => proc {
text_data.text.value = "You typed #{text_data.input.value} !"
}
).pack
}
Tk.mainloop
0632デフォルトの名無しさん
2010/11/08(月) 23:20:18わざわざ有難う!
Rubyのブロックをうまく利用することで階層構造通りにわかりやすく書けていて
とても好ましいと思うけど
JavaFXのような後発のものに比べると、windowやpackを何度も書いてるあたり
やはりverboseな印象をうけるなあ
S式でもXMLでもYAMLでもJSONでもいいが、木構造を記述するときに
それぞれのノードにいちいちペアレントの名前を書きたくは無いでしょう
0633デフォルトの名無しさん
2010/11/09(火) 06:43:180634デフォルトの名無しさん
2010/11/09(火) 15:59:56Rubyistとして言わせてもらおう。これはいけてない。
windowや.packが何度もでてきてるし、フォントの指定部分はわかりにくい。
これをJavaFXと同じだというのは、JavaFXに対して失礼。
これは素直にJavaFXの勝ちだと認めるべき。
0635デフォルトの名無しさん
2010/11/09(火) 16:29:46Rubyの得意分野っぽい気もするけど。
0636デフォルトの名無しさん
2010/11/09(火) 16:32:42そう思うよ
>>616のgroovyの例は言語内DSLだし
もっと頑張れるはず
0637デフォルトの名無しさん
2010/11/09(火) 19:57:05クラス名がTk::ButtonじゃなくてTkButtonなんだよな。なんでTkモジュールを作ってないんだろう。
自分ならこう書きたい。
require 'tk'
text_data = Tk::Variable.struct(:text, :input)
Tk::Root.new :title=>'Ruby/Tk!', :pack=>true do |w|
w.label(text_data.text).font(:kind=>:serif, :size=>18, :weight=>:bold)
w.entry(text_data.input).font(:kind=>:serif, :size=>18, :weight=>:normal)
w.button('OK').onclikc { text_data.text.value = "You typed #{text_data.input.value}!" }
end
短くはなったけど、JavaFxのほうが見やすいかもな。
0638631
2010/11/09(火) 20:06:42window とpackについて指摘がありますが、まずwindowについては、指摘の通りです(= verboseという意見に賛成)。
wigetの配置というのは上下の階層構造が基本なのだから、親wigetの指定は(必須ではなく)オプション属性であれば
良かったのに...と思う。ただし、これは「些細な」問題ではないかな? ちょっとコーディングが面倒になるだけ。
次にpackについて。これはwigetの配置を指定するメソッドです。
だから、Ruby/Tkの場合、pack, pack, pack と3回呪文を唱えれば、あら不思議、wigetは縦に並んで配置される。
もちろんpackのオプション属性を使えば、上/左下/右下といった配置も可能。なんてCoolなんだ!!って思いませんか?
(>>607の)JavaFXは、各wigetで個々にtop, bottom, centerを選んで指定する必要があるから(些細だけど)verbose。
それよりも、10年前に設計されたRuby/Tkが「ほとんどJavaFXと同じスタイルでGUIをコード化できる」って事がスゴイ。
Ruby/Tkが時代を先取りしていたと言うべきなのか、JavaFXが10年遅れてようやくRuby/Tkに追いついたというべきなのか....。
しかも、記述言語はRubyだけです。Javaのように、GUIに特化した専用言語、いわゆる「外部DSL」を憶える必要はありません。
>>634
Rubyistを自称するのでしたら、「論よりコード」の言葉のように、>>644自身が適切なコードを示して下さい。
他の人のRuby/Tkコーディングスタイルには興味が有りますから、私は大歓迎しますよ。
0639631
2010/11/09(火) 20:11:41>>637
「こう書きたい(or こうあるべき)」ではなく、実際に動くコードで示してくれると嬉しかったりします。
(>>631のコードは、コピペすれば動きますよ。)
0640デフォルトの名無しさん
2010/11/09(火) 21:10:34ダサイといったのは君の書き方じゃなくて、TkのAPIというかライブラリ設計がダサイってこと。
今のライブラリのままじゃ、君じゃなくたってダサイ書き方しかできない。
だから、>>637みたいに書けたらいいよねというわけ。
「実際に動くコード」といわれても、それはTkの別ライブラリを開発しろってことだから、さすがに無理。
それに631のだささを説明するのに、動くコードである必要はないし、それが10年前のコードかどうかなんて、君以外はだれも興味ない。
JavaFXはFlashの対抗馬なんだから、GUI関連に関してRubyより洗練されていてもおかしくない。
他言語の優れたところは素直に認めるべき。
なにがなんでもRubyのほうがいいという人間になりたいなら、まずは「エキスパートRuby」という本を書け。話はそれからだ。
0641631
2010/11/09(火) 21:27:14了解しました。
ただし、最後の一行を除きます。なにがなんでも....なんて気はありません。
>>608-624あたりの「今のLLには、JavaFXのような洗練されたGUIキットが無い」という流れを眺めていて、
Ruby/Tkなら(些細、あるいは「いくらか」冗長であっても)ほぼ同じスタイル書けるのになぁ....と感じてカキコしただけです。
0642デフォルトの名無しさん
2010/11/09(火) 21:31:47過去との互換でTkButtonも使えるけど現在ではTk::ButtonになっててTkButtonはTk::Buttonの別名になってる
DSLっぽく(Tclっぽく)、メソッドで属性を指定すると
require 'tk'
text_data = Struct.new(:text, :input).new(TkVariable.new, TkVariable.new)
Tk::Root.new do
title 'Ruby/Tk!'
Tk::Label.new do
textvariable text_data.text
font :family => :serif, :size => 18, :weight => :bold
pack
end
Tk::Entry.new do
textvariable text_data.input
font :family => :serif, :size => 12, :weight => :normal
pack
end
Tk::Button.new do
text 'OK'
command proc{text_data.text.value = "You typed #{text_data.input.value} !"}
pack
end
end
Tk.mainloop
でも、表示上の階層構造しか表してなくて、後で個々のウィジットインスタンスを得られない
必要なら、それぞれのインスタンスを自分で保存しておく必要があるのがださい
GUIは統合環境やGUIビルダーのある言語で書いたほうがいい
LL限定でやるのなら自分の使い慣れた言語でやればいい
Rubyのことしか知らんけどそう思う
0643デフォルトの名無しさん
2010/11/09(火) 21:38:200644632
2010/11/09(火) 21:47:31ああなるほど、packに関しては、それがTkのレイアウトマネージャの
仕様なわけですね
> だから、Ruby/Tkの場合、pack, pack, pack と3回呪文を唱えれば、
> あら不思議、wigetは縦に並んで配置される。
> もちろんpackのオプション属性を使えば、上/左下/右下といった配置も可能。
> なんてCoolなんだ!!って思いませんか?
これは同意しません
ttp://pastie.org/1284195
これはJavaFXではなくてgroovyのSwingBuilderですが、見ての通り
boxLayout(axis: BoxLayout.Y_AXIS)を一度指定すれば、以降は縦配列になります
同様にflowLayout()で、HTMLのフローレイアウト同様の横配列を
指定したことになります
これはJava/Swingのレイアウトマネージャの設計によるものですが、
少なくとも毎回packのようなものを呼ぶ必要はありませんよ
0645デフォルトの名無しさん
2010/11/09(火) 21:49:00>>607でJavaFXと一緒に名前が挙がってるけど、スルーされているなw
どっちかというとWPFのほうがメジャーなのではと思うが
そうでもないのだろうか
0646631
2010/11/09(火) 22:22:38>これはJavaFXではなくて
え、JavaFXではできないんですか? たまたま>>607のコードでは使われなかったけど、
ポリシーベースのwidget自動配置機能はJavaFXにもある、ってのが事実だと推測したのですけど。
あと、Ruby/Tkのpack仕様が「古くさい」というか、ユニークである事は認めます(<-- 今更かよ)。
0647デフォルトの名無しさん
2010/11/09(火) 22:27:42JavaFXについてはほぼ全く知らないので、答えようがありません
単にGroovyは知っているので、Groovyで書いただけですよ
(もっとも、Groovy標準で利用できるSwingBuilderは昨日初めて試したのですが)
0649デフォルトの名無しさん
2010/11/09(火) 23:03:51私の周りでJavaFXやってる人はあまり...
まぁLLにGUI求めても仕方ないような気がしますけどね
0650methane
2010/11/09(火) 23:33:26LLらしさは無いな。
C++のQtが宣言型UI定義言語に対応してそれがPyQtでも使えるけど、思いっきりJSONだから、
いっそPythonの辞書をそのまま定義にしろって思う。
SwingはLinuxだとデフォルトのフォントがダメダメ(デスクトップ環境のフォントを調べずに、
fonts.propertiesとかなんとかいうJavaのファイルだけ見やがる)だったり、
クロスプラットフォームGUIツールキットとしてはQt以下だと思ってたけど、最近はそんなこと
無いのかな。
0651デフォルトの名無しさん
2010/11/09(火) 23:44:50Pythonらしいな
0652デフォルトの名無しさん
2010/11/10(水) 06:11:00例えば TkRoot.[] を定義して、>>631を
window = TkRoot[title: 'Ruby/Tk!', pack: [
[TkLabel,
textvariable: text_data.text,
font: [:serif, 18, [:bold]]
],
[TkEntry,
textvariable: text_data.input,
font: [:serif, 12, [:normal]]
],
[TkButton,
text: 'OK',
command: proc {
text_data.text.value = "You typed #{text_data.input.value} !"
}
]
]]
みたいに書けるようにするのは、どうなんでしょ?
Ruby1.9用だけど、結構すっきりするような
0653デフォルトの名無しさん
2010/11/10(水) 07:01:000654デフォルトの名無しさん
2010/11/10(水) 11:47:13> でも、表示上の階層構造しか表してなくて、後で個々のウィジットインスタンスを
> 得られない
> 必要なら、それぞれのインスタンスを自分で保存しておく必要があるのがださい
最近の(というか、HTMLのようなマークアップ言語の影響を受けたもの)は
それこそwidgetにIDつけられるようになってるみたいだね
それないと確かに不便だろう
0655デフォルトの名無しさん
2010/11/10(水) 15:39:36悪くないんじゃね?実装も簡単そうだし。
0656631
2010/11/10(水) 18:38:17ウィジェットの階層構造をメソッドの列で表現するのではなく、データ構造で表現するということですね。
とても良い発想だと思います。自分はまだRuby1.9へ移行していないので、Ruby1.8で実装してみました。
ただし、Ruby1.8は連想リストが使えないので、代わりにモジュール関数を使っています。
これは実際に動くコードです。モジュールMTKを実装したmodern_tk.rbは、114stepほどの規模でした。
require 'modern_tk'
text_data = Struct.new(:output, :input).new(MTK.variable, MTK.variable)
MTK.mainloop(
MTK.root(
:title => 'Ruby/Tk!',
:vpack => [
MTK.label(
:textvariable => text_data.output,
:font => [:serif, 18, [:bold]]
), MTK.entry(
:textvariable => text_data.input,
:font => [:serif, 12, [:normal]]
), MTK.button(
:text => 'OK',
:command => proc {
text_data.output.value =
"You typed #{text_data.input.value} !"
}
)
]
)
)
0657631
2010/11/10(水) 18:56:27モジュールMTKは、任意のウィジェットにID属性を指定できます。
以下のコードでは、Small/Largeボタンを押すと入力テキストのサイズが変化します。
require 'modern_tk'
text_data = Struct.new(:output, :input).new(MTK.variable, MTK.variable)
MTK.mainloop(
MTK.root(
:title => 'Ruby/Tk!',
:vpack => [
MTK.label(:id => :LABEL, :textvariable => text_data.output),
MTK.entry(:textvariable => text_data.input, :font => [:serif, 18, [:bold]]),
MTK.frame(
:hpack => [
MTK.button(:text => 'Small', :command => proc { MTK[:LABEL].font.size = 14 }),
MTK.button(:text => 'Large', :command => proc { MTK[:LABEL].font.size = 18 }),
MTK.button(
:text => 'OK',
:command => proc { text_data.output.value = "You typed #{text_data.input.value} !" }
)
]
)
]
)
)
0658デフォルトの名無しさん
2010/11/10(水) 20:35:07Qt使えたら十分だと思うが。
JavaにはQtすらひどいと言えるほどに素晴らしいライブラリがあるの?
0659デフォルトの名無しさん
2010/11/10(水) 21:40:56プログラミングのインターフェースとしては出来が良いと思うよ
0660デフォルトの名無しさん
2010/11/11(木) 00:06:090661デフォルトの名無しさん
2010/11/11(木) 00:35:47まあそれは一理ある。
できればこれも追加して。
InterfaceBuilder>>>>越えられない壁>>>>VB
0662652
2010/11/11(木) 06:29:24ごめん、何かイマイチな感じがしてしまう。
Ruby的じゃないというか、オブジェクト指向的じゃないというか。。。
単純に>>652をRuby1.8でも通る書き方に変えるだけの方がマシだと思う。
0663デフォルトの名無しさん
2010/11/11(木) 10:59:390664デフォルトの名無しさん
2010/11/11(木) 11:13:570665デフォルトの名無しさん
2010/11/11(木) 14:53:51自分のパソコンでRuby使ってオナニーしてろ
0666デフォルトの名無しさん
2010/11/11(木) 15:24:230667デフォルトの名無しさん
2010/11/11(木) 15:24:52OO とか求めないから PHP で十分的な。おまいら 3 年も経てば昔のブビ厨扱いかもな。
0668デフォルトの名無しさん
2010/11/11(木) 15:39:140669デフォルトの名無しさん
2010/11/11(木) 16:04:200670デフォルトの名無しさん
2010/11/11(木) 17:45:540671Perl忍者 ◆M5ZWRnXOj6
2010/11/11(木) 18:14:30顔面ぶたれて鼻折られて 腹も殴られて
嘔吐吐きつづけるPHPユーザー
0672Perl忍者 ◆M5ZWRnXOj6
2010/11/11(木) 18:49:260673631
2010/11/11(木) 18:53:07>単純に>>652をRuby1.8でも通る書き方に変えるだけの方がマシだと思う。
やっぱりそうですか。カッコが大杉てインデント深すぎかも?とは感じていたのですが....。
というわけで、できる限り>>652に忠実かつRuby1.8でも通る書き方へと再実装(114 -> 226 step)してみました。
ただしTkRootにメソッド'[]'を追加するのはデータ構造の一貫性に欠けると考えて他と記法を統一し、
更にpack属性は省略可能(デフォルトは縦に配置する)といった変更を加えています。これならいかがでしょうか?
require 'modern_tk2'
text_data = Struct.new(:output, :input).new(MTK2.variable, MTK2.variable)
MTK2.mainloop [TkRoot, :title, 'Ruby/Tk!',
[TkLabel,
:textvariable, text_data.output,
:font, [:serif, 18, [:bold]]
],
[TkEntry,
:textvariable, text_data.input,
:font, [:serif, 12, [:normal]]
],
[TkButton,
:text, 'OK',
:command, proc {
text_data.output.value =
"You typed #{text_data.input.value} !"
}
]
]
0674631
2010/11/11(木) 18:56:59MTK2.mainloop [TkRoot, :title, 'Ruby/Tk!',
[TkLabel, :id, :LABEL,
:textvariable, text_data.output,
:font, [:serif, 18, [:bold]]
],
[TkEntry,
:textvariable, text_data.input,
:font, [:serif, 12, [:normal]]
],
[TkFrame, :pack, :h,
[TkButton,
:text, 'Small',
:command, proc { MTK2[:LABEL].font.size = 14 }
],
[TkButton,
:text, 'Large',
:command, proc { MTK2[:LABEL].font.size = 18 }
],
[TkButton,
:text, 'OK',
:command, proc {
text_data.output.value =
"You typed #{text_data.input.value} !"
}
]
]
]
0675デフォルトの名無しさん
2010/11/11(木) 20:01:350676デフォルトの名無しさん
2010/11/11(木) 20:33:320677デフォルトの名無しさん
2010/11/11(木) 20:49:01Perl忍者のPerlレベルを向上させるスレ
http://hibari.2ch.net/test/read.cgi/tech/1288431178/
Perl忍者です Perlプログラマになりたいです
http://hibari.2ch.net/test/read.cgi/tech/1284704280/
0678デフォルトの名無しさん
2010/11/12(金) 03:18:18Pythonの並に一貫して書きやすさや冗長性をなくすことよりも読みやすさを重視していてかつ
ドキュメントが少なく、コミュニティが活発でないマイナー言語はありませんでしょうか?
Pythonと他のLLやその他言語が比較されることがありますが、
いつも話を聞くのは、誰にとっても同じように書け、またあとから読みやすいからよいということのようです。
例えばRubyが使いづらいのはメタプログラミング以上に、ドキュメントが少ない、
Windowsでのサポートが少ないなどと言われることもありますが
それは単にPythonのコミュニティが大きくが人的なリソースを潤沢に持っているからなのではないか?と
つまり、Pythonからコミュニティやドキュメントなどを省いたような言語でも使いやすいはずと考えました。
動作はWindowsかLinuxで動くもので
0679デフォルトの名無しさん
2010/11/12(金) 03:20:28つまり、誰にとっても同じように書け、またあとから読みやすいから、ということであれば
Pythonからコミュニティやドキュメントなどを省いたような言語であれば使いやすいはずと考えました。
支離滅裂ですいませn
0680652
2010/11/12(金) 06:33:55頭の中にあったのは、GTKのように全てのウィジェットの基底クラスWidgetと全てのコンテナの基底クラスContainerがある場合で、
ざっくり雰囲気だけ書くと、
def Widget.[](args = {})
return self.new(args)
end
def Container.[](args = {})
container = super
args[:pack].each{|type, params| type[params]} # 子ウィジェット生成
return container
end
みたいなメソッドを定義して、全てのウィジェットでWidget[def]のようにしてデータ構造からインスタンス生成できると
美しいかなと考えていました。(>>652では>>631との対比が分かりやすいように、TkRootで書きましたが)
ただ、同じ様な事がTkに適用できるかは分からないです。
それと、モンキーパッチしなくていいメリットもあるので、>>673-674もアリだと思います。
0681デフォルトの名無しさん
2010/11/12(金) 10:52:14日本語勉強してからまた来なさい
0682デフォルトの名無しさん
2010/11/12(金) 11:21:190683デフォルトの名無しさん
2010/11/12(金) 11:58:19comp.langの(何だっけ)を眺めて自分で探せ
0684デフォルトの名無しさん
2010/11/12(金) 12:27:47http://www.google.co.jp/trends?q=ruby+programming,+python+programming,+C%23+programming&ctab=0&geo=all&date=all&sort=0
0685デフォルトの名無しさん
2010/11/12(金) 14:17:37まだ上には上が
Google トレンド: Java programming, ruby programming, python programming, C# programming
http://www.google.co.jp/trends?q=Java+programming%2C+ruby+programming%2C+python+programming%2C+C%23+programming&ctab=0&geo=all&date=all&sort=0
しかしC#下がってきてるのウケル
0686デフォルトの名無しさん
2010/11/12(金) 14:18:49phpぶっちぎってるんだが、こっちの方がすごくないか
Google トレンド: php programming, ruby programming, python programming, C# programming
http://www.google.co.jp/trends?q=php+programming%2C+ruby+programming%2C+python+programming%2C+C%23+programming&ctab=0&geo=all&date=all&sort=0
0687デフォルトの名無しさん
2010/11/12(金) 14:29:01phpはプログラミング言語ではなくて進化しすぎたテンプレートエンジンなので、「programming」と
and すると落ちるよね。
0688デフォルトの名無しさん
2010/11/12(金) 16:09:31公式探すなら language 使わね?
始めたかったら tutorial 使わね?
詰んだら issue 使わね?
あとこれマジ便利じゃね?
http://www.google.com/insights/search/#cat=31&q=perl%2Cruby%2Cpython%2Cphp&cmpt=q
0689デフォルトの名無しさん
2010/11/12(金) 16:38:10Rubyは宝石が、Pythonは蛇が、Javaはコーヒーが検索に引っかかる。
Programmingを足して検索する確率が言語間である程度均一なら、Programmingを
足して検索した結果の方が意味がある。
0690デフォルトの名無しさん
2010/11/12(金) 16:39:26リンク見る前に返信してしまった。それマジ便利だね。
0691デフォルトの名無しさん
2010/11/12(金) 17:00:28お前はラッパーかw
0692デフォルトの名無しさん
2010/11/12(金) 17:03:230693デフォルトの名無しさん
2010/11/12(金) 19:03:34http://d.hatena.ne.jp/gumilab/20101109/1289310291
0694デフォルトの名無しさん
2010/11/12(金) 21:16:44現実のシェアと明らかに違う。
http://www.google.co.jp/trends?q=internet+explorer%2C+ie%2C+firefox%2C+opera%2C+chrome%2C+safari&ctab=0&geo=all&date=all&sort=0
http://www.google.co.jp/trends?q=windows%2C+mac&ctab=0&geo=all&date=all&sort=0
0695デフォルトの名無しさん
2010/11/12(金) 21:26:22そのコトバを使用してるのかというのがシンプルな回答だな
無論使ってない
Pythonにしかないライブラリを使う探す説明するときに「Python」といちいち断るかというと微妙
Rubyの話を書くときに「[Ruby] [プログラミング]」と完全にタグ付けするかも微妙
0696デフォルトの名無しさん
2010/11/12(金) 21:47:300697デフォルトの名無しさん
2010/11/13(土) 14:46:20クエリーの対象となったページをカテゴリわけしてるのだろうか?
はてなブックマークのカテゴリわけのすごいやつなのか、ググルさんクロール対象にも機械学習で分類できそうだな
これおもしろいな
>>694
あまり変わらないなw
http://www.google.com/insights/search/#cat=303&q=windows%2Clinux%2Cmac&cmpt=q
Linux右肩下がりでわろた
0698デフォルトの名無しさん
2010/11/13(土) 15:24:52ubuntuとかdistroの名前で検索に変ってるだけじゃね?
0699デフォルトの名無しさん
2010/11/13(土) 17:40:180700デフォルトの名無しさん
2010/11/13(土) 20:53:45> 公式探すなら language 使わね?
languageには自然言語が入るため制度が悪くなる
0701デフォルトの名無しさん
2010/11/13(土) 22:59:10最終的には、 Google App Engine というのに乗せて動かしてみたいのですが
何か解説サイトとかってありますか?
0702デフォルトの名無しさん
2010/11/14(日) 01:07:29Pythonと決めているなら
Pythonスレで訊くべきだ
0703デフォルトの名無しさん
2010/11/14(日) 01:08:56了解です。
ちょっとPythonを触ってみましたが非常に気持ち悪い文法ですね。
0704デフォルトの名無しさん
2010/11/14(日) 01:26:550705デフォルトの名無しさん
2010/11/14(日) 01:33:54それにしても、Pythoは酷い文法だ。
だから日本で流行らないだよな。
0706デフォルトの名無しさん
2010/11/14(日) 01:36:210707デフォルトの名無しさん
2010/11/14(日) 02:28:280708デフォルトの名無しさん
2010/11/14(日) 02:41:040709methane
2010/11/14(日) 02:50:51最初はとりあえず慣れて、次にどうしてそうなってるのか調べるのがいいと思うよ。
言語設計者の方針とかを理解せずに○○キモイって批判してもその言語の信者に叩かれるだけだし、
方針を理解した上でどうしても受け付けられないならムリに好きになる必要ない。
0710デフォルトの名無しさん
2010/11/14(日) 02:52:300711デフォルトの名無しさん
2010/11/14(日) 03:05:33Google App Engineに作成したプログラムをEclipse上から
行うにはどうしたらよいのかな?
全く分からん。
0712デフォルトの名無しさん
2010/11/14(日) 03:05:410713デフォルトの名無しさん
2010/11/14(日) 03:06:050714methane
2010/11/14(日) 03:14:33http://www.gesource.jp/weblog/?p=1704
pydevとGAEで検索したら他にも結構ヒットするよ。頑張れ。
0715デフォルトの名無しさん
2010/11/14(日) 03:23:38一人エスパーで進んできたのか?天才じゃね
0716デフォルトの名無しさん
2010/11/14(日) 03:28:31漏れも最初はそう思ってたけど
なれるとそんなに気にならない
self もそう
C++ よりも C が好きっていう人に python は合う
っていうかインデント批判するひとは python 使ったこと無いんだと思うことにしている
0717デフォルトの名無しさん
2010/11/14(日) 03:56:04慣れればどうにかはなる
0718デフォルトの名無しさん
2010/11/14(日) 04:00:08サンクス。
そのサイトみたいにPythonのノウハウとかを公開したサイトが増えれば
もっと人気が出ると思うな。
取り敢えず練習用にPythonで作成したWEBサイトをGAEに載せてみる。
完成する頃には一通り出来る様になるだろうと期待して。
0719デフォルトの名無しさん
2010/11/14(日) 04:05:57>言語設計者の方針とかを理解せずに○○キモイって批判してもその言語の信者に叩かれるだけだし、
まさに「お前がいうな」だな。そういうつっこみを期待してのボケだろうけど。
0720デフォルトの名無しさん
2010/11/14(日) 04:15:37ttp://togetter.com/li/66450
0721methane
2010/11/14(日) 05:33:09少なくともこのスレで晒されたTwitterの書き込みではRubyやPHPに対してキモイと言った覚えはないけど?
まぁ昔 php の == がキモイとかは言ってたから、 >>709 が自戒を兼ねているのは認める。
0722デフォルトの名無しさん
2010/11/14(日) 06:33:00あなたの国では流行ってるですか?
0723デフォルトの名無しさん
2010/11/14(日) 09:26:37使っている人には気にならなくて、外から見たときに付け入られる見に見えた弱点のようなもの。
0724デフォルトの名無しさん
2010/11/14(日) 11:22:46キモイという言葉を使わなければ設計者の方針とかを理解せずに批判しても良いのか。ふーん。
0725デフォルトの名無しさん
2010/11/14(日) 11:53:41実行したところ Console には
http://localhost:8080
と表示されるのですがブラウザ上には何も表示されません。
また、直接ブラウザに http://localhost:8080 と入力し
実行すると selef.response.out.write('hoge')
とPythonのスクリプトが実行されている様です。
どうすればDebug実行時にブラウザがEclipse上で
自動で起動する様になりますか?
0726デフォルトの名無しさん
2010/11/14(日) 11:58:140727デフォルトの名無しさん
2010/11/14(日) 12:06:090728デフォルトの名無しさん
2010/11/14(日) 12:07:420729デフォルトの名無しさん
2010/11/14(日) 12:13:44悲惨すぎる
デバッグに難があるような物は、業務では採用されないんじゃないか
土方はIDEのソースレベルデバッガに慣れているからな
0730デフォルトの名無しさん
2010/11/14(日) 12:25:48デバッグに難があるような最適化をしてはいけません
0731デフォルトの名無しさん
2010/11/14(日) 12:42:04だって誰も教えてくれないんだもん
0732デフォルトの名無しさん
2010/11/14(日) 12:49:47日本語公式のリファレンスの説明が分かりにくすぎる。
というかやる気ないだろww
英語なら資料揃ってるの?
Pythonなら公式リファレンスが整備されていて
初心者でも自習に困らないというのは
必ずしも真じゃないんだなと思った。
0733デフォルトの名無しさん
2010/11/14(日) 12:53:16内包表記がpythonのコードを滅茶苦茶にし得る数少ない要素の一つだというのは分かるけど。
0734デフォルトの名無しさん
2010/11/14(日) 13:09:17うまく言えないけどPythonの字面にあってる。
そうじゃなくてリファレンスの説明じゃ初心者には分からんと言ってるの。
0735デフォルトの名無しさん
2010/11/14(日) 13:22:02リファレンスも分かりづらいけど。
0736デフォルトの名無しさん
2010/11/14(日) 13:24:280737デフォルトの名無しさん
2010/11/14(日) 13:29:07Python厨がドキュメントが充実してるから
初心者でも分かりやすいとかよく書いてるけど
全然そんなことなかったので不満を述べただけ。
0738デフォルトの名無しさん
2010/11/14(日) 13:32:240739デフォルトの名無しさん
2010/11/14(日) 13:34:20ググれば分かったってことは非公式ドキュメントが充実してたんですね^^
0740デフォルトの名無しさん
2010/11/14(日) 13:39:15別にPython自体が分かりにくいとか主張しているわけではないよ。
ただ公式が余りにやる気なさすぎて吹いたわ。
0741デフォルトの名無しさん
2010/11/14(日) 13:42:510742デフォルトの名無しさん
2010/11/14(日) 14:04:57結果として得られるリストの定義は、しばしば上記の構文を使ってリストを生成するよりも明快になります。
各々のリストの内包表記は、式、続いて for 節、そしてその後ろに続くゼロ個かそれ以上の for 節または if 節からなります。
式をタプルで評価したいなら、丸括弧で囲わなければなりません。
0743デフォルトの名無しさん
2010/11/14(日) 14:06:58The resulting list definition tends often to be clearer than lists built using those constructs.
Each list comprehension consists of an expression followed by a for clause, then zero or more for or if clauses.
The result will be a list resulting from evaluating the expression in the context of the for and if clauses which follow it.
If the expression would evaluate to a tuple, it must be parenthesized.
こっちが原文。
最初の2行はおしゃべり、最後の一行は些細な補足
本質的な説明は事実上2行だけで、その後の行(The result will be〜)が
和訳では完全に抜けているな
0744デフォルトの名無しさん
2010/11/14(日) 14:08:310745デフォルトの名無しさん
2010/11/14(日) 14:09:31よくある手抜き解説本にはありがちなことだね
0746デフォルトの名無しさん
2010/11/14(日) 14:10:48が、セマンティックスの説明は同じぐらい短い、つまり無いに等しい
0747デフォルトの名無しさん
2010/11/14(日) 14:34:10別に今は理解出来ているわけだし。
どういう順で評価されるのかとか、
途中評価された変数を評価に使えるのかが分からなかった。
lst=[[1,2],[3,4]]
[x for y in lst for x in y]
[x for x in y for y in lst]
が出来るのかとか、どちらが正しいのかとかね。
まあ後々振り返ると最初の式以外は素直にコンテキスト通りに考えれば良かったんだけどね。
そのあたりも初心者には自明では無いのよ。
0748デフォルトの名無しさん
2010/11/14(日) 14:53:15Python信者にとっては、Pythonに関するあらゆる批判も愚痴も、許してはならない存在なのです。
なぜなら、それがPython信者だからです。
今回の件も、数あるうちのひとつに過ぎません。
0749デフォルトの名無しさん
2010/11/14(日) 14:55:55http://www.python.jp/doc/2.5/ref/lists.html
0750デフォルトの名無しさん
2010/11/14(日) 15:03:29自明な情報のために仕様書を読む初心者がいるなら感心するけど
自分でコードを書いて試すなりネットで調べるなりネットで質問するなり本買うなりすればいいんじゃないかな
>>727みたいに初めから具体的な指摘をするなら良いけど
やる気なさすぎて吹いた、とか言われても叩くしかないよね
0751デフォルトの名無しさん
2010/11/14(日) 15:06:12リファレンスについては「分かりにくい」だけだよ。
最初呼び間違ったから混乱したようならすまんな。
0752デフォルトの名無しさん
2010/11/14(日) 15:08:20別に混乱してない。チュートリアルはレファレンスじゃない。
0753デフォルトの名無しさん
2010/11/14(日) 15:10:04それはtutorialよりややマシだけど詳細で十分な
あるいは分かりやすい説明とはいえないよな
たとえばシンタックス的にlist_for の "for"の次の要素は
単にexpression_listとなっているから
for (lambda x: x) in xs 〜
for 1 in xs 〜
のようなものが「シンタックス的には」有効であることが見て取れるが、
実際には、セマンティックス上は、assign可能な名前のリストでなければならない
そしてそんなことはどこにも書いていない
0754732
2010/11/14(日) 15:21:03>>750 煽り入ってたのは認める。
別にホントにPythonに不満あるなら本スレ行くなり使うの止めたりするよ。
>>751 チュートリアルだけじゃ理解出来ないのなら何のためのチュートリアル?
0755デフォルトの名無しさん
2010/11/14(日) 15:22:22for (lambda x: x) in xs 〜やfor 1 in xs 〜が不可だって説明しないことは不十分ってことになるのか?
0756デフォルトの名無しさん
2010/11/14(日) 15:25:03少なくともこんなレベルで標準化とかは無理
0757デフォルトの名無しさん
2010/11/14(日) 15:26:260758デフォルトの名無しさん
2010/11/14(日) 15:31:06リスト内包のサンプルコード見れば雰囲気つかめると思うけどなあ
というかチュートリアルの時点で理解できないなんてのはよくあること
#include <stdio.h> 何かを考えてみればわかる
リスト内包は必須の機能じゃないし、誰もが理解できるまで説明してたら
叙述のバランスが悪いって逆に文句ついちゃうよ
0759デフォルトの名無しさん
2010/11/14(日) 15:31:25になってるな。
0760デフォルトの名無しさん
2010/11/14(日) 15:36:13ああ、原文の、少なくとも2.7の奴だとそうなってるみたいだな
じゃあ、シンタックスを変えたのか、例によって和訳のバグか?
0761デフォルトの名無しさん
2010/11/14(日) 15:41:39不十分だろう
for x, y in xs
とかでタプルのアンパックとかもやるわけだし
そういう類の説明を一切無しで済ませるのなら、statementのほうのforだのifだのを
使った〜のコードと等価であるぐらいは説明すべきじゃないのか
0762732
2010/11/14(日) 15:42:30>各々の for や if 節を左から右の順にネストしたブロックとみなして実行し、
>ネストの最内ブロックに到達する度に式を評価した値となります。
少なくともこのぐらいはチュートリアルにも書いておいてくれてもいいんじゃないの?
上の文がそんなに冗長とは思えないのだが。
むしろ必須に思う。
0763デフォルトの名無しさん
2010/11/14(日) 15:45:32ありがとう。俺は2.5使ってるからサ
0764methane
2010/11/14(日) 18:59:49http://pythonjp.sourceforge.jp/dev/tutorial/datastructures.html#id7
これを読んでも判りにくかった?それとも2.5のほうのチュートリアル読んでた?
2.6はチュートリアルとライブラリリファレンスがもうそろそろ完了しそうだから、
そしたらそこだけでも公開するつもり。
0765methane
2010/11/14(日) 19:14:44批判をするのも自由。その批判を批判するのも自由。
Twitterに書いたただの感想を2chにコピペで晒すのは著作権法違反だし、
しかも書いた内容ではなく人格攻撃するのは行き過ぎると名誉毀損になるけどね。
0766methane
2010/11/14(日) 19:22:51>>764の続きだけど、一応2.6のドキュメントにも2.5から変更された部分や追加された部分には
注意書きがあるから、2.6のドキュメントを読んだほうがいいかもしれない。
>>764に書いたURLは翻訳中で、翻訳状況は http://sourceforge.jp/projects/pythonjp/wiki/StatusTable26
で見れます。ただし、翻訳状況が完了になってから上記URLの更新まではタイムラグがあります。
>>743 に指摘していただいた抜けの部分も修正しておきます。
0767デフォルトの名無しさん
2010/11/14(日) 19:24:19ここで出てるのって、ネストじゃなくて複数のforがある場合じゃないの?
あと、やっぱり内包表記の説明は「例見りゃ分かるだろ」って感じだなぁ。
0768デフォルトの名無しさん
2010/11/14(日) 19:35:36[[row[i] for row in mat] for i in [0, 1, 2]]
どう見てもネストだと思うが……
つまり、「例見ても分かってない」わけだなw
0769デフォルトの名無しさん
2010/11/14(日) 19:42:24集合論での内包表記を分かっていれば
感覚的に扱いやすいのかなあ
0770768
2010/11/14(日) 19:45:11>>767の「ここ」は、上の議論という意味で、
>>732が疑問に思っていたことはforが連続するケースの評価順だから
ネストのケースの説明はとくに解決策にはならないって意味か
俺が日本語を分かってなかっただけのようだw
0771デフォルトの名無しさん
2010/11/14(日) 19:45:53なんかいわゆるPerlの汚さに通じそうな暗号文だなとか言ったら全然違うって言われるんだろうな
理屈がわかれば読める、わからなきゃ読めないって共通項は感じるんだが
0772デフォルトの名無しさん
2010/11/14(日) 19:52:43pythonのfor文だけ知ってたら分かる
for(i=0;i<10;i++)みたいなのしか知らないと分からない
0773デフォルトの名無しさん
2010/11/14(日) 19:59:55ActionScript的な for 〜 in ... は知っていても、
>>768ではさらにその左に何かあるように見えるが、
これはPythonのfor文の基本なの?
0774デフォルトの名無しさん
2010/11/14(日) 20:01:29みたいなのは、
result = []
for x in xs:
result.append(f(x))
と書かずに済ますための便法だと思えばいい
ループの中でリストにpushする式を先頭に書くだけで、後は同じように読める
>>768はネストしてるからちょっと複雑だけど同じ原理
ループで書けばこうなる
xs = []
for i in [0, 1, 2]:
ys = []
for row in mat:
ys.append(row[i])
xs.append(ys)
0775デフォルトの名無しさん
2010/11/14(日) 20:21:40(loop for i from 1 to 10 if (evenp i) collect (* i i))
とか書くんだが、Paul Grahamはloopマクロ嫌いらしいな
0776デフォルトの名無しさん
2010/11/14(日) 20:23:20>リストの内包表記を怖がらずにネストするためには、右から左へ読んでください。
0777デフォルトの名無しさん
2010/11/14(日) 20:31:19Prelude> [(x,y) | x <- [1,2,3], y <- [4,5,6]]
[(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]
これと同じことをPythonのリスト内包でやるとどんな感じ?
0778デフォルトの名無しさん
2010/11/14(日) 20:34:39自信ないけど
print [(x,y) for x in [1,2,3] for y in [4,5,6]]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
0779デフォルトの名無しさん
2010/11/14(日) 20:39:12サンクス
Pythonでも右側の方が頻繁に値が変わるのは一緒なのね
0780デフォルトの名無しさん
2010/11/14(日) 21:21:07print [[(i, x, y) for x in [1,2] for y in [3,4]] for i in [0,1]]
[[(0, 1, 3), (0, 1, 4), (0, 2, 3), (0, 2, 4)], [(1, 1, 3), (1, 1, 4), (1, 2, 3), (1, 2, 4)]]
0781デフォルトの名無しさん
2010/11/14(日) 21:37:100782デフォルトの名無しさん
2010/11/14(日) 21:43:12実際にインタプリタ起動して試行錯誤してみて、自分の理解と実際の動作が同じか確認しないと。
0783デフォルトの名無しさん
2010/11/14(日) 21:43:22... return [()] if not lists else \
... sum(map(lambda x: map(lambda xs: (x,) + xs, product(*lists[1:])),
... lists[0]), [])
...
>>> product([1,2,3],"AB","xy")
[(1, 'A', 'x'), (1, 'A', 'y'), (1, 'B', 'x'), (1, 'B', 'y'), (2, 'A', 'x'), (2, 'A', 'y'), (2, 'B', 'x'), (2, 'B', 'y'), (3, 'A', 'x'), (3, 'A', 'y'), (3, 'B', 'x'), (3, 'B', 'y')]
こう書くと無駄に暗号的な上に、いかにも効率が悪い
0784デフォルトの名無しさん
2010/11/14(日) 21:43:43Perlならたぶんmapなんだろうが、あんまり簡潔に書ける気がしない
確かに強力なリスト表記だとは思う
ってか処理混ざってるからリスト表記、っていうのには正直抵抗はあるけどな
0785デフォルトの名無しさん
2010/11/14(日) 21:49:58多重ループで使われるのが独立変数とは限らないので、常にproductというわけでもない
リスト内包を使わず多重ループを書く場合、
Schemeのappend-map、ScalaのflatMap、.NETのSelectManyあたりで
ネストする読みにくいコードになる
Pythonにはこれらのものが無いので、上のコードでは
sum(map(f, xs), [])でflatmap(f, xs)の代用とした
0786デフォルトの名無しさん
2010/11/14(日) 21:56:48そこまでいくとあんまり楽しくなくなるが、よければ
そのPyton用語っぽいproductについて軽ーくkwsk
0787デフォルトの名無しさん
2010/11/14(日) 21:59:16意味は数学のデカルト積で、欲しいのは>>777のような結果
0788デフォルトの名無しさん
2010/11/14(日) 22:03:370789デフォルトの名無しさん
2010/11/14(日) 22:05:21Python使いで、単純な内包表記ならすぐ理解できるが、>>768はぱっと見じゃ分からんかった。
内包表記はPythonの文法の中でも特に、黒魔術化しやすい。
とくに中に副作用を伴う命令入れたときはカオスになりやすい。
0790デフォルトの名無しさん
2010/11/14(日) 22:13:102.6からはあるよ。
itertools.product(*iterables[, repeat])
ttp://docs.python.org/library/itertools.html#itertools.product
コード例もそこに載ってて、
def product(*args, **kwds):
# product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
# product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
pools = map(tuple, args) * kwds.get('repeat', 1)
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)
product([1,2,3],"AB","xy")
が、>>783と全く同じ結果を返す。
0791デフォルトの名無しさん
2010/11/14(日) 22:14:47おー、知らんかった、サンクス
C#で書くとこう、やっぱりなんかキメぇ
var xs = from x in new []{ 1, 2, 3 }
from y in new []{ 4, 5, 6 }
select new { x, y };
var ys = new []{ 1, 2, 3 }.SelectMany(x =>
new []{ 4, 5, 6 }.Select(y =>
new { x, y }));
0792デフォルトの名無しさん
2010/11/14(日) 22:35:55>批判をするのも自由。その批判を批判するのも自由。
でもPythonをキモいと言うやつは批判するとか何様なのこの人。
0793デフォルトの名無しさん
2010/11/14(日) 23:11:55for版
for {
x <- 1 to 3
y <- 4 to 6
} yield (x, y)
flatMap版
(1 to 3).flatMap(x => (4 to 6).map(y => (x, y)))
0794デフォルトの名無しさん
2010/11/14(日) 23:18:24Debug実行をしてもブラウザが起動しないのですが。
0795デフォルトの名無しさん
2010/11/14(日) 23:19:580796デフォルトの名無しさん
2010/11/14(日) 23:27:20self.response.out.write('Hello, webapp World!')
この selef.response.out.write('<html></html>')
という風にHTMLコードを直接埋め込んで行く必要があるのでしょうか?
0797Perl忍者 ◆M5ZWRnXOj6
2010/11/14(日) 23:41:570798デフォルトの名無しさん
2010/11/14(日) 23:57:10GAEスレで氏ね
Google AppEngine 3アプ目
http://hibari.2ch.net/test/read.cgi/php/1267057923/
Google App Engine 3アプ目
http://hibari.2ch.net/test/read.cgi/php/1267094290/
0799methane
2010/11/15(月) 00:08:46チュートリアルでも気をつけろって書いてあるし、実際に内包表記でforを複数回使うのは
>>778 ぐらいシンプルな場合だけで、複雑になりそうだったら素直にループ使う方が良いね。
>>792
批判を批判するのも自由と言ってるんだから、「でも、」って繋げるのおかしくない?
そもそも >>709 は批判じゃなくてアドバイス程度のつもりで言ってたんだけど、そんなに気に障った?
それとも単に俺を叩きたくて叩きたくてしょうが無いの?
0800デフォルトの名無しさん
2010/11/15(月) 01:42:44集合知プログラミング: Toby Segaran, 當山 仁健, 鴨澤 眞夫: 本
http://www.amazon.co.jp/dp/4873113644
0801デフォルトの名無しさん
2010/11/15(月) 01:47:140802デフォルトの名無しさん
2010/11/15(月) 06:41:59ありそうだし笑える
0803デフォルトの名無しさん
2010/11/15(月) 09:39:57そりゃLLと比較してくれるなんて光栄だけどさ
0804デフォルトの名無しさん
2010/11/15(月) 18:21:06察しろと
0805デフォルトの名無しさん
2010/11/15(月) 19:09:33twitterの規約をよく読まずに了承したのか?
拘束力があるのは原典である英語版だけらしいから、最初の Basic Terms の部分だけでも自分で翻訳してみると良い。
不特定多数に読まれることを考慮した上で書けって感じのことが規約に書かれてるぞ。
読む人を制限したけりゃアカウント設定で制限しなさいとも書かれてるみたいだな。
そんなワケで、公開されてる以上2chで取り扱うことは何ら問題ない。
コピペの是非は日本でなくカリフォルニア州の判断次第だしな。
0806デフォルトの名無しさん
2010/11/15(月) 19:18:35そりゃツイッターは発言力がある人間がやってるってのが大きいんだろうし
コミュニケーションツールといより、有名人とそれを監視する取り巻きみたいな構図になってるが
言いたいことがあって、本人に言えば済む話はそうしてくれるかな
最近ニュー速のソースがツイッターとかよくあるけど、
いくら有名人だからっていちいちニュースにすることかよって思ってた
0807デフォルトの名無しさん
2010/11/15(月) 19:20:30匿名掲示板なんだから匿名で参加してりゃいいのになw
0808デフォルトの名無しさん
2010/11/15(月) 20:53:350809デフォルトの名無しさん
2010/11/15(月) 23:20:00http://hibari.2ch.net/test/read.cgi/unix/1268282846/272-273
272 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:42:30 ID: Be:
マウントオプションとは別に、CRLFをLFに変換するツールはないでしょうか?
美乳セーラー女子高生とSEX顔射フィニッシュ
というコマンドやnkfでも一応可能なのですが
専用のツールはなかったかと思いまして
273 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:43:21 ID: Be:
>>272
コピペミスった、、、、、
見なかったことにしてください
コマンドは、
cat crlf.txt | tr -d '\r' > lf.txt
です。
0810デフォルトの名無しさん
2010/11/15(月) 23:26:22公開性と著作権を混同するな。
0811デフォルトの名無しさん
2010/11/16(火) 00:22:48正確には、警察に著作権者が申告して、裁判で違反者が有罪になるまでは罪じゃないはず。
法律的にはだけど。
0812methane
2010/11/16(火) 00:34:03>>805の言うとおり、英語の規約読んだら、Twitterの外部のサイトで公開されることを認めろっていう
部分があった。実際Togetterみたいなサービスあるし、俺の方が間違い。
コテハン使ってると>>709みたいな普通の書き込みにもイチイチ突っ込む人がいるけど、
コテハン使わないと痛いPython信者的発言(アンチPythonの自演かもしれないけど)にイチイチ
俺だろうって認定してくるヤツいるし、、、まぁ仕方ないか。
0814デフォルトの名無しさん
2010/11/16(火) 03:27:490815デフォルトの名無しさん
2010/11/16(火) 10:25:252chでコテハンやるということ自体明確な証なのに
0816デフォルトの名無しさん
2010/11/16(火) 12:49:09何の証か気になる。
0817methane
2010/11/16(火) 23:49:52http://pythonjp.sourceforge.jp/dev/tutorial/datastructures.html#id6
>>732, >>743 ありがとう。
0818デフォルトの名無しさん
2010/11/16(火) 23:55:37(self
(self
(self
(self
ばーーーーーーーーーーーーーーーーーーーーーーーーーーか
0819デフォルトの名無しさん
2010/11/17(水) 01:31:50end
end
って見づらいよねー
0820デフォルトの名無しさん
2010/11/17(水) 01:43:380821デフォルトの名無しさん
2010/11/17(水) 02:26:360822デフォルトの名無しさん
2010/11/17(水) 05:54:44お前ら小学生かw
0823methane
2010/11/17(水) 11:15:380825デフォルトの名無しさん
2010/11/17(水) 11:46:420826デフォルトの名無しさん
2010/11/17(水) 11:56:11ライブラリという問題があるか
0827デフォルトの名無しさん
2010/11/17(水) 12:13:58まあ、いろんな言語のアンチが仲良く集ってるという意味じゃ間違ってないかも
0828デフォルトの名無しさん
2010/11/17(水) 12:20:33違う
自分の利用してるスレに書かれたレスが、
返事をするに値するものかどうかをこのスレの最新レスを見て判断する
たいてい同じような言語の同じようなレスが書いてあるから、それはスルーする
0829デフォルトの名無しさん
2010/11/17(水) 12:49:400830デフォルトの名無しさん
2010/11/17(水) 15:08:33マルチがマナー違反とされるのは
類似の話題のスレなら住人もある程度被るワケで
そこで全く同じレスを見つけて不快になるからであって
マルチを見つけるために似たようなスレを巡るのではない
0831デフォルトの名無しさん
2010/11/17(水) 15:16:44言わせんな恥ずかしい
0832デフォルトの名無しさん
2010/11/17(水) 15:19:40お前この板のマルチポストの問題何もわかってないんだな
0833デフォルトの名無しさん
2010/11/17(水) 15:24:47「第三者によって勝手にマルチポストにされてる&マルチするなと元スレで封じ込め食らってる」
だと思うの
というかみんな経験くらいあるもんだと思ってた
0834デフォルトの名無しさん
2010/11/17(水) 15:34:58出たらいいのに
0835デフォルトの名無しさん
2010/11/17(水) 15:36:20Scala + Play! Framework で、RailsライクなScailsを作るそうですよ。
0836デフォルトの名無しさん
2010/11/17(水) 15:36:22PHPよく落ちるよ
Apacheが再起動してくれてるだけ
0837デフォルトの名無しさん
2010/11/17(水) 15:37:430838デフォルトの名無しさん
2010/11/17(水) 15:38:24Rubyで2回ほど経験がある
あれ同じ人だよね
質問するのはスレを初めて利用する人だけだからバレないとでも思ってたんだろうか
>>835
名前だけは超かっこいい
0839デフォルトの名無しさん
2010/11/17(水) 15:39:18Python で Pails 作ろうとした漏れがいます
0840デフォルトの名無しさん
2010/11/17(水) 16:30:03かっこいいね
0841デフォルトの名無しさん
2010/11/17(水) 16:49:22いつ見ても発展途上な感じがする
perlの方が環境が整理されてて、業務で使えそうな気がする
ということでせっかくrubyを始めたけどperlに変更(笑)
0842デフォルトの名無しさん
2010/11/17(水) 17:52:410843デフォルトの名無しさん
2010/11/17(水) 18:41:35Issues - martinemde/learn-ruby-the-hard-way - GitHub
https://github.com/martinemde/learn-ruby-the-hard-way/issues/1
Shedding Bikes: Programming Culture And Philosophy
http://sheddingbikes.com/posts/1285754959.html
Zedがまたやっている:「自分の本を書け」 - karasuyamatenguの日記
http://d.hatena.ne.jp/karasuyamatengu/20101107/1289082916
0844デフォルトの名無しさん
2010/11/17(水) 19:32:52堅実なアプローチで
ところでこのスレと>>843の共通点はどのあたりに
0845デフォルトの名無しさん
2010/11/17(水) 21:01:56なぜ標準の環境を提供しようとしないのかわからない
0846デフォルトの名無しさん
2010/11/17(水) 21:42:500847デフォルトの名無しさん
2010/11/17(水) 22:36:440848デフォルトの名無しさん
2010/11/17(水) 22:46:040849デフォルトの名無しさん
2010/11/17(水) 22:48:35RubyをWindowsにインストールして勉強したいのですが
Windows用のRubyのパッケージがいっぱいあって
どれをダウンロードしたら良いのか分かりません
それぞれ特徴とかメリットとかデメリットとか
速度の違いとかあるのでしょうか?
0850デフォルトの名無しさん
2010/11/17(水) 23:10:400851デフォルトの名無しさん
2010/11/17(水) 23:31:08ZedはRubyのmongrelつくってるくらいだけどをRubyをdisって炎上した経緯がありましてですね
0852デフォルトの名無しさん
2010/11/17(水) 23:33:43Zedのrubyの代表作mongrel=Webサーバー
Ruby標準のWebサーバーが遅いので、Railsの開発時に代わりに使ったりする
今でこそいろいろRailsで使えるWebサーバーがあったけど、
ちょっと前は本番でも使われてた。cookpadは今でも使ってるかもな。
0853デフォルトの名無しさん
2010/11/17(水) 23:51:27それは知ってるけど、このスレとはいまだに共通点が(略
0854デフォルトの名無しさん
2010/11/18(木) 00:00:40http://coreblog.org/ats/ten-reasons-why-analyzing-text-with-the-nltp-should-be-a-prohibited-book
0855Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 00:28:400856Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 00:29:530857Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 00:32:03def initialize # オーバーライド
@word = "がおー"
end
end
animal = Animal.new # インスタンス生成
monkey = Monkey.new
lion = Lion.new
animal.speak(2) # 多態性の例
monkey.speak
lion.speak(3)
$ ruby animal.rb
ほげほげ
うっきー
がおーがおーがおー
0858Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 00:36:45RUBYつかうのですか
ふっ(笑)
0859デフォルトの名無しさん
2010/11/18(木) 02:17:16自然言語処理は素人なんだが
『言語処理のための機械学習入門』はすばらしかった
0860デフォルトの名無しさん
2010/11/18(木) 03:37:400861デフォルトの名無しさん
2010/11/18(木) 03:56:080862デフォルトの名無しさん
2010/11/18(木) 04:32:480863デフォルトの名無しさん
2010/11/18(木) 05:00:23> 862 名前:デフォルトの名無しさん [sage]: 2010/11/18(木) 04:32:48
それも、sageで、こんなこと
> 今時perlとかって、恥ずかしくないの?
書き込みにくるよりは、ましだとおもうよ?
0864デフォルトの名無しさん
2010/11/18(木) 06:50:46Perlの生き様には恥ずかしいどころか畏敬の念さえ覚える
ネストしたデータ構造がもう少し簡単に扱えれば今でもPerlでいいぐらいだ
0865デフォルトの名無しさん
2010/11/18(木) 07:05:46いちいち気にしながらアクセスする仕様は
複雑なデータ構造を扱うにはやや面倒いね
しかも違う方式で扱った時にもちゃんと意味があったりして
一見まともな値が返ってくるのが困り者
アクセスの仕方を間違えてても区別がつきづらい
0866デフォルトの名無しさん
2010/11/18(木) 07:15:26なんなのあれ。あれのせいでどんだけプログラムがわかりづらくなっていることか。
0867デフォルトの名無しさん
2010/11/18(木) 07:25:270868デフォルトの名無しさん
2010/11/18(木) 07:33:42最近のPerl事情詳しくないのでkwsk
0869デフォルトの名無しさん
2010/11/18(木) 08:46:17あまり取り上げられないので、初心者の壁になってるように思う。
0870デフォルトの名無しさん
2010/11/18(木) 09:21:480871デフォルトの名無しさん
2010/11/18(木) 10:07:20レス番付けないと、誰へのレスか分からんぞ。
0872デフォルトの名無しさん
2010/11/18(木) 11:17:36リストリファレンスを受け取ってるつもりで、実はリストそのものが返ってきていたってミスはあるけど、型指定出来ないスクリプト言語ならどれだってありがちなミスでしょう。
0873デフォルトの名無しさん
2010/11/18(木) 12:38:00# 配列はスカラコンテキストで評価されると要素数を、
# リストコンテキストで評価されると内容を返す
# printの引数はリストコンテキストで評価される
my @array = (1, 2, 3);
print @array, "\n"; # (1, 2, 3) (内容)
print scalar @array, "\n"; # 3 (要素数)
print 0 + @array, "\n"; # 3 (要素数)
# コンテキストで正規表現のマッチング動作が変わる
$str =~ m/(\w+)/g; # 1つマッチしたところで止まる
my @m = $str =~ m/(\w+)/g; # $strを全部舐める
0874デフォルトの名無しさん
2010/11/18(木) 12:53:27># 配列はスカラコンテキストで評価されると要素数を返す
これってほんとクソ仕様だよな。count(@array)で要素数を返す、とかにしてほしかった。
0875デフォルトの名無しさん
2010/11/18(木) 14:04:59lvalueのコンテキストなどを意識する必要がある
一方Javaは、配列や関数を参照するにはNullableな変数を経由する必要がある
(staticメソッドは除く)
0876デフォルトの名無しさん
2010/11/18(木) 14:22:350877デフォルトの名無しさん
2010/11/18(木) 15:04:11アンパックしないといけない時点で俺は嫌だな
Perlの人は、いちいちshiftとか書くの面倒くさくないんだろうか?
0878デフォルトの名無しさん
2010/11/18(木) 15:04:45モダンPerlのコードは、袋小路に入った駄目さを感じる。
0879デフォルトの名無しさん
2010/11/18(木) 15:27:23それに加えて引数のデフォルト値が指定できないとか、いまどきそんなスクリプト言語はPerlとJSくらいじゃね?
0880Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 16:47:02ニートなので
ふっ(笑)
0881デフォルトの名無しさん
2010/11/18(木) 21:40:290882デフォルトの名無しさん
2010/11/18(木) 21:44:030883デフォルトの名無しさん
2010/11/18(木) 21:55:41JavaやC#にもない理由は、言われて
みれば至極ごもっとも、C++にある
ほうが間違いだと思えるんだけど。
オーバーライドやオーバーロードで
混乱する原因だぞ。
0884デフォルトの名無しさん
2010/11/18(木) 21:58:26C#にデフォルト引数あるぞ
0885Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 22:00:16Perl忍者というコテハンの戦闘力上昇をさせる
まずそのための段階
1、発言回数を増やし 知名度をあげる
2、ブログの更新回数を増やし固定ユーザーを獲得
1についてですが
一人だと書き込み(発言)が大変なのでPerlのちからを借りるわけでもなく
トリップ共有ということで 複数人でいろいろなスレにかきこみます
それで色々なスレに書き込むことで知名度があがります
2、これはネトゲなど2chネタなどまとめサイトをかいて 2ch意外のやつらからもユーザーを獲得するこころみです
↓
とりあえずネームバリュー向上のために最善をつくす
知名度をあげてアフェリの成功率をあげる
そして2ch専用ギルドを作る
2chを統一する 全てのネトゲプレイ代行+荒らし+釣り+アプリ作成+オフ会準備などを請け負う最強の団体へと進化する
0886デフォルトの名無しさん
2010/11/18(木) 22:06:02>>873
># コンテキストで正規表現のマッチング動作が変わる
でも、その挙動が影響するのはレア。
# これは、ハマるときにはハマるんで、
# さすがに擁護しづらいな。orz
>>874
>。count(@array)で要素数を返す、とかにしてほしかった。
つ scalar(@array)
>>877
>Perlはごくふつうの名前付き仮引数がなくて、関数の引数をいちいち手動で
>アンパックしないといけない
つ ハッシュ
効率を気にするなら、そのリファレンス。
0887Perl忍者 ◆M5ZWRnXOj6
2010/11/18(木) 22:12:510889デフォルトの名無しさん
2010/11/18(木) 22:19:38> アンパック
sub test
{
my %args = (
'a' => 0,
'b' => 0,
@_);
printf "a: %s, ", $args{'a'};
printf "b: %s\n", $args{'b'};
}
test('a'=>11, 'b'=>12); #=> a: 11, b: 12
こんな感じだっけ。
まあたしかに、書き方が違うだけといえばそれだけって・・・ちょっと苦しいか
0890デフォルトの名無しさん
2010/11/18(木) 22:24:16型で判断されるからデフォルト値は関係ない
0891デフォルトの名無しさん
2010/11/18(木) 22:54:18え?なんでハッシュで普通の名前付き仮引数の代わりだと言えるのか分からない
それでキーワード引数っぽいことができるのは分かるけれども
function add(x, y) { return x + y }
add(1, 2)
のようなごく普通のポジショナルな引数が欲しい一般的なケースにおいて、
add('lhs'=>1, 'rhs'=>2)
とか呼ばなければいけないとしたら面倒なだけだろう
0892デフォルトの名無しさん
2010/11/18(木) 22:57:580893デフォルトの名無しさん
2010/11/18(木) 23:08:58ただのごく普通の仮引数リストのことだと思って欲しい
勿論可変長引数やキーワード引数もあったほうが便利だけど、
どちらかといえばそれらが使われるのはレアなのに
Perlはそれらに適した方法「しか」用意していないように見える
それがなんかおかしいし、不便だと思う
0894デフォルトの名無しさん
2010/11/18(木) 23:20:51> ごく普通の仮引数リスト
こんな感じ? まあ、面倒なのは確かかもだけど
sub test
{
my ($a, $b) = @_;
$a |= 0; $b |= 0;
printf "a: %s, ", $a;
printf "b: %s\n", $b;
}
test(); #=> a: 0, b: 0
test(1); #=> a: 1, b: 0
test(11, 12); #=> a: 11, b: 12
0895デフォルトの名無しさん
2010/11/18(木) 23:46:58リストや辞書/ハッシュで受けて内部で展開してるわけだし
特にPerlが遅れをとってるってことはなさそうな気が
sub test { みたいにシグネチャの情報量が少ないのが
他の言語を使ってる人から見て違和感あるだけじゃないだろうか
0896デフォルトの名無しさん
2010/11/18(木) 23:53:26def f(n) {
と
sub f { my $n = shift;
じゃ冗長さも読みやすさも全然違うでしょ
なにが遅れを取ってないんだか分からない
0897デフォルトの名無しさん
2010/11/18(木) 23:56:160898デフォルトの名無しさん
2010/11/19(金) 00:04:50そこはほらLisperが括弧を気にしないのと一緒だよ
もっと言えば日本人が漢字をすらすら読めるのと一緒
自分でも言ってて辛くなってきた
0899デフォルトの名無しさん
2010/11/19(金) 00:06:340900デフォルトの名無しさん
2010/11/19(金) 00:17:02>>。count(@array)で要素数を返す、とかにしてほしかった。
>つ scalar(@array)
俺はその人ではないが、その人に同感なので書いとく
問題はそこじゃなくて
「スカラコンテキストでリストを書くとエラー」にして欲しかったんだよ。
要素数は関数で得るようにして、ね。foreachあるから要素数は本当に要素数が必要な時にしか要らないんだしさ。
そうすりゃ、間違えたときに判りやすいだろ?
単純なリストだけ使ってるならあんまり問題にならんが
リストへのリファレンスやハッシュ、
そこに数値や文字列などの単純なスカラも入り組んだ
複雑なデータ構造になってくると結構混乱するんだよ。
0901デフォルトの名無しさん
2010/11/19(金) 00:19:17あとLLでは無いがCは覚えておいたほうがいい
0902デフォルトの名無しさん
2010/11/19(金) 00:20:090903デフォルトの名無しさん
2010/11/19(金) 00:41:340904デフォルトの名無しさん
2010/11/19(金) 00:44:51でも高度なリスト操作に高階関数にイテレータにGC…と今のLLの基準になるような機能を
真っ先に実現しちゃってた、LLへの功労者の1つではあると思う
未だにプログラミング言語そのものの研究ではしばしば使われる言語だしな
0905デフォルトの名無しさん
2010/11/19(金) 00:45:350906デフォルトの名無しさん
2010/11/19(金) 00:45:42Perl6は面白そうw
なんていうかプログラマが好みそうな言語
0907デフォルトの名無しさん
2010/11/19(金) 00:47:59Clojureでおk
0908デフォルトの名無しさん
2010/11/19(金) 00:51:55「簡単なことを簡単に書ける」という意味でプログラマの負担が「軽い」言語じゃ
ないような気がする
すぐに食えるインスタントラーメンみたいなのが豊富にないかわりに
メタ解みたいなのが用意されているというか
0909デフォルトの名無しさん
2010/11/19(金) 01:21:56まあねえ、全てを括弧でくくる仕様のお陰で優先順位とかは気にしなくて良いけど
お陰でプログラマが自らパーザを書いてるような状態だしw
あと計算式が素直に書けない(四則演算すらも+関数、-関数などを呼ぶように書くため)のもマイナスだろうね
0910デフォルトの名無しさん
2010/11/19(金) 01:27:49(+ 1 2 3)
とか
(mapcar #'+ '(1 2 3) '(4 5 6))
とか書ける利点もあるので、まあそんなに…
どっちかっつーと
a[i] = x
を
(setf (aref a i) x)
とか書くのがめんどうくさい
0911デフォルトの名無しさん
2010/11/19(金) 01:33:450912デフォルトの名無しさん
2010/11/19(金) 01:45:40いちいちprognが必要なのが地味にめんどい
この辺はS式の記法的な限界なのかなあ?
C系言語みたいに、区切りとしてシンボルにelseとかを置くようにすれば
真/偽両側に複文が許されて嬉しい気がするんだが、
シンボルに重大な意味を持たせるのはLisp的にはご法度なんだろうか?
(if cond
something
else
other)
0913デフォルトの名無しさん
2010/11/19(金) 01:51:25Perl6とFortran 2008って、どっちが普及するかな?
0914デフォルトの名無しさん
2010/11/19(金) 01:53:06改行とインデントつけてそれっぽくしてるけど、
(if cond something else other)
これってLispで受け入れられる構文なのか?本当によくわからんなLispってのは
0915デフォルトの名無しさん
2010/11/19(金) 01:54:41普及しなかったとこを見ると今のifとcondで十分だったのかな
0916デフォルトの名無しさん
2010/11/19(金) 01:55:46cond, when, unlessではだめなの?
>>913
Perl6はほとんど知らないのだけど、なんで$とか@が生き残ってるのかわからない
あれ要らないと思うんだけど……
0917デフォルトの名無しさん
2010/11/19(金) 02:00:05関数呼び出しは(関数名 引数 引数...)で、比較演算も全て関数なので…
実現したとしたら、実際にはこんな感じになるのかな
(if (< x 10)
(foo)
(bar x)
'else
(foo)
(bar (+ x 1)))
う〜ん、なんかLispっぽく無い気もするが、アリっちゃアリかも知れない
でもLisp系の(if)のtrue部って、長く書くこと少なくね?
自分が無意識的にそうしちゃってるのかも知れないが
0918デフォルトの名無しさん
2010/11/19(金) 02:06:280919デフォルトの名無しさん
2010/11/19(金) 02:09:24どうしてもcondで書きたくない理由があるの?
progn要るようなものはcondで書くのが普通だと思うけど
0920デフォルトの名無しさん
2010/11/19(金) 02:32:19俺は困ってないから知らねえよ、>>912に聞いてくれw
0922デフォルトの名無しさん
2010/11/19(金) 05:03:10>>。count(@array)で要素数を返す、とかにしてほしかった。
>つ scalar(@array)
もとの文章をちゃんと読め。
もともとは、>>873
># 配列はスカラコンテキストで評価されると要素数を返す
という仕様がわかりづらいから、>>874
> count(@array)で要素数を返す、とかにしてほしかった。
という流れなのに、
そこで「要素数を知りたいならscalar(@array)」と言い出すのは、何の解決にもなっていない。
配列をスカラコンテキストで評価したら要素数が返るという仕様がクソだ、という話に、scalar() を持ち出すのがいかにばかげてるか、わかる?
0923デフォルトの名無しさん
2010/11/19(金) 07:33:34もうちょっとバグに繋がるような例を持ってきて叩くべきじゃないか
また左辺がコンテキストを提供すれば右辺でわざわざ
countだのlengthだの使わずに済んで簡潔に書けるのは利点のようにも思える
0924デフォルトの名無しさん
2010/11/19(金) 09:51:430925デフォルトの名無しさん
2010/11/19(金) 09:59:57とにかく俺の言う事が気に入らないもんだから
何とかして俺のレスを無効化してやりたいのだが、
かといってどこにツッコミ所があるのか具体的に指摘出来ないし
俺と正対して論破出来る知識も自信も無い、
何より自分の無知を曝け出す結果となって
かえって自分が周囲の嘲笑の的となってしまうのが怖い。
そこで、とりあえず無言でレスアンカーだけを付けておく事で
「こいつイタイなw晒し上げw」と必死に周囲に印象付けようとする。
具体的指摘を伴わない無言レスアンカーなら
自分の勘違いだったところで自分はちっとも傷付かずに済むからな。
肝心のどう“イタイ”のかについては周囲にお任せ。
きっと読んだ人それぞれが頭の中で勝手に考えてくれるさ!!
俺には、無言レスアンカーからは
「ママ、こいつをやっつけてよ!」という悲痛な叫びが聞こえてくるね。
0926デフォルトの名無しさん
2010/11/19(金) 11:57:27webでもデスクトップでも仕事じゃろくに使われてないし求人もないよね
何に使うの?趣味?
0927デフォルトの名無しさん
2010/11/19(金) 12:13:54Perlのコンテキストがいい例。
0928デフォルトの名無しさん
2010/11/19(金) 13:09:56> 何に使うの?趣味?
まずは自分の脳内妄想に基づいて物事を考えるのをやめましょうw
0929デフォルトの名無しさん
2010/11/19(金) 13:17:09いや、気に入らないんじゃない、読めって意味で書いただけだ。
…あとな。全然痛い奴じゃ無かったのに、そのレスで痛い奴になっちゃってるぞ、悪いけど。
0930デフォルトの名無しさん
2010/11/19(金) 13:53:380931デフォルトの名無しさん
2010/11/19(金) 14:47:20漏れは>>923だけどこのレスまで書き込んでないよ >>929
>>900に触れるなら複雑なデータ構造の扱いで混乱しやすい原因は
Perlのスカラと非スカラを区別する変数モデルが
複雑なデータ構造を気軽に扱うのに向いていないことに加え
リファレンス/デリファレンスの理解しやすい文法がないからだろう
コンテキストそのものが悪かっていうと疑問だ
みたいに適当なことをを具体例も挙げずに言うのは失礼だから今まで黙ってた
0932デフォルトの名無しさん
2010/11/19(金) 20:39:08変数をダンプすればすぐわかるので、
あんまり問題にならない。
0933デフォルトの名無しさん
2010/11/19(金) 22:56:02リテラル変数とリファレンス変数に分けて、シジルも別にすれば良かった。
そうすれば、関数の戻り値の間違って受け取るとコンパイルエラーになるから、そういうミスはなくなる。
この辺はPerl6で解消されてるけど。
0934デフォルトの名無しさん
2010/11/19(金) 23:02:430935デフォルトの名無しさん
2010/11/19(金) 23:25:00文字列を格納するつもりで用意した変数に配列を代入するというのはあってはならない事だから。
ただ、スカラがリテラルもリファレンスも格納出来るのが問題。
0936デフォルトの名無しさん
2010/11/19(金) 23:32:53Perlが一時代を築いたのも、その当時として価値があったからこそだし
翻ってpythonやrubyに次代を牽引する力があるか
0937デフォルトの名無しさん
2010/11/19(金) 23:34:02> あってはならない事だから。
動的型でそういう発想って俺にはちょっと分からない
入れ子のリストで木を表現するのとか、ごく普通でない?
Perlはそういうことをするのにリファレンスを使わなければならない
そしてリファレンスを使って結局一緒くたにするのなら、
区別する意味が無いように俺には見える
0938デフォルトの名無しさん
2010/11/19(金) 23:41:050939デフォルトの名無しさん
2010/11/20(土) 00:18:43ダブルバインド
0940デフォルトの名無しさん
2010/11/20(土) 00:38:300941デフォルトの名無しさん
2010/11/20(土) 01:49:47意図してそうするのと、意図せずにそうしちゃうのは全然違う。
0942912
2010/11/20(土) 01:52:27arcのエッセイでポールグレアムさんが指摘していたと思うけれど、
condは括弧が多くて見づらくね?
あまり積極的に使いたくない
まあLispは日曜日にいじる程度なので、
もっと慣れれば違うのかもしれないが……
Lisperの人にとっては別に気にならない?
0943デフォルトの名無しさん
2010/11/20(土) 02:13:19よくわからないな
リファレンスと生配列があるお陰で
$a->[0]と$a[0]を使い分ける必要があったり、リテラルも2種類あったり、
LLなのに無駄に複雑で面倒なだけにしか見えないけど
木といわずとも、単なるリストのリストや2次元配列程度で
すでにリファレンスは必要だし、その時点で生配列の存在意義が疑わしいし
配列とハッシュ「だけ」型の区別がついたところで、正直何が有難いんだかも
よくわからないし
Javaですらクラスは全部参照型なのでずっと単純だよね
0944デフォルトの名無しさん
2010/11/20(土) 02:19:120945デフォルトの名無しさん
2010/11/20(土) 02:29:530946デフォルトの名無しさん
2010/11/20(土) 02:34:36この分野に関しては、使えるか使えないか、だけが問題な気がする
んで、Perl5は実際Lispよりは結構広く使えるんだぜと
0947デフォルトの名無しさん
2010/11/20(土) 02:57:14> 文字列を格納するつもりで用意した変数に配列を代入するというのは
> あってはならない事だから。
へのレスであって、別にリファレンスと生配列の話はしてない。
0948デフォルトの名無しさん
2010/11/20(土) 03:16:30>後発の言語にパクられてない仕様は、クソ仕様。
>Perlのコンテキストがいい例。
超同意。あと@varと$var[]と$var{}とか。evalがtry-catchのかわりとか。packageがclass代わりだとか。
0949デフォルトの名無しさん
2010/11/20(土) 08:31:370950デフォルトの名無しさん
2010/11/20(土) 08:49:53何がしたいの?
0951デフォルトの名無しさん
2010/11/20(土) 10:55:28windowsでしか動かないって時点で却下。
windowsしか使わない人にはいいと思う。
0952デフォルトの名無しさん
2010/11/20(土) 12:21:05シジルが必要な時点で俺の中ではLLのカテゴリに入らないなぁ
PowerShellはインタラクティブにぽちぽちやってみて
定型作業に落とし込めたらスクリプト化する
っていう使い方がしっくりくる
emacsキーバインドをサポートしてbash程度のヒストリサーチがあれば・・・
0953Perl忍者 ◆M5ZWRnXOj6
2010/11/20(土) 12:30:54マイトガイの影響うけたウソガキ
0954デフォルトの名無しさん
2010/11/20(土) 13:37:05Perl使いはこのスレを見てないのかと思っていたが、結構いるんだなw
PowerShellはまともに使ったこと無いな
ngenしても起動が遅すぎてシェルとして常用する気にならんし
.NETのREPLが欲しいだけならF#やIronなんとかでよくね?と思ってしまう
0955デフォルトの名無しさん
2010/11/20(土) 14:34:51Lispの場合「括弧の多さ」はそもそも言語そのものが根本的に抱えてるもので
condに限ったことじゃなく根本的なとこ、括弧が多くなるのはどんな書き方しても変わらない
ぶっちゃけLisperやってる時点で括弧の量には耐性ついてるだろ
>>954
シェルレベルでオブジェクトを扱えるのは凄いとは思うんだよな
ただちょっとそれが便利になる環境がまだ揃ってないと思う
0956Perl忍者
2010/11/20(土) 14:46:010957Perl忍者 ◆M5ZWRnXOj6
2010/11/20(土) 15:43:42なんの略?
意味教えてください
0958Perl忍者
2010/11/20(土) 15:45:080959Perl忍者 ◆M5ZWRnXOj6
2010/11/20(土) 15:46:20トリップ教えるからSkype着てください
0960Perl忍者 ◆M5ZWRnXOj6
2010/11/20(土) 15:48:330961Perl忍者 ◇M5ZWRnXOj6
2010/11/20(土) 15:53:480962Perl忍者 ◆M5ZWRnXOj6
2010/11/20(土) 15:58:00strpは
string parserの略ですか?
おしえてうだわい
0963Perl忍者 ◇M5ZWRnXOj6
2010/11/20(土) 18:20:550964Perl忍者 ◆M5ZWRnXOj6
2010/11/20(土) 19:01:070965デフォルトの名無しさん
2010/11/20(土) 22:02:24F#なんかのREPLだと,普通のシェルでやってるような
cdとかlsとか面倒じゃね?
ipythonがIronPythonでも使えるならいいけど
SSDに変えてから起動の遅さは気にならなくなったな
>>955
>ただちょっとそれが便利になる環境がまだ揃ってないと思う
確かにそんなかんじ
使う方にもパラダイムシフトが要求されるし
0966デフォルトの名無しさん
2010/11/20(土) 23:04:37シェルでやるようなことはそれこそシェルでやるので…
まあ両方出来るのがいいのだ、ということかもしらんけど
ipython, eshell, tclshとかも使わないから
自分の中にその手のニーズが無いだけかも
シェルもzshとかじゃなくてbashだし
bashも補完が全然無いと寂しいから使ってるだけで、機能的にはこんなに要らないって
感じ
0967デフォルトの名無しさん
2010/11/20(土) 23:43:02なるほど
確かにPowerShellをシェルとして使って便利だなぁって思うのは
レジストリやActiveDirectoryなんかをいじる時なので
あまり一般向けじゃないかも
0968デフォルトの名無しさん
2010/11/21(日) 00:46:24スクリプトですべてやった方が綺麗な気がするが
0969デフォルトの名無しさん
2010/11/21(日) 01:17:49詳しくないんだけど
シェルとちがって外部コマンドをパイプラインで接続したりリダイレクトすると
どうもいちいちString[]に変換してテキストとしてリスト処理するようなので、
ストリームを流れるデータがバイナリの場合や、テキストであっても
エンコーディングがPowerShellの想定外の場合にはあっさりデータが壊れるので
とても困ると思った
外部コマンド | 外部コマンド
とか
外部コマンド > ファイル
みたいな場合には、完全に無駄で余計なお世話でしかない処理だし……
なんか上手い方法はあるのかな、この辺もあってシェルの代用に使う気に
なれなかった
>>968
昔はシェルスクリプトで書けることはなるべくシェルスクリプトで書いていた
今はシェルスクリプトを書く機会は大分減ったな
もっぱらコマンドインタプリタとしての利用が大半
0970デフォルトの名無しさん
2010/11/21(日) 01:40:02確かに文字コードははまりどころだね
テキストファイルなら Out-File で文字コードを指定してあげることで回避できるけど
バイナリはどうするんだろうねぇ?
0971デフォルトの名無しさん
2010/11/21(日) 01:41:40> 弱点を認める
> PythonはPHPよりマイナーな言語であることや,Ploneで開発を行うためのラーニングカーブ(学習曲線)が急であるとことが指摘されました。開発側もこれらの課題を認識しているようです。
はい、PythonはPHPよりマイナー発言、きました。
きっとPython信者がディスってくれると思います。
0972デフォルトの名無しさん
2010/11/21(日) 02:05:20Web開発って意味では真実なんじゃない?>マイナー言語
0973デフォルトの名無しさん
2010/11/21(日) 03:40:270974デフォルトの名無しさん
2010/11/21(日) 06:52:560975デフォルトの名無しさん
2010/11/21(日) 11:40:06PHPよりマイナーであることがPython信者のプライドを傷つけてるんですねわかります
0976デフォルトの名無しさん
2010/11/21(日) 12:01:48というかむしろこれはPloneの連中は自分たちがイマイチ盛り上がらないのを
PythonのせいにしてやがるとかいってPython本スレでやればいいネタ
0977デフォルトの名無しさん
2010/11/21(日) 16:24:340978デフォルトの名無しさん
2010/11/21(日) 16:35:470979デフォルトの名無しさん
2010/11/21(日) 16:37:420980Perl忍者 ◆M5ZWRnXOj6
2010/11/21(日) 16:58:41LWPみたいなもんで何かどっかのページだからテキスト取得して編集したり
画像などバイナリあつかえんの?
使ったことないから教えて
0981デフォルトの名無しさん
2010/11/21(日) 17:07:25出来る
0982Perl忍者 ◆M5ZWRnXOj6
2010/11/21(日) 17:10:300983Perl忍者 ◆M5ZWRnXOj6
2010/11/21(日) 17:12:040984デフォルトの名無しさん
2010/11/21(日) 17:25:46ファイルというかHTTPレスポンスの取得は、(設定で可能にすれば)fopen一発だし
きちんとやりたいならcurl関数も組み込みっぽく使える(コンパイルもしくは拡張の設定次第)
画像処理なら組み込みのGDでもいいし、ImageMagickのPECLもあるし
というか、別にPHPだからってバイナリの扱いが特別とかそう言うことはない
お優しいことに、マニュアルに「バイナリセーフ」ってわざわざ書いてくれてる関数がたくさんある
Perlでごにょごにょやるよりは、よっぽどやりやすいのは間違いない、と思う
0985デフォルトの名無しさん
2010/11/21(日) 17:27:43受け入れられない日陰者ってことを表してるんですよね?
0986デフォルトの名無しさん
2010/11/21(日) 17:57:38http://hirata-create.lar.jp/
0987デフォルトの名無しさん
2010/11/21(日) 17:58:58まー、環境依存だけど。
$ file /bin/* /usr/bin/* | grep script | wc -l
555
ちなみに。
$ file /bin/* /usr/bin/* | grep perl | wc -l
121
$ file /bin/* /usr/bin/* | grep ruby | wc -l
0
$ file /bin/* /usr/bin/* | grep php | wc -l
0
$ file /bin/* /usr/bin/* | grep python | wc -l
81
0988デフォルトの名無しさん
2010/11/21(日) 18:04:11るびぃをいんすこすらしてないな
0989デフォルトの名無しさん
2010/11/21(日) 18:05:410990デフォルトの名無しさん
2010/11/21(日) 18:14:14同じ組織でスクリプト言語は統一するべき?適材適所でいい?
0991デフォルトの名無しさん
2010/11/21(日) 18:27:25その括りで敢えていうならもうCでいいんじゃね?
0992デフォルトの名無しさん
2010/11/21(日) 19:29:58こっ、これはオーパーツじゃ!
0993デフォルトの名無しさん
2010/11/21(日) 19:41:33A.PHPがお勧めですよ。
0994Perl忍者 ◆M5ZWRnXOj6
2010/11/21(日) 19:43:51ふーんできるんですか
暇があったらやってみるよ
0995Perl忍者 ◆M5ZWRnXOj6
2010/11/21(日) 19:58:340996Perl忍者 ◆M5ZWRnXOj6
2010/11/21(日) 19:59:440997デフォルトの名無しさん
2010/11/21(日) 20:15:340998デフォルトの名無しさん
2010/11/21(日) 20:53:410999デフォルトの名無しさん
2010/11/21(日) 20:54:221000デフォルトの名無しさん
2010/11/21(日) 20:55:0310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。