1 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 13:14:17.03 ] 最強のLL=軽量プログラム言語は、どれよ? エントリーは、Perl、PHP、Python、Ruby、JavaScript・・・ さあ、死ぬまで語りやがれ!!! ■LLとは? 軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、 コードの作成や修正が容易と見なされるプログラミング言語のことを指す。 ここでいう「軽さ」はプログラマの負担の軽重を指し、 実行速度に優れているという意味ではない。 現在の水準では ・インタプリタ ・動的型 ・正規表現 ・クロージャ などを利用できるものがLLと呼ばれることが多い。(Wikipediaより) 前スレ 【Perl,PHP】LLバトルロワイヤル19【Ruby,Python】 toro.2ch.net/test/read.cgi/tech/1320405770/
730 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 18:02:57.77 ] お題が悪い pythonのlambda式が不便になることがあるのは事実だが、こういうパターンではない おそらく不便という事実だけ聞いてこの問題を作ったんだろうけど的外れもいいところ
731 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 18:07:32.90 ] らむだこりゃ
732 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 18:09:49.97 ] / ..::::::...ヾ,-┐:::::.. ヽ、 /:::::::: :::::::::::::::..ヽ|、::::::::... ヽ、 ラムだっちゃ♥ / :::::::: 、:::::::::::::::::...ヽ::::::::::::.. ヽ / ::::: 人、 | ヽ、_:::::::::::::: |:::::::::::::. | ,イ´ | :::ト、 | `'-,r‐=,、ヽ、 ::: |:::::::::::::: | rv' l´ ヽ、:.| r-、 p ヽ `l ,ヘ::::::::::::::::: | | | | ヾヽ、 ハ ヾ_ノ .| |' .|:::::::::::::::::: | ''´ ̄ ̄`ヽ、、_ | | | ヽ、l ゞ ー | レ'::::::::::::::::::: | ´ ̄ ` r-L l ', |` 、 ,' |:::::::::::::::::::::: | _rヾニ `ヽ ', ヽ、 r‐-ァ /::|::::::::::::::::::::::::.. | ヾゝイ´ ,/ .', ヽ、ゝ' _,.-;ノ:: |:::::::::::: ::::.. | ::.. ト ´ /.... 'ヽ,、_ >r' /:: /::::::::::::: ::: | : 〉 .|:::::::::::...... `ー-‐'´,-/ /::::: / `ヽ、::: | ::.... .:::::::::::| |:::::::::::::::::,、-r―'''´ ̄ ,.-‐'´:::. / |:::::.... . | :::::::::::::::::::::::::::::::::| ',:::::::::::::∧ヾ V/―/::::::::::: / |:::::::::::.......:::. | :::::::::::::::::::::::::::::::::| ',:::::::::::ト kl /三/:::::::::: / ,'::::::::::::::::::::::: | :::::::::::::::::::::::::::::::::| ',:::::::::|ヾヾ|、 /::::::::: ,イ ,'::::::::::::::::::::::::: | | :::::::::::::::::::::::::::::::::| ',/ヽ__ヾ、|:::::: ∧/ /:::::::::::::::::::::::::: |.|.| ::::::::::::::::::::::::::::::::::', ! / ヾ:: ∠__/ /:::::::::::::::::::::::::: | ||
733 名前:621 mailto:sage [2012/02/11(土) 18:37:08.10 ] >>729 いや、Pythonのことは部分的に知っているはずだよ だって、Pythonの弱点を突けるコードを意図的に選んだのだからw あと、>>658 は「逃げんなよ」と言い、>>729 は「二度と再開するな」と言う 同じ人ではないと思うので、別人さんでPython支持派内に意見の不統一があるのかな いったいぜんたい、どっちにすればいいんだろう 関数型プログラミングへの適合性について議論を再開する or しない、 Python支持派内で意見を統一した上で、どちらにするのか返答を希望する >>730 だから、もしもお題が悪いのなら、最初にお題が示された時点で(=前スレで)反論しないとね 議論が終わってから「xxが悪い」と言い出しても遅いよ もし今から反論したいのなら、Python/ML/Haskellでは簡潔に書けるけど Rubyではそうではない「単純明快な」お題を、Python/ML/Haskellのコードで示してくれ 論よりコードだよ なお、議論の再開に関しては即答しなくともかまわない たとえば次スレでバトルの第三ラウンドを始めてもいいよ 判断はそちらにあずける
734 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 18:48:23.94 ] 前スレも>>700 も書いたのは俺 あのときハッシュを使ったのはRubyのコードが例外を投げてたから 最後に関数型っぽいコード ys = filter(lambda x: x in ["Green", "Yellow"], xs)
735 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 19:10:15.80 ] >>733 いや、お前の主張が間違ってたのだからそこで終了だろw 結局優位性すら認められずw
736 名前:621 mailto:sage [2012/02/11(土) 19:17:12.53 ] >>734 >あのときハッシュを使ったのはRubyのコードが例外を投げてたから お題のコードは変数宣言が欠けているから例外が発生するのは明白 こちらとしては、その程度の壁なら自力で対処できるくらい「Rubyを知っている」と思っていた また、もしも例外発生を自力で解決できないかったのなら、 その時点でそれを言うべきだったと思うよ そんな機会はいくらでもあった 例外うんぬんのいい訳は、前スレ(あるいは今スレ>>621 )から>>700 のレスまで 「ちゃんとしたコード」の完成に時間を要した理由にはならない >ys = filter(lambda x: x in ["Green", "Yellow"], xs) ys = xs.select { |x| ["Green", "Yellow"].include? x }
737 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 19:24:56.68 ] 「Pythonを知らない」奴がなぜ偉そうなのか分からん
738 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 19:25:20.24 ] >>736 > お題のコードは変数宣言が欠けているから例外が発生するのは明白 そうじゃなくて、>>561 のRubyコードはgreen, yellow, red 以外なら raise RuntimeError の行で例外を投げてるだろ
739 名前:621 mailto:sage [2012/02/11(土) 19:26:17.24 ] >>735 1つの主張が崩れても全体が否定されないよう、意図的にお題は3つに分かれている 残念ながら「Pythonは関数型プログラミングには不適格」という烙印は消えていないw では、残る2つの主張を崩せる反論の準備をよろしく頼むぜ 議論の再開を待っているよ
740 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 19:28:30.99 ] やはりPythonの解答が「明らかに」美しいな。この問題だと
741 名前:621 mailto:sage [2012/02/11(土) 19:35:15.41 ] >>738 ML/Haskellといった静的型付け関数型言語は、green, yellow, red 以外なら型エラーになる それに合わせてRubyは動的型付けだから例外を投げるコードにしている それがお題だ(関数型言語は知っているんだよね?) ただし、Pythonでは例外を投げるコードが難しいみたいだったから、 あの時はその部分について「見逃してあげた」だけの話 もし反論があるなら、>>700 のコードについて、例外処理を含めて再実装してくれ
742 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 19:38:43.73 ] >>741 >>562 のPythonのコードも green, yellow, red 以外なら例外投げる 見逃してもらう必要は無い
743 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 19:40:32.46 ] 非現実的な馬鹿らしいお題だな
744 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 19:48:13.07 ] >>737 同意するわ。 こいつPythonのプログラム読めて無いじゃん。 可読性を議論するレベルに達してない。
745 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:06:42.60 ] PHP最強ということで結論が出たようだな。
746 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:13:32.23 ] >>561 >>562 ML,Haskell,Pyhtonは似てるけどRubyだけ異質で浮いてる。 はっきり言ってRubyだけキモい。
747 名前:621 mailto:sage [2012/02/11(土) 20:13:33.28 ] >>742 あっそうなんだ、>>562 でもハッシュを投げるんだね 失礼した、謝罪する では、型エラーまたは例外発生をお題に含めるものとして、 >>621 の「Pythonではハッシュを使わなければ書けない」という主張を崩すために、 >>700 (あるいは>>734 )のコードについて例外処理の実装を追加してみて欲しい こちらで試したところ、>>700 ,734とも例外は発生してない
748 名前:621 mailto:sage [2012/02/11(土) 20:17:06.28 ] >>740 ,746 そういった意見は、主観であり客観的な判定材料にならないことは すでに結論付けられている だから>>621 では具体的で客観的な問題指摘を示した したがって、同様なレベルの意見を希望する
749 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:31:40.61 ] いまをときめくFacebookも、ブログシステムてして他の追随を許さないWordPressも CMSとして最強の呼声高いDrupalも、みんなPHPで作られているんですね。 すごいよなぁ。
750 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:35:29.04 ] PHP遅すぎてC++に変換したり 苦労しているみたいだけど
751 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:38:45.64 ] え? ここLLのスレだよね?
752 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:46:39.95 ] >>748 >>621 は間違ってただろwさっさと訂正しろよ
753 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:48:52.46 ] >>748 「ハッシュは異質・トリッキー」が主観で無くて何なんだ? 客観的と言うなら、ハッシュで分岐するのが キーワード引数の例(>>690 )のように 機能的に劣った点があることを示せ
754 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 20:54:05.79 ] 621が自分の主観を客観的を言ってるんだけど、何なの
755 名前:621 mailto:sage [2012/02/11(土) 20:58:47.63 ] >>752 >>742 から再実装されたコードが提示されたら、まとめて訂正するつもりだよん 今のままだと>>700 のコードは例外を投げないから仕様不整合であり、 >>621 の「ハッシュを使わなければ書けない」という主張は崩れていない >>742 が(仕様不整合を)見逃してもらう必要は無いと、明確に意志を示してくれたので、 それを尊重してコードの提示を待っているところ
756 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 21:07:28.71 ] >>755 お前はコードの提示を待つ前に>>753 に答えるべき
757 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 21:09:31.44 ] 長文=客観的
758 名前:621 mailto:sage [2012/02/11(土) 21:35:08.04 ] >>756 では、>>753 に答えよう(>>753 は見落としていたので、指摘ありがとう) まず、お題の題名が多分岐なのだから、Ruby/ML/Haskellのように 言語仕様に多分岐式を含む言語であれば、多分岐式を用いてコードを実装するのが当たり前 でもPythonは言語仕様に多分岐式を含まないから、 それをハッシュで「代用」しなければならない 次にハッシュで代用することの問題点を述べる ・Ruby/ML/Haskell 予約語 case によってコードが多分岐処理の実装である事は一目で判断できる ・Haskell コードをじっくり眺めなければ、それが多分岐処理なのか、それとも 本質的にハッシュを用いる処理なのかを判断できない つまり、Pythonのハッシュによる「代用」は、可読性の悪化という影響をもたらす
759 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 21:39:05.26 ] おおむねRubyしか使ってないけど (趣味プログラマです) 他の言語を知るにつれて Rubyってメタプログラミング力が弱いような気がしてくる ちょうどいい感じに使いやすくメタプログラミングできるようになってるだけで なんか、深い事しようとすると出来ないようなきがする 実際にはそこまでのメタプログラミング能力は要らないのだけど ブログなどのネタなんかだと、他言語の方がダイナミックなこと出来るなぁ などと思ってしまう 例えば、Rubyではスクリプトのパース時に細工したりは出来ないし かといって他の言語に移ろうとかいう気は起こらないけど
760 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 21:43:08.35 ] >>758 > 本質的にハッシュを用いる処理なのかを判断できない これを主観という
761 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 21:46:44.47 ] Rubyがプチヒットしたのは 主にRailsのおかげなんだろうけど たまたま備わっていた ・完全なオブジェクト指向&オープンクラス ・DSLに向いてたブロック構文 ・同メソッド呼び出し括弧の省略 ・適度なメタプログラミング力 がマニアにうけたのかなぁ 島根県の公式サイト程度ならまだしも イギリスの公式サイトがRuby製で製作中なんて 無茶しやがってとか思うけど よくは知らんがクックパッドとか、そこそこ大きそうなサイトも運営されてるので 大丈夫なんだろうか GitHubもRailsらしいが
762 名前:621 mailto:sage [2012/02/11(土) 21:52:05.58 ] まだ時間があるようなので、>>758 を続ける 次にハッシュを用いる事それ自身の問題点を示す Pythonのハッシュは、そのキーとして用いれるのは不変なデータ型(数値/文字列/タプル)だけ これは、このお題の入力値が「たまたま」文字列であったから何の問題も無いが、 課題をより一般化して、任意のレコード(オブジェクト/ハッシュ)が渡されたと「仮定」する この場合、Pythonだと多分岐処理をハッシュでは実装できなくなる これは「Pythonは拡張性に劣る」という欠点となる また、Rubyではハッシュのキーとして任意のオブジェクトを用いることができるから、 多分岐処理をcase式とハッシュのどちらでも実装が可能になる これは「Pythonは表現力に劣る」あるいは「ハッシュの機能性が劣る」という欠点となる 以上
763 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 21:53:21.33 ] >>758 ハッシュで代用するというか、Visitorパターンだな じっくり眺めなければ判断できないという批判は、全てのデザパタに当てはまる
764 名前:名無し~3.EXE mailto:sage [2012/02/11(土) 22:02:05.48 ] ざっと流し読みしたら、一人で頑張ってるのがいるようだけど 大好きなRubyたんのシェアが伸びるどころか落ち込んでるのが 余程気に食わなかったのかね Railsがありながらシェアが伸びないのは何故なんだろうね
765 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:04:17.12 ] >>755 def Raise(e): raise e ys = (x for x in xs if (lambda x : True if x == "Green" else True if x == "Yellow" else False if x == "Red" else Raise(KeyError))(x))
766 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:04:40.85 ] 藪をつついてデザパタ全否定
767 名前:621 mailto:sage [2012/02/11(土) 22:10:36.90 ] >>760 その判断が一目で(瞬時に)できるか、じっくり眺めなければならないかは、 プログラマの能力に依存する話 そして全世界のあらゆるPythonプログラマが優れた能力を備えていると仮定すれば、 瞬間的な判断の可否は主観と言えるだろう でも現実は、そうではないハズだ(それとも、これすら主観であると決めつけるのかな?) 経験豊かなプログラマもいれば、ビギナーもいる 従って、これを主観と決めつけることはできないと判断する また、可読性という評価基準そのものが主観性を含むものだ 「予約語caseがあれば分岐処理の始まりであると一目で分かる」と考える人は多いと思うが、 中には「caseを見落とすかもしれない」と屁理屈をごねる変な人もいるかもしれない でも、これらはそれぞれの人達の主観であるから客観性は存在しない では、本当に「可読性」を完全に無視していいのか?という話になる Pythonの優れた特徴である可読性の良さという利点も無視されるけど、 それでもいいの?という意味だ 判断は>>760 に委ねたい
768 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:18:04.10 ] うんこ
769 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:18:37.53 ] >>762 > Pythonのハッシュは、そのキーとして用いれるのは不変なデータ型(数値/文字列/タプル)だけ > これは、このお題の入力値が「たまたま」文字列であったから何の問題も無いが、 いるよな。都合が悪くなると後から条件変えてくる奴。 不変なデータ型ってことにケチつけるなら、 まずHaskellでmutableなデータ型が入力値のときのコードを出せよ
770 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:18:39.79 ] >>702 >Rubyは書き捨てスクリプト専用言語だから >キーワード引数なんて要らない 冗談じゃない。 Rubyにも本物のキーワード引数が欲しいし、Matzもそう言っている。だからこそ2.0で導入される予定。 >あれは大きいプログラム用の機能だからね 冗談じゃない。キーワード引数は小さいプログラムでも実に役に立つ。 こんなこというのは、Pythonをまともに使ったことないんだろう。 キーワード引数は、Python使って嬉しかったことの筆頭。 しかしlambdaが文をとれないなど残念な面も多い。RubyのブロックがPythonにも欲しい。
771 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:18:43.40 ] 関数型言語のコードを一見して分かる優れたプログラマばかりなら 621の理屈は通るけどね
772 名前:621 mailto:sage [2012/02/11(土) 22:18:56.77 ] >>765 コードありがとう でも、このコードは外でRaise(e)という関数を定義しているよね ここまで提示されたすべてのコードには、外部定義は一つもなかった このままだと「Pythonは外部定義が無ければ書けない」という 批判材料を敵に与えてしまうことになるけど、それでもいいのかな? もし可能であれば、外部定義の無いコードに書き直して欲しい
773 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:19:55.73 ] >>772 外部定義をしてはいけない理由はなに? 明らかに全てのコードの中で一番スッキリしてるだろ
774 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:20:40.61 ] >>772 Raise() は一度定義すれば何度でも使えるけど? つまり一切のライブラリの使用を禁止ってこと?何の縛りプレイ?
775 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:20:43.38 ] 敵なんてどこにいるんだと思ったが、バトロワスレだからべつにいいか。
776 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:23:53.83 ] >>775 敵はあなたの心の中に潜んでいるのだよ。
777 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:24:51.58 ] たしかに うんこ と 言わざるを得ない
778 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:25:30.92 ] 今にして見れば、Rubyのコードが終わってる
779 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:26:24.86 ] うんこーど
780 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:26:33.28 ] Perlの話もしろよ
781 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:28:45.39 ] >>772 SML の datatype や Haskell の data も外部定義
782 名前:621 mailto:sage [2012/02/11(土) 22:29:09.41 ] >>763 >じっくり眺めなければ判断できないという批判は、全てのデザパタに当てはまる 「じっくり眺めなければ判断できない」ことが全ての言語に当てはまるのなら批判はしない Ruby/ML/Haskellであれば予約語caseがあるから一目で判断できるのに、 Pythonは「じっくり眺めなければ判断できない」から批判されている 分かるかな?
783 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:32:49.01 ] 今にして見れば、Rubyのコードが一番終わってる
784 名前:621 mailto:sage [2012/02/11(土) 22:35:01.27 ] >>769 では、バトル第三ラウンドでは、Haskellでも書ける(imutableな)レコード型を入力値とする お題を準備することにしよう もし不満であれば、>>769 が別のPythonに有利なお題を準備すればいい
785 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:35:27.55 ] >>782 予約語 if と True/False を見ても一目で判断できないなら終わっとる ていうかお前以外誰も「一目で判断できない」と言ってない お前しか批判してないんだから > Pythonは「じっくり眺めなければ判断できない」から批判されている みたいに伝聞のような書き方をするな
786 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:35:51.72 ] >>784 お前お題の作り方下手糞すぎるからやめとけよw
787 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:36:39.12 ] >>785 長文だから許されるらしいよw
788 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:36:56.74 ] >>784 何でHaskellに合わせてルール決めるんだよ
789 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:39:45.44 ] Haskellを巻き込むのはやめて欲しいなぁ。 LL同士で勝手にやってほしい。
790 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:41:56.22 ] >>789 やってるのはRuby信者兼Haskell信者だけどな
791 名前:621 mailto:sage [2012/02/11(土) 22:43:17.39 ] >>773 ,774 Ruby/ML/Haskellのような局所宣言が言語仕様に含まれていれば、 これまでのように局所宣言で書いてもいいし、 あるいは外部定義に書き直してもいい つまり「表現力が豊かである」という利点になる ここで、もし「Pythonが外部宣言が無ければ書けない」とすれば、 それは(上記とは逆に)Pythonの欠点となる この判断は、すべて>>765 が示してくれるであろう新しいコードに係っている
792 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:47:07.45 ] それらコードを見て誰が「表現力が豊か」と思うんだろう
793 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:49:58.16 ] >>791 だから SML や Haskell でも datatype や data を使わないで書けって 外部定義禁止なんだろ?
794 名前:621 mailto:sage [2012/02/11(土) 22:51:40.58 ] >>785 このお題くらい単純なコードなら、誰でも短時間で判断できるだろう でもコードの規模が大きくそして複雑になれば、誰も瞬間的な判断なんてできなくなるよ 可読性とは、そういった大規模開発で意味のある評価基準だ というか、こんな反論しかできないとしたら、>>785 は大規模ソフトウェア開発の経験ゼロだろ?
795 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:52:03.60 ] 一切の外部関数の使用を禁止して競う表現力の高さw
796 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:55:26.82 ] 機能を制限するのは、フェアじゃない気がするなぁ。
797 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:57:11.35 ] >>794 お前以外はコードの規模が大きくなっても 一目で判断できると思うぞ
798 名前:621 mailto:sage [2012/02/11(土) 22:57:43.84 ] >>786 ,788 だってバトルなんだから、こちらがRubyに優位な条件にするのは当然だろ もしもPython支持派がお題を提示してくれれば、それに付き合うよん では、新たなお題の準備、ヨロシクw
799 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 22:58:53.67 ] >>794 > 可読性とは、そういった大規模開発で意味のある評価基準だ 大規模開発なのに外部宣言は禁止なの?www
800 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:03:04.48 ] >>798 なんでRubyがクソに見えるお題作っちゃったの?
801 名前:621 mailto:sage [2012/02/11(土) 23:04:36.45 ] >>793 ML/Haskellは静的型付け言語だから、データ型の定義は認めている このバトルは Ruby vs. Python なんだから、些細な問題だろ
802 名前:デフォルトの名無しさん [2012/02/11(土) 23:07:09.83 ] >>641 いやいやそこは <cond> if <true> else <false> then だろ。 実装によっては <cond> if <true> else <false> end でもいいらしいけど。
803 名前:621 mailto:sage [2012/02/11(土) 23:08:16.62 ] >>796 ,799 外部宣言を禁止している訳じゃないよ >>791 を読んでくれ さすがに長文レスは疲れてきたぜw
804 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:08:27.00 ] >>801 お前以外は外部定義した関数を使うのは些細な問題だと思ってるよ
805 名前:621 mailto:sage [2012/02/11(土) 23:09:45.19 ] >>800 >.... がクソに見える >>760 によれば、これが主観というものらすい
806 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:11:16.09 ] >>805 お前は自分のレスがクソみたいな主観だって認めてるんだな その事に驚いた
807 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:13:05.47 ] >>803 いや、関数内部でデータ型を定義できないのは 明らかに表現能力の制限だから SMLやHaskellのことだけど
808 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:14:56.82 ] つーかRubyのコードはホントひでーな こんなクソコードをドヤ顔で貼ったんだと思うと笑える
809 名前:621 mailto:sage [2012/02/11(土) 23:20:02.93 ] >>804 まあ、外部宣言の話は、>>765 がコードを示してくれるまで待ったほうがいいんじゃね? もしも>>765 が外部宣言を使用しないようコードを書き直すことができるのなら、 Python陣営に不利な条件は完全に無くなって、 >>621 にある3つの主張の中の一つが完全に崩れ去る訳だから
810 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:21:41.92 ] 標準ライブラリに特定の関数(この場合はRaise)が在るか無いかが 言語の表現能力を決めるらしい
811 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:22:35.94 ] ねえねえ、Rubyは外部定義すれば「ちゃんと」書けるんだよね? それならそうした方が良いと思うよ
812 名前:621 mailto:sage [2012/02/11(土) 23:24:30.47 ] >>807 だってこれは Ruby vs. Python のバトルなんだもんw ML/Haskellの表現能力に制限があっても関係ないだろ
813 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:25:30.83 ] ユーザ定義関数を使用禁止の大規模開発www
814 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:27:41.31 ] Rubyは結局Perlだから、書き捨てオレオレコードに向いてるって言えば良いのに
815 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:29:36.90 ] unix系では外部関数どころか外部言語を平気で使うから 優れた言語を一つだけ決めるようなバトルは発生しないんだよな。 一般的に言うと文字列を多用する環境ではバトルがない。 S式やオブジェクトなど、文字列に代わるものを使い始めるとバトルになる。
816 名前:621 mailto:sage [2012/02/11(土) 23:36:00.12 ] >>811 うん、書けるよ でも外部宣言でRubyコードを書く気は無いよ バトルなんだから、相手に有利なことをするわけないだろ 残念でしたw
817 名前:621 mailto:sage [2012/02/11(土) 23:38:40.29 ] >>814 自分の思い通りに話を進められなくて、残念でしたw
818 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:44:20.72 ] >>816 つまりRubyっていずれにしても汚いコードしか書けないから不利になるってことか 自分のお題で自分の首を絞めるなんてなあ
819 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:55:18.54 ] >>809 ys = (x for x in xs if (lambda x : True if x == "Green" else True if x == "Yellow" else False if x == "Red" else {}[x])(x))
820 名前:デフォルトの名無しさん [2012/02/12(日) 00:02:34.21 ] どいつもこいつも時代が見えてない。 クラウドにおいては、PCはただの端末だ。 動画が見れるミニテルに過ぎん。 クラウドの真ん中に鎮座しているのはMapReduceだ。 もはやPythonやRubyの出る幕はない。
821 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:14:47.14 ] >>719 デコレータ自体の表現力はいいと思うけど 型チェックやバリデーションのための機能としてみた場合、 なんか書き方が冗長すぎるなぁ 読むのが疲れる
822 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:17:20.70 ] >>820 もしかしてMapReduceが万能の技術だと思ってる? あれ、レスポンスタイムが重要なところには使えないんだが。 向いてるのはバッチ処理だけ。
823 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:22:18.19 ] MapReduceはスケールしやすくて 意外に汎用性がある点で注目されたというだけで それが全てかというと決してそんなことはない 例えばパイプラインとか、ステンシルとか、 他にも様々なパターンらしきものが見つかっている
824 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:27:22.50 ] Pythonのlambdaは汚点でしょ、何故あんな中途半端な仕様のまま残ってるのか解らん いっそ削除してしまえば「ローカル関数作れ」で統一されるという利点にもなるだろうに
825 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:29:33.48 ] >>821 こんな感じ? @typecheck def f(x:int, y:int) -> int: return x + y @validate(x=lambda x: -1 < x < 1) def g(x): print(x)
826 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 01:06:45.76 ] >>641 >if <cond> then <true> else <false> >が判り易いなんて思い込みだろ ><true> if <cond> else <false> >の方がシンプルで良いじゃん 何を根拠にそう決め込むのか? おまえこそ思い込みだろww >っていうか何で「ただの値を返すだけの記号」だと思えないんだろう <cond> ? <true> : <false> を「ただの値を返すだけの記号」だと思えないやつが何言ってるんだw Python信者アホすぎるww
827 名前:621 mailto:sage [2012/02/12(日) 01:28:13.77 ] >>819 お疲れさまです コードを拝見したところ、raise文の代用として、 空のハッシュを入力値で参照することでKeyError例外を投げる実装みたいですね でも残念ながら、見逃してもらう必要は無いという貴殿の意志を尊重すると、 これは「例外を投げる」という意味では仕様不適合ではないけれども、 任意の例外を投げられるRubyに対して「Pythonでは決まった例外しか投げられない」という、 表現能力におけるPythonの欠点であると評価します 自分としては多分岐の評価項目については完全に引き分けであると判断して、 >>621 から項目そのものを削除したいと考えているのですが、 このままでは>>621 の改訂版に上記の評価結果を反映せざるを得ません もし可能であるなら、任意の例外を投げられるコードへの書き換えを希望しますが、 コードの書き直しかそれとも>>819 を最終完成品とするのか、どちらを選びますか? 後から非難されるのを繰り返したくないので、お手間をかけますが返答を願います
828 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 01:28:45.71 ] >>862 「ただの値を返すだけの記号」だと思えれば良いなら、 条件分岐構文の読みやすさに差はなくて 慣れだけの問題ってことだな
829 名前:828 mailto:sage [2012/02/12(日) 01:29:38.00 ] >>826 の間違いだった
830 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 01:33:33.19 ] >>827 >>700 のコードで良いよ。任意の例外を投げれるし で、「標準関数以外を使えない条件でのみ、投げられる例外に制限がある」と明記しといて