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

160: 09/28(日)21:12 ID:aU9wcwp7(4/11) AAS
>>124
Rubyは閉区間と半開区間の両方を提供したことと、閉区間に左右対称な..を採用したことでは
賢明だったが、半開区間に左右対称な...を採用したのは惜しい誤りだったな。..とも判別しづらいし。
..<か..~にすべきだった。

>>125
>>66にも書いたように、Swiftでは閉区間は...で左右対称、半開区間は..<で左右非対称だよ。
閉区間はPascalの..より.が1つ多い...だが、左右対称という点では共通する。

増分も指定できるように拡張することを見越すと、半開区間には..<より..~の方が適している。
開始値..増分..<終了値だと増分が負のとき変な感じがするが、開始値..増分..~終了値ならば
問題ないから。

もっともSwiftでは増分指定では記号を使わない。stride(from: 開始値, through: 終了値, by: 増分) の
ように省略不可の名前付き引数を書かせる。そして、名前付き引数だから順不同ということもなく、
この順でしか受け付けない。このようなガチガチの書式で固めたのもバグを防ぐための用心だろう。
Fortran, Juliaでは開始値:終了値:増分だがMATALAB, Octave, Scilabでは開始値:増分:終了値で
順序が異なるため、混同による書き間違えの恐れがあるから。
161
(2): 09/28(日)21:13 ID:aU9wcwp7(5/11) AAS
>>131
>>116に挙げたJuliaの作者じゃないから、数学に合わせること自体に固執しているわけではない。
左右対称な..が閉区間を表すのが自然な感覚で、それに反するのはバグの元だからやめるべきだと
いうのが根源的な理由で、数学はそれに反していない例として挙げたに過ぎない。

人間は機械ではないから見た目に惑わされやすい。機械だけが相手なら半開区間をi!jで表せば
効率が最も良いし、多くの言語では破壊的変更も文法的に不要で好都合なはずだが、人間の
感覚では!は半開区間とは容易に結びつかない(:の変形と見なせば結びつかなくもないが)し、
|とも判別しづらいから不適当。

屁理屈を捏ねて自然な感覚に反することを強制するのは、ギークの村社会のキモい悪習としか
言いようがない。プログラム言語の記法の選定はUI設計の一種なのに、不自然で間違えやすい
記号を採用するのは工学的センスが絶望的にない。UIは美的にも心地良いことに越したことはなく、
その点でも見苦しい略語を多用するRustは落第だな。そもそも名前からして汚らしい。

>>144
基本ラテン文字の大文字全体を'A'..'Z'で表すのが素直な感覚(EBCDICのような化石はこの際
無視して良い)で、'Y'までしか含まないと言い張るのは無理がある。'A'..='Z'は冗長だし、
'A'..'['では何を意図しているかすぐには分からない人が多いだろう。
162
(2): 09/28(日)21:25 ID:YRR4qqFp(1) AAS
Rustのイテレータがとてもわかりやすい
【C】i = 0 ; i < n; i++
【Rust】0..n

【C】i = 0 ; i <= n; i++
【Rust】0..=n
対応している
163: 09/28(日)21:32 AAS
>>158
書いてないぞ
164
(1): 09/28(日)21:38 AAS
>>161
そんな感覚は無いのでお前の負け
ソース無し
165
(2): 09/28(日)21:43 AAS
>>161
自然なのは左右対称とかどうでもいい猿の妄想じゃなくて
最も使われるものが最もシンプルに書けるという情報理論的効率性な?
166
(3): 09/28(日)22:05 ID:aU9wcwp7(6/11) AAS
>>164
正直に白状しろ。心当たりが全くなくはないはずだ。

C++ STLの.begin()と.end()の組の.end()を書くときにも、もやもやする感覚が常に伴うな。
『リーダブルコード』に、

 プログラミングの命名規約では、包含/排他的範囲にbeginとendを使うことが多い。
  でも、endは少しあいまいだ。例えば、「本の終盤(the end of the book)を読んでいる」の
 「end」は包含的だ。残念ながら英語には「ちょうど最後の値を超えたところ」を意味する簡潔な
 言葉がない。

と述べられている通り。簡潔な言葉がないなら作れば良かったと思う。例えば、endの次(next)だから
nendとか。無闇に造語すべきではないが、どうしても必要なら作れば良い。bitは成功例だろう。

とは言え、複数の本を本棚に並べ右端の横にブックエンドを置いたとき、.end()は本そのものではなく
ブックエンドだと考えれば、.end()はまあ納得できるから..ほど悪くはなく許容できる。

>>165
誤記予防という機能性を犠牲にしてたった1文字をケチる愚行。第一、閉区間より半開区間の方が頻繁に
使われるという主張も怪しい。作るプログラムによって異なるだろ。
167
(1): 09/28(日)22:07 AAS
>>166
なんのソースもない中卒の妄想は意味ない
ソースを出せ
出せないなら自殺して詫びろ
168: 09/28(日)22:08 AAS
>>166
曖昧なことなど一つもない
定義を見れば良いだけ
定義以外の妄想してる時点で中卒無職だと確定する
169: 09/28(日)22:11 ID:5mXw367y(1) AAS
>>162
従来との対応関係のあることが最も重要なのでそれで正しい
170: 09/28(日)22:13 AAS
>>166
りーだぶるwwww
こーどwwwww

