Rubyについて(アンチ専用) Part005 (342レス)
前次1-
抽出解除 レス栞

240
(1): デフォルトの名無しさん [sage] 2020/10/18(日) 00:14:51.55 ID:dOGGkbZr(1/4) AAS
Rubyはバグりやすい言語だよ。
・型安全でない
・前後の文脈を見ないとその部分単体ではローカル変数とメソッド呼び出しの見分けがつかない書き方ができ、しかもその書き方(メソッド呼び出しに()付けない)のほうが主流
・reduce/inject、map/collectのように同じことするメソッドの単なる別名と、Array#delete_if/Array#reject!のようにほとんど同じなくせして削除失敗時だけ挙動が異なるみたいなべつものメソッドが入り乱れててカオス
・Procオブジェクト(手続きオブジェクト)を作る方法が多すぎ。しかも作り方で挙動が異なる。Rubyの書籍を書いた人でさえ頭を抱える始末
・簡単に「見せかける」ために省略記法を行き当たりばったりで導入しまくった副作用で、直感的な記述が逆にエラーとなることが多い(例: p {foo: 1, bar: 2}はエラーwブロックとして解釈されるため)

まだまだあるよ
261: デフォルトの名無しさん [sage] 2020/10/18(日) 02:27:50.97 ID:4X85KByZ(3/3) AAS
>>240
>・型安全でない
型付けに関しては、話が長くなるからまた後で

>・前後の文脈を見ないとその部分単体ではローカル変数とメソッド呼び出しの見分けがつかない … (後略)
これは同意ですね、だから自分はメソッド呼び出しであれば self.hoge みたいに self を省略せずに書きます

>・reduce/inject、map/collectのように同じことするメソッドの単なる別名と、
Lisp 文化と Smalltalk 文化の融合ですが、そもそも Ruby は最初から手続き型/関数型/オブジェクト志向を融合した
マルチパラダイム言語として設計されていますし、コミュニティも多文化共存共栄(多神教?)みたいな空気がありますね
他の言語、たとえば手続き型原理主義(一神教?)で「聖典こそ真実であり、否定するものは異教徒」みたいな信者からすれば
違和感があるのかもしれませんね

>Array#delete_if/Array#reject!のようにほとんど同じなくせして削除失敗時だけ挙動が異なるみたいな … (後略)
関数型プログラミンングだと mutable な操作は使わないのでよう分からんですが、一度に全てを理解しようとせず、
必要になった時に必要なメソッドを使うよう思考を単純化したほうがよろしいのではないかと

>・Procオブジェクト(手続きオブジェクト)を作る方法が多すぎ。しかも作り方で挙動が異なる。 … (後略)
これも同意、自分は基本がブロック構文、もし稀に明示的なProcオブジェクト(いわゆるクロージャ)が必要になった時には
組み込み関数の lambda を使うくらいですね
前段でもお話したように、他の「作る方法」は(今のところ)必要がないので気になりません

>・簡単に「見せかける」ために省略記法を行き当たりばったりで導入しまくった副作用で、
>直感的な記述が逆にエラーとなることが多い(例: p {foo: 1, bar: 2}はエラーwブロックとして解釈されるため)
波カッコを使うブロック構文とハッシュ構文を誤読する問題は、少なくとも自分が Ruby を触り始めた 1.6 の時代から
存在しますから、「行き当たりばったりで導入」した例としては不適切です
「直感的な記述が逆にエラーとなることが “多い”」のであれば、別の例を挙げるべきでしょう
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.936s*