トップページ⇒tech
1001コメント361KB

【Perl,PHP】LLバトルロワイヤル13【Ruby,Python】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/10/25(月) 03:23:51
もういらないよね
01531332010/10/27(水) 19:10:36
はいはい、typoしてごめんなさい。
普段lambdaなんて使ってないから手が覚えてないのよ。
vimならコードハイライトしてくれるからそれでハマることはないんだけどね。
0154デフォルトの名無しさん2010/10/27(水) 19:14:37
ジエンしてるんだから言っても無駄だよ。
書いてる内容に全く変化が無いだろ?自分の知識の範疇から抜けだした解説が出来ないからね。w
0155デフォルトの名無しさん2010/10/27(水) 19:14:44
>>153
> 普段lambdaなんて使ってないから手が覚えてないのよ。
実際、そうなんだろうなと俺は思っていたぞ

lambdaをそもそも使わない人には
lambdaつかえねーだりーと言っても通じるわけはないんだ
俺はstructがあまりに手に馴染んでいるから
abstractをよくabstructと書いてしまうんだが
0156デフォルトの名無しさん2010/10/27(水) 19:19:52
labmdaはまだいいんだ
-er と -or の使い分けは死ねる

>>152
文だらけだけど
if (ch = "\n") ... ではまらなくなったり一行が短くなったりで
メリットは拾っていけば結構あるんじゃないか
式指向の言語は一行80文字に収まらなくて汚くなりがち
01571332010/10/27(水) 19:25:39
>>155
あと、vimだとlamまで入力したら C-p で補完してるな。
だから、lambdaって最後まで手で書くのって2ちゃんに書き込むときか、IPythonじゃない
インタラクティブシェルを使うときぐらい。

常に単語補完を使うと、typoで変数名間違えて悩むことが無い。
0158デフォルトの名無しさん2010/10/27(水) 19:43:27
>>156
-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:29
液パイのmeなんとかが混じってるな
0160デフォルトの名無しさん2010/10/27(水) 21:23:15
>>77
その例の場合、わざわざプロシージャ使わなくても
x > 0
でいいんじゃないの?という意見もあったりなかったり
0161デフォルトの名無しさん2010/10/27(水) 21:29:13
あ、
xs > 0
の間違い
0162デフォルトの名無しさん2010/10/27(水) 22:26:42
俺はPython使いではないけど、Schemeをちょっと前にかじって
そんときにlambdaのスペル間違えまくったな確かにw
あれは打たないと覚えないと思うわ
0163Perl忍者 ◆M5ZWRnXOj6 2010/10/27(水) 22:27:01
ねずみ野郎は死ねってw
0164デフォルトの名無しさん2010/10/27(水) 22:31:45
>>150
それついたのも、Pythonの複雑な式やだやだ精神からだろうなぁ。
もともと複雑だから付けなかったけど、andとorで強引にやる方法があるので、付けることになったんだと思う。
根拠はない。ただの推測。
0165デフォルトの名無しさん2010/10/27(水) 23:55:57
なんか普通の奴らの上を行けみたいな、
上いってるやつといってないやつの会話を見てるようだぞw
0166デフォルトの名無しさん2010/10/28(木) 00:16:02
上見て暮らすな下見て暮らせ
0167デフォルトの名無しさん2010/10/28(木) 01:05:44
上下逆転してるやつがいる
0168デフォルトの名無しさん2010/10/28(木) 01:10:20
Pythonは普通の奴らのための言語だからな。
0169デフォルトの名無しさん2010/10/28(木) 01:22:01
Lisperウゼーw
0170デフォルトの名無しさん2010/10/28(木) 01:45:25
関係代名詞とか多様すれば、英語の文章って1文にまとめられたりするのかなぁ?
それがわかりやすいとは思えないけど、できたらすごいよね。
0171デフォルトの名無しさん2010/10/28(木) 01:55:40
Python is a general-purpose high-level programming language whose design philosophy emphasizes code readability.
Python 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:35
頭悪そう
0173デフォルトの名無しさん2010/10/28(木) 02:33:00
>>171
英語の苦手な俺には下の方が読みやすい。
誰かの言ってた他言語ユーザーの読みやすさってこういうことなんだなww
0174デフォルトの名無しさん2010/10/28(木) 03:24:48
上のならともかく、これを無理に1文にしようと思ったらどうなることか。
0175デフォルトの名無しさん2010/10/28(木) 06:59:27
Pythonでlambdaに不自由を感じるのはしょっちゅうだけどなあ。
filenames = 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
つーかPythonのlambdaをこねくり回そうとしてるのPythonユーザーじゃないだろ
もう別の言語使えよ。使い分けも出来んのか
0177デフォルトの名無しさん2010/10/28(木) 08:01:15
>>176
> Pythonのlambdaをこねくり回そうとしてるのPythonユーザーじゃないだろ

複数のLL同士を比較するスレで、Pythonの欠点について話してるんだから
むしろ非Pythonユーザも入って来るのが当たり前だろ
Pythonista同士でやるなら本スレでやればいい話

そして別の言語使え、はちと暴論すぎる。
「名前付けろ」ぐらいならまだ解らんでもないんだが。
0178デフォルトの名無しさん2010/10/28(木) 08:11:44
ああ、Pythonのことを知らないんだね
0179デフォルトの名無しさん2010/10/28(木) 08:11:53
>>175
一次関数の名前をtmpじゃなくてorderとかにすれば軽減される話ではあるけど、
確かにその例ではRubyの方が頭から読み下せて好ましいね。
Pythonの場合だと、関数内で定義された関数を一旦読み飛ばして、どう使われて
いるかを把握してから内部関数を読まないといけない。

でも、関数の引数の中で関数を定義するのは、 reverse=True みたいにオプショナルな
別の引数もとる場合は読みにくくならない?sortならkey自体がオプショナルだからkeyを
最後に持っていけるけど、高階関数が第一引数として必須な場合もあるんだしさ。

「こう書きたい」っていう話は判るけど、Pythonとしては推奨する書き方を1つにしたくて、
数行の処理が必要で、引数の中に直接書いた方が読みやすいってのはレアケースだから
名前付き関数を推奨してる。
0180デフォルトの名無しさん2010/10/28(木) 08:12:54
結局、自分が信仰する言語のために良く知らない他宗教を攻撃してるだけ。アーメン
0181デフォルトの名無しさん2010/10/28(木) 08:19:46
ああ、Pythonに慣れるとendendendが邪魔邪魔邪魔!
0182デフォルトの名無しさん2010/10/28(木) 08:21:04
>>181
endの面倒さはselfの面倒さとほぼ等価なので、そこを叩き合っても無限ループだけどな。
0183デフォルトの名無しさん2010/10/28(木) 08:23:17
lambdaの話はPythonの開発者がちゃんと議論したうえで、by design で with を導入したんだから、
ここで否定しているやつらはPythonの設計者の意図に聞く耳持たない奴だけだろ。
Python信者が他の言語のユーザーの意見に聞く耳持たないって言う前に、自分がPythonの設計意図に
聞く耳を持てよ。
0184デフォルトの名無しさん2010/10/28(木) 08:28:05
>>175
filenames.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
>>183
むしろ、設計者がlambdaを導入した意図を知りたいな。

>>181
そうだね、endが多くなると邪魔だね。
…で、それが邪魔だとlambdaはどう良くなるんだ
0186デフォルトの名無しさん2010/10/28(木) 08:31:12
> lambdaの話はPythonの開発者がちゃんと議論したうえで、by design で with を導入したんだから、
> ここで否定しているやつらはPythonの設計者の意図に聞く耳持たない奴だけだろ。
> Python信者が他の言語のユーザーの意見に聞く耳持たないって言う前に、自分がPythonの設計意図に
> 聞く耳を持てよ。