お前無職だろ?
そんな実績0の無能な猿が書いたゴミを流行りで買ってる時点で無職バレバレ
171
(3): 09/28(日)22:15 ID:aU9wcwp7(7/11) AAS
>>167
低学歴ではないが、低学歴という煽りもここでは意味がないね。プログラム言語なんて小学生でも
分かる程度のものでしかないし、一般的感覚も自然言語と高校までの数学によって形成されるものだから。
そこから乖離した屁理屈をあれこれほざいても、ギークのキモい戯言でしかない。
172: 09/28(日)22:18 AAS
>>171
ソース出せない妄想と
173
(1): 09/28(日)22:18 AAS
>>171
低学歴だから定義を無視して字面から妄想し
低学歴だからソースもないのに妄想を断定できてしまう
174: 09/28(日)22:23 ID:iPJCP/07(6/7) AAS
>>162
>【C】i = 0 ; i <= n; i++

>【Rust】0..=n

は同じ動作になるとは限らないので何言いたいんだかわからん。
175: 09/28(日)22:26 ID:iPJCP/07(7/7) AAS
いまこのスレで発狂してるやつ見てるとQiitaでアカウントBANされたコイツ思い出すんだよなあ。

外部リンク:web.archive.org
> はい、私が勘違いしてました。

> 途中で、
>
> スクリーンショット 2022-12-19 184235.png
>
> みたいな突っ込みがあって、やっと問題文をちゃんと読み直して『あれ?』となったわけですが、
>
> 自分、基本的にTwitterでの間違いは死んでも認めない主義なので、そのまま押し切る事にしました。
>
> Twitterとかのネットは所詮遊び場なので「バトルしようぜ、Tweetバトル!俺が勝ったらテメェは俺以下だぁー!!」みたいなノリで強引に押し切ろうとしました。
>
> で、まぁ、惨敗したわけですけどねw
176
(2): 09/28(日)22:27 ID:jJ7lr+aR(1/4) AAS
以下の性質の良さの違いのため
プログラミングでは半開区間が多用されている

半開区間 (性質が良い)
・start~endの長さはend-start
・startから始まる長さlenの区間はstart~(start+len)
・startから始まる長さ0の区間はstart~startと表せてそのまま自然に扱える
・途中middleでstart~middleとmiddle~endの二つに分割できる

閉区間 (性質が悪い)
・start~endの長さはend-start+1
・startから始まる長さlenの区間はstart~(start+len-1)
・startから始まる長さ0の区間はstart~(start-1)になって破綻
・途中middleでstart~middleとmiddle~endの二つに分割できない
start~middleと(middle+1)~endか
start~(middle-1)とmiddle~endになる
177
(1): 09/28(日)22:27 ID:aU9wcwp7(8/11) AAS
>>173
カルト教団のむきになった反論そのものw 教祖様のお言葉がソースか? 

自然言語と高校までの数学表記が一般に広く受け入れられていること、それで根拠として十分。
178
(1): 09/28(日)22:32 AAS
>>177

>>171
低学歴だから定義を無視して字面から妄想し
低学歴だからソースもないのに妄想を断定できてしまう
179
(3): 09/28(日)22:38 ID:jJ7lr+aR(2/4) AAS
区間指定の文法を持つ最近のメジャーなプログラミング言語では半開区間を簡単に表記できるようになっている
例えば
GoやPythonなどでは list[start:end]
C#やRustなどでは list[start..end]
いずれもendを含まない半開区間を意味している
180
(2): 09/28(日)22:46 ID:aU9wcwp7(9/11) AAS
>>178
定義なんて所詮は教祖様がお作りになった教義に過ぎない。それを絶対視して変だと考えず、
変だと指摘する人にむきになって壊れたレコードのようにワンパターンな反応を繰り返す
カルト信者。
181
(1): 09/28(日)22:47 AAS
>>180
定義はコンパイラの仕様
バカすぎる無職
182
(1): 09/28(日)22:47 AAS
>>180
変なのはお前
だから無職なんだろ中卒
183
(1): 09/28(日)22:49 AAS
>>176,179
これを入社試験の面接で説明できなきゃ不採用でいいわ
これ分からん奴はセンスが無さすぎる
184
(1): 09/28(日)23:01 ID:aU9wcwp7(10/11) AAS
>>181
コンパイラは教祖様がお作りになった言語仕様に沿って作られたものだろ。

>>182
無限ループ、またの名を暴走と言うw
185: 09/28(日)23:01 AAS
>>184
これが無職
186: 09/28(日)23:25 ID:jJ7lr+aR(3/4) AAS
>>183
初心者は仕方ないとしてもプログラミング歴のある人には必須な知識だと思う
187
(1): 09/28(日)23:34 ID:SbwCraTd(1) AAS
ここプログラム技術板で閉区間が自然だと主張して暴れてるやつはどこから来たお客さんなんだろう
188
(4): 09/28(日)23:48 ID:aU9wcwp7(11/11) AAS
>>187
閉区間が自然だとは全く主張していないぞ。

・閉区間で書くのが便利な場合も半開区間で書くのが便利な場合もあるので、両方の書き方を
 提供するのが良い(勿論、前者の場合には閉区間が自然ということになるが)

・閉区間には左右対称、半開区間には左右非対称の記号を割り当てるのが自然で、バグを
 生みにくい

と主張しているだけ。
189: 09/28(日)23:54 ID:jJ7lr+aR(4/4) AAS
現実のメジャーなプログラミング言語では>>179のように半開区間を簡潔に記述できることを重視している
1-
あと 94 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.009s