スレタイ(順番はRedMonk準拠)以外の言語もok
※ Rustは現世代最強言語なので除外します
前スレ
次世代言語25 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1650185555/
次世代言語26 TypeScript Swift Go Kotlin Nim
■ このスレッドは過去ログ倉庫に格納されています
2022/06/21(火) 09:27:46.30ID:5vOFCGpG
2022/06/21(火) 09:44:18.82ID:GTnizZ2U
文字列の変数sが与えられた時に
変数a(符号付き32bit整数)、
変数b(符号なし64bit整数)、
変数c(64bit浮動小数点数)へそれぞれ変換するコード
【Rust】
let s: &str = "12345";
let a: i32 = s.parse()?;
let b: u64 = s.parse()?;
let c: f64 = s.parse()?;
【Kotlin】
val s: String = "12345"
val a: Int = s.toInt()
val b: ULong = s.toULong()
val c: Double = s.toDouble()
【Swift】
let s: String = "12345"
let a: Int32 = Int32(s)!
let b: Uint64 = Uint64(s)!
let c: Double = Double(s)!
【Go】
var s string = "12345"
var err error
var a int32
a, err = strconv.ParseInt(s, 10, 32)
var b uint64
b, err = strconv.ParseUint(s, 10, 64)
var c float64
c, err = strconv.ParseFloat(s, 64)
変数a(符号付き32bit整数)、
変数b(符号なし64bit整数)、
変数c(64bit浮動小数点数)へそれぞれ変換するコード
【Rust】
let s: &str = "12345";
let a: i32 = s.parse()?;
let b: u64 = s.parse()?;
let c: f64 = s.parse()?;
【Kotlin】
val s: String = "12345"
val a: Int = s.toInt()
val b: ULong = s.toULong()
val c: Double = s.toDouble()
【Swift】
let s: String = "12345"
let a: Int32 = Int32(s)!
let b: Uint64 = Uint64(s)!
let c: Double = Double(s)!
【Go】
var s string = "12345"
var err error
var a int32
a, err = strconv.ParseInt(s, 10, 32)
var b uint64
b, err = strconv.ParseUint(s, 10, 64)
var c float64
c, err = strconv.ParseFloat(s, 64)
3デフォルトの名無しさん
2022/06/21(火) 12:56:04.76ID:/ETIo2hH オーバーロードが無いと、
例えばライブラリ無いからシステムコール利用する便利ラッパー機能を提供しようとする。例えばソケット関係のAPIをまとめたやつとか。
で socket(2)の場合、
第3引数なんていつも0しか使わないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
例えばライブラリ無いからシステムコール利用する便利ラッパー機能を提供しようとする。例えばソケット関係のAPIをまとめたやつとか。
で socket(2)の場合、
第3引数なんていつも0しか使わないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
2022/06/21(火) 13:12:00.12ID:vSYkmcQ8
>>3
プログラムを書いたことのないキチガイだな
socketの第3引数はgetaddrinfoで得たai_protocolを引き渡すのが常識
あるいはgetaddrinfoを使わないならばgetprotobynameの結果を引き渡すものだ
まともなコードを書けないからそんな意味不明な主張になる
プログラムを書いたことのないキチガイだな
socketの第3引数はgetaddrinfoで得たai_protocolを引き渡すのが常識
あるいはgetaddrinfoを使わないならばgetprotobynameの結果を引き渡すものだ
まともなコードを書けないからそんな意味不明な主張になる
5デフォルトの名無しさん
2022/06/21(火) 13:15:46.21ID:wIb095hs 必要なら変えればいいじゃん
2022/06/21(火) 14:09:10.86ID:l/hCBOZ3
なんでオーバーロードが無いCでうまくやっている例を挙げてオーバーロードの必要性を主張しようと思ったんだろう
2022/06/21(火) 17:22:04.63ID:AK5VMxpO
/ ,.----―‐、ヽ. \
/ / ヽ ヽヽ、_ヽ
/ _,.-‐''" ヽ ヽ `ヽ
/ _,,.-‐'" ヽ ヽ ヽ
/ _,.-'" ヽ ヽ ヽ
/ _,.-‐'" i! i! .._ i
人_,.-‐" _,,... _;;.::='' \ i! i!/ >'
/ _,,..-''_,.-‐''" 入 /_____/ ,.イ'
| ,.-ヽ、 _,.-'"_,.- ‐┬:.:ァ‐──┬: :ァ= ┬─―-|ヾ r i!
|/ ヽ.. ,.-'" r |/ ,L:厶\_, |: / _/二│ / | .| |
i ヽ | |; 〃  ̄`ヾ |/ 〃 ̄`∨ i | |ヽ
i! ヽ | .| {{ }} {{ }} { | | | また新スレだ!いつもいつも!
| i | | ゞ' ==彡 ゞ ==彡 l | | | 1000にも届かないで!!わたしを弄んで!!
ヽ | | |! ヽヽ ヽヽ l | | i!
ヽ、 | | | /⌒¨¨¨¨¨¨¨¨¨⌒ヽ / | i/
ヽ、 / ヽ ヽ、 { 丿 / /,! ,i!
ヾ`ヽー' `ヽ、 `ヽ、 ェ-―‐-く / ./ /
``―、_ ` ‐、_ ` ー--/ __ `ヽ/ ./ /
`゙゙‐-、 ゙`ー、.._/ i'" `ヽ /,/
/ / ヽ ヽヽ、_ヽ
/ _,.-‐''" ヽ ヽ `ヽ
/ _,,.-‐'" ヽ ヽ ヽ
/ _,.-'" ヽ ヽ ヽ
/ _,.-‐'" i! i! .._ i
人_,.-‐" _,,... _;;.::='' \ i! i!/ >'
/ _,,..-''_,.-‐''" 入 /_____/ ,.イ'
| ,.-ヽ、 _,.-'"_,.- ‐┬:.:ァ‐──┬: :ァ= ┬─―-|ヾ r i!
|/ ヽ.. ,.-'" r |/ ,L:厶\_, |: / _/二│ / | .| |
i ヽ | |; 〃  ̄`ヾ |/ 〃 ̄`∨ i | |ヽ
i! ヽ | .| {{ }} {{ }} { | | | また新スレだ!いつもいつも!
| i | | ゞ' ==彡 ゞ ==彡 l | | | 1000にも届かないで!!わたしを弄んで!!
ヽ | | |! ヽヽ ヽヽ l | | i!
ヽ、 | | | /⌒¨¨¨¨¨¨¨¨¨⌒ヽ / | i/
ヽ、 / ヽ ヽ、 { 丿 / /,! ,i!
ヾ`ヽー' `ヽ、 `ヽ、 ェ-―‐-く / ./ /
``―、_ ` ‐、_ ` ー--/ __ `ヽ/ ./ /
`゙゙‐-、 ゙`ー、.._/ i'" `ヽ /,/
8デフォルトの名無しさん
2022/06/21(火) 18:27:05.65ID:/ETIo2hH2022/06/21(火) 18:45:23.25ID:cgA+HP5m
例がアカンわそれ
オーバーロードがある言語でもオーバーロードすべき時とメソッドを分けるべき時が当然ある
fcntlなんかはオーバーロードを考えるより先に分割を検討すべきものだから議論がとっちらかる
オーバーロードがある言語でもオーバーロードすべき時とメソッドを分けるべき時が当然ある
fcntlなんかはオーバーロードを考えるより先に分割を検討すべきものだから議論がとっちらかる
10デフォルトの名無しさん
2022/06/21(火) 18:55:56.41ID:n99R/Leg2022/06/21(火) 18:56:25.10ID:l/hCBOZ3
2022/06/21(火) 19:00:59.44ID:XqbO80NY
求めてるのはオーバーロードじゃなくてデフォルト引数だね
13デフォルトの名無しさん
2022/06/21(火) 19:02:06.03ID:n99R/Leg オーバーロードできるからと、いつもオーバーロードするわけではない。
だがオーバーロードが適切な場合はオーバーロードできたほうが良い。
単にそれだけ。
原理主義者になるな。
だがオーバーロードが適切な場合はオーバーロードできたほうが良い。
単にそれだけ。
原理主義者になるな。
14デフォルトの名無しさん
2022/06/21(火) 19:15:17.39ID:n99R/Leg2022/06/21(火) 19:19:23.26ID:zS+KQ1el
オーバーロードは関数を値として持とうとしたときに関数の実体を取得するのがくそほど面倒臭かった記憶
2022/06/21(火) 19:34:47.92ID:bYqCGEc9
オーバーロードの追加はAPIの変更に含まれますか?
2022/06/21(火) 19:36:24.38ID:l8WwdmAr
ジェネリクス以外でわざわざ同じ関数名使う必然性がないわな。
2022/06/21(火) 19:39:33.13ID:hzkld3Bb
Objective-Cの関数名って長かったよなあ(遠い目)
2022/06/21(火) 19:45:56.46ID:8AFmzPLe
オーバーロードの有無で使用する言語を選ぶ人っているのか?
いないなら些末な議論
いないなら些末な議論
2022/06/21(火) 20:30:16.16ID:vSYkmcQ8
>>8
よく考えてから反論の例を挙げよう
fcntlこそオーバーロードに不向きだろ
まずfcntlの引数は代数的データ型になっていることを理解できるか?
つまりRustならばそれはenumなので例えばこんな風に解決される
enum FcntlArgs {
F_GETFL,
F_SETFL(O_Flag),
F_DUPFD(FileDescriptor),
F_SETLK(Flock),
...
}
これでlibcインタフェースよりもシンプルかつ分かりやすく間違いなく表現できる
関数の引数はもちろんfdとこのFcntlArgsの2つに固定される
fn fnctl(fd: FileDescriptor, args: FcntlArgs) -> Result<FcntlReturn, Error>
と戻り値も様々なものが返るからenum FcntlReturnを用意すればミス防止になるだろう
エラーもそのenumに混ぜる手もあるがここでは分けて汎用的にResultとしている
その場合の使い方はこんな感じのコードになるだろう
if let O_Flag(o) = fcntl(fd, F_GETFL)? {
o |= O_NONBLOCK;
fcntl(fd, F_SETFL(o))?;
}
よく考えてから反論の例を挙げよう
fcntlこそオーバーロードに不向きだろ
まずfcntlの引数は代数的データ型になっていることを理解できるか?
つまりRustならばそれはenumなので例えばこんな風に解決される
enum FcntlArgs {
F_GETFL,
F_SETFL(O_Flag),
F_DUPFD(FileDescriptor),
F_SETLK(Flock),
...
}
これでlibcインタフェースよりもシンプルかつ分かりやすく間違いなく表現できる
関数の引数はもちろんfdとこのFcntlArgsの2つに固定される
fn fnctl(fd: FileDescriptor, args: FcntlArgs) -> Result<FcntlReturn, Error>
と戻り値も様々なものが返るからenum FcntlReturnを用意すればミス防止になるだろう
エラーもそのenumに混ぜる手もあるがここでは分けて汎用的にResultとしている
その場合の使い方はこんな感じのコードになるだろう
if let O_Flag(o) = fcntl(fd, F_GETFL)? {
o |= O_NONBLOCK;
fcntl(fd, F_SETFL(o))?;
}
2022/06/21(火) 21:43:34.03ID:gx+wq5uQ
2022/06/21(火) 21:57:39.81ID:Z7u4GR2t
>>19
>オーバーロードの有無で使用する言語を選ぶ人っているのか?
ドカタは低脳、ゆとり、基地外でも大歓迎な職業なもんだから、
へんな奴が多い。そして、5chのム板に来る奴にはそれの重度な奴が多い。
そんな奴(重度の基地系)だと些細なことでも異常ににこだわる(超粘着する)のが普通なんだよ。
で、俺的にはオーバーロード必死な人が使っている言語(メイン言語)が何なのか興味あるが
>オーバーロードの有無で使用する言語を選ぶ人っているのか?
ドカタは低脳、ゆとり、基地外でも大歓迎な職業なもんだから、
へんな奴が多い。そして、5chのム板に来る奴にはそれの重度な奴が多い。
そんな奴(重度の基地系)だと些細なことでも異常ににこだわる(超粘着する)のが普通なんだよ。
で、俺的にはオーバーロード必死な人が使っている言語(メイン言語)が何なのか興味あるが
2022/06/21(火) 22:00:18.48ID:Z0vonPWK
2022/06/21(火) 22:24:10.62ID:PKuk2WhK
2022/06/21(火) 22:33:00.05ID:vSYkmcQ8
>>23
別のメソッドにしなくても
もし使用ミスがあればコンパイル時エラーとなるため>>20の仕様でも全く問題ない
そしてこの手法はRustでは常套
例えばHTTPのメソッドはGETやPOSTやDELETEなど39種類が定められているが
Rustでは39種類のメソッド関数を用意せず今回の例のようにenumに39種類を並べて用いている
今回のfcntlでも大量のメソッド関数を作るのは好ましくないと考える
さらに今回は>>8がオーバーロードがない場合は関数を分けてfcntl_getfl()やfcntl_setfl()などと大量に作らざるを得なくなる例として持ち出してきた流れ
だからオーバーロードなんか無くてもfcntl()一つで済むことを示した
そしてこれは汎用的な手法である
別のメソッドにしなくても
もし使用ミスがあればコンパイル時エラーとなるため>>20の仕様でも全く問題ない
そしてこの手法はRustでは常套
例えばHTTPのメソッドはGETやPOSTやDELETEなど39種類が定められているが
Rustでは39種類のメソッド関数を用意せず今回の例のようにenumに39種類を並べて用いている
今回のfcntlでも大量のメソッド関数を作るのは好ましくないと考える
さらに今回は>>8がオーバーロードがない場合は関数を分けてfcntl_getfl()やfcntl_setfl()などと大量に作らざるを得なくなる例として持ち出してきた流れ
だからオーバーロードなんか無くてもfcntl()一つで済むことを示した
そしてこれは汎用的な手法である
2022/06/21(火) 22:52:38.19ID:NotgbbUa
相手にしたら負け
学習しましょう
学習しましょう
2022/06/21(火) 23:20:14.77ID:Z7u4GR2t
オーバーロードが無いと嫌だ嫌だな人はオーバーロードを変態にした
C++の可変引数テンプレート(可変長ジェネリクス引数)のようなものが実は欲しいってことなんじゃないのか
C++の可変引数テンプレート(可変長ジェネリクス引数)のようなものが実は欲しいってことなんじゃないのか
2022/06/21(火) 23:42:15.69ID:aTTVmXQa
新しく作る前提ならfcntlみたいに責務の異なる複数の処理は
1つの関数ではなく1つのクラスやモジュールにまとめたほうがいいのは間違いない
ただ既存APIのラッパーなら使いやすい形にAPIを変更した方がいいケースもあれば
既存と同じ感覚で使える形に留めたほうがいいケースもあるから
分割がいいかどうかはケースバイケース
1つの関数ではなく1つのクラスやモジュールにまとめたほうがいいのは間違いない
ただ既存APIのラッパーなら使いやすい形にAPIを変更した方がいいケースもあれば
既存と同じ感覚で使える形に留めたほうがいいケースもあるから
分割がいいかどうかはケースバイケース
2022/06/22(水) 00:47:54.76ID:OgTLLOot
2022/06/22(水) 01:52:24.75ID:li50soYi
ここまですべてスレタイにない言語の話題
2022/06/22(水) 03:03:24.75ID:SASaungr
2022/06/22(水) 07:15:40.26ID:KrJiTw7R
>>29
Rustはtraitを用いたジェネリクスやenumなど便利で強力な機構を備えているため
具体的な現実の問題のほとんどはオーバーロードを使わずともそれらを用いてもっと良い解決を取ることが出来てしまう
Rustはtraitを用いたジェネリクスやenumなど便利で強力な機構を備えているため
具体的な現実の問題のほとんどはオーバーロードを使わずともそれらを用いてもっと良い解決を取ることが出来てしまう
2022/06/22(水) 08:41:50.14ID:lobyXiUO
幼稚園児の発想だね
34デフォルトの名無しさん
2022/06/22(水) 08:59:15.48ID:s09CCxIL nim ってどうよ?
2022/06/22(水) 10:00:29.78ID:V1lHcDUa
>>34
かなりいいよ
かなりいいよ
36デフォルトの名無しさん
2022/06/22(水) 10:53:23.20ID:tHEXzaPe flutter で dart だろ。Swift UIとか覚える気ない、というかApple終わってるし
2022/06/22(水) 11:56:08.73ID:4fUU5ZCa
nimダウンロードできない。
なぜか、消える。ノートンが削除してるの?
なぜか、消える。ノートンが削除してるの?
2022/06/22(水) 12:27:18.00ID:dG1UKNjk
>>37
この文面からして明らかにプログラミング向いてなさそう
この文面からして明らかにプログラミング向いてなさそう
2022/06/22(水) 17:58:01.91ID:jR4emiFb
GUIフレームワークがついてる言語が少ないので嫌だな
2022/06/22(水) 23:42:43.21ID:DzsA87OB
ノートンなどアンチウイルスソフトが必ず隔離や削除する、インストールの際はインストール先を例外にする必要があります
全部誤判定なんだがアンチウイルスソフトの会社は殿様商売だな
全部誤判定なんだがアンチウイルスソフトの会社は殿様商売だな
2022/06/24(金) 13:42:32.48ID:Z+V4WXYl
>>40
ここまで日本語不自由だと生きるのつらそう
ここまで日本語不自由だと生きるのつらそう
2022/06/24(金) 19:59:44.23ID:AZl692OH
【IT】世界中のIT技術者から愛されているプログラミング言語 3位は「Clojure」、2位は「Elixir」 1位は? [田杉山脈★]
https://egg.5ch.net/test/read.cgi/bizplus/1656048302/
スレタイはこの上位といれかえたら?
https://egg.5ch.net/test/read.cgi/bizplus/1656048302/
スレタイはこの上位といれかえたら?
2022/06/24(金) 20:12:58.51ID:UJITbcs3
ClojureもElixirもいいけど次世代かって聞かれるとう~ん
なんだろうね次世代って
なんだろうね次世代って
2022/06/25(土) 09:52:11.80ID:+nqB0HMQ
>>42
毎年恒例の1位となってるな
>世界中のIT技術者から愛されているプログラミング言語はなにか。
>プログラミング関連のQ&Aサイト「Stack Overflow」を運営する米Stack Exchangeが
>そのような調査結果を発表した。
>各言語の「Loved」(愛している)と「Dreaded」(恐れている)の比率で
>Lovedが最も高かったのは「Rust」(86.73%)で7年連続で1位になった。
>回答数は7万1467件。
毎年恒例の1位となってるな
>世界中のIT技術者から愛されているプログラミング言語はなにか。
>プログラミング関連のQ&Aサイト「Stack Overflow」を運営する米Stack Exchangeが
>そのような調査結果を発表した。
>各言語の「Loved」(愛している)と「Dreaded」(恐れている)の比率で
>Lovedが最も高かったのは「Rust」(86.73%)で7年連続で1位になった。
>回答数は7万1467件。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市早苗総理 G20サミット“遅刻” 会議後の夕食会出席も見送り [Hitzeschleier★]
- 【石破茂前首相】台湾有事巡る高市発言に苦言 神経使う日中関係「よく認識しながらやって」 [ぐれ★]
- 【産経新聞】高市政権をバッシングする勢力、中国と一部のオールドメディアと緊縮財政派か [Hitzeschleier★]
- 【毎日世論調査】高市内閣の支持率65% 日中関係悪化も高水準維持、若年層に強み [蚤の市★]
- 小泉進次郎防衛相「共産党が日本の弾薬の数や配備を質問してきた、そんなこと言うわけない、手の内を見せるべきではない」 [お断り★]
- 【裁判】山上徹也被告の妹「大好きなお兄ちゃん」「旧統一教会信者の叔母から、選挙時に自民党の特定の候補に入れてほしいと…」奈良地裁 [1ゲットロボ★]
- 京都競馬4回6日目マイルチャンピオンシップ
- 2025 SUPER FORMULA Lap21 【歩夢、伝説へ】
- 他サポ 2025-265
- ベガルタ仙台実況 ★3
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1809
- とらせん 2
- 【悲報】Twitter、登録国を表示できる機能を追加し大炎上 [347751896]
- 勤労感謝🙏の日のちゅちょ👶り放題スレ🏡
- 【悲報】「みいちゃんと山田さん」とうとう一流紙に名指しで批判される [811796219]
- 小野田大臣に「混血の雑種」…誹謗中傷が限界突破 [545512288]
- 【速報】高市内閣支持率、先月と同じ65%と高支持率を維持!他の世代は軒並み微減も30代からの支持が爆上げ(76%) [597533159]
- 第50回神栖花火大会(神栖市市制施行20周年記念事業)が開催された!!!!!!!!!!!! [793051416]