聞く聞かないのレベルが全然違う話を混同すんなよw
0187デフォルトの名無しさん2010/10/28(木) 08:32:00
>>183
lambdaの場合は単に「式の中に文を書けない」って制限のデメリットだけどな。
式と文をごっちゃにしてたら問題なかった。
0188デフォルトの名無しさん2010/10/28(木) 08:33:26
>>184
さすがに、 x * 2 + 1 とか、超シンプルな式までいちいちdefでやらせるのは面倒すぎだろ。
0189デフォルトの名無しさん2010/10/28(木) 08:43:58
>>188
seqfunc(lambda x: x*2+1, seq)

def f(x):
return x * 2 + 1
seqfunc(f, seq)

…俺なら後者選ぶなあ。
それほど面倒さは変わらないし、後でちょっとだけ変更したい時に
lambdaじゃ無理になって書き直すほうが面倒だ。
0190methane2010/10/28(木) 08:44:25
Twitter上で反応の欲しかった個人的な感想を前スレで晒されて、しかも反対意見を
ちゃんと聴いてたのに聞く耳持たない奴認定されて、、、あんまりだ。
0191デフォルトの名無しさん2010/10/28(木) 08:46:49
>>190
不特定多数に反応を求めた時点で、そんなことは普通に想定できる話。
想定が甘かったな。
0192methane2010/10/28(木) 08:57:28
lambda は他のLLに比べてPythonの制限がきつい一つの例だと思う。
特にスクリプト言語としてPythonを見ている人にとっては >>175 みたいなちょっとした
ストレスの積み重ねがキツイだろうね。
0193デフォルトの名無しさん2010/10/28(木) 09:08:28
やっぱ廃止で良いと思うよPythonのlambda
0194デフォルトの名無しさん2010/10/28(木) 09:19:20
>>175
lambdaで書けるよ。それ。
読みにくくなるから書きたくないけど。

withはlambdaがないからじゃなくて、入る・出るの機能の抽象化としてできた。
lambdaがあると本来必要ないはずのものは多いけど、
例えばlambdaがあったらintいらないとは(効率の問題を無視したとしても)全く思わないなぁ。
0195デフォルトの名無しさん2010/10/28(木) 10:17:17
>>179
>でも、関数の引数の中で関数を定義するのは、 reverse=True みたいにオプショナルな
>別の引数もとる場合は読みにくくならない?
ならねーよ。読みにくくなるような設計にしてるのがまずいとは思わないのか。

> sortならkey自体がオプショナルだからkeyを
>最後に持っていけるけど、高階関数が第一引数として必須な場合もあるんだしさ。
そんな設計にしてるのがまずいってだけだろ。
・クロージャを第1引数にもってこなくてすむRubyやGroovy
・関数が最初の引数になっても違和感のない関数型言語
いいかげんPython信者はほかの言語けなすまえにそれらを勉強しろや。

0196デフォルトの名無しさん2010/10/28(木) 10:20:28
ていうか、どんな言語でもラムダ実装してりゃ、引数の順番くらいかえれるだろ。
f(x, y)
(lambda y, x: f(x, y))(y, x)
0197デフォルトの名無しさん2010/10/28(木) 10:24:00
>>194
foo(..) {|bar|...}
with foo(..) as bar: ...

withとブロック付きメソッドは可読性において変わらないし
コンテキストマネージャとブロック付きメソッドを実装する場合、その実装の
手間も変わらないどころか、中身はほとんど同じものになるのだから
チャーチ数のような極論を持ち出すのはどうかと思うが
0198デフォルトの名無しさん2010/10/28(木) 10:25:17
>>181
あれだな、旗色が悪くなると他の言語の別の欠点をとりだして話の流れを変えようとしているんだな。なるほど。信者らしい行動だ。
バトルすれだし、いいぞもっとやれ。

