[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/06 16:48 / Filesize : 289 KB / Number-of Response : 971
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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のコードで良いよ。任意の例外を投げれるし
で、「標準関数以外を使えない条件でのみ、投げられる例外に制限がある」と明記しといて






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<289KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef