1: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:27:30.053 ID:ju4l0PV/0
if ( 0 <= X && X < 999 ){}
↑これを
↓こう書けるようにしない理由教えて
if ( 0 <= X < 999 ){}
長年の疑問なんだ
41: 以下、5ちゃんねるからVIPがお送りします🐙 2022/06/26(日) 12:07:38.133 ID:khHPOo7G0
>>1
職業PGだけどまず
> if ( 0 <= X && X < 999 ){}
これ読みづらい
X >= 0 && X < 999っていうふうに変数先に統一する
うろ覚えだけどコーディング規約で統一を推奨してた気が
> ↓こう書けるようにしない理由教えて
> if ( 0 <= X < 999 ){}
する理由がない
人間でコード慣れしてる俺がこれ見ても混乱する
あなたにはこの書き方のほうが分かりやすいってこと?
45: くーるびゅー 2022/06/26(日) 12:27:03.371 ID:Zojq2G060
>>41
いや数学習ってた時はこう教わったじゃん
46: 以下、5ちゃんねるからVIPがお送りします🐙 2022/06/26(日) 12:30:18.269 ID:khHPOo7G0
>>45
そうなんだ
数学習った学生時代よりPG時代のが長いんでコードの書き方のほうに頭が完全に慣れちゃってる
たしかに>>1みたいに疑問に思うほうが普通の人には自然なことなのだろうね。
43: 以下、5ちゃんねるからVIPがお送りします🐙 2022/06/26(日) 12:14:10.146 ID:khHPOo7G0
>>31
いい説明だね
複数の比較式って結局、内部的に複数の比較を順番に処理してるので、人間に見やすい書き方にはあえてしてない気がする
Pythonの比較演算子調べたら>>1の書き方できるみたい。cガイジなので知りませんでしたすいません。謹んでお詫び申しあげます。
50: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 13:07:56.846 ID:x2kutocZ0
>>43
>>人間に見やすい書き方にはあえてしてない気がする
高級プログラミング言語ってそもそも人間が読み書きするためにあるものではあるんだけど
>>複数の比較式って結局、内部的に複数の比較を順番に処理してるので、
実行するのは結局コンピュータであり順番の処理であり
人間のための高級プログラミング言語とは言ってもやはりコンピュータありきなんだよね
だから
>>if ( 0 <= X < 999 ){}
こういう2つの比較のまとめ記述って処理の順番が曖昧になってしまうし
「これ、コンピュータが内部でどういう順番で処理するんだよ」って不安に感じてしまう
ひとつひとつの比較が別々に分かれている記述の方が安心?できるし
それを書こうとすると結局
>>if ( 0 <= X && X < 999 ){}
こうなんだよな
55: 以下、5ちゃんねるからVIPがお送りします🐙 2022/06/26(日) 13:35:38.965 ID:khHPOo7G0
>>50
>> 高級プログラミング言語ってそもそも人間が読み書きするためにあるものではあるんだけど
それはその通りだけど意図したのとは違う
文言としてはあなたの言うとおりだが…言語化難しいな
人間が読みやすく作るにしても程度ってもんがあるでしょう
たとえば日本人に分かるように日本語のプログラミング言語なんてのもあるにはあるがそこまで流行ってなかったり
正直いって言語なんて人間にとって全然優しくないけど
ある程度のところで制限しないとどうしようもないよね
…ってので伝わると嬉しいんだけど
2: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:29:08.488 ID:ju4l0PV/0
理由がわかる玄人いない?
3: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:29:23.879 ID:ju4l0PV/0
これは何かの陰謀だよ
4: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:29:51.961 ID:ju4l0PV/0
&& 使わせたいマンが言語開発者にいるんだろ
5: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:30:15.729 ID:ju4l0PV/0
明らかに&&邪魔だし可読性悪いよなぁ?
6: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:30:52.700 ID:ju4l0PV/0
おい!寝てんのかVIPのプログラマー
7: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:31:46.048 ID:0gdeBbt2a
サッカーに対してなんで手を使わないの?って言ってるようなスレ
8: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:32:04.123 ID:ju4l0PV/0
>>7
全然違う
例え下手
9: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:33:44.257 ID:DohptBFU0
書けるやつは書けるだろ
cじゃできなかったっけ?
12: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:35:55.955 ID:ju4l0PV/0
>>9
書ける言語あるのか
可読性からして賢い選択だな
やっぱりC言語開発者は一味違うわ
10: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:34:32.318 ID:d9WC8UNy0
論理値を返す式 && 論理値を返す式
だから何もおかしくないが
13: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:38:34.914 ID:ju4l0PV/0
>>10
論理値を返す式を組み合わせることってできないの?
内部で二回計算してくれていいからさ
28: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:45:36.258 ID:d9WC8UNy0
>>13
SQLにあるBETWEEN演算子はソレっぽいことができるが
それ以外できないという使い所の少ないものでもある
しかも以上以下だから、に対応してないんだよな
結論として、ないものは自力で作れ
11: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:35:37.408 ID:F9k7BJae0
最小単位がビット演算だからでは?
16: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:39:32.988 ID:ju4l0PV/0
>>11
なんかそれっぽいな
なんとなくしかわからんけど
14: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:38:51.024 ID:xT35OKoma
言語によってはかけるよ
19: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:40:10.078 ID:ju4l0PV/0
>>14
最高の言語だな
これ実装してる言語開発者はセンスある
15: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:39:11.408 ID:dh4YP+Mi0
知ってる限り書ける言語ないぞ
20: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:40:28.931 ID:xT35OKoma
>>15
pythonかける
17: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:39:41.790 ID:0+n8Cy9R0
可読性重視にしたいのであれば関数にすればよくね?
23: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:42:00.853 ID:ju4l0PV/0
>>17
ifに変わる独自関数って本人じゃないとわかりにくくない?
25: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:42:30.383 ID:XZa1shFw0
>>23
それifか?
27: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:45:28.972 ID:0+n8Cy9R0
>>23
boolを返す関数ならわかりやすいよ
静的型付けできない言語は無くなれ
18: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:40:02.228 ID:9QhWCwoP0
書ける言語もある
演算子は基本二項演算であるってルールから外れると複雑になるからじゃない
21: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:40:52.250 ID:XZa1shFw0
書けてもあんまり嬉しくないからじゃね?
24: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:42:29.227 ID:BTHJaXSyM
使わないから
26: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:45:09.638 ID:ju4l0PV/0
Python始めるわ
ありがとう!
PHP,Java,Object-C,C#,JavaScriptのばーか!!
29: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:47:11.099 ID:x2kutocZ0
書ける言語もあるって言うけど
それって1が望んでいる結果と違う結果にならなくね?
31: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 10:57:32.659 ID:bICL/XDPd
説明しよう
0 <= X < 999
これをまず分解してみると
始めに0 <= Xの判定がある
これの返却値は”論理型”だ
それに対して次の判定は”論理型”と< 999を比較してしまう
この時点で静的型付けの言語はエラーになるだろう
動的型付けの場合はどうなるだろうか
おそらくだがjavascripの場合
0 <= Xの返却値は0か1かもしれない。仮に0だとしよう
その次の判定で0 < 999と判定することになるだろう。
バグが生まれる可能性があるから結論としては 0 <= X && X < 999 と書いたほうがいい
34: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 11:04:09.764 ID:x2kutocZ0
>>31
>>バグが生まれる可能性があるから
だよな
記述してエラーにはならない言語でも
それはたぶん1が望んでいる事とは違う動作をするよね
38: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 11:36:03.742 ID:ju4l0PV/0
>>31
天才
35: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 11:09:51.832 ID:CNz2Z8uY0
対応してる言語でもコンパイルの時にはどうせ分離して&&に直される
37: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 11:28:36.543 ID:RH93bdxJM
そういうとこに敏感なのはプログラミングのセンスありそうではある
48: 以下、5ちゃんねるからVIPがお送りします 2022/06/26(日) 12:57:50.063 ID:lWXj5M9s0
文法増やすほどの重要性がないから
論理値
http://viper.2ch.sc/test/read.cgi/news4vip/1656206850/
この記事へのコメントはありません。