>>194
>lambdaで書けるよ。それ。
>読みにくくなるから書きたくないけど。
じゃあ意味ないじゃん。

> 例えばlambdaがあったらintいらない
まるで意味不明。
0199デフォルトの名無しさん2010/10/28(木) 10:27:59
引数の順番はカリー化を多用する/デフォでカリー化されてる言語だと
わりと重要だわな
ま、>>196の言うとおりに、自分でどうとでも出来るけど

Rubyのブロック付きメソッド(groovyなどもパクっている)の場合は
ブロック/クロージャ引数が最後の場合に、それが特別扱いされる仕様だね
0200デフォルトの名無しさん2010/10/28(木) 10:29:43
>>195
Pythonのlambdaを強力にしたらって仮定の話をしてるだけで誰もRubyを貶してないよ。
0201デフォルトの名無しさん2010/10/28(木) 10:29:58
上に出てたreduceの実装だって、ラムダでできる。
my_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
>>197
「with文は可読性が悪い」とか「実装のためがかかる」とはだれも言ってない。
たんに「関数言語ばりのlambdaがあればwith文はいらないはず」と言ってるだけ。
ほんと話をずらすのが好きだな。というか、相手のいいたいことがわからないだけか。
アスペ乙
0203デフォルトの名無しさん2010/10/28(木) 10:32:35
>>202
ちょっと待てwww
いきなりアスペ扱いか

> ほんと話をずらすのが好きだな
って俺を誰だと思ってるんだか知らないが、なぜそんなに喧嘩腰?
0204デフォルトの名無しさん2010/10/28(木) 10:38:13
バトルロワイヤルというスレタイが見えないとでも?
0205デフォルトの名無しさん2010/10/28(木) 10:41:09
>>197
そこまで分かってるなら、Pythonはあえてブロック付きメソッドを拒否してることにも気づいてるんだろ?
0206デフォルトの名無しさん2010/10/28(木) 10:41:42
>>204
いやそうじゃなくてさ、どーも>>202は何か勘違いしてると思うんだよな

>>197は俺が今日始めてつけたレスだし、俺のレスの意図も読み違えてると
思うんだわ
>>202は少し冷静になったほうがいいよ
0207デフォルトの名無しさん2010/10/28(木) 10:41:52
>>203
> 俺を誰だと思ってるんだか知らないが
そりゃしらねーよww
0208methane2010/10/28(木) 10:42:05
>>202
「関数言語ばりのlambda」をブロックとして使いやすく実装したのがRubyで、その頻出する用途を
直接構文でカバーしたのがPythonというだけだよね?

元の話題は、「Pythonのlambdaは文が使えないから不便だ」というものなので、
「Pythonの○○はlambdaが強力だったらlambdaでできるよ」じゃなくて、
「lambdaが強力だったらできる○○が今のPythonじゃ面倒だよ」という指摘をしないと的外れだと思う。

>>73 とか >>175 の指摘の方が的を射ている。
0209デフォルトの名無しさん2010/10/28(木) 10:43:21
>>202
つか、lambdaがあればブロックつきメソッドもいらないんじゃないの?
0210デフォルトの名無しさん2010/10/28(木) 10:45:23
λ計算かチューリングマシンがあれば何でもできるよね
0211デフォルトの名無しさん2010/10/28(木) 10:48:20
汎用的な処理と、それがあればxxはいらない、を追求すればそうなるよね。
0212デフォルトの名無しさん2010/10/28(木) 10:57:13
Rubyの "lambda" はグローバルなメソッドで、ブロックやProcとの関係はなんというか魔境なんだけどw

あとブロックはそれ単体でリテラルみたいに使えないってのも設計として微妙なところ。
0213デフォルトの名無しさん2010/10/28(木) 10:59:00
>>205
俺は中の人じゃないから分からんけど、要は「WAY」を増やしたくないんだろう、と
思っているよ
0214デフォルトの名無しさん2010/10/28(木) 10:59:47
>>212
え?
f = {|x|
...
}
f(x)
みたいにできないの?
0215デフォルトの名無しさん2010/10/28(木) 11:05:14
よく知らんが、その辺はRubyがLISP-2系統だとかいう話なんじゃなかったっけか

