[過去ログ] Ruby 初心者スレッド Part 65 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
503(2): (ワッチョイ 3f2c-QKg6) 2019/07/20(土)14:16 ID:NKxgAyGK0(1/7) AAS
乱数はメルセンヌツイスタらしいけど、
偏るので、マシなやり方はないですか?
Array.new( 25 ) { rand( 1..9 ) }
出力
[3, 2, 4, 3, 6, 3, 1, 3, 7, 6, 1, 9, 3, 2, 5, 6, 6, 7, 5, 6, 3, 3, 8, 4, 9]
[5, 8, 4, 1, 3, 3, 2, 2, 9, 7, 9, 7, 7, 6, 7, 4, 3, 4, 5, 4, 8, 8, 7, 2, 5]
[7, 7, 6, 7, 9, 5, 8, 2, 8, 5, 1, 8, 4, 9, 3, 3, 9, 8, 6, 1, 1, 3, 5, 7, 2]
504(1): (エムゾネ FF5f-CMz4) 2019/07/20(土)14:25 ID:1y0e4GF6F(1) AAS
a=[3, 2, 4, 3, 6, 3, 1, 3, 7, 6, 1, 9, 3, 2, 5, 6, 6, 7, 5, 6, 3, 3, 8, 4, 9]
b=[5, 8, 4, 1, 3, 3, 2, 2, 9, 7, 9, 7, 7, 6, 7, 4, 3, 4, 5, 4, 8, 8, 7, 2, 5]
c=[7, 7, 6, 7, 9, 5, 8, 2, 8, 5, 1, 8, 4, 9, 3, 3, 9, 8, 6, 1, 1, 3, 5, 7, 2]
(a+b+c)/3
505: (ドコグロ MMc3-bkmc) 2019/07/20(土)16:32 ID:/lD6o5wQM(1) AAS
>>503
なぜ偏っていると思ったの?統計取った?
Rubyistは一般にあまりレベルが高くないとはいえ、Rubyのコミッタ陣は少なくとも今の君よりは知識も能力も経験も上だと思うよ
506: (ワッチョイ 7f2d-ShKg) 2019/07/20(土)17:05 ID:wkIhGLkm0(1) AAS
2人コミッター知ってるけど何の専門家でもなければまともな経歴でもないよ・・・・
507: (ワッチョイ 4f7c-CMz4) 2019/07/20(土)17:08 ID:ppdy8tl00(1/3) AAS
メルセンヌツイスターって初期化しなくて良いんだっけ
508: (ワッチョイ 3f52-5sVo) 2019/07/20(土)17:54 ID:QHhW8HGw0(1/2) AAS
>>504
乱数で平均値を取ったら中央値に近づいて偏りが酷くなるだけじゃね
509: 503 (ワッチョイ 3f2c-QKg6) 2019/07/20(土)17:57 ID:NKxgAyGK0(2/7) AAS
Kernel#rand の種は、現在時刻で初期化されるから、意識しないでもよい
統計を取れば、平均になるだろうけど、1回1回が偏る。
例えれば、
1回目 : 3,3,1,1,3,3,1,1
2回目 : 2,2,8,8,2,2,8,8
3回目 : 5,5,9,9,5,5,9,9
平均すると、まんべんなく出るのだろうが
510: 503 (ワッチョイ 3f2c-QKg6) 2019/07/20(土)18:02 ID:NKxgAyGK0(3/7) AAS
例えば、503 で偏る部分は、
5, 6, 6, 7, 5, 6
9, 7, 9, 7, 7, 6, 7
7, 7, 6, 7
9, 3, 3, 9
何回やっても偏る
511: (ワッチョイ 4f7c-CMz4) 2019/07/20(土)18:37 ID:ppdy8tl00(2/3) AAS
おま環かどうか切り分けるために
codepad.org
とか
ideone.com
あたりで実行してみたら
512: (ワッチョイ 4f7c-CMz4) 2019/07/20(土)18:37 ID:ppdy8tl00(3/3) AAS
おま環かどうか切り分けるために
codepad.org
とか
ideone.com
あたりで実行してみたら
513(2): 503 (ワッチョイ 3f2c-QKg6) 2019/07/20(土)19:30 ID:NKxgAyGK0(4/7) AAS
codepad は古すぎる!
p RUBY_VERSION #=> "1.8.6"
一方、Paiza.io では、"2.6.3"
[3, 6, 3, 8, 8, 9, 1, 3, 1, 4, 3, 8, 2, 2, 2, 6, 6, 9, 4, 2, 2, 9, 1, 1, 1]
これでも偏る
2, 2, 2, 6, 6
2, 2, 9, 1, 1, 1
514(1): (ワッチョイ 3f73-jGuh) 2019/07/20(土)19:33 ID:2izalSzA0(1/3) AAS
1から9が完全に均等に出てほしいなら、(1..9).shuffleとでもすりゃいいんじゃね?
515: ◆QZaw55cn4c (ワッチョイ 3f47-19w1) 2019/07/20(土)19:33 ID:jbjCUWIF0(1) AAS
>>513
偏っているか、それともそうでないかを判断する基準をどのように記述していますか?
私には >>513 2 2 2 6 6 が偏っているようにはみえないのです、多分判断基準が違うのだと思います、なにか判断基準を書いていただけますか?
516: 503 (ワッチョイ 3f2c-QKg6) 2019/07/20(土)19:36 ID:NKxgAyGK0(5/7) AAS
>>513
5, 7 が出てない
それに同じ数字が、3回続くのが、2回も出てる
517: (ワッチョイ 4f7d-woJQ) 2019/07/20(土)19:40 ID:CMictvk+0(1/3) AAS
まさか1桁の整数の乱数を10個取り出したら0から9までダブってないとかそういうのか
518(1): 503 (ワッチョイ 3f2c-QKg6) 2019/07/20(土)19:44 ID:NKxgAyGK0(6/7) AAS
>>514
shuffle, sample も疑似乱数だから、 Kernel.#rand, Random と同じじゃないか?
519: (オッペケ Sra3-/r7K) 2019/07/20(土)19:46 ID:eNhk7IpQr(1) AAS
アホらし
バカが騒いでるだけ
520: (ワッチョイ cf14-C4ZB) 2019/07/20(土)20:02 ID:b/O9on/e0(1) AAS
乱数なんだから偏ってはいけない。
例えばサイコロを6回ふれば、必ず1〜6の数字が一回ずつ出るのが真の乱数だ
続けて1の目がでるなんてことはあってはいけない
俺の好きなテトリスも昔はテトリス棒が全然出なかったりしたもんだが
今のテトリスは同じものが続けて出ない。偏り無くまんべんなく出てくれるから
次に来るのが予測しやすい。これが真の乱数だ
521: (ワッチョイ 4f7d-woJQ) 2019/07/20(土)20:09 ID:CMictvk+0(2/3) AAS
つまりテトリスカンパニーのようにメルセンヌツイスタ株式会社みたいなのが数字の出る順番のルールを決めて
ひとつの言語にはひとつのメルセンヌツイスタライブラリしか認可しないというふうにして品質の
522(1): (ワッチョイ 3f73-jGuh) 2019/07/20(土)20:57 ID:2izalSzA0(2/3) AAS
>>518
全然違う
shuffleはただ位置を入れ替えるだけだから、最初の10個には必ず0から9が1つずつ含まれる
これが君の望む乱数のようだからそうすりゃいいんじゃね?と言ってるだけ
523: (ワッチョイ 3f73-jGuh) 2019/07/20(土)21:02 ID:2izalSzA0(3/3) AAS
>>522
その代わり、最初の9個を見れば10個目は100%予測できるから、そんなのを「普通は」乱数とは呼ばないんだけどな
ただ、君の言う乱数はどうやら普通とは違うようだから
524: (ワッチョイ 4f7d-woJQ) 2019/07/20(土)21:11 ID:CMictvk+0(3/3) AAS
ものによっては「7が最近出てないのでそろそろ出るはず」「1が何回も出るはずがない」を支持するデタラメ数が必要とされることはあるのだが
それは乱数で表現されるものではないので自前で実装するよりない
525: (ワッチョイ cf4e-NxfS) 2019/07/20(土)21:43 ID:/ET4uH9K0(1/2) AAS
乱数 まろやか で検索するといいぞ。ポイントは正規分布
526(3): 503 (ワッチョイ 3f2c-QKg6) 2019/07/20(土)21:51 ID:NKxgAyGK0(7/7) AAS
JavaScript でも作ってみたが、これも乱数が偏っている。
7, 1, 7, 7, 5, 4, 7, 4, 1
function get_random_int( ) {
return function( ) {
const min = 1
const max = 9
return Math.floor( Math.random( ) * ( max + 1 - min ) ) + min ;
};
}
const ary = [ ...Array( 25 ) ].map( get_random_int( ) )
省3
527: (ワッチョイ cf4e-NxfS) 2019/07/20(土)22:07 ID:/ET4uH9K0(2/2) AAS
>>526
赤黒が1/2の確率で出るルーレットがあります。
三回回したところすべて黒が出ました。
次に赤が出る確率は?
一般人「1/2」
バカ「こんなに黒が続いたんだからそろそろ赤が出ないとおかしい!偏っている!だから赤100%だ!!」
528(1): (ワッチョイ 3f52-5sVo) 2019/07/20(土)23:53 ID:QHhW8HGw0(2/2) AAS
>>526
乱数にけちつける前に10面ダイス買ってきて、10000回振って出目をメモして偏りを確認してこい。
それが片寄ってると思うなら、別の店でダイス買い直して再試行しろ。
終わるまでスレに帰ってくるなよ。
529: (アウアウエー Sabf-CMz4) 2019/07/21(日)01:29 ID:7an9cjGSa(1) AAS
リアルのダイスは安物だと
1の目と6の目で掘り具合が適当で
重心がばらつくから良くない
1をでかく掘ってあって
ちゃんとバランスとってる香具師を買え
530: (ワッチョイ 7fd2-W26c) 2019/07/21(日)05:50 ID:8kiQELFp0(1) AAS
>>503
欲しいデータはこんなの?
2 5 6 9 7 3 1 4 8
8 4 6 2 5 7 1 3 9
2 1 9 8 5 7 4 6 3
531: (ワッチョイ 4f7d-woJQ) 2019/07/21(日)06:37 ID:OIgMVs9g0(1) AAS
>>528
10面ダイスなんて偏ってるに決まってるだろ何次元人だお前
20面ダイスの下1桁を記録させるのが正しい
532: (ワッチョイ 8fb0-VOQx) 2019/07/21(日)14:26 ID:rj1b8/he0(1) AAS
単純にサンプル数が少なすぎる
2500回ぐらい生成してから文句言え
533: (ワッチョイ 3f73-jGuh) 2019/07/21(日)15:02 ID:NYTsshMI0(1/5) AAS
1から9まで出る乱数を9個抜き出したとき:
1から9までの数が1個ずつ含まれる確率
9!/9^9 = 0.09%
1から9までの数のうち4個ある数字が1つ、2個ある数字が2つ、1個ある数字が1つである確率
9(8C2)6(9C4)(5C2)(3C2)/2/9^9 = 0.7%
10倍ぐらい確率が違うんだよ
「君の言葉で言う偏る」のは確率で見てもむしろ当然
# 計算式が合ってるかは誰か検証して
534: (ワッチョイ 3f73-jGuh) 2019/07/21(日)15:05 ID:NYTsshMI0(2/5) AAS
あ、>>526 ね
分かるだろうけど
535: (ワッチョイ 3f73-jGuh) 2019/07/21(日)15:10 ID:NYTsshMI0(3/5) AAS
もっと単純化して言ってしまえば、コインを2回投げたときに、表裏が1回ずつ出る確率と
表か裏かのどちらかしか出ない確率は同じだというのはすぐ分かると思う
それを「どちらかしか出ない場合があるのは偏ってる!」と言ってるようなもんだよ、これは
536: (ワッチョイ 3f73-jGuh) 2019/07/21(日)16:40 ID:NYTsshMI0(4/5) AAS
こういうと、
「25回投げたときに、そのうち10回を取り出して8回以上表か裏が出てたら偏ってるじゃないか」
と言われそうなので、その確率も計算しておこう
面倒なのでPCでぶん回して計算すると、約49%だった。
つまり、25回投げたときに恣意的に10回を取り出して表か裏が8個以上あることなんて普通に
ありえることなんだよね
537: (ワッチョイ 3f73-jGuh) 2019/07/21(日)16:43 ID:NYTsshMI0(5/5) AAS
ちなみに、8回以上を9回以上に置き換えても13%の確率があるので、特段珍しいことでもない
さらにちなみに、この計算はRubyを使って行いましたw
538: (スッップ Sdaa-nIbq) 2019/07/28(日)16:46 ID:RyVu3FEFd(1) AAS
ActiveRecordの件数が多い時、メモリを大量に使った際に、その分のメモリが開放されないままになってるように見えるのですがこれは仕様ですか?
メモリ開放のやり方とか、そもそも件数が多すぎる場合はActiveRecord使わないほうが良いなどあったりするでしょうか…?
539: (ワッチョイ 8a33-SaMj) 2019/07/28(日)17:41 ID:x88Eo97q0(1) AAS
ActiveRecordは知らんけど、RubyのGCがあんまり働かないのはオレも経験したことがある。
いっそ自動処理をあてにしないで、適当なタイミングで明示的にGC.start()したほうがいいと思う。
あるいは、ちゃんと設定のチューニングをするか。
めんどくさそうなうえに、ちゃんと動作すんのかは知らんけどな。
外部リンク[html]:docs.ruby-lang.org
540: (スッップ Sdaa-qbpu) 2019/07/31(水)06:26 ID:F/SyAmOad(1) AAS
>>270
Railsはチュートリアルとか本とかネットの情報も多いけどSinatraは情報が少な過ぎるよ
541: (ワッチョイ 8a2c-aoqV) 2019/07/31(水)12:11 ID:6BPSvdm10(1) AAS
たぶん、インデックスを使っていない、select だろう。
ランキングとか、レコードを総なめ・全件取得する、select だろう
DB の実行計画を見ると、わかる
DB設計は、DB資格の教科書とか、ミックの本などで勉強していないと難しい。
バグのほとんどは設計段階で生じるから、SE の給料が、プログラマーよりも高い!
542(1): (ワッチョイ 0b14-3QQs) 2019/07/31(水)12:17 ID:JpBmxHct0(1) AAS
それだと設計ができない無能SEの給料は低くないといけない
543: (ワッチョイ ab7d-1GM0) 2019/07/31(水)12:20 ID:zH1G6UoN0(1) AAS
>>542
何荒らしにマジレスしてんの
544: (アウウィフ FFcf-tP4r) 2019/07/31(水)12:41 ID:+MN2XkdtF(1) AAS
馬鹿には無理
545: (スッップ Sd43-LBQ1) 2019/08/01(木)05:31 ID:n5HVCX7yd(1) AAS
同じリポジトリの同じソースからのデプロイで昨日は成功したのに今日は成功しないのは何でなんだぜ?
Heroku
546(1): (ワッチョイ 2dda-dfB4) 2019/08/01(木)05:46 ID:D666GHsD0(1) AAS
韓国に楯突いたことでアメリカからも敵国認定されてブロックされてしまったのだろうな
米国に置いてあるデータ、アメリカ製サービスからは早急に引き上げたほうがいい
エンジニアの生命線が...。米国の貿易施策でGitHubの利用制限を受けるイランなどの国々 | ギズモード・ジャパン
外部リンク[html]:www.gizmodo.jp
GitHub、米国の経済制裁対象国ユーザーによる非公開リポジトリ利用をブロック | 財経新聞
外部リンク[html]:www.zaikei.co.jp
547: (ワッチョイ bd14-F0Sa) 2019/08/01(木)12:25 ID:czAE5CE00(1) AAS
>>546
イランから手を引けばいいだけでしょ(笑)
548(1): (ワッチョイ 8595-7p+E) 2019/08/01(木)20:11 ID:WaJjQk0q0(1) AAS
ruby はよくある printf の類が日英混合文でも大丈夫?
perl で 日英両対応 align.pl 書いたけど 日本語はprintfのフォームと
ずれてしまったのでコードがそれを避けた書きかたになってしまって
気がはれない
549: (ワッチョイ 2333-uzAh) 2019/08/01(木)20:45 ID:lSJbqNGy0(1) AAS
>>548
たぶん言語は関係ない。
文字コード、文字判定、フォント、コンソールなど、環境次第な要素が多すぎる。
550: (ワッチョイ eb7d-SEhp) 2019/08/01(木)21:12 ID:MCSzD/uO0(1) AAS
Rubyとしては「STDOUTに流すだけで特に何もしてない」ような気がする
Cursesはなんかしてくれてるんだっけ?
551: (ワッチョイ 4584-ONLY) 2019/08/03(土)00:58 ID:uTJugp6Y0(1) AAS
逆にその日英混合文がダメな状況ってどういう状況だよ
552: (ワッチョイ 2333-uzAh) 2019/08/03(土)10:30 ID:sR/VT/6l0(1/2) AAS
いわゆる全角半角の文字幅やろ。
553(2): (ワッチョイ 9b7c-Ybim) 2019/08/03(土)22:04 ID:bbhz9sWw0(1) AAS
やった!!
俺の求めていたものだ
外部リンク:logmi.jp
一見楽そうに見えて、余計に面倒なことになるwww
こんなんだったら、初めから型宣言したほうがマシだわな
型宣言の何が嫌なんだろ(謎
意地?
DRYに反してるっていうけど、何処が?
まぁでも求めていた展開だ
本人も作りたくないであろうこんなツールに多大な時間を割くことで
省2
554: (ワッチョイ 2333-uzAh) 2019/08/03(土)23:28 ID:sR/VT/6l0(2/2) AAS
>>553
> DRYに反してるっていうけど、何処が?
Type obj=new Type()
じゃないの?型を2回書いてるじゃん!という。
なお、C#がそうだったんだけど、遠からず改善される予定。
Type obj=new()
# 最初からそうしといてよー、と思わないでもないけど。w
型のDRYを避ける方法はあるんだよな。
しかし、Rubyはそこから目をそらして、DRYを言い訳にして、とにかくなにがなんでもオブジェクトの宣言を含めたくないんだろう。
555(1): (ワッチョイ 75e7-27IP) 2019/08/04(日)03:31 ID:KgSPSwNu0(1) AAS
>>553
>DRYに反してるっていうけど、何処が?
外部リンク:qiita.com
> def sum_and_stringify(nums: List[int]) -> str:
> """Adds up the numbers in a list and returns the result as a string."""
> return str(sum(nums))
じゃないの?
型を2回書いてるじゃん!という。
なお本件、改善される計画はなく、いつまで待っても放置される予定。
# ML や Haskell なら最初から型アノーテーションなんて不要だからDRYだけど、
省4
556(2): (ワッチョイ 9b7c-Ybim) 2019/08/04(日)12:53 ID:uuq2lSJI0(1/4) AAS
あと
別ファイルに型定義書くのって立派なDRYじゃねーの?
だって、クラス名やメソッド名変更するとき
両方書き直さなきゃならないじゃねーか
これはDRY以外の何なんだ?
ほんと、ペテン師はいつも自分に都合のいい事だけ言うよな
分かっててすっとぼけるんだわ
信者には悪いが、マジで毎回そう
557(3): (ワッチョイ 9b7c-Ybim) 2019/08/04(日)13:05 ID:uuq2lSJI0(2/4) AAS
つまり、
普通に素直に型宣言するより
別ファイルに型定義書く方が
よりDRYだし面倒だし
この掛け違えたボタンで首が絞まる感じ何なん
もう普通に型書いたら?
アホらしすぎ
558(1): (ワッチョイ 9b7c-Ybim) 2019/08/04(日)13:18 ID:uuq2lSJI0(3/4) AAS
型定義を別ファイルの書くのって
丁度C言語が.hと.cに分かれてるのと同じ感じだよね
で、関数名変えるとき.hと.cの両方書き換えるっていうね
今更C言語に先祖返りってどうよ
あれDRYって何だっけ
559(1): (ワッチョイ 9b7c-Ybim) 2019/08/04(日)13:39 ID:uuq2lSJI0(4/4) AAS
あるクラスの名前を変更する
型定義ファイルに書いてあるクラス名を変更し忘れる
そのクラスの型定義が無くなり型チェックが効かなくなる
プログラマは型チェックが効いてると思い込みテストをサボる
バグを組み込んでしまう
あり得るシナリオだし、こういうのをDRYと言うのではww
同じような感じでヘッダと実装に分かれてるC/C++の場合は
これは間違ってるとコンパイルエラーになるから良いけど
Rubyの場合は修正し忘れてて型定義が見つからない状態になってても
それはそれとして、どうせ無テストになるだけでスルーでしょ
省5
560: (ワッチョイ 8514-F0Sa) 2019/08/04(日)15:37 ID:M00OQnGm0(1) AAS
まつもとが型のメリットを理解してないからどうしようもない
561: (ワッチョイ 232c-n0r7) 2019/08/04(日)20:45 ID:zjBZp1dd0(1) AAS
WEB+DB vol.111
詳解 Rails 6
コミッターが解説する、26ページ分の特集!
562(2): (ワッチョイ 75e7-27IP) 2019/08/05(月)01:20 ID:xLJRGiJi0(1/3) AAS
>>556-559
>別ファイルに型定義書くのって立派なDRYじゃねーの?
まず、この文章は「DRY違反じゃねーの」の間違いだろう
これだけでもアンチRubyがDRYという言葉の意味を理解せずに
トンチンカンな批判を繰り返している実証になる
次に上記の文章を:
>>別ファイルに型定義書くのって立派なDRY違反じゃねーの?
と訂正したとしても、答えは NO だ
確かに型推定を最初から放棄してユーザに型アノーテーション記述を
強制する言語(>>555)であれば、その型アノーテーション記述がソースファイルと
省5
563(1): (ワッチョイ 2333-uzAh) 2019/08/05(月)01:57 ID:kCWOwKEP0(1/2) AAS
>>562
> トンチンカンな批判を繰り返している実証になる
揚げ足をとれたからって、そんなに必死にならなくても。w
DRYDRYとうるさいのは信者くらいで、ふつうは実はそんなに気にしてないからな。しゃあない。
> 素のRubyソースコードから型定義ファイル rbi を自動生成できる
スケルトンみたいなこと?
その手のやりかたってヤバい原因になりがちだと思うんだけど、だいじょうぶなの?たいがい元ソースコードの変更に追い付けなくなって、うやむやになるよねえ?
省4
564: (ワッチョイ 75e7-27IP) 2019/08/05(月)02:20 ID:xLJRGiJi0(2/3) AAS
>>563
>揚げ足をとれたからって、そんなに必死にならなくても。w
揚げ足ってのは、DRYを逆の意味に理解していた(>>556)事実を、
あっさり >>557 の冒頭で指摘されちゃったこと?
まぁしゃあないわな、「揚げ足」を隠そうと必死になるのも www
565: 564 (ワッチョイ 75e7-27IP) 2019/08/05(月)02:21 ID:xLJRGiJi0(3/3) AAS
訂正
X:>>557
O:>>562
566: (ワッチョイ 9b7c-Ybim) 2019/08/05(月)07:34 ID:nl2V9bb60(1/8) AAS
画像リンク[jpg]:img.logmi.jp
こんなんを別ファイルに記述するはめになるんだ
クラス定義に似てるね
重複して同じようなことを二回書かなきゃならないって事
DRYの原則に反してるから型宣言を書きたくないって話だったのに
より一層DRYの原則に反してるね
C++のヘッダにそっくり
あと今更するなら最初からしておけば何かとよかったのにね
夏休みの宿題を最後にためておく人だったのかな
一方静的型言語にも型推論とか取り入れられてるけど
省10
567: (ワッチョイ 9b7c-Ybim) 2019/08/05(月)07:39 ID:nl2V9bb60(2/8) AAS
>また、ソースコードと同一ファイルにアノーテーション(注釈、いわゆるコメント)として
この方式はmatzが滅茶苦茶に嫌ってるから採用される事はないね
あの人わけわからないぐらいこのことに固執してるからね
また何も知らないか、知ってても嘘をつく
いつものパターンね
568: (ワッチョイ 9b7c-Ybim) 2019/08/05(月)13:40 ID:nl2V9bb60(3/8) AAS
ちなみにmatzがソースコードに型を書きたくない理由だが
色々言ってるが、彼は詐欺師だから、本音ではないし、嘘も含まれる
まず
外部リンク:logmi.jp
にも書いてあるし、たびたび登場するDRYに反するというやつ
言うまでもないが別ファイルに書く方がDRYに反するし
これは多分、彼の本音ではないし、煙に巻くための適当な言い訳
つぎに、静的型と動的型は振り子のようにトレンドが移り変わり
今後また動的型言語の時代が来るから、というもの
いやいやこれから先、動的型の時代など来ないだろうし、そもそもの前提がおかしい
省3
569(1): (ワッチョイ 9b7c-Ybim) 2019/08/05(月)13:43 ID:nl2V9bb60(4/8) AAS
もう一つ
ここに書いてあることが実は本音(らしい)
外部リンク:jp.quora.com
要約すると、Rubyに型アノテーションが導入されたら
型を書いた方が行儀が良いという風潮が蔓延するだろうが、自分は型を書きたくないので
そのために型をかけないようにしておく、というもの
良いことが出来ると、良いことをする風潮になるだろうが
自分は悪いことがしたいから、良いことが出来ると困る
と言っているわけで、マジキチなのがお分かりいただけるだろうか
法律があると法律を守らなければならないから嫌
省5
570: (ワッチョイ 23da-dfB4) 2019/08/05(月)13:47 ID:3mqInMrR0(1) AAS
そろそろこっちでやれ
アンチということではなく本スレの代わりとして
Rubyについて(アンチ専用) Part005
2chスレ:tech
571: (ワッチョイ 9b7c-Ybim) 2019/08/05(月)13:52 ID:nl2V9bb60(5/8) AAS
しかし>>569に書いたようなことを公式で言うとマジキチだから
静的型を導入しない理由を聞かれると、いつも適当なことを言って言葉を濁しているわけ
これでRuby3.0で導入されるといわれる型チェックが
どうしてああいう感じになってるか良くわかるでしょ
572: (ワッチョイ bd14-F0Sa) 2019/08/05(月)13:52 ID:MNXFY7cg0(1/10) AAS
型を書きたくないんじゃなくて、Rubyの設計上、型を書こうとすると
設計レベルで作り直さなきゃいけなくなるから面倒くさいだけだよ。
573: (ワッチョイ ad7c-ONUK) 2019/08/05(月)14:07 ID:NOA3rn3w0(1/2) AAS
Perlも6で詰んだしな
*byも脱皮失敗で死亡
pythonは2->3でヨタヨタだがうまく離陸してくれ
574: (ワッチョイ 037d-SEhp) 2019/08/05(月)14:08 ID:kz1352lP0(1) AAS
単純に全体の完成度がバージョン0.8くらいに戻るよね
そこまでして「わざわざRubyに」導入するべきものでもないということではあろう
昔ならともかく今は他の言語もあるのだから
これ言うと揉めるけどな
575: (ワッチョイ bd14-F0Sa) 2019/08/05(月)14:14 ID:MNXFY7cg0(2/10) AAS
1. 型を導入すると良いものになる。
2. だけど全体を再設計しなければならない。(面倒くさい)
3. その上、使いやすくすると、言語がガラリと変わる
4. ユーザーもその「使いやすい言語」に乗り換えるのが面倒くさい
5. 結果使われなくなるのがわかっている。
6. Ruby離れを防ぎつつ、型を導入するには、コレしかなかった
576(1): (ワッチョイ ad7c-TyxI) 2019/08/05(月)14:23 ID:NOA3rn3w0(2/2) AAS
型無し*byに不満な人はElixirやればいい
577(3): (ワッチョイ ad61-5VcE) 2019/08/05(月)14:27 ID:bU1KwNWi0(1/5) AAS
LISP や Smalltalk が好きな人にとって使いやすい Perl の代替となるスクリプト言語なんだから、型欲しい人は他の言語使えば? と言うだけの話。
型を導入すると対話環境での使い勝手が悪くなり、書き捨てのプログラムを書く際の手間が増える。それは楽しくない。
型を使うと速くなる? そんなに速度が要求される要件に使うなんて決定をする奴がおかしい。 型を使うとバグが減る? そんなにレベルの低い人は使わなければいい。
妥協できるラインが、今の、書きたいやつは書けば良いんじゃない?でも、文法を拡張して既存コードとの非互換生むような修整は受け入れられない。
と言う話でしょ。
578(1): (ワッチョイ ad61-5VcE) 2019/08/05(月)14:32 ID:bU1KwNWi0(2/5) AAS
>>576
そう。 Elixir なり Crystal なりを使えばいいだけの話。
なんでRubyに型を導入することにこだわるんだろう。
579: (ワッチョイ 23a5-dfB4) 2019/08/05(月)15:48 ID:Umi2Ipdj0(1) AAS
ドキュメントに型を書くことになるんだから、そこの仕様をしっかり決めるべきだった
580(1): (ワッチョイ bd14-F0Sa) 2019/08/05(月)16:30 ID:MNXFY7cg0(3/10) AAS
>>577
> 型を導入すると対話環境での使い勝手が悪くなり、書き捨てのプログラムを書く際の手間が増える。それは楽しくない。
それはstrictモードを作ればいいだけなんよ
581(1): (ワッチョイ bd14-F0Sa) 2019/08/05(月)16:33 ID:MNXFY7cg0(4/10) AAS
>>577
> 型を使うと速くなる? そんなに速度が要求される要件に使うなんて決定をする奴がおかしい。
> 型を使うとバグが減る? そんなにレベルの低い人は使わなければいい。
その二つ、論点のすり替えだよね?
型を使うと速くなる? → それは事実 → だから人間の問題にすり替える。
型を使うとバグが減る? → それは事実 → だから人間の問題にすり替える。
事実ならまず「それは事実だね」って言ってみようか?
事実に対して反論するかと思いきや、反論しないんだもの(笑)
582: (ワッチョイ bd14-F0Sa) 2019/08/05(月)16:34 ID:MNXFY7cg0(5/10) AAS
> でも、文法を拡張して既存コードとの非互換生むような修整は受け入れられない。
結局本音はそこ。
速くなるとかバグが減るという "事実" は存在するが、
既存コードの非互換性をうむから、改善できない。
583: (ワッチョイ ad61-5VcE) 2019/08/05(月)17:42 ID:bU1KwNWi0(3/5) AAS
>>581
型を入れてもオープンクラスな言語では大して速度は上がらない。精々一部のループの速度が上がるだけ。それは事実。java みたいに final や primitive 型入れれば効果は相当あると思うけど、それは Ruby を否定することになる。
型を入れると未熟なプログラマでもコンパイル時に分かる程度のバグなら発見できることはある。それは事実。でも実行時例外の回避は出来ないし、オープンクラスを使ったダックタイピングという Ruby の言語デザイン自体を否定することになる。
> 事実に対して反論するかと思いきや、反論しないんだもの(笑)
反論もなにも、自分はこのスレッドで >>344 >>577 >>578 しか書いてないよ。
だから、なんらかの反論を待ってるならその相手は自分ではない。
自分は Ruby に非互換を生む型の導入を期待するくらいなら、型有りの別の言語で書けばいいじゃんという立場。
>>580
この場合の strict モードって何を指してるの?
RPython 的に SRuby 作って型使いたい人は SRuby 使えってこと?同一バイナリにしてモード切り替えするとしたら、パーサも VM もほぼ別物レベルになると思うけど。
省1
584: (ワッチョイ bd14-F0Sa) 2019/08/05(月)17:55 ID:MNXFY7cg0(6/10) AAS
型を入れてもオープンクラスな言語では大して速度は上がらない
→オープンでない言語なら速度は上がる
→速度を上げるためにはオープンでなくすれば良い
→そのような改善方法は存在するが、非互換性をうむから、取り入れられない。
→まつもと「Rubyでは改善はなんです。諦めてください」
585(1): (ワッチョイ bd14-F0Sa) 2019/08/05(月)17:55 ID:MNXFY7cg0(7/10) AAS
→まつもと「Rubyでは改善は無理なんです。諦めてください」
586(1): (ワッチョイ bd14-F0Sa) 2019/08/05(月)17:58 ID:MNXFY7cg0(8/10) AAS
>この場合の strict モードって何を指してるの?
適切な型を書いたものがstrictモード
だがどのオブジェクト指向でも、基底クラスのobject型として扱うことはできる。
暗黙的にobject型の変数を使ってるとみなしているのが今のRuby。
変数の型をobject型と書く(もしくは省略)か、適切な型を書くかの違い。
587: (ワッチョイ 65cd-mfhl) 2019/08/05(月)18:29 ID:WUbT37Lx0(1) AAS
> 実行時例外の回避は出来ないし
は?
588: (ワッチョイ 2333-uzAh) 2019/08/05(月)18:55 ID:kCWOwKEP0(2/2) AAS
Rubyの癌は、型を指定できないことよりも、宣言ができないこと。
型を指定できないのは、宣言ができないことによる副産物。
宣言は、ここからこのオブジェクトを使うで、ということを明確にできてわかりやすいのに、何で嫌がってんだか。
589(1): (ワッチョイ ad61-5VcE) 2019/08/05(月)19:04 ID:bU1KwNWi0(4/5) AAS
>>586
strict モードにしたら
Class が凍結されるの?
途中でモードを切り替えられるの?
そのスコープは?
マルチスレッド時の挙動は?
Object クラス(Kernelも?)への継承関係がなくなるの?
データは VALUE 型じゃなくなるの?
オブジェクトのデータ構造は自分で C で定義するの?
既存CAPIとの整合はどう取るの?
省7
590(1): (ワッチョイ bd14-F0Sa) 2019/08/05(月)19:13 ID:MNXFY7cg0(9/10) AAS
>>589
うん?だからそういう問題が発生するから、
Rubyでは型という素晴らしい道具を導入することが
設計上不可能って話をしてるんだが?
591: (ワッチョイ ad61-5VcE) 2019/08/05(月)19:28 ID:bU1KwNWi0(5/5) AAS
>>590
そのかわり型ということを考えなくても計算機と対話することができる日常用途に便利な言語になったわけだ。
592: (ワッチョイ bd14-F0Sa) 2019/08/05(月)19:32 ID:MNXFY7cg0(10/10) AAS
Rubyにも型があるんだから、型考えてるでしょw
それともどんな型を入れても、エラーにならずに動くコードかいてんのか?
593: (ワッチョイ 9b7c-Ybim) 2019/08/05(月)21:15 ID:nl2V9bb60(6/8) AAS
型チェックが欲しい人は他の言語使えって言ってるけど
Ruby3.0で型チェックが導入されるんだからそこは前向きに検討しようよwww
matzが言うようにRubyに型が指定できるようになったら、指定すべきという勢力も
出てくるだろうし、一方でわざと型を書くのが億劫になる仕様にしてあるし
どちらの勢力が勝つか未知数というか
平行線が続いて空中分解してクラッシュするかもしれないし
ここでも今そういう意見があるように、今までは型チェックが欲しい人は他の言語使え
だったわけだけど、Ruby3.0からはそうじゃなくなるから更にカオスになるだろう
今までは型を書くべきかどうかはRuby 対 他の言語って感じだったけど
これからはRubyの中でそれが起こる
省2
594: (ワッチョイ 9b7c-Ybim) 2019/08/05(月)21:19 ID:nl2V9bb60(7/8) AAS
それに加えて型定義ファイルの自動生成の話もあるが
まぁ最初は使い物にならないだろうからそれも含めてカオスになる
それがRuby3.0
静的型言語も動的型言語を取り入れてるっていうけど
こっちは何の問題もなく行われてて全くの静寂なのが笑える
まぁ型推論はコンパイラが型を推論してくれるというだけで
型は静的に決定されているわけだから当たり前なんだけど
595: (ワッチョイ 9b7c-Ybim) 2019/08/05(月)21:29 ID:nl2V9bb60(8/8) AAS
型は書いたほうが良いが今更自然な形での導入は難しい
しかし3.0で書きにくいけど書けるようになる
書けるようになるなら書いたほうが良い
でも書きにくい
でも書かなきゃ
でも書きにくい
書きたくない
でも書かなきゃ
でも書きにくい
これがRuby3.0
596(1): (ブーイモ MM43-SVyD) 2019/08/05(月)21:34 ID:ubcyIKEPM(1) AAS
型注釈、PythonとRuby両方でやってみたけど
Pythonの方が全然完成度高い
試験的な実装とはいえRubyの方は複雑になるとチェック通せなくなる
597: (ワッチョイ ad7c-ONUK) 2019/08/06(火)15:11 ID:SvihPrAV0(1) AAS
実行時まで型が決まらない
ひとことで言え
598: (ワッチョイ 8514-F0Sa) 2019/08/06(火)17:04 ID:9obbnMlM0(1/2) AAS
実行時まで型が決まらないと言うが、
コードは特定の型もしくは特定のインターフェースを備えた
型であるという前提になってるんだよなw
599(1): (ワッチョイ 23a5-fQzx) 2019/08/06(火)18:28 ID:8UHtiNBK0(1) AAS
perl5の末期に登場したのがuse strictとuse warningだよ
それを順当に真似てるだけだ
他意は無い
600: (ワッチョイ 9b7c-Ybim) 2019/08/06(火)20:21 ID:vJC9K0rF0(1) AAS
前々からの、掛け違えたボタンの、いよいよ一番上を閉めようとしている段階なのだよ
そんなことは出来ないか、不格好か、首が絞まるか
何にせよ、こういう仇花的なことをしなければならない状況に追い込めたのは
日々のみんなの空気づくりのおかげであって、いわば人類側の勝利だよ
おめでとう
601: (ワッチョイ 239c-38Du) 2019/08/06(火)20:25 ID:4qDHXZiE0(1) AAS
まずはモンキーパッチを抑制するオプションを追加して
静的に解析できるようにするのが先でしょ
602: (ワッチョイ 2333-uzAh) 2019/08/06(火)20:27 ID:SN9O18fE0(1) AAS
>>599
Perl5に「末期」なんかないぞ。
まだまだ現役だからな。w
上下前次1-新書関写板覧索設栞歴
あと 400 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.679s*