Qiita 7 - キータぞ、来たぞ、キータだぞー (768レス)
1-

107: 2025/09/27(土)21:12 ID:PCqkgGFG(1) AAS
>特定のCPU/GPU環境と断ってる
>C言語仕様と特定CPU仕様を履き違えて未定義動作って言いたいだけの馬鹿の一つ覚え
 
記事のコードがダメのはC言語の仕様として未定義動作と規定されてることをやってるからで特定CPU関係ないよ。
108
(2): 2025/09/27(土)21:17 ID:jktxSQ82(2/4) AAS
>>105
数学での表記も閉区間と開区間の記号は左右対称で、半開区間は左右非対称。

 閉区間[a, b] 開区間(a, b) 左半開区間(a, b] 右半開区間[a, b)

..は閉区間にしか見えない。右半開区間は..<か..~にすべきなのにたった1文字をケチって
バグを呼び込むのは愚行としか言いようがない。

>>106
for i in range(1, n + 1): print(i)がプログラミングに適しているとでも?
109
(1): 2025/09/27(土)21:29 ID:B/IRYC2K(4/4) AAS
>>108
それら現在メジャーな各言語の、range(srart, end)もslice(start, end)もstart:endもstart..endも全て半開区間を意味しているため、間違える人はいなくて、初心者もすぐ理解して誰も困っていないよ。
0からn個がrange(0, n)
1からn個がrange(1, n + 1)
2からn個がrange(2, n + 2)
とてもわかりやすくなっているね。
110: 2025/09/27(土)21:50 ID:jktxSQ82(3/4) AAS
>>109
そんなものがわかりやすいわけないだろ。2からnまでの自然数を表示したい場合にはn - 1個だから
右端はn - 1 + 2 = n + 1でrange(2, n + 1)なんていちいち計算するのかw

mからn個ならC#のEnuemerable.Rangeが分かりやすい。

0からn個がEnuemerable.Range(0, n)
1からn個がEnuemerable.Range(1, n)
2からn個がEnuemerable.Range(2, n)

理解していなくて間違えるのではなく、理解しているが左右対称の見た目につられてうっかり間違えやすい。
それなのにわずか1文字をケチるのは愚行。
111
(1): 2025/09/27(土)21:54 ID:h+m11Qj8(2/3) AAS
① 多用される半開区間を少ない記号で書けるよう .. を半開区間の記号にしました。
② Pascal以来の伝統を重視して .. を閉区間の記号にしました。
③ 閉区間の記号は数学記号に倣って左右対称であるべきなので .. を閉区間の記号にしました。

自分は、説得力を感じる度合いとしては① >= ② >>> ③ かな。③ははっきり言ってパラノイアの戯言レベルの物言いにしか思えない。

また、半開区間の記号を ..< とか ..〜 のような冗長で読みにくい記号にする前提なら、それが .. を閉区間の記号にしたくない最大の理由になるかな。Pascalのように閉区間の記号しか設けていないのなら仕方ないが、開区間と閉区間の記号を両方用意するなら、開区間の記号の方をスッキリした記号にして欲しい。Rubyの .. と... で許容範囲ギリギリくらい。
112: 2025/09/27(土)22:08 ID:jktxSQ82(4/4) AAS
>>111
意味がある記号を書くのを冗長とは言わない。消すのを愚行という。Pythonが意味がある{}を消したのも愚行。

そんなに文字数を減らしたいなら半開区間の記号を.~にしたらどうか。
113: 2025/09/27(土)22:45 ID:fM3CYn91(1) AAS
> 閉区間[a, b] 開区間(a, b) 左半開区間(a, b] 右半開区間[a, b)

これでいうとrust方式は一貫性の点で詰んでないか?
閉区間[a, b] a..=b
開区間(a, b) ???
右半開区間[a, b) a..b
左半開区間(a, b] ???

pascal方式だと以下のように拡張しうる余地がある
閉区間[a, b] a..b
開区間(a, b) a<..<b
右半開区間[a, b) a..<b
省1
114
(1): 2025/09/27(土)23:23 ID:h+m11Qj8(3/3) AAS
このスレでパラノイアの妄執を開陳されてもなぁ。
..< とか <..< とかで「一貫してるぞ、わーい」って喜べるの貴方くらいだよ。
115
(2): 2025/09/27(土)23:40 ID:xS2lIG/M(1) AAS
Rustは非常にシンプルで
最も多用されて使いやすい半開区間
従来 i = 0 ; i < n を 0..n と表記
稀に用いられる閉区間
従来 i = 0 ; i <= n を 0..=n と表記
このようにシンプルに従来と対応している
この2種類しかないため逆に取り違えて誤用することもない
116
(1): 2025/09/28(日)00:57 ID:aU9wcwp7(1/11) AAS
>>114
108と113は別人だから、少なくとも2人はいるな。左右対称の..が閉区間に見えるのが自然な感覚なのに、
それに反して半開区間を割り当てているのが正解だなんて言い張っている方がカルト教団だよ。

数学に固執する本当のパラノイアはJuliaの作者だな。文字列連結演算子には+を使うのが自然な感覚なのに、
数学では+は可換演算子だから不適切で、*は非可換演算子の場合もある(例:行列演算)から*を使うのが
適切と言い張っている。
117: 2025/09/28(日)01:05 ID:IhNFMRKQ(1) AAS
>>115
合理的だな
118: 2025/09/28(日)01:15 ID:aU9wcwp7(2/11) AAS
>>115
<は右の値を含まないことが一目瞭然だが、..はそうではなく右の値を含むようにしか見えない。
119
(1): 2025/09/28(日)01:22 ID:OpklV7ok(1) AAS
対称なstart:endで半開区間を示す言語も多いけどそれには文句をつけずに
なぜかstart..endだけに文句をつけているから単なるキチガイだと思う
120: 2025/09/28(日)01:28 ID:aU9wcwp7(3/11) AAS
>>119
:で半開区間を表す言語なんてあったっけ?
121: 2025/09/28(日)01:34 ID:exR0IU1B(1) AAS
マイクロソフトまでもがC#8.0でついに導入した範囲構文を
「start..end」と記述して半開区間を意味することにしちゃったからね
半開区間が多数派だよ
122: 2025/09/28(日)02:06 ID:OkDUf4Ut(1) AAS
>>102
気持ち悪いから絡んでくんなRust信者
123
(1): 2025/09/28(日)02:22 ID:/6w9hfWi(1) AAS
現在メジャーに使われているプログラミング言語で調査してみた
start:endやstart..endと書いた時にどちらを意味するか?
【閉区間】Ruby
【半開区間】C# Go Python Rust
124
(1): 2025/09/28(日)03:25 ID:1+QqAxps(1) AAS
Rubyでも半開区間はstart...endと左右対称な形で書くよ
「半開区間を左右対称な形に記述するな!」と主張してる>>108は頭おかしい
125
(1): 2025/09/28(日)06:17 ID:riDxLC/x(1) AAS
彼の主張する
・閉区間はPascalと同じstart..end
・半開区間は左右非対称な記号列
を満たす言語はそもそも存在するの?

Pascal自体は半開区間が存在しないから満たさない
>>123の各言語はRubyを含めて半開区間が左右対称な記号列
126: 2025/09/28(日)06:43 AAS
>>91
>>>90
>区間の長さが0だった話じゃなくて、長さ0を表現するのにstartが具体的な値持ってるのはどうなのと聞いています。

これすげえな
多重ループすら見たことないのか
1-
あと 642 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.021s