CLだと関数と普通の値を分けているので、関数と同じ名前の変数を
使えるかわりに、#'とかfuncallとか書く必要があるよね
0216methane2010/10/28(木) 11:06:46
Pythonのlambdaが弱いのはインデントでブロックをあらわす構文との相性の悪さもあるから、
>>181 の指摘って無関係な煽りに見えて、実は結構関係するんだよな。
endあるいは } を省略した代償として、式に書き下せない処理は名前付き関数にしないといけない。
0217デフォルトの名無しさん2010/10/28(木) 11:11:01
>>215
似てはいるけど、Lisp-1かLisp-2かというのは名前空間の話なのでちょっと違う。

>>214
できない。Proc.new {|x| ...} か lambda {|x| ...} を使う。今では推奨されてないという話になってるけど
proc {|x| ...} というのもあった。
0218デフォルトの名無しさん2010/10/28(木) 11:13:32
で、end書く回数か、式に書き下せないけどブロック付きメソッド使いたい処理を書く回数かどっちが多いかって話になるんですね。

たぶん、Cでいうところのコンマ演算子がないことと、代入が文なこと(式と文が明確に分かれていて、式にできることが少ない)が、もっと大きな要因。
0219デフォルトの名無しさん2010/10/28(木) 11:13:40
>>217
> 似てはいるけど、Lisp-1かLisp-2かというのは名前空間の話なのでちょっと違う。
なるほど、ありがとう
0220デフォルトの名無しさん2010/10/28(木) 11:14:42
>>217
できないのかよ...
ブロック付きメソッド渡す場面で、そのProcかlambdaを渡すことはできるんだよね?
0221デフォルトの名無しさん2010/10/28(木) 11:22:18
>>217 できる。

foo = lambda {
 ...
}
f(x, &foo)

↑これが↓これとほぼ同じ。

f(x){
 ...
}
0222デフォルトの名無しさん2010/10/28(木) 11:40:58
あ、アンカー間違えた >>220 ね。
0223デフォルトの名無しさん2010/10/28(木) 11:58:18
じゃあfooが関数を返す関数だった場合、
f(x, &(foo(n)))みたいになるわけか。
0224デフォルトの名無しさん2010/10/28(木) 13:45:18
>>218
代入が文なのも勿論そうだけど
破壊的操作を行うメソッドの多くが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
>>223
そもそもRubyは「関数」を返すことが出来ない。
ブロック(=Procクラスのインスタンス)を返すことは出来るから
まあ意味合いとして似たようなことはできるんだけど。

そもそもRubyには「関数」ってオブジェクトが無いんだわ。
・関数とは、メソッドの一種を便宜上そう呼ぶに過ぎない
・メソッドは必ずオブジェクトに所属する
 (いわゆる「関数」と呼ばれるものも例外でなく、「トップレベルでのself」(通称main)に所属する)
・関数が無い代わりに、無名の「手続きの塊」を扱うProcクラスがある
・ブロックやlambdaはProcクラスのインスタンスとして扱われる

ちなみにメソッドや関数の定義内で def を使っても「関数内関数」のようにならず
「メソッドを呼んだ際にメソッドを定義する」という動作になってしまうのも
defが「メソッドの定義」であり、所属先がその際のselfになってしまうから。
「関数内関数」とか「関数を値として使う」みたいなことをしたいときは、Procクラス(lambdaもこれ)を利用する。
0226デフォルトの名無しさん2010/10/28(木) 18:18:05
846 :デフォルトの名無しさん[sage] 投稿日:2009-02-08 10:45:59
島根の真実。

