Qiita 7 - キータぞ、来たぞ、キータだぞー (289レス)
上下前次1-新
100(1): 09/27(土)17:02 ID:mMYsldco(1) AAS
CとC++はこの手の気持ち悪いオジサン湧くからほんと無理
101: 09/27(土)17:19 ID:CHztWjoA(1/2) AAS
>>94
その記事「特定のCPU/GPU環境」を書かないのが片手落ちやな
102(1): 09/27(土)20:09 ID:16nWnOPC(1) AAS
>>100
直前に出たRustとC/C++の違いは
C/C++はお前のようなバカにも理解できるように分かりやすく話してあげてることだぞ
103(1): 09/27(土)20:36 ID:jktxSQ82(1/4) AAS
>>77
半開区間で書く方が便利な場合があることを誰も否定してはいないだろう。一方、閉区間で
書く方が便利な場合もある。例えば1からnまでの自然数を表示したいときがそうだが、
半開区間しかないPythonではfor i in range(1, n + 1): print(i)なんてひねくれた書き方を
強要されるし効率も悪い(Pythonで効率を云々しても意味ないが)。だから、半開区間と
閉区間の両方の記法を提供するのが良い。
半開区間を表すのに左右対称な..を使うのは紛らわしいので不適切。Pascalなどで..で閉区間を
表す慣用が定着していたにもかかわらず、..で半開区間を表す愚行を最初にやらかしたのはDか。
その前車の轍をC#, Go, Rustが踏んでしまった。特に.NET兄弟のF#とPowerShellが..を閉区間で
既に使っていたのにC#が半開区間を表すのに..を導入してしまったのは大きな誤りだった。
Dはほぼ死語と化したから、..で半開区間を表す不適切な記法も消え去るべきだな。
104: 09/27(土)20:44 ID:CHztWjoA(2/2) AAS
閉区間イラネエ
105(1): 09/27(土)21:04 ID:h+m11Qj8(1/3) AAS
閉区間を表す記号を用意すべきかどうかについてはそれぞれ考え方の違いがあるんだなと思うが、.. は左右対称だから閉区間にすべきというのは正直よく分からん理由付けだわ。Pascalだってそんな理由で .. を閉区間の記号にしたわけではないと思うが。
106(1): 09/27(土)21:10 ID:B/IRYC2K(3/4) AAS
>>103
多くの言語が半開区間を基本として扱っている理由は、半開区間だけが優れた性質を備えていてプログラミングに適しているためだよ。
半開区間だけが、start~endは長さ start - endを示し、startから長さnはstart~(start + n)になり、長さ0をstart~startで示すことができ、start~endをstart~middleとmiddle~endの2つに分割できる。
間違えた古い言語に習うことなく、半開区間をstart:endやstart..endなど簡素に記述するそれらの言語C# Go Rust Pythonなどが正しいよ。
JavaScriptもarr.slice(start, end)は半開区間であり、半開区間を基本とする言語が多数派だね。
107: 09/27(土)21:12 ID:PCqkgGFG(1) AAS
>特定のCPU/GPU環境と断ってる
>C言語仕様と特定CPU仕様を履き違えて未定義動作って言いたいだけの馬鹿の一つ覚え
記事のコードがダメのはC言語の仕様として未定義動作と規定されてることをやってるからで特定CPU関係ないよ。
108(2): 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): 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: 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): 09/27(土)21:54 ID:h+m11Qj8(2/3) AAS
① 多用される半開区間を少ない記号で書けるよう .. を半開区間の記号にしました。
② Pascal以来の伝統を重視して .. を閉区間の記号にしました。
③ 閉区間の記号は数学記号に倣って左右対称であるべきなので .. を閉区間の記号にしました。
自分は、説得力を感じる度合いとしては① >= ② >>> ③ かな。③ははっきり言ってパラノイアの戯言レベルの物言いにしか思えない。
また、半開区間の記号を ..< とか ..〜 のような冗長で読みにくい記号にする前提なら、それが .. を閉区間の記号にしたくない最大の理由になるかな。Pascalのように閉区間の記号しか設けていないのなら仕方ないが、開区間と閉区間の記号を両方用意するなら、開区間の記号の方をスッキリした記号にして欲しい。Rubyの .. と... で許容範囲ギリギリくらい。
112: 09/27(土)22:08 ID:jktxSQ82(4/4) AAS
>>111
意味がある記号を書くのを冗長とは言わない。消すのを愚行という。Pythonが意味がある{}を消したのも愚行。
そんなに文字数を減らしたいなら半開区間の記号を.~にしたらどうか。
113: 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
左半開区間(a, b] a<..b
114(1): 09/27(土)23:23 ID:h+m11Qj8(3/3) AAS
このスレでパラノイアの妄執を開陳されてもなぁ。
..< とか <..< とかで「一貫してるぞ、わーい」って喜べるの貴方くらいだよ。
115(2): 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): 09/28(日)00:57 ID:aU9wcwp7(1/11) AAS
>>114
108と113は別人だから、少なくとも2人はいるな。左右対称の..が閉区間に見えるのが自然な感覚なのに、
それに反して半開区間を割り当てているのが正解だなんて言い張っている方がカルト教団だよ。
数学に固執する本当のパラノイアはJuliaの作者だな。文字列連結演算子には+を使うのが自然な感覚なのに、
数学では+は可換演算子だから不適切で、*は非可換演算子の場合もある(例:行列演算)から*を使うのが
適切と言い張っている。
117: 09/28(日)01:05 ID:IhNFMRKQ(1) AAS
>>115
合理的だな
118: 09/28(日)01:15 ID:aU9wcwp7(2/11) AAS
>>115
<は右の値を含まないことが一目瞭然だが、..はそうではなく右の値を含むようにしか見えない。
119(1): 09/28(日)01:22 ID:OpklV7ok(1) AAS
対称なstart:endで半開区間を示す言語も多いけどそれには文句をつけずに
なぜかstart..endだけに文句をつけているから単なるキチガイだと思う
120: 09/28(日)01:28 ID:aU9wcwp7(3/11) AAS
>>119
:で半開区間を表す言語なんてあったっけ?
121: 09/28(日)01:34 ID:exR0IU1B(1) AAS
マイクロソフトまでもがC#8.0でついに導入した範囲構文を
「start..end」と記述して半開区間を意味することにしちゃったからね
半開区間が多数派だよ
122: 09/28(日)02:06 ID:OkDUf4Ut(1) AAS
>>102
気持ち悪いから絡んでくんなRust信者
123(1): 09/28(日)02:22 ID:/6w9hfWi(1) AAS
現在メジャーに使われているプログラミング言語で調査してみた
start:endやstart..endと書いた時にどちらを意味するか?
【閉区間】Ruby
【半開区間】C# Go Python Rust
124(1): 09/28(日)03:25 ID:1+QqAxps(1) AAS
Rubyでも半開区間はstart...endと左右対称な形で書くよ
「半開区間を左右対称な形に記述するな!」と主張してる>>108は頭おかしい
125(1): 09/28(日)06:17 ID:riDxLC/x(1) AAS
彼の主張する
・閉区間はPascalと同じstart..end
・半開区間は左右非対称な記号列
を満たす言語はそもそも存在するの?
Pascal自体は半開区間が存在しないから満たさない
>>123の各言語はRubyを含めて半開区間が左右対称な記号列
126: 09/28(日)06:43 AAS
>>91
>>>90
>区間の長さが0だった話じゃなくて、長さ0を表現するのにstartが具体的な値持ってるのはどうなのと聞いています。
これすげえな
多重ループすら見たことないのか
127: 09/28(日)08:23 ID:0sdmbxgV(1) AAS
ここの住人もQiitaと同レベルだよな
128: 09/28(日)08:34 ID:SzcnPpn2(1) AAS
争いは同じレベルの者同士でしか発生しないからな
129(2): 09/28(日)13:02 ID:iPJCP/07(1/7) AAS
現行の言語のデザインに何も疑問を持たないのはそれだけの人
上下前次1-新書関写板覧索設栞歴
あと 160 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.011s