次世代言語13 Go Rust Swift Kotlin TypeScript

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/20(月) 21:55:53.03ID:JBCtYT+G
スレタイ以外の言語もok

前スレ
次世代言語12 Go Rust Swift Kotlin TypeScript
http://mevius.5ch.net/test/read.cgi/tech/1530664695/
2018/08/29(水) 08:26:21.14ID:azUIVUCr
誰かgo2の解説頼む。
2018/08/29(水) 08:50:24.08ID:DW0Jb9Fq
conditionはexpressionだろ
checkedも、checked==trueもexpressionじゃん。

はい、いいえ以外の選択肢はあるよ。無回答だ。
無回答という値を作ってもいいが、普通はnullだろ。
そのためのnullだ。集計してもnullに食われる「ようになってる」。
2018/08/29(水) 08:54:19.80ID:Md5DkR0O
NOと言えない島猿
2018/08/29(水) 09:53:38.09ID:3Y4hBlHJ
> if checked == true 〜
> if checked != true 〜

これなぁ
プルリクでこれきたらなおさせてたが最近は認めてる

バカはバカなりに特定の値で分岐するときのイディオムとしてifと==を組み合わせて使うって覚えてるんだよ
intであろうがboolであろうが同じ
そう思うとこれはこれで一貫性ある
実際これが読みにくいって感じることはないし
コンパイラは黙って最適化するし

なので許すことにした
自分では書かないが
2018/08/29(水) 10:34:17.12ID:FFtlPXOG
Swift大勝利じゃないか
C++もgoも後を追ってくる
2018/08/29(水) 10:41:05.27ID:f5noujOQ
winでswift使わせてよー
2018/08/29(水) 11:47:51.64ID:DBASjTr8
nullだのエラー処理だの言ってるのはモナド
モナドは型を書かないと意味わからないし
その型はジェネリクスのようなものがないと宣言できない
2018/08/29(水) 12:02:48.71ID:u5ADcZZb
>>208
そのSwiftはRustの後を追ってる
やっぱりRustなんだよなぁ
2018/08/29(水) 12:17:51.45ID:DW0Jb9Fq
falsyなものが無い言語ならどっちでも良いとは思うけど、どっちにも言い分はあると思う。
APIの戻り値なんかが変わったときに
「何もしないで同じ動きをして欲しい。自動テスト転ばないのが唯一の正義」派と
「明確に対応したい。転ばない自動テストが間違ってる。そもそもちゃんとアサーションしろ、本当にtrueでもfalseでもない状態はありえないか?メモリ化けとかどーすんの?」派の違いだと思うわ。

結局falsyな言語だと「本当にfalse」と「falseではないがfalseとみなされる」を、混同したい場合も区別したい場合もあるんだし。
2018/08/29(水) 13:43:29.30ID:DBASjTr8
Perlでは数値と数値の比較には==を、文字列と文字列の比較にはeqという演算子を使う
数値と文字列の比較はない
数値なら0だけがfalse
それ以外にfalsyな値は存在しない
2018/08/29(水) 16:28:08.12ID:A/ggV7aH
>>207
俺もこれだわ
二重否定以外は大抵許してる

3値論理の必要性は分かるけど、開発メンテしていく上では邪魔なので基本使わせない
2018/08/29(水) 16:32:06.97ID:7N1N66pK
Swiftなんかあったの?
2018/08/30(木) 00:00:20.35ID:UmVQrNZ9
> if checked == true

この流儀?を許したら
if checked == true
if checked != true
if checked == false
if checked != false
の四兄弟がセットで押し寄せてくる
さらに
if (n > 10) == true
if (enabled & visible) = true
if checked == true && enabled == true && visible == true
なども体をねじ込んでくる
さあ楽しくなってくるじゃないか
2018/08/30(木) 00:08:34.03ID:K2XYaSpY
ワナビーの凡人法則

糞どうでもいい低レベルな議論しかできないヤツが
糞どうでもいい話に飛びついて
ここぞとばかりに高説ぶる


死ねば
ええんちゃうか?ωωω
2018/08/30(木) 00:14:26.32ID:mi8K02wj
オブジェクト指向でいうとboolに==メソッドがあるのが悪い
もしObjectクラスの==をboolが継承しているなら、Objectクラスが存在するのが悪い
219デフォルトの名無しさん
垢版 |
2018/08/30(木) 00:47:04.12ID:DrSr47TU
オメーガ?
2018/08/30(木) 00:48:13.84ID:K2XYaSpY
だからさー!君たちワナビーの法則やっちゅうねんバカなのか!
2018/08/30(木) 00:55:49.05ID:H/5/FX9R
>>218
boolに比較演算子がないと型パラメータとして渡す時に要らん制限が増えるだろ
2018/08/30(木) 01:13:21.94ID:7OC3inua
>>218
論理演算子に同値が定義されていないのも色々と書きにくそう
notとandとorで書けるけど
223デフォルトの名無しさん
垢版 |
2018/08/30(木) 01:21:47.57ID:/0YXnEsV
2項比較演算子がダメということじゃないからな

  aho == true
  true == aho

 のブーリアンのリテラルが入ってる2項等価演算子はダメ

  aho == baka

 の2項等価演算子はアリ

わかった?
224デフォルトの名無しさん
垢版 |
2018/08/30(木) 01:24:38.44ID:/0YXnEsV
つまり、trueとfalseは
代入以外に使えないようにすればいい
2018/08/30(木) 03:28:31.53ID:IxfOs83u
>>213
空リストとか空文字列ってfalse扱いじゃなかったっけ?
2018/08/30(木) 03:31:50.70ID:fTlUE3DU
コミュニケーションじゃなくてプログラミングスタイルで繋がりたいんだろうが
実はそっちのほうがもっと無理
2018/08/30(木) 04:38:17.14ID:mi8K02wj
語学じゃなくて心理学とか脳科学とかでシンギュラリティしたいんだろ
そっちのほうが無理
2018/08/30(木) 07:11:50.68ID:K2XYaSpY
ワイノ話を聞かないとは無能揃いだね?
2018/08/30(木) 07:34:59.92ID:wxlIjpoe
半角の人はなぜ駄目かを全く読んでないのな。
2018/08/30(木) 07:39:56.35ID:K2XYaSpY
てゅかさ。深夜に書き込んでるってことはおまいら無職だろ
無職風情がワイ様無視してワナビー法則でイキってるとかマジゴミだろωωω
2018/08/30(木) 08:11:26.07ID:ff0XXJ3a
無駄だからそんな書き方しなくていいってだけで、それ自体何か害があるわけじゃないから
文法上禁止してしまう理由はないと思うがなぁ。
レビューで指摘するのはそれがコードスメルだからってだけだろう。
2018/08/30(木) 09:09:42.55ID:hUyiY/SJ
a == trueが禁止されたのでa ^ !trueに置換しておきました
2018/08/30(木) 09:55:24.67ID:K2XYaSpY
マジこのワナビーの法則の話いつまで続くんや
夏厨死ねよ
2018/08/30(木) 11:01:42.71ID:e8DSDd9g
>>225
文字列なら "" と "0" がfalse
数値なら0だけがfalse
235デフォルトの名無しさん
垢版 |
2018/08/30(木) 11:59:46.41ID:A5Nytyjy
perlには '0 but true' という、数値として 0 と比較すると一致するが if でそのまま使うと true 扱いになる特殊な値があったりする。
2018/08/30(木) 12:14:56.63ID:6I1bUcuW
次世代を担うに相応しい真偽評価戦略を語るべし
2018/08/30(木) 13:15:05.68ID:io9LYUoZ
次世代はif文が消えjsのthen的なものになります
2018/08/30(木) 13:47:18.38ID:6sRyznT+
うえー
2018/08/30(木) 13:49:00.74ID:e8DSDd9g
数値の偽は0
文字列の偽は "" "0"
オブジェクトの偽は null "" "0" その他
階層が深いほど偽が多い法則
2018/08/30(木) 13:57:19.48ID:k9/abrGo
次世代言語にはifもforもない
2018/08/30(木) 14:29:05.96ID:dTt5OSNq
アスペはこういうところに拘ってしまって先に進めないんだよね
2018/08/30(木) 14:47:28.76ID:e8DSDd9g
飯炊き三年握り八年
2018/08/30(木) 18:20:12.51ID:fWBwT80E
ちゃんと読んでないけど
boolなら
if checked / if !checked
でいいやん
2018/08/30(木) 18:57:30.25ID:JpHgwHVB
数値なりリストなりを暗黙に真偽値比較せずに
明確にすればいいだけじゃないの?
2018/08/30(木) 19:30:44.87ID:7mcJbcKo
直和な幽霊型でCheck|Uncheckを型に持たせて管理すればいいよ
246デフォルトの名無しさん
垢版 |
2018/08/30(木) 21:15:21.94ID:+O/rJ+xn
if で boolean 型以外を許さず、更に boolen 型の値の比較も許さない言語を作れば解決。
2018/08/30(木) 21:51:23.27ID:ff0XXJ3a
というかそれが普通なんだけどな。
型がないB言語の特徴を受け継いだCがなまじヒットしてしまったせいで
後続の言語もその悪習を真似るようになってしまった。
2018/08/30(木) 22:07:01.18ID:Ah+zwqqR
こんなしょうもないことに時間使ってもバグは減らないっていう事実にそろそろ気付こうよ。
249デフォルトの名無しさん
垢版 |
2018/08/30(木) 22:21:35.61ID:/0YXnEsV
低学歴知恵遅れが書いたなぜダメかを読んでない?
まず読む必要がない
頭悪すぎてお話にならないからな

適切にダメなケースを書いてるのはオレしかいないからな
当然、低学歴知恵遅れのレスなんかどうでもいいことになる
2018/08/30(木) 22:48:08.67ID:39ABXWI9
まず読む必要がない事を書いてくれてありがとうな
2018/08/30(木) 23:10:41.48ID:e8DSDd9g
些細なヘイトスピーチもきっちりデバッグしてる欧米の文化の方がITの才能がある
2018/08/31(金) 02:17:18.78ID:/VjCJv9E
>>233
ワナビーの法則
って何?
ググってもこのスレしか出てこないんだが
https://i.imgur.com/PzUYieo.jpg
2018/08/31(金) 05:21:39.77ID:J05bSyHo
>>248
ホントこれ
2018/08/31(金) 11:41:15.33ID:YfdxjJ3c
無益なものを批判する暇があったら
有害なものを批判しろよ
255デフォルトの名無しさん
垢版 |
2018/08/31(金) 19:26:31.62ID:waeuZPFW
右の睾丸を触られたら左の睾丸を触りなさい
2018/08/31(金) 19:58:49.98ID:YfdxjJ3c
刑を執行してはいけないが、裁判と有罪確定まではやっていい
257デフォルトの名無しさん
垢版 |
2018/08/31(金) 21:20:12.74ID:4ZfpOo1s
ギルティ
死刑!
2018/08/31(金) 23:12:29.91ID:hg6LXyjO
>>243
それが常人のイディオム
bool型の変数に説明的な変数名をつけるだけで
ifの可読性が増すなんてことは
自分で思いつくか
人のを見て気付くか
人に教わって知るか
いずれかの方法で自分のものにするはず

たぶんアホは変数名をflagなどにしてて
「フラグがTRUEのとき」などという覚え方をしてるからこそ
if flag_foo == true などという書き方になるんやろな、知らんけど
2018/08/31(金) 23:21:27.80ID:7Lf8QxyM
いつまで初心者な話題ばっかやってんの
つまりはそういうことなの?
2018/09/01(土) 02:13:15.43ID:BxU4Z/sw
a < b < c みたいな連続比較(演算子の連結?)って、なんで流行らないの?
2018/09/01(土) 02:24:21.20ID:I7Wpi/+P
Python、Julia、Mathematica辺りはできるね
意外にMatlabはできない
2018/09/01(土) 07:28:39.38ID:sv0UK566
>>260
大して簡素化しない割には、ANDしか対応できないからじゃね?
2018/09/01(土) 07:59:09.68ID:O36P/gVq
rangeにinかなにかでよさげ
2018/09/01(土) 08:01:36.87ID:FRKhXQkv
>>260
文法が複雑になるし、等値比較の扱いをどうするかが難しい
a < b < c == e >= f
これC系の優先順位に倣うと (a < b < c) == (e >= f) が自然だろうけど、たぶんこの式を書いた人の期待していた結果ではないだろう
2018/09/01(土) 10:17:17.34ID:y+HuzDXi
数学では a < b < c って表記は良くあるけど
a < b < c = e はそんなに出てこない気がする