松江とかひどい状態なんだぞ。
どこでもRubyだもん。Ruby以外のことがしにくくてしょうがない。
Rubyにあらずんば人にあらずみたいな気がする。
Javaでやりますっつっても役人に全く受けない。予算が付かない。
Rubyの波に乗りなさいって言われてもなぁ。。。。
塩屋が邪魔くさくってしょうがない。
0227デフォルトの名無しさん2010/10/28(木) 18:24:32
ラーメンまでRubyだよ
0228デフォルトの名無しさん2010/10/28(木) 18:37:33
ruby大社とかruby灯台とかないだろ
0229デフォルトの名無しさん2010/10/28(木) 20:30:44
出雲ruby空港ってのはいまいちだった
米子でもあわないだろうけど
0230デフォルトの名無しさん2010/10/28(木) 20:59:07
おまえらWebProg板でやれよ。
0231デフォルトの名無しさん2010/10/28(木) 21:02:12
全員死ねよごみが
0232デフォルトの名無しさん2010/10/28(木) 21:30:31
IDやアンカーだけ書いて何か言ったつもりになっている行為が、いかに恥ずかしいことか。

とにかくそのIDの奴の言う事が気に入らないもんだから
何とかしてそのIDの奴のレス勢力を無力化、無効化してやりたいのだが、
かといってどこにツッコミ所があるのか具体的に指摘出来ないし
論破出来る知識も自信も自分には無い、
何より、ヘタにレスを書いてしまうと自分の無知を曝け出す結果となって
かえって自分が周囲の嘲笑の的となってしまうのが怖い。

そこで、とりあえず無言でレスアンカーだけを付けておく事で
「こいつイタイなw晒し上げw」と必死に周囲に印象付けようとする。

具体的指摘を伴わない無言レスアンカーなら
自分の勘違いだったところで自分はちっとも傷付かずに済むからな。

肝心のどう “イタイ” のかについては周囲の流れにお任せ。
きっと読んだ人それぞれが頭の中で勝手に考えてくれるさ!!

抽出廚、レスアンカー厨からは

 「ママ、ぼく悔しいよ! こいつをやっつけてよ!」

という悲痛な叫びが聞こえてくる。
0233Perl忍者 ◆M5ZWRnXOj6 2010/10/28(木) 21:45:14
自分の事いうのやめたほうがいよ
0234デフォルトの名無しさん2010/10/28(木) 21:47:00
>>233
死ね
0235デフォルトの名無しさん2010/10/28(木) 23:32:43
あらたなPython信者。といっても2004年か。

ttp://tabesugi.net/memo/2004/82.html#202238

> それからもうひとつは全然べつの話だが、Python がサイコーなのは オブジェ
> クト至高言語なことでも関数風味なことでもなく、「手続き言語として」サイ
> コーなのだ、 ということに気づいた。今になってみると、Python がとりわけ
> 直観をサポートするようにできていたのは、 インデントだけではないと思う。
> いい例がタプルである。 これは、本来なら一度にひとつの値しか使えないとこ
> ろ (配列の要素とか、関数からの返り値とか、 変数への代入) に複数の値をま
> とめて渡すことができるので、結果としていくつもの状態を 別々に管理するよ
> うな状況で気をもまなくてすんでしまう。これによって制御構造が極端に単純
> でも、 あまり気にならない。これにひきかえ、たとえばループを表すのに
> Ruby のイテレータがわかりやすいとは 到底思えないし、Scheme の末尾再帰が
> わかりやすいとも思えない (複雑な状態遷移があるものを書くとウンザリする)。
> 彼らのアプローチは概念的に単純ではあるが、それによってループが直感的に
> 書けるかというと べつにそういうわけでもないのだ。

「オブジェクト*至高*言語」というのはSmalltalkやRubyを揶揄してるんだろうな。
0236デフォルトの名無しさん2010/10/28(木) 23:33:25
代入が式じゃないからlambdaで代入できないっていうけど、
関数型言語としてみたら、代入ってできる必要なくね?
0237デフォルトの名無しさん2010/10/28(木) 23:37:21
Python信者まじ怖ぇー

