[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/01 19:50 / Filesize : 270 KB / Number-of Response : 1019
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2022/04/17(日) 17:52:35.38 ID:KG26dcth.net]
スレタイ(順番はRedMonk準拠)以外の言語もok

前スレ
次世代言語24 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1647887021/

993 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 19:52:16.37 ID:E2oosySA.net]
>>972
今どきの言語ならそんなことは起きないんじゃないかな
例えばRustの標準ライブラリには同名のreplace()という関数が10個もあるけど

(1) まず名前空間が分かれている
例えば str::replace() や Option::replace() など

(2) 次にメソッドの場合は名前空間を明示する必要がない
例えば let s = "価格: 123円"; という文字列に対してはstr::を付けずに
s.replace("価格", "値段"); // → "値段: 123円"

(3) 更にジェネリックな引数も取れる
例えば文字列""ではなく文字''も指定可能
s.replace('円', "万円"); // → "価格: 123万円",
文字判定関数を指定することも可能
s.replace(char::is_numeric, "*"); // → "価格: ***円"

このように様々な対象に対して様々な引数で用いられていても
同名のreplace()で曖昧になることもなくそれぞれを使うことができる
昔のように長い関数名を付けずに済むようになっている

994 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 20:07:59.34 ID:8GsqMDfw.net]
次スレ立てるのはもうそろそろかな

995 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 20:46:13.10 ID:6L0FdSjR.net]
>>975
アスペっぽい ガイジ

996 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:02:14.54 ID:Hg6hQLhP.net]
>>963
ガイジ乙!

997 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:08:22.86 ID:mSfgS0Wr.net]
>>977
3つともオーバーロードやデフォルト引数はほぼ関係ない話じゃん
3つめがかろうじてオーバーロードに引っかかってはいるが論点が違う

998 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:24:31.48 ID:j7veV6LL.net]
シャドーイングがOKで関数オーバーロードがNGって普通は逆じゃね?

999 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:29:29.90 ID:ofPdKV5n.net]
>>982
その2つがどう関係あるのか説明してくれ

1000 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:39:32.57 ID:j7veV6LL.net]
シャドーイング  同じ変数名で実際は完全に別物
関数オーバーロード 同じ関数名で引数が違う でも普通は同じ働き

1001 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:50:35.85 ID:lr2wAV+c.net]
引数の型が違うだけならジェネリクスでいいし、ジェネリクスで表現できないような
引数の違いがあるような場合はそもそも同じ関数名にすべきじゃないような気がする。
オーバーロードいらないよな。



1002 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:04:20.07 ID:j7veV6LL.net]
せいぜい意味不明なワードがくっついた似たり寄ったりの関数を大量に作ってくれよ

1003 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:09:55.02 ID:xRbFgwNB.net]
>>984
なるほどそういう意味か

イミュータブルとムーブがデフォルトだとシャドーイングNGだと命名負荷が高くなりすぎるのよ
オーバーロードやデフォルト引数/オプション引数ないとメソッドの命名負荷が高くなるのと似てる

1004 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:17:07.52 ID:G0GSIi1k.net]
>>982
C++/Java/C#書いてる脳だとまあすんなり同意するけど
OCamlだのHaskellだの書いてる脳で読むと「お前の普通なんか知らねーよ」って感じだな

1005 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:26:34.16 ID:GOjINbNj.net]
>>982
効果が真逆という結論のようです

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

確かにシャドーイングが出来ない言語では例えば
price_str = "398"
price_int = int(price_str)
とするかミスを生みやすい動的型付けで同じ変数名priceに入れるようです
シャドーイングがいかに優れているかよくわかりますね

1006 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:30:15.50 ID:j7veV6LL.net]
書き込みする前に読み返したか?
ふわっふわしてるぞ

1007 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:36:51.94 ID:j7veV6LL.net]
Rsutは関数オーバーロードがないから
int(price_str)できない

1008 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:44:52.02 ID:d/VymnYf.net]
>>991
そういう時にメソッドではない不要なグローバル関数を設けるプログラミング言語は時代遅れ
もしstrに対してintに変換する関数int()を用意するならばstrのメソッドとして用意する
君には>>977を読み直すことを勧める

1009 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:52:38.23 ID:j7veV6LL.net]
Rustは同様に abs(x)ができない
他の言語ではmath.abs()とかにある

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


-1_i32.abs()
は -1になる変な言語

1010 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:54:18.35 ID:GOjINbNj.net]
>>991
Rustではintが多数あるため
let s = "98765";
let a: i32 = s.parse()?;
let b: u64 = s.parse()?;
となります
どちらも同じメソッドparse()で大丈夫です
あなたが使っている言語では多数のint毎に別々の変換用の関数があるのですか?

1011 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:55:48.87 ID:j7veV6LL.net]
>>994
出た
愚者の?



1012 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:59:31.50 ID:bmv2finQ.net]
>>993
>int(price_str)できない
>Rustは同様に abs(x)ができない

それはどっちもできるよ

1013 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:59:45.45 ID:4VWLMq9p.net]
>>993
i32::abs(-1)

1014 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:01:03.11 ID:j7veV6LL.net]
parseは多分ジェネリック実装されてて戻り値の推定からジェネリック型決めてるんだろ?
そっちのほうが不気味

そのparseだってどうせトレイトで実装してんだろ?

1015 名前:デフォルトの名無しさん [2022/06/20(月) 23:02:42.38 ID:MklghZCY.net]
>>985
ジェネリクスはまた別物だろ。

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

1016 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 23:03:17.12 ID:j7veV6LL.net]
>>996-997

それは実質fabs()と変わらない

1017 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 64日 5時間 10分 42秒

1018 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<270KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef