次世代言語25 TypeScript Swift Go Kotlin Rust Nim

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2022/04/17(日) 17:52:35.38ID:KG26dcth
スレタイ(順番はRedMonk準拠)以外の言語もok

前スレ
次世代言語24 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1647887021/
2022/06/20(月) 20:07:59.34ID:8GsqMDfw
次スレ立てるのはもうそろそろかな
2022/06/20(月) 20:46:13.10ID:6L0FdSjR
>>975
アスペっぽい ガイジ
2022/06/20(月) 21:02:14.54ID:Hg6hQLhP
>>963
ガイジ乙!
2022/06/20(月) 21:08:22.86ID:mSfgS0Wr
>>977
3つともオーバーロードやデフォルト引数はほぼ関係ない話じゃん
3つめがかろうじてオーバーロードに引っかかってはいるが論点が違う
2022/06/20(月) 21:24:31.48ID:j7veV6LL
シャドーイングがOKで関数オーバーロードがNGって普通は逆じゃね?
2022/06/20(月) 21:29:29.90ID:ofPdKV5n
>>982
その2つがどう関係あるのか説明してくれ
2022/06/20(月) 21:39:32.57ID:j7veV6LL
シャドーイング  同じ変数名で実際は完全に別物
関数オーバーロード 同じ関数名で引数が違う でも普通は同じ働き
2022/06/20(月) 21:50:35.85ID:lr2wAV+c
引数の型が違うだけならジェネリクスでいいし、ジェネリクスで表現できないような
引数の違いがあるような場合はそもそも同じ関数名にすべきじゃないような気がする。
オーバーロードいらないよな。
2022/06/20(月) 22:04:20.07ID:j7veV6LL
せいぜい意味不明なワードがくっついた似たり寄ったりの関数を大量に作ってくれよ
2022/06/20(月) 22:09:55.02ID:xRbFgwNB
>>984
なるほどそういう意味か

イミュータブルとムーブがデフォルトだとシャドーイングNGだと命名負荷が高くなりすぎるのよ
オーバーロードやデフォルト引数/オプション引数ないとメソッドの命名負荷が高くなるのと似てる
2022/06/20(月) 22:17:07.52ID:G0GSIi1k
>>982
C++/Java/C#書いてる脳だとまあすんなり同意するけど
OCamlだのHaskellだの書いてる脳で読むと「お前の普通なんか知らねーよ」って感じだな
2022/06/20(月) 22:26:34.16ID:GOjINbNj
>>982
効果が真逆という結論のようです

> シャドーイングは同時に存在できるのが一つだけで曖昧さがなくプログラミングにおいてプラス効果
> オーバーロードは同時に異なるものが存在できるため可読性を下げたりミスを起こす機会を生じさせてマイナス効果

確かにシャドーイングが出来ない言語では例えば
price_str = "398"
price_int = int(price_str)
とするかミスを生みやすい動的型付けで同じ変数名priceに入れるようです
シャドーイングがいかに優れているかよくわかりますね
2022/06/20(月) 22:30:15.50ID:j7veV6LL
書き込みする前に読み返したか?
ふわっふわしてるぞ
2022/06/20(月) 22:36:51.94ID:j7veV6LL
Rsutは関数オーバーロードがないから
int(price_str)できない
2022/06/20(月) 22:44:52.02ID:d/VymnYf
>>991
そういう時にメソッドではない不要なグローバル関数を設けるプログラミング言語は時代遅れ
もしstrに対してintに変換する関数int()を用意するならばstrのメソッドとして用意する
君には>>977を読み直すことを勧める
2022/06/20(月) 22:52:38.23ID:j7veV6LL
Rustは同様に abs(x)ができない
他の言語ではmath.abs()とかにある

x.abs()と言う不思議な感じになる


-1_i32.abs()
は -1になる変な言語
2022/06/20(月) 22:54:18.35ID:GOjINbNj
>>991
Rustではintが多数あるため
let s = "98765";
let a: i32 = s.parse()?;
let b: u64 = s.parse()?;
となります
どちらも同じメソッドparse()で大丈夫です
あなたが使っている言語では多数のint毎に別々の変換用の関数があるのですか?
2022/06/20(月) 22:55:48.87ID:j7veV6LL
>>994
出た
愚者の?
2022/06/20(月) 22:59:31.50ID:bmv2finQ
>>993
>int(price_str)できない
>Rustは同様に abs(x)ができない

それはどっちもできるよ
2022/06/20(月) 22:59:45.45ID:4VWLMq9p
>>993
i32::abs(-1)
2022/06/20(月) 23:01:03.11ID:j7veV6LL
parseは多分ジェネリック実装されてて戻り値の推定からジェネリック型決めてるんだろ?
そっちのほうが不気味

そのparseだってどうせトレイトで実装してんだろ?
999デフォルトの名無しさん
垢版 |
2022/06/20(月) 23:02:42.38ID:MklghZCY
>>985
ジェネリクスはまた別物だろ。

ライブラリ無いからシステムコール利用する機能を提供しようとする。
例えば socket(2)でいいわ。
第3引数なんて使うことないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
2022/06/20(月) 23:03:17.12ID:j7veV6LL
>>996-997

それは実質fabs()と変わらない
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 64日 5時間 10分 42秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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