スレタイ(順番はRedMonk準拠)以外の言語もok
前スレ
次世代言語24 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1647887021/
次世代言語25 TypeScript Swift Go Kotlin Rust Nim
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
2022/04/17(日) 17:52:35.38ID:KG26dcth820デフォルトの名無しさん
2022/06/14(火) 18:18:15.24ID:wSQCOwvw821デフォルトの名無しさん
2022/06/14(火) 18:20:27.99ID:jATTslXV golang入門したころにファイルの読み書きや文字の扱いのライブラリを見て愕然としたな
こういう世界がまだあるんだなって
こういう世界がまだあるんだなって
822デフォルトの名無しさん
2022/06/14(火) 18:31:08.14ID:OVbm/pyy >>817
goの作者知らんのか...
goの作者知らんのか...
823デフォルトの名無しさん
2022/06/14(火) 18:32:45.87ID:FCklzJDr824デフォルトの名無しさん
2022/06/14(火) 18:35:13.31ID:jATTslXV goの作者の一人は有名人過ぎるけどもう後進に道を譲れよよ思う
825デフォルトの名無しさん
2022/06/14(火) 18:40:13.93ID:xmR5ySSw >>821
file, err := os.OpenFile("foo.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0777)
これがキレイだとは決して思わんが....
let mut file = File::options().read(true).write(true).open("foo.txt")?;
これもどうかと思うぞ?何故、直感的ではないoptionsでopenに繋げるチェーンなのか..確かにオプションの設定はpanicが起こらないから
言語的な理由(言い訳)は分かる。でもRustってオプション扱いを第二引数にしない思想があるんだろうか...
>>822
デニス・リッチーとかC言語の作者とかだからC言語のライブラリと似た名前になるはある意味当たり前だよなあ
file, err := os.OpenFile("foo.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0777)
これがキレイだとは決して思わんが....
let mut file = File::options().read(true).write(true).open("foo.txt")?;
これもどうかと思うぞ?何故、直感的ではないoptionsでopenに繋げるチェーンなのか..確かにオプションの設定はpanicが起こらないから
言語的な理由(言い訳)は分かる。でもRustってオプション扱いを第二引数にしない思想があるんだろうか...
>>822
デニス・リッチーとかC言語の作者とかだからC言語のライブラリと似た名前になるはある意味当たり前だよなあ
826デフォルトの名無しさん
2022/06/14(火) 18:46:33.92ID:jATTslXV >>825
Rustの標準ライブラリが汚い理由はオーバーロードがない、デフォルト引数がないから
Rustの標準ライブラリが汚い理由はオーバーロードがない、デフォルト引数がないから
827デフォルトの名無しさん
2022/06/14(火) 18:47:21.55ID:8A+wXs8O デニス・リッチーが直接に関わったという話は聞いたことないけど、ケン・トンプソンと勘違いしているのだろうか
親しい人物たちではある
親しい人物たちではある
828デフォルトの名無しさん
2022/06/14(火) 18:47:26.18ID:jATTslXV そして弱点を補うためにマクロを使ってるから汚い
829デフォルトの名無しさん
2022/06/14(火) 18:50:32.39ID:FCklzJDr830デフォルトの名無しさん
2022/06/14(火) 18:54:01.24ID:jATTslXV 幼稚園児がいる模様
831デフォルトの名無しさん
2022/06/14(火) 18:56:01.59ID:jATTslXV >>829
画像あるから普通に顔見てみたいなら見ればいいでちゅよ?
画像あるから普通に顔見てみたいなら見ればいいでちゅよ?
832デフォルトの名無しさん
2022/06/14(火) 19:02:21.29ID:OVbm/pyy >>829
有名人だから顔なんてネットに溢れてるんだからとっとと見て好きなだけ罵倒してきなよ
有名人だから顔なんてネットに溢れてるんだからとっとと見て好きなだけ罵倒してきなよ
833デフォルトの名無しさん
2022/06/14(火) 19:15:33.51ID:eqeTk7gF Goのモジュールシステムシンプルでわかりやすいと思うけどな
フォルダでパッケージ表すだけだし
名前で困るってのがよくわからないけど必要以上に作ってるんじゃないの?
Rustのほうが複雑で意味不明だと思うんだが
フォルダでパッケージ表すだけだし
名前で困るってのがよくわからないけど必要以上に作ってるんじゃないの?
Rustのほうが複雑で意味不明だと思うんだが
834デフォルトの名無しさん
2022/06/14(火) 19:21:23.05ID:bI70PJIL Don't you know you know?
835デフォルトの名無しさん
2022/06/14(火) 19:37:19.54ID:nghM89d8836デフォルトの名無しさん
2022/06/14(火) 19:52:21.06ID:0h5AdYzJ >>825
君その話前にもRustスレでしてなかった?
君その話前にもRustスレでしてなかった?
837デフォルトの名無しさん
2022/06/14(火) 19:54:38.26ID:GHB3UZAZ ケン・トンプソンなんかおまえ
この業界に居たらまさに神様みたいな存在で
それより上がおらんくらいのハッカーなんだから
こんなクソスレで軽々しく名前出すのすら憚られるやろフツーに
この業界に居たらまさに神様みたいな存在で
それより上がおらんくらいのハッカーなんだから
こんなクソスレで軽々しく名前出すのすら憚られるやろフツーに
838デフォルトの名無しさん
2022/06/14(火) 20:00:51.53ID:GHB3UZAZ > ile, err := os.OpenFile( os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0777)
> let mut file = File::options().read(true).write(true).open("foo.txt")?;
File.open('foo.txt', 'w'){|f| ... }
やっぱrubyがスッキリやね
> let mut file = File::options().read(true).write(true).open("foo.txt")?;
File.open('foo.txt', 'w'){|f| ... }
やっぱrubyがスッキリやね
839デフォルトの名無しさん
2022/06/14(火) 20:30:21.52ID:FCklzJDr840デフォルトの名無しさん
2022/06/14(火) 20:46:16.55ID:8A+wXs8O 異次元すぎて逆にかわいい
841デフォルトの名無しさん
2022/06/14(火) 21:16:23.17ID:GHB3UZAZ 滑稽を通り越した何かだな
842デフォルトの名無しさん
2022/06/14(火) 21:39:51.47ID:yie2XOKe 老害ロールプレイ楽しいか
843デフォルトの名無しさん
2022/06/14(火) 23:27:33.27ID:jATTslXV Rustは通常の言語仕様で欠落してる部分がある
それをマクロで補っている
それをマクロで補っている
844デフォルトの名無しさん
2022/06/15(水) 00:03:02.45ID:clxQJqr6 >>826
デフォルト引数やキーワード引数が欲しいのは分かるけどオーバーロードが欲しいのはなぜ?
デフォルト引数やキーワード引数が欲しいのは分かるけどオーバーロードが欲しいのはなぜ?
845デフォルトの名無しさん
2022/06/15(水) 00:09:27.56ID:a3eoLX8e >>844
JAVA出身だから
JAVA出身だから
846デフォルトの名無しさん
2022/06/15(水) 00:50:48.06ID:pzXtsAzL オーバーロードは直感的だから
847デフォルトの名無しさん
2022/06/15(水) 00:56:03.07ID:pzXtsAzL デフォルト引数が必要だと思うならそれはもう関数オーバーロードが必要だとおもっていることと同義だろ
848デフォルトの名無しさん
2022/06/15(水) 01:27:19.31ID:SBK/Y+J6 >>825
C:f= open(out, O_WRONLY|O_CREAT|O_TRUNC, 0777);
D:auto to = File("output.txt", "wb");
Erlang:{ok, Contents} = file:read_file( "input.txt" ),
Fortran(2003):open(in, file="input.txt", status="old", action="read", access="stream", iostat=err)
Basic(Free Basic/VB):Open "input.txt" For Input As #1
Nim:var f = open "output.txt", fmWrite
Objective-C:NSData *data = [NSData dataWithContentsOfFile:@"input.txt"];
Perl:open my $fh_in, '<', 'input.txt' or die "$!";
Python:infile = open('input.txt', 'r')
Tcl:set infile [open "input.txt" r]
Rustは異質、ド変態はFortranとObjective-C。Swiftは知らん
C:f= open(out, O_WRONLY|O_CREAT|O_TRUNC, 0777);
D:auto to = File("output.txt", "wb");
Erlang:{ok, Contents} = file:read_file( "input.txt" ),
Fortran(2003):open(in, file="input.txt", status="old", action="read", access="stream", iostat=err)
Basic(Free Basic/VB):Open "input.txt" For Input As #1
Nim:var f = open "output.txt", fmWrite
Objective-C:NSData *data = [NSData dataWithContentsOfFile:@"input.txt"];
Perl:open my $fh_in, '<', 'input.txt' or die "$!";
Python:infile = open('input.txt', 'r')
Tcl:set infile [open "input.txt" r]
Rustは異質、ド変態はFortranとObjective-C。Swiftは知らん
849デフォルトの名無しさん
2022/06/15(水) 03:18:03.71ID:x0I/jK+a850デフォルトの名無しさん
2022/06/15(水) 03:22:52.73ID:tT/4QRGb 一般的にデータを初期化する際にいくつもの数のオプション値指定が存在するものが多い
デフォルト引数にしても1つ目と2つ目はデフォルト値でいいけど3つ目は指定したいなど歯抜けでわかりにくくなる
そこで一般的にその問題を解決するオプション指定方法としてビルダー方式がある
ビルダー方式では指定したいオプション値のみをビルダーに対してオプション指定メソッド(の必要ならチェーン)で指定していくものである
あるオプション指定は同時に2つのデータを与えなければならない場合でもこのビルダー方式ではメソッド引数2個で矛盾なくシンプルに表せる
さらに型チェックの厳しい言語ともこのビルダー方式は相性が良く各オプション指定メソッド別に曖昧なく厳格に型宣言できる
ちなみにRustではこのビルダー方式の有用性&利便性が広まり後からこのビルダー方式に移行したものもあるほどである
デフォルト引数にしても1つ目と2つ目はデフォルト値でいいけど3つ目は指定したいなど歯抜けでわかりにくくなる
そこで一般的にその問題を解決するオプション指定方法としてビルダー方式がある
ビルダー方式では指定したいオプション値のみをビルダーに対してオプション指定メソッド(の必要ならチェーン)で指定していくものである
あるオプション指定は同時に2つのデータを与えなければならない場合でもこのビルダー方式ではメソッド引数2個で矛盾なくシンプルに表せる
さらに型チェックの厳しい言語ともこのビルダー方式は相性が良く各オプション指定メソッド別に曖昧なく厳格に型宣言できる
ちなみにRustではこのビルダー方式の有用性&利便性が広まり後からこのビルダー方式に移行したものもあるほどである
851デフォルトの名無しさん
2022/06/15(水) 03:32:06.02ID:tT/4QRGb >>849
Rustは例外機構がないからもっとエラー処理がシンプル
「?」一文字付加するだけで(必要ならエラー自動変換しつつ)上位関数にエラー処理委任できる
そのため例外機構がなくても記述がシンプルかつ同様のことが出来るだけでなくエラー処理忘れなどもコンパイル時に指摘してくれて安全
Rustは例外機構がないからもっとエラー処理がシンプル
「?」一文字付加するだけで(必要ならエラー自動変換しつつ)上位関数にエラー処理委任できる
そのため例外機構がなくても記述がシンプルかつ同様のことが出来るだけでなくエラー処理忘れなどもコンパイル時に指摘してくれて安全
852デフォルトの名無しさん
2022/06/15(水) 06:09:36.05ID:sEZPBRlz こんだけ色々な言語が乱立するってコンピュータの世界はバベルの塔だわ
853デフォルトの名無しさん
2022/06/15(水) 15:47:16.86ID:IEWflW3G コンピューターはバビルの塔
854デフォルトの名無しさん
2022/06/15(水) 18:32:44.57ID:oaz3/shQ 賽の河原での石積みに
昔から例えられている
昔から例えられている
855デフォルトの名無しさん
2022/06/15(水) 19:56:50.22ID:IqYclFLA twitterの「スタバでMacを開くエンジニア」って奴ほんと嫌い
qiitaの記事も大したこと書いていないわりに結構な頻度でバズってて流れて来るから目障りだわ
技術力ないから逆にわかってませんアピールを武器にしていっている印象受けるんだがエンジニア畑にああいうネタ系の自虐するノリほんまいらねえよ
エンジニア畑でバズるの狙うなら純粋に技術力の高さで競っていけよって思う
qiitaの記事も大したこと書いていないわりに結構な頻度でバズってて流れて来るから目障りだわ
技術力ないから逆にわかってませんアピールを武器にしていっている印象受けるんだがエンジニア畑にああいうネタ系の自虐するノリほんまいらねえよ
エンジニア畑でバズるの狙うなら純粋に技術力の高さで競っていけよって思う
856デフォルトの名無しさん
2022/06/15(水) 23:05:23.86ID:a3eoLX8e なおそのQiita記事に助けられてるもよう
857デフォルトの名無しさん
2022/06/15(水) 23:58:49.93ID:NtuuvbZ6 大したことないって書いてあるだろ…
858デフォルトの名無しさん
2022/06/16(木) 00:21:07.28ID:N0TE7UEH その大したことない記事に助けられてるからバカにされてるんだろアスペw
859デフォルトの名無しさん
2022/06/16(木) 10:40:11.20ID:oOjZlu3s コピペしてすぐ使えるコードが出ている
Qiita記事は役に立つよ
具体的な手順が書いてない記事はゴミ
Qiita記事は役に立つよ
具体的な手順が書いてない記事はゴミ
860デフォルトの名無しさん
2022/06/16(木) 10:47:19.76ID:OyMwP3lE qiitaもワイもアカウント持ってて投稿したりしてるぐらいだから別に否定しているわけではないんだが
qiitaがクソだと言っている分けではなくてただこいつがqiitaに載せている記事すべてが糞だっていう意味を言っている
気になるんなら見とけよ内容もtwitter上を跋扈するいわゆる情報商材系サイトのそれに近くて技術的な要素を一切含んでいない
https://qiita.com/SMAC
qiitaがクソだと言っている分けではなくてただこいつがqiitaに載せている記事すべてが糞だっていう意味を言っている
気になるんなら見とけよ内容もtwitter上を跋扈するいわゆる情報商材系サイトのそれに近くて技術的な要素を一切含んでいない
https://qiita.com/SMAC
861デフォルトの名無しさん
2022/06/16(木) 11:28:53.21ID:jHsLwKQ/ ここはお前の日記帳かよ
というか「スタバでMacを開くエンジニア」って固有名詞かよ
というか「スタバでMacを開くエンジニア」って固有名詞かよ
862デフォルトの名無しさん
2022/06/16(木) 11:55:25.21ID:4wdIdA1r >>858
助けられてるって書いてるか?
助けられてるって書いてるか?
863デフォルトの名無しさん
2022/06/16(木) 13:02:40.58ID:uKxWv5Aj Qiitaはごみ
864デフォルトの名無しさん
2022/06/16(木) 16:40:13.18ID:N0TE7UEH >>862
Twitter一生懸命見て彼の成長に嫉妬してる時点で、君の”負け”やで
Twitter一生懸命見て彼の成長に嫉妬してる時点で、君の”負け”やで
865デフォルトの名無しさん
2022/06/16(木) 18:30:34.70ID:OyMwP3lE >>864
「エンジニア1年生必見おすすめ入門書!」「【20XY年度最新】無料プログラミング学習サービス」「基本情報技術者試験のための戦略的方法」みたいなしょうもない記事しか書いていない奴のどこに技術的成長を感じればいいのか疑問なんやけど
お前はまさかこういった記事を見て勉強してんのか?(笑)
お前が勝ち負け判断すんの?(笑)
少なくともSNSで頻繁に目障りな投稿をしている人が他の媒体でどのような活動をしているのか確認する行為自体を一生懸命にならないとするの達成できない時点でお前がこの一連の流れのどんな登場人物よりも劣ってること明白じゃんwwwwwwwww
きっと自分の電話にかかってきた電話番号を迷惑電話だったのかどうかネットで調べて確認すると言った最低限な行為すらも日常生活の中でするのには精一杯になってるんやろなwこの低脳(笑)wwwwwwwwwww
「エンジニア1年生必見おすすめ入門書!」「【20XY年度最新】無料プログラミング学習サービス」「基本情報技術者試験のための戦略的方法」みたいなしょうもない記事しか書いていない奴のどこに技術的成長を感じればいいのか疑問なんやけど
お前はまさかこういった記事を見て勉強してんのか?(笑)
お前が勝ち負け判断すんの?(笑)
少なくともSNSで頻繁に目障りな投稿をしている人が他の媒体でどのような活動をしているのか確認する行為自体を一生懸命にならないとするの達成できない時点でお前がこの一連の流れのどんな登場人物よりも劣ってること明白じゃんwwwwwwwww
きっと自分の電話にかかってきた電話番号を迷惑電話だったのかどうかネットで調べて確認すると言った最低限な行為すらも日常生活の中でするのには精一杯になってるんやろなwこの低脳(笑)wwwwwwwwwww
866デフォルトの名無しさん
2022/06/16(木) 19:21:05.39ID:hEUIHdUO どうみても本人の自作自演
https://www.youtube.com/watch?v=IdBBGkiECc4
https://www.youtube.com/watch?v=IdBBGkiECc4
867デフォルトの名無しさん
2022/06/16(木) 20:03:31.12ID:r+hk7hk0 >>864
成長…?
成長…?
868デフォルトの名無しさん
2022/06/16(木) 20:50:21.92ID:N0TE7UEH うわぁ、必死杉内
869デフォルトの名無しさん
2022/06/16(木) 20:53:08.58ID:arzDgCAq なにこいつ
煽りアフィカス?
煽りアフィカス?
870デフォルトの名無しさん
2022/06/16(木) 20:58:13.91ID:VGxDlt+C デジタル人材の副業・複業採用決定数をプログラミング言語・スキル別で分析
~副業・複業人材の登録が、前年度比3倍に。 調査レポートを公開~
https://prtimes.jp/main/html/rd/p/000000040.000053307.html
~副業・複業人材の登録が、前年度比3倍に。 調査レポートを公開~
https://prtimes.jp/main/html/rd/p/000000040.000053307.html
871デフォルトの名無しさん
2022/06/16(木) 22:42:24.28ID:R+xkwjLU >>869
スタバマックくんかも
スタバマックくんかも
872デフォルトの名無しさん
2022/06/17(金) 14:55:42.76ID:Ld/FFEEi873デフォルトの名無しさん
2022/06/17(金) 15:04:06.85ID:jyuIrjdj 非常にしつこい
874デフォルトの名無しさん
2022/06/17(金) 15:10:54.32ID:2abskYGH なんでワッチョイ無いんだよ
875デフォルトの名無しさん
2022/06/17(金) 17:27:59.16ID:G79h5Zer わざと曲解して話を盛るのが5chクオリティ
876デフォルトの名無しさん
2022/06/17(金) 17:48:44.96ID:q4amRkHc877デフォルトの名無しさん
2022/06/17(金) 17:52:34.99ID:douM25C/ ええでんで
878デフォルトの名無しさん
2022/06/17(金) 19:51:03.63ID:6H4dK9M3 >>825
rustが汚く感じるのはビルダーパターンが気持ち悪いのか、ファイルのopenにビルダーパターン使うのが気持ち悪いのか、どちら?
rustが汚く感じるのはビルダーパターンが気持ち悪いのか、ファイルのopenにビルダーパターン使うのが気持ち悪いのか、どちら?
879デフォルトの名無しさん
2022/06/17(金) 21:08:38.74ID:ueszn7cF880デフォルトの名無しさん
2022/06/17(金) 21:38:00.10ID:8YmvneAf let mut stream = FileStream::builder().read(true).write(true).build("foo.txt")?;
これならいいのか
これならいいのか
881デフォルトの名無しさん
2022/06/17(金) 21:48:55.86ID:G5rhOs4/ Rustにはなんでデフォルト引数ないの?
Kotlinみたいに名前付き引数もデフォルト引数も欲しい
Kotlinみたいに名前付き引数もデフォルト引数も欲しい
882デフォルトの名無しさん
2022/06/17(金) 21:49:12.87ID:8YmvneAf でもパス名が最後に来るの確かに思考の順序と一致しなくてウザいな
どのファイルを開くかより先にモードを考えたことなんかなかった
どのファイルを開くかより先にモードを考えたことなんかなかった
883デフォルトの名無しさん
2022/06/17(金) 22:02:17.99ID:flaMOIXW >>878
ソフトエンジニアはビルダーパターンは気持ちよすぎになるが
一方、ドカタは気持ち悪いになるってだけだろ
言語としては主ターゲットユーザーがソフトエンジニアかドカタって重要だからな
Rustはソフトエンジニアがターゲットで、そうじゃない奴はRustじゃなくドカタ用言語使え
ってこと。
ソフトエンジニアはビルダーパターンは気持ちよすぎになるが
一方、ドカタは気持ち悪いになるってだけだろ
言語としては主ターゲットユーザーがソフトエンジニアかドカタって重要だからな
Rustはソフトエンジニアがターゲットで、そうじゃない奴はRustじゃなくドカタ用言語使え
ってこと。
884デフォルトの名無しさん
2022/06/17(金) 22:12:15.35ID:1Z6irghS そうでなくて最後にopen()でビルダーが終了して実行そしてエラーが返る
あと横に書くのではなく縦に書くほうが見やすいので推奨される
ビルダー方式にしているのは複雑になりがちな
様々なオプション指定をわかりやすくするため
例えば
書き込み用を新規作成だが既にファイルが存在しているならばエラーとなるオープンならば
let file = File::options()
.create_new(true)
.write(true)
.open("output.txt")?;
Windowsで全てクローズされたら自動削除される書き込みファイルを作成ならば
use std::os::windows::fs::OpenOptionsExt;
let file = File::options()
.create(true)
.write(true)
.custom_flags(FILE_FLAG_DELETE_ON_CLOSE)
.open("tmp.txt")?;
Unix(Linux)でシンボリックファイルならFOLLOWしない(つまりオープン失敗となる)読み込みオープンならば
use std::os::unix::fs::OpenOptionsExt
let file = File::options()
.read(true)
.custom_flags(O_NOFOLLOW)
.open("input.txt")?;
それぞれ他のプログラミング言語で書くとどうなるかを考えてみよう
あと横に書くのではなく縦に書くほうが見やすいので推奨される
ビルダー方式にしているのは複雑になりがちな
様々なオプション指定をわかりやすくするため
例えば
書き込み用を新規作成だが既にファイルが存在しているならばエラーとなるオープンならば
let file = File::options()
.create_new(true)
.write(true)
.open("output.txt")?;
Windowsで全てクローズされたら自動削除される書き込みファイルを作成ならば
use std::os::windows::fs::OpenOptionsExt;
let file = File::options()
.create(true)
.write(true)
.custom_flags(FILE_FLAG_DELETE_ON_CLOSE)
.open("tmp.txt")?;
Unix(Linux)でシンボリックファイルならFOLLOWしない(つまりオープン失敗となる)読み込みオープンならば
use std::os::unix::fs::OpenOptionsExt
let file = File::options()
.read(true)
.custom_flags(O_NOFOLLOW)
.open("input.txt")?;
それぞれ他のプログラミング言語で書くとどうなるかを考えてみよう
885デフォルトの名無しさん
2022/06/17(金) 23:24:36.27ID:1Z6irghS あと余談だが
>>884のO_NOFOLLOW指定はUNIXのC言語プログラマーなら馴染みでも一般的にわかりくいという時
Rustではメソッド拡張が可能なことから
以下のように no_follow_symbolic_link() とわかりやすい指定ができるようにすることも可能
let file = File::options()
.read(true)
.no_follow_symbolic_link()
.open("input.txt")?;
この実現方法はRustの一般的なメソッド拡張と同じで
拡張用のトレイトを用意してその実装を与えればよい
trait OpenOptionsUnixCustomExt {
fn no_follow_symbolic_link(&mut self) -> &mut Self;
}
impl OpenOptionsUnixCustomExt for std::fs::OpenOptions {
fn no_follow_symbolic_link(&mut self) -> &mut Self {
self.custom_flags(O_NOFOLLOW)
}
}
もちろんこの拡張用traitをuseした時のみ有効となる
つまり既にある仕様を壊さずに拡張が可能
いずれにせよビルダー方式でのメソッドチェーン指定は
全てを引数で複雑もしくは長々と指定するよりもよっぽど好ましい方式
>>884のO_NOFOLLOW指定はUNIXのC言語プログラマーなら馴染みでも一般的にわかりくいという時
Rustではメソッド拡張が可能なことから
以下のように no_follow_symbolic_link() とわかりやすい指定ができるようにすることも可能
let file = File::options()
.read(true)
.no_follow_symbolic_link()
.open("input.txt")?;
この実現方法はRustの一般的なメソッド拡張と同じで
拡張用のトレイトを用意してその実装を与えればよい
trait OpenOptionsUnixCustomExt {
fn no_follow_symbolic_link(&mut self) -> &mut Self;
}
impl OpenOptionsUnixCustomExt for std::fs::OpenOptions {
fn no_follow_symbolic_link(&mut self) -> &mut Self {
self.custom_flags(O_NOFOLLOW)
}
}
もちろんこの拡張用traitをuseした時のみ有効となる
つまり既にある仕様を壊さずに拡張が可能
いずれにせよビルダー方式でのメソッドチェーン指定は
全てを引数で複雑もしくは長々と指定するよりもよっぽど好ましい方式
886デフォルトの名無しさん
2022/06/18(土) 01:48:38.80ID:ElTVdqXo ビルダーパターンはオプション引数のある言語でも簡単に実現できるんだが
逆は一般的にハードルが高い(Rustならproc macroとかになる)
ビルダーとオプション引数は本来はユースケースによって使い分けるものなので
使い分けられないようならその言語は機能的に劣っているということ
逆は一般的にハードルが高い(Rustならproc macroとかになる)
ビルダーとオプション引数は本来はユースケースによって使い分けるものなので
使い分けられないようならその言語は機能的に劣っているということ
887デフォルトの名無しさん
2022/06/18(土) 03:34:01.13ID:qRZqKkc3 Rustは代数的データ型のOption型があるから特に困らないんじゃない?
むしろOption型がないプログラミング言語はundefinedやnullやnilなどの排除すべき危険なものが存在していて安全じゃない
むしろOption型がないプログラミング言語はundefinedやnullやnilなどの排除すべき危険なものが存在していて安全じゃない
888デフォルトの名無しさん
2022/06/18(土) 03:46:11.38ID:1ZLmOyHM 欲しいのはオプション引数というかキーワード引数?
Noneなりnullなりが連続する関数呼び出しはつらいよね
Noneなりnullなりが連続する関数呼び出しはつらいよね
889デフォルトの名無しさん
2022/06/18(土) 03:49:38.33ID:qRZqKkc3 デフォルト引数のことか
C、Java、Go、Rust、Haskell、…とサポートしていないプログラミング言語は多いけど
それらの言語が劣っている欠陥言語と言われることはないよ
C、Java、Go、Rust、Haskell、…とサポートしていないプログラミング言語は多いけど
それらの言語が劣っている欠陥言語と言われることはないよ
890デフォルトの名無しさん
2022/06/18(土) 07:13:04.48ID:bAwBngwg やっぱりカリー化が欲しいのよ
891デフォルトの名無しさん
2022/06/18(土) 10:59:53.21ID:W1b6m0i9 デフォルト引数はあったほうがいい
究極的にはPythonみたいに書けるC言語が欲しい
それを目指したのがおそらくGoだと思うが
究極的にはPythonみたいに書けるC言語が欲しい
それを目指したのがおそらくGoだと思うが
892デフォルトの名無しさん
2022/06/18(土) 11:19:30.38ID:56BPbiHd cpythonでええやん
893デフォルトの名無しさん
2022/06/18(土) 11:24:27.43ID:ZQWHh7s0 >>891
あのゴミみたいなsyntaxで目指してるとか鼻で笑うで
あのゴミみたいなsyntaxで目指してるとか鼻で笑うで
894デフォルトの名無しさん
2022/06/18(土) 12:11:06.20ID:i5hxcodT895デフォルトの名無しさん
2022/06/18(土) 12:28:29.18ID:1P56+GFt Kotlinみたいにサポートしてほしい
896デフォルトの名無しさん
2022/06/18(土) 12:37:40.53ID:n5ZvcUIJ RustもGoも標準ライブラリが良くない
気持ち悪い
気持ち悪い
897デフォルトの名無しさん
2022/06/18(土) 12:41:20.81ID:n5ZvcUIJ >>889
欠陥言語なんてものはそもそもほとんどない
デフォルト引数は新言語に人気が出てくると確実に要望が出てくる
いつかは実装される
実装できる余地がある言語はいいけど言語仕様上実装不可な場合はどうしようもない
欠陥言語なんてものはそもそもほとんどない
デフォルト引数は新言語に人気が出てくると確実に要望が出てくる
いつかは実装される
実装できる余地がある言語はいいけど言語仕様上実装不可な場合はどうしようもない
898デフォルトの名無しさん
2022/06/18(土) 12:46:26.67ID:pOm9NLXW899デフォルトの名無しさん
2022/06/18(土) 12:52:00.37ID:n5ZvcUIJ Rsutは意味不明なんだよな
struct初期化で名前指定して初期値入れてるのにデフォルト実装や名前付き引数がない
不思議
struct初期化で名前指定して初期値入れてるのにデフォルト実装や名前付き引数がない
不思議
900デフォルトの名無しさん
2022/06/18(土) 13:00:28.27ID:7x85yRDf Rustはソースコード上の情報多くしたい感じだからデフォルト引数は入らなさそう
ソースコードの見た目をすっきりさせたいなら素直にPythonとか使うのがいいかと
ソースコードの見た目をすっきりさせたいなら素直にPythonとか使うのがいいかと
901デフォルトの名無しさん
2022/06/18(土) 13:08:33.19ID:n5ZvcUIJ デフォルト引数もなく関数オーバーロードがないから謎の関数がぼこぼこ増えるんだろうな
○○
○○_with_XX
○○_by_YY
みたいに
○○
○○_with_XX
○○_by_YY
みたいに
902デフォルトの名無しさん
2022/06/18(土) 13:15:01.13ID:n5ZvcUIJ 言語を作った人間がデフォルト引数絶対に入れない!って言ってても
その人が一線から引いて他の開発メンバーに任されたら速攻で入る
その人が一線から引いて他の開発メンバーに任されたら速攻で入る
903デフォルトの名無しさん
2022/06/18(土) 13:42:57.17ID:7x85yRDf Rustはすでに作った人は居なくなってるし
仕様決めるのも多数決とかじゃなく意見が割れるようなのは入らないからな
コミュニティ全体が入れる空気にならない限り無理
仕様決めるのも多数決とかじゃなく意見が割れるようなのは入らないからな
コミュニティ全体が入れる空気にならない限り無理
904デフォルトの名無しさん
2022/06/18(土) 13:44:38.50ID:n5ZvcUIJ 新しい元老院の出来上がりか
905デフォルトの名無しさん
2022/06/18(土) 13:57:51.20ID:0HZmI7WS Rustは複雑な引数はstructで渡しなさいという考えだから
その方法の一つがビルダーパターンだけど、structとDefaultを組み合わせたほうが個人的には好き
その方法の一つがビルダーパターンだけど、structとDefaultを組み合わせたほうが個人的には好き
906デフォルトの名無しさん
2022/06/18(土) 14:03:46.44ID:1P56+GFt ..Default::default() にシンタックスシュガーあって短く書ければいいんだけど
907デフォルトの名無しさん
2022/06/18(土) 14:46:02.16ID:W1b6m0i9 引数爆発の解決のアプローチはいろいろあるわな
だがキーワード引数があったほうが爆発したときに楽なんだがな
GoやRust的には構造体使えってことか
だがキーワード引数があったほうが爆発したときに楽なんだがな
GoやRust的には構造体使えってことか
908デフォルトの名無しさん
2022/06/18(土) 14:55:32.45ID:vtBUlFGw909デフォルトの名無しさん
2022/06/18(土) 14:56:30.79ID:vtBUlFGw あ、ガイシュツだった
910デフォルトの名無しさん
2022/06/18(土) 17:55:33.35ID:+lle12+G911デフォルトの名無しさん
2022/06/18(土) 18:43:27.93ID:ZQWHh7s0912デフォルトの名無しさん
2022/06/18(土) 19:21:21.77ID:W1b6m0i9 Rustって創始者いないのなんでなの?
913デフォルトの名無しさん
2022/06/18(土) 19:27:03.11ID:1ZLmOyHM >>912
創始者が抜けたのはバーンアウトしたかららしい
創始者が抜けたのはバーンアウトしたかららしい
914デフォルトの名無しさん
2022/06/18(土) 19:56:43.48ID:ZQWHh7s0 >>912
修復不可能なデザインバグを見つけてしまったから逃げたんだろう
修復不可能なデザインバグを見つけてしまったから逃げたんだろう
915デフォルトの名無しさん
2022/06/18(土) 20:01:24.70ID:9K3tt+Ez Mozilla関係の組織っておんも歩けないような人が多いよね
まともな人から辞めていくんだろうか
まともな人から辞めていくんだろうか
916デフォルトの名無しさん
2022/06/18(土) 20:14:49.20ID:ApP/hHwA 燃え尽きて去ったRustの創造者はいまはどこで何をしているんだ?
まさか、googleでGoしているってことないよな
まさか、googleでGoしているってことないよな
917デフォルトの名無しさん
2022/06/18(土) 20:18:43.54ID:1P56+GFt AppleでSwiftの開発をしてるらしいぞ
918デフォルトの名無しさん
2022/06/18(土) 20:30:46.91ID:aTjkq+5e >>910
Rustコミュニティがオープンだとは全然思えない。async-stdとtokioなんか正にそう
Rustコミュニティがオープンだとは全然思えない。async-stdとtokioなんか正にそう
919デフォルトの名無しさん
2022/06/18(土) 20:40:14.11ID:ZQWHh7s0レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★3 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★2 [冬月記者★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★2 [蚤の市★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ ★2 [Hitzeschleier★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★5 [Hitzeschleier★]
- 【ド軍】山本由伸、WBC出場を決断!ドジャースが本人の意向を尊重、佐々木朗希はチームが故障歴を懸念で不参加 [鉄チーズ烏★]
- 【悲報】ネトウヨの次のターゲット「渡邊渚」に決まるwwwwwwwwwwwwwwwwwwwww [455031798]
- 命までは取らない
- 竹中平蔵「日米が長年守り続けてき台湾有事に関する曖昧戦略の知恵を一瞬にして無にさせた岡田の責任は非常に重い」 [271912485]
- 俺とおまえ、どっちが喧嘩が強い?
- ( ・᷄ὢ・᷅ )スケブお願いします
- 中国人、超ド正論。「チベットやウイグルに住んでるのはチベット族やウイグル族だが、アイヌから奪った土地に住んでる日本人こそ侵略者」 [314039747]