そして a < b < c = e >= f はガイジが書いたとしか思えない
2018/09/01(土) 10:18:25.01ID:/xY33kfI
でも個人開発じゃなかったらガイジも書くから
2018/09/01(土) 10:31:17.38ID:8XWt4TWp
>>265
そんなに出てこなかろうが書けなきゃ一貫性に欠ける
a < b <= c の形に限るんなら a in (b..c] の方が美しいわ
2018/09/01(土) 10:56:33.83ID:y+HuzDXi
>>267
あんまり出てこないって言っただけで、>>265の二つめは出来た方が良いと思うよ。三つめガイジだけど
で、>>261に挙げられた言語は出来ないの?出来るんじゃね?
269267
垢版 |
2018/09/01(土) 11:13:45.36ID:8XWt4TWp
>>268
その上で、範囲チェックにしか使えないんなら範囲チェックに特化した表記の方が望ましいという意見なんだけど、言ってる意味わかる?
表記上は一般的に広く使えそうに見えて実は特定の限定的なパターンしか認めないってのは典型的なダメ言語だよ
2018/09/01(土) 11:16:35.64ID:33FbYz6y
「数学では〜」っていう言い方見ると悲しくなる
高校数学やそれに毛の生えたようなとこしか触ってないのに
それをもって「数学では〜」などと笑止千万

これは>>265にあてつけたんじゃなくて
昔からずーっと思ってたこと
2018/09/01(土) 11:19:23.27ID:4l6T8pEq
まさかMaybeが出来ない初心者なんていませんよね

foo p x y = if p y x then Just x else Nothing
bar m p = maybe False p m

(a <= b && b < c && c == d)
== ((Just a >>= foo (<=) b >>= foo (<) c) `bar` (==d))
2018/09/01(土) 11:19:31.04ID:y+HuzDXi
>>269
いや、だからキモいしガイジしか書かないけど、書けた方が良いって言ってんじゃん
で?>>261の言語は書けるんじゃないの?
2018/09/01(土) 11:27:25.51ID:pVUyxPYl
数学でも a < b > c みたいな書き方はしないし
許してる言語もないだろ
2018/09/01(土) 11:37:23.08ID:8XWt4TWp
>>273
それが文法上許されないことを説明する一貫性のある理由がない
<と<=を特別扱いみたいな一貫性の欠片もないガイジ仕様にするくらいなら要らない、という設計判断は十分にありうる
2018/09/01(土) 11:47:25.54ID:4l6T8pEq
必要か不要かを判断するコストは実際にはものすごく高い
簡単に作れるかどうかで判断してたくさん自由に作ってどれかひとつ成功すればいい
2018/09/01(土) 11:52:13.22ID:VcQ5WdQC
Juliaだと a < b > c は合法だった
多分 a < b && b > c を計算してるっぽい
しかし文法的に一貫性があるのはわかるのだが
これが書けてしまうのはやはり気持ち悪いな

この手のでRangeで書きにくいやつだと、
行列の上三角成分だけ舐めるときに
1 <= i < j <= n
とか書けるとちょっとだけ嬉しい
2018/09/01(土) 12:00:11.31ID:bn2L0QEe
a < f(b) < c
fは何回呼ばれるべきか
2018/09/01(土) 12:11:13.69ID:xDnWzldj
理想的にfが純粋関数でbの値がconstで1回だけ評価が素直だと思うが
2018/09/01(土) 12:11:17.71ID:Lo8welT8
pythonの場合、 a < b という式の型がboolなのに (a < b) < c ができてしまうというのが
非常に分かりにくいね。なんというか、むりやり捻じ込んだ感。
2018/09/01(土) 12:14:38.95ID:+BAvd4bn
a < b < c

b > a and b < c

どっちがわかりやすいか?
2018/09/01(土) 12:36:45.65ID:rtR930fJ
なんで
a < b and b < c
じゃないの?
2018/09/01(土) 12:53:55.22ID:7zNJuyPV
センス
2018/09/01(土) 13:05:45.26ID:8oBLXasx
>>280
1=1<2だったらどうすんの?
2018/09/01(土) 13:19:35.77ID:vTDtzWWE
>>280
コンパイラは大抵
b > a and b < c
のがわかりやすいと判断している。
285デフォルトの名無しさん
垢版 |
2018/09/01(土) 18:37:02.95ID:/wwW4VSs
だれかがいってるように
マジで頭悪い。。。