ttp://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:50
またコイツかよ。長文コピペすんなカス
0240デフォルトの名無しさん2010/10/28(木) 23:46:02
コイツってツイッターや個人ブログのコピペばっかしてるけど、
ネット中のPythonの記事を探し回ってんのか?
0241デフォルトの名無しさん2010/10/29(金) 00:07:59
Guidoってサヨっぽい考え方をする人だったりするのかな
0242デフォルトの名無しさん2010/10/29(金) 00:12:57
ストールマンの悪口はそこまでだ
0243デフォルトの名無しさん2010/10/29(金) 00:22:31
前ので本人引っ張り出せたから味占めたな
0244デフォルトの名無しさん2010/10/29(金) 00:25:51
Ruby厨がPythonスレやコミュニティーをさんざん荒らしたから
PythonユーザーはRubyと聞いただけで嫌悪感を持つってのはあると思う
PythonスレにRuby最高とか楽しいとか日本人ならRuby使えとかやられまくったからな
0245デフォルトの名無しさん2010/10/29(金) 00:28:28
>>244
今でもブログやツイッターは監視されてるようだしな
0246デフォルトの名無しさん2010/10/29(金) 00:40:48
>>236
Pythonは参照透明性を重視した関数型言語ではないのだから
Pythonでコードを書く限り実質的に代入は必要だろ

仮にPythonでループの代わりに末尾再帰で書いても最適化はされないのだから、
糞遅い上にスタックオーバーフローになるだけ
0247デフォルトの名無しさん2010/10/29(金) 01:01:50
>>244
昔 Java スレにも shige という奴が居てだな…
0248デフォルトの名無しさん2010/10/29(金) 04:21:41
>>236
関数型言語のλでも、値の束縛は大概出来ると思うのだが?
多くはletとかでサポートしてるだろ
0249デフォルトの名無しさん2010/10/29(金) 04:40:48
Erlangは実際、バインドだけで代入はないな。
バインドできるのは一回だけだし。
0250デフォルトの名無しさん2010/10/29(金) 07:14:25
>>244
むしろそいつがどうの言うレスでRubyスレでも迷惑してたんだけど

最近だとC#マンセー Windowsでは使い物にならねー厨が一時期いくつかのスレに来なかった?
Rubyのスレにもきてたが

Windowsでは使い物にならね、は同意だが正論でも荒らされてはわな
0251デフォルトの名無しさん2010/10/29(金) 07:15:40
Windowsでは使い物にならね、じゃなくてGUI作れねえ、だったかな?
どっちでもいいけど
0252デフォルトの名無しさん2010/10/29(金) 07:27:51
上でlambdaとブロックの話が出ていたが、こういうのはlambdaでできないだろう、と示すのは別物なんだからフェアじゃないな。

Rubyのブロックはwithを作るようなもんなんだろう。
withのような簡単な制御構造や内部DSLを作りやすい。

この使い方がRails以降多用されている。空気のように〜と上ででていたが実際そう。

だけど上であまり強調されていない理由は、その流れをRubyユーザーがあまりよく思っていないからじゃないか?
Rubyスレでも話題が出ると不満がでることが多々ある。

いきすぎた制御構造の拡張や、内部DSLってさ、
ようするに宣言っぽくかけてRubyらしく振舞わないRubyスクリプトなんだよね


ブロックのネストの度に省略されたselfがバンバン変化する
信じられるかい?
このブロックでメソッドを定義したらどうなるのだろう?
>>225のようにトップレベルに定義されるのだろうか?
別のクラスやモジュールに定義されていないか?

こんな疑問を持ちながら、selfを確かめながら、挙動をソースを見ながら(ドキュメントじゃないぞ)
使わないといけないんだよ、ブロックは。



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