aho = a < b ← 結果はブーリアン
baka = aho < c ← ブーリアンを大きさで比較してる
< は普通2項演算子で予約されてるからな

3項演算子みたいに使ってない記号を組み合わせるならまだ理解できる
2018/09/01(土) 18:51:27.82ID:TMvFd8Nd
>>281
その書き方だと 0 < x < 100 が
0 < x and x<100になるからセンス悪いと思った

x > 0 and x <100

xが0より大きく100より小さいにマッチするような記法がない
2018/09/01(土) 19:03:39.36ID:7zNJuyPV
ワロた
2018/09/01(土) 19:34:08.16ID:+4zR3ral
半角の人はいい加減に自分が馬鹿なことを認めてほしい。
2018/09/01(土) 19:34:46.46ID:8XWt4TWp
>>285
ineqop ::= ('<' | '<=' | '>' | '>=')
ineqexpr ::= shiftexpr { ineqop shiftexpr }
みたいに定義すりゃいいだけだろ
290デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:47:34.46ID:/wwW4VSs
なにも解決してない
構文規則と演算の規則は
なんの関係もないからな

知恵遅れは構文規則でかければ
自動的に演算規則ができて

なんでも演算できると思ってるらしい
構文規則と解釈が分離できてない

コレが低学歴知恵遅れの限界
ホントな気の毒なぐらい頭悪い
2018/09/01(土) 19:51:19.20ID:8XWt4TWp
>>290
任意個数のオペランドを持ったノードとして左から順に評価すればいいだけだぞ
CやJSのカンマ演算子なんかと一緒
292デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:52:39.70ID:/wwW4VSs
a < bは
普通にブーリアン返す演算子だからな
普通にブーリアン返すのが正しい演算だ
293デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:53:45.56ID:/wwW4VSs
aho ? baka1 : baka2
全然違う
2018/09/01(土) 19:56:29.75ID:4l6T8pEq
a < b の値は最初はintだったのをboolに変えたんなら次はMaybeに変えてもいいぞ
295291
垢版 |
2018/09/01(土) 19:56:58.30ID:8XWt4TWp
カンマ演算子と一緒は間違いだな、撤回する
例えば配列リテラル式と一緒だと考えればいい
あれは任意個数のオペランドを引数にとって全体として配列型を返す演算子であると解釈できる
296デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:57:48.29ID:/wwW4VSs
非ゼロを非ゼロでないかを
真偽にしても別に問題はない
297デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:00:11.15ID:/wwW4VSs
真偽値をどういう値にするかどうかなんか関係ないからな
式の評価で真偽判定を行わないという解釈の問題になるからな
298デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:01:12.82ID:/wwW4VSs
とりあえず低学歴知恵遅れは
とてつもなくオツムに問題があるのが
このスレみててもよく分かる

適切な問題の分離のしかたが分かってない
2018/09/01(土) 20:03:28.96ID:8XWt4TWp
アホだなあ
演算記号が単独で式を構成しなければならないなんて決まりはない
全体で式を構成すると考えれば何の問題もない
300デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:06:47.42ID:/wwW4VSs
a < b < c
まず a < b を評価して
その評価結果を
(a < b) < c
で評価するという決まりだからな
コレが正しい解釈になる

それ以外は不適切な解釈
2018/09/01(土) 20:07:36.43ID:Lo8welT8
Iconという言語だとこれが、a < b という式は成功した場合の値がbになるから a < b < c が
自然に実現できるんだよな。
2018/09/01(土) 20:13:43.79ID:8XWt4TWp
>>300
じゃあ関数呼び出し式 (f)(a, b) はどう解釈する?
君のいう正しい解釈のように ((f)(a))(b) と解釈する言語も実際に存在するけど、あまり一般的ではないよね
2018/09/01(土) 20:22:54.83ID:rtR930fJ
>>300
この辺レガシーな言語なら最初の比較で出るのはbool型になるからcと比較してまともな結果になるはずがないんだよね
2018/09/01(土) 20:25:39.05ID:Lo8welT8
>>302
二項演算子 a < b と三項演算子 a < b < c が同時に存在するというイメージなんだろうか。
a < b がコンテキストによってboolを返すかbを返すか変化するという方がまだ無理がないな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況