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/
810 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:52:35.02 ID:FiSspViM.net] Typescriptの糞なところ 標準ライブラリがゴミ、ゆえに依存が爆発的に増える 巨大node_modules、プロジェクトごとに作られるのが最高に糞 commonjsやらesmodulesやら統一されていないモジュール形式 prettierやらtsconfigやら大量の面倒な設定 サードパーティーのライブラリに向かってコードジャンプしても型定義ファイルに飛ぶせいでコードが読めない、ゆえにGithubを見に行く必要がある 例外の型定義がないので静的検査ができない、どこでエラーをどうハンドリングするべきかの判断が全くつかない、ゆえに全体をtry catchで囲むことになる この辺がすべてGoでは問題ないから、あとは少し機能増やしてくれたら文句ないんだよなー
811 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 21:04:41.26 ID:fjH64UU8.net] GoのMap糞過ぎて全く読めない JSONをそのまま使えっておまけに型までつくTSさいつよってことなんよ
812 名前:デフォルトの名無しさん [2022/06/13(月) 21:39:05.94 ID:G3CRt2bF.net] 構造体作ってマッピングするのじゃ何がダメなの?必要なのだけ定義すればいいんだが? Typescriptだと型ガードしっかり書かないとただのなんちゃって状態になる雑魚
813 名前:デフォルトの名無しさん mailto:SAGE [2022/06/13(月) 21:47:26.95 ID:SDmJj53H.net] >>797 >サードパーティーのライブラリに向かってコードジャンプしても型定義ファイルに飛ぶせいでコードが読めない、ゆえにGithubを見に行く必要がある 「Atom」を開発終了に追いやった「Visual Studio Code」、月例更新でさらに強力に https://forest.watch.impress.co.jp/docs/news/1416263.html TypeScript開発では「TypeScript 4.7」が導入されたほか、待望の[ソース定義への移動]がサポートされた。100%の確度ではないが、型定義ファイル(*.d.ts)ではなく、JavaScriptによる実装部分へ直接ジャンプできる。 https://twitter.com/mattbierner/status/1517182624917340162 (deleted an unsolicited ad)
814 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:06:28.03 ID:FiSspViM.net] >>800 おーこんなのあったんだ、ありがとー 適当に試してみたけどできないのも結構あるね
815 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:32:02.90 ID:GDAgVCx4.net] 標準ライブラリ大きいのと小さいのどっちが良いのかね
816 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:36:53.23 ID:q8SxO5f8.net] 大きくて、APIが安定していて、ゴミが少ないやつが良い スレタイの中だとGoだろうな
817 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 00:15:44.86 ID:FCklzJDr.net] goはpackageの命名が糞杉 _すら許さないからどいつもこいつも呪文みたいになって可読性最悪
818 名前:デフォルトの名無しさん [2022/06/14(火) 11:26:15.39 ID:Rf4XfD/C.net] Dも_を変な扱い
819 名前:オてたな [] [ここ壊れてます]
820 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 11:32:38.45 ID:8A+wXs8O.net] Effective Goでは、パッケージ名は1単語にしよう、って書かれてるけど、アンダースコアや大文字小文字が使えないわけではないよ どうせ1単語とかいう命名規約はあまり守られてないだろうし、つらいならそのへんの規約も破っちゃえば?
821 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 12:24:42.88 ID:yie2XOKe.net] アンダスコアはPythonが悪い
822 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 14:45:46.33 ID:Hct9Q+tn.net] いまだにgenrandom, gen_raondom, genRandom, GenRandomのどれがいいかわからん PythonやってるとgenrandomだがJavaScriptもやるからgenRandomも使う GoもやるとなったらGenRandomまで使わんといかん いったいどれがいいんだ? 誰か俺に教えてくれ
823 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 14:49:34.72 ID:0h5AdYzJ.net] 言語の推奨に従ってください
824 名前:デフォルトの名無しさん mailto:age [2022/06/14(火) 17:17:08.52 ID:zltAtr9K.net] CSSならlong-name-propertyだし、JSONならLong_Name_Property、SQLならLONG_NAME_PROPERTYまたは long_name_property、JSなど言語ならlongNamePropery、でも定数ならLONG_NAME_PROPERTY、CSVなどなら Long Name Propertyだ。 そして、JavaやC#、C/C++、PythonやGoでもRustでも命名規則(多くは悪魔でも推奨)のようなものがあり、歴史的な経緯と 作者の今日子な意思、プログラミングのしずらさ、あるいはシヤスサ、あるいはコードレビューマウントのために脈々と受け継がれる。 つまり、人類はいまだに命名の正解を得ていない・・・ モジュール snake_case 型 CamelCase トレイト CamelCase Enumのバリアント CamelCase 関数 snake_case
825 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 17:26:35.25 ID:OVbm/pyy.net] 言語内で閉じるなら慣習に従うだけだけど言語またがる時は迷うよね
826 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 17:49:20.30 ID:8A+wXs8O.net] 標準ライブラリは名前が綺麗なのに、自分で命名しようとすると難しくて悲しい
827 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 17:55:42.15 ID:jATTslXV.net] そうでもないぞ RustのThe Bookに出てくる乱数のほぼ標準ライブラリは非常に名前が汚い 馬鹿が考えたような名前と構造
828 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 17:58:02.15 ID:jATTslXV.net] Goも標準ライブラリが汚い 仕組みも複雑
829 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 17:58:54.42 ID:yie2XOKe.net] C++とJavaも大概だわ
830 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:01:35.42 ID:FCklzJDr.net] >>810 なおGoはlongnameproperty ガイジか?
831 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:02:29.74 ID:FCklzJDr.net] >>815 Goは後発の分際であの体たらく どんな頭弱が作ったのか顔が見てみてーわ
832 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:08:01.45 ID:jATTslXV.net] Goのstrconv::atoi()って 悲しくなるわ
833 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:13:47.77 ID:Ypv3OCUB.net] >>804 _ "github.com/mattn/go-sqlite3" >>806 だね、触ったこともない人が騒いでるだけ。とんでもねえアホ
834 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:18:15.24 ID:wSQCOwvw.net] >>818 std::num::strconv::float_to_str_bytes_common (´;ω;`)w
835 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:20:27.99 ID:jATTslXV.net] golang入門したころにファイルの読み書きや文字の扱いのライブラリを見て愕然としたな こういう世界がまだあるんだなって
836 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:31:08.14 ID:OVbm/pyy.net] >>817 goの作者知らんのか...
837 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:32:45.87 ID:FCklzJDr.net] >>819 golintでエラーだぞ おまえこそエアプだろカス PHPでも書いてろ
838 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:35:13.31 ID:jATTslXV.net] goの作者の一人は有名人過ぎるけどもう後進に道を譲れよよ思う
839 名前:デフォルトの名無しさん [2022/06/14(火) 18:40:13.93 ID:xmR5ySSw.net] >>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言語のライブラリと似た名前になるはある意味当たり前だよなあ
840 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:46:33.92 ID:jATTslXV.net] >>825 Rustの標準ライブラリが汚い理由はオーバーロードがない、デフォルト引数がないから
841 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:47:21.55 ID:8A+wXs8O.net] デニス・リッチーが直接に関わったという話は聞いたことないけど、ケン・トンプソンと勘違いしているのだろうか 親しい人物たちではある
842 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:47:26.18 ID:jATTslXV.net] そして弱点を補うためにマクロを使ってるから汚い
843 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:50:32.39 ID:FCklzJDr.net] >>822 有名と有能は違うぞ どこぞの通貨危機衰退先進国のゲリ首相は有名だが有能か?
844 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:54:01.24 ID:jATTslXV.net] 幼稚園児がいる模様
845 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 18:56:01.59 ID:jATTslXV.net] >>829 画像あるから普通に顔見てみたいなら見ればいいでちゅよ?
846 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 19:02:21.29 ID:OVbm/pyy.net] >>829 有名人だから顔なんてネットに溢れてるんだからとっとと見て好きなだけ罵倒してきなよ
847 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 19:15:33 ID:eqeTk7gF.net] Goのモジュールシステムシンプルでわかりやすいと思うけどな フォルダでパッケージ表すだけだし 名前で困るってのがよくわからないけど必要以上に作ってるんじゃないの? Rustのほうが複雑で意味不明だと思うんだが
848 名前:デフォルトの名無しさん [2022/06/14(火) 19:21:23.05 ID:bI70PJIL.net] Don't you know you know?
849 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 19:37:19.54 ID:nghM89d8.net] >>825 メソッドチェーンでオプション書くの大嫌い 単なるデータは普通にデータとして書かせてくれ
850 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 19:52:21.06 ID:0h5AdYzJ.net] >>825 君その話前にもRustスレでしてなかった?
851 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 19:54:38.26 ID:GHB3UZAZ.net] ケン・トンプソンなんかおまえ この業界に居たらまさに神様みたいな存在で それより上がおらんくらいのハッカーなんだから こんなクソスレで軽々しく名前出すのすら憚られるやろフツーに
852 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 20:00:51.53 ID:GHB3UZAZ.net] > 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がスッキリやね
853 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 20:30:21.52 ID:FCklzJDr.net] >>837 The 老害やな 長いものに巻かれろ、年長者は無条件に敬え、右に倣え、出る杭は打て、死なば諸共 これが衰退先進国糞バカ中世ジャップランド土人村の末路
854 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 20:46:16.55 ID:8A+wXs8O.net] 異次元すぎて逆にかわいい
855 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 21:16:23.17 ID:GHB3UZAZ.net] 滑稽を通り越した何かだな
856 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 21:39:51.47 ID:yie2XOKe.net] 老害ロールプレイ楽しいか
857 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 23:27:33.27 ID:jATTslXV.net] Rustは通常の言語仕様で欠落してる部分がある それをマクロで補っている
858 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 00:03:02.45 ID:clxQJqr6.net] >>826 デフォルト引数やキーワード引数が欲しいのは分かるけどオーバーロードが欲しいのはなぜ?
859 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 00:09:27.56 ID:a3eoLX8e.net] >>844 JAVA出身だから
860 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 00:50:48.06 ID:pzXtsAzL.net] オーバーロードは直感的だから
861 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 00:56:03.07 ID:pzXtsAzL.net] デフォルト引数が必要だと思うならそれはもう関数オーバーロードが必要だとおもっていることと同義だろ
862 名前:デフォルトの名無しさん [2022/06/15(水) 01:27:19.31 ID:SBK/Y+J6.net] >>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は知らん
863 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 03:18:03.71 ID:x0I/jK+a.net] >>848 こう見るとPythonが一番美しいな 例外あるからエラー処理省略できるし これが良いかどうかはまた別の話として
864 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 03:22:52.73 ID:tT/4QRGb.net] 一般的にデータを初期化する際にいくつもの数のオプション値指定が存在するものが多い デフォルト引数にしても1つ目と2つ目はデフォルト値でいいけど3つ目は指定したいなど歯抜けでわかりにくくなる そこで一般的にその問題を解決するオプション指定方法としてビルダー方式がある ビルダー方式では指定したいオプション値のみをビルダーに対してオプション指定メソッド(の必要ならチェーン)で指定していくものである あるオプション指定は同時に2つのデータを与えなければならない場合でもこのビルダー方式ではメソッド引数2個で矛盾なくシンプルに表せる さらに型チェックの厳しい言語ともこのビルダー方式は相性が良く各オプション指定メソッド別に曖昧なく厳格に型宣言できる ちなみにRustではこのビルダー方式の有用性&利便性が広まり後からこのビルダー方式に移行したものもあるほどである
865 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 03:32:06.02 ID:tT/4QRGb.net] >>849 Rustは例外機構がないからもっとエラー処理がシンプル 「?」一文字付加するだけで(必要ならエラー自動変換しつつ)上位関数にエラー処理委任できる そのため例外機構がなくても記述がシンプルかつ同様のことが出来るだけでなくエラー処理忘れなどもコンパイル時に指摘してくれて安全
866 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 06:09:36.05 ID:sEZPBRlz.net] こんだけ色々な言語が乱立するってコンピュータの世界はバベルの塔だわ
867 名前:デフォルトの名無しさん [2022/06/15(水) 15:47:16.86 ID:IEWflW3G.net] コンピューターはバビルの塔
868 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:32:44.57 ID:oaz3/shQ.net] 賽の河原での石積みに 昔から例えられている
869 名前:デフォルトの名無しさん [2022/06/15(水) 19:56:50.2
] [ここ壊れてます]
870 名前:2 ID:IqYclFLA.net mailto: twitterの「スタバでMacを開くエンジニア」って奴ほんと嫌い qiitaの記事も大したこと書いていないわりに結構な頻度でバズってて流れて来るから目障りだわ 技術力ないから逆にわかってませんアピールを武器にしていっている印象受けるんだがエンジニア畑にああいうネタ系の自虐するノリほんまいらねえよ エンジニア畑でバズるの狙うなら純粋に技術力の高さで競っていけよって思う [] [ここ壊れてます]
871 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 23:05:23 ID:a3eoLX8e.net] なおそのQiita記事に助けられてるもよう
872 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 23:58:49.93 ID:NtuuvbZ6.net] 大したことないって書いてあるだろ…
873 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 00:21:07.28 ID:N0TE7UEH.net] その大したことない記事に助けられてるからバカにされてるんだろアスペw
874 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 10:40:11.20 ID:oOjZlu3s.net] コピペしてすぐ使えるコードが出ている Qiita記事は役に立つよ 具体的な手順が書いてない記事はゴミ
875 名前:デフォルトの名無しさん [2022/06/16(木) 10:47:19.76 ID:OyMwP3lE.net] qiitaもワイもアカウント持ってて投稿したりしてるぐらいだから別に否定しているわけではないんだが qiitaがクソだと言っている分けではなくてただこいつがqiitaに載せている記事すべてが糞だっていう意味を言っている 気になるんなら見とけよ内容もtwitter上を跋扈するいわゆる情報商材系サイトのそれに近くて技術的な要素を一切含んでいない https://qiita.com/SMAC
876 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 11:28:53.21 ID:jHsLwKQ/.net] ここはお前の日記帳かよ というか「スタバでMacを開くエンジニア」って固有名詞かよ
877 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 11:55:25.21 ID:4wdIdA1r.net] >>858 助けられてるって書いてるか?
878 名前:デフォルトの名無しさん [2022/06/16(木) 13:02:40.58 ID:uKxWv5Aj.net] Qiitaはごみ
879 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 16:40:13.18 ID:N0TE7UEH.net] >>862 Twitter一生懸命見て彼の成長に嫉妬してる時点で、君の”負け”やで
880 名前:デフォルトの名無しさん [2022/06/16(木) 18:30:34.70 ID:OyMwP3lE.net] >>864 「エンジニア1年生必見おすすめ入門書!」「【20XY年度最新】無料プログラミング学習サービス」「基本情報技術者試験のための戦略的方法」みたいなしょうもない記事しか書いていない奴のどこに技術的成長を感じればいいのか疑問なんやけど お前はまさかこういった記事を見て勉強してんのか?(笑) お前が勝ち負け判断すんの?(笑) 少なくともSNSで頻繁に目障りな投稿をしている人が他の媒体でどのような活動をしているのか確認する行為自体を一生懸命にならないとするの達成できない時点でお前がこの一連の流れのどんな登場人物よりも劣ってること明白じゃんwwwwwwwww きっと自分の電話にかかってきた電話番号を迷惑電話だったのかどうかネットで調べて確認すると言った最低限な行為すらも日常生活の中でするのには精一杯になってるんやろなwこの低脳(笑)wwwwwwwwwww
881 名前:デフォルトの名無しさん [2022/06/16(木) 19:21:05.39 ID:hEUIHdUO.net] どうみても本人の自作自演 https://www.youtube.com/watch?v=IdBBGkiECc4
882 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 20:03:31.12 ID:r+hk7hk0.net] >>864 成長…?
883 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 20:50:21.92 ID:N0TE7UEH.net] うわぁ、必死杉内
884 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 20:53:08.58 ID:arzDgCAq.net] なにこいつ 煽りアフィカス?
885 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 20:58:13.91 ID:VGxDlt+C.net] デジタル人材の副業・複業採用決定数をプログラミング言語・スキル別で分析 ~副業・複業人材の登録が、前年度比3倍に。 調査レポートを公開~ https://prtimes.jp/main/html/rd/p/000000040.000053307.html
886 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 22:42:24.28 ID:R+xkwjLU.net] >>869 スタバマックくんかも
887 名前:デフォルトの名無しさん [2022/06/17(金) 14:55:42.76 ID:Ld/FFEEi.net] >>868 レスバ判定員です 言い返せなくなってる時点でお前の負けやでwwwwww
888 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 15:04:06.85 ID:jyuIrjdj.net] 非常にしつこい
889 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 15:10:54.32 ID:2abskYGH.net] なんでワッチョイ無いんだよ
890 名前:デフォルトの名無しさん [2022/06/17(金) 17:27:59.16 ID:G79h5Zer.net] わざと曲解して話を盛るのが5chクオリティ
891 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 17:48:44.96 ID:q4amRkHc.net] >>872 Qiitaの若者の成長に難癖付けて2ch陰口で悦に浸ってるオッサンとか キモすぎにもほどがあるでんで もうちょっと客観的に自分を見つめ直した方がええで
892 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 17:52:34.99 ID:douM25C/.net] ええでんで
893 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 19:51:03.63 ID:6H4dK9M3.net] >>825 rustが汚く感じるのはビルダーパターンが気持ち悪いのか、ファイルのopenにビルダーパターン使うのが気持ち悪いのか、どちら?
894 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 21:08:38.74 ID:ueszn7cF.net] >>878 どちらでもない optionをopenするのが気持ち悪いだけ
895 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 21:38:00.10 ID:8YmvneAf.net] let mut stream = FileStream::builder().read(true).write(true).build("foo.txt")?; これならいいのか
896 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 21:48:55.86 ID:G5rhOs4/.net] Rustにはなんでデフォルト引数ないの? Kotlinみたいに名前付き引数もデフォルト引数も欲しい
897 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 21:49:12.87 ID:8YmvneAf.net] でもパス名が最後に来るの確かに思考の順序と一致しなくてウザいな どのファイルを開くかより先にモードを考えたことなんかなかった
898 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 22:02:17.99 ID:flaMOIXW.net] >>878 ソフトエンジニアはビルダーパターンは気持ちよすぎになるが 一方、ドカタは気持ち悪いになるってだけだろ 言語としては主ターゲットユーザーがソフトエンジニアかドカタって重要だからな Rustはソフトエンジニアがターゲットで、そうじゃない奴はRustじゃなくドカタ用言語使え ってこと。
899 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 22:12:15.35 ID:1Z6irghS.net] そうでなくて最後に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")?; それぞれ他のプログラミング言語で書くとどうなるかを考えてみよう
900 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 23:24:36.27 ID:1Z6irghS.net] あと余談だが >>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した時のみ有効となる つまり既にある仕様を壊さずに拡張が可能 いずれにせよビルダー方式でのメソッドチェーン指定は 全てを引数で複雑もしくは長々と指定するよりもよっぽど好ましい方式
901 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 01:48:38.80 ID:ElTVdqXo.net] ビルダーパターンはオプション引数のある言語でも簡単に実現できるんだが 逆は一般的にハードルが高い(Rustならproc macroとかになる) ビルダーとオプション引数は本来はユースケースによって使い分けるものなので 使い分けられないようならその言語は機能的に劣っているということ
902 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 03:34:01.13 ID:qRZqKkc3.net] Rustは代数的データ型のOption型があるから特に困らないんじゃない? むしろOption型がないプログラミング言語はundefinedやnullやnilなどの排除すべき危険なものが存在していて安全じゃない
903 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 03:46:11.38 ID:1ZLmOyHM.net] 欲しいのはオプション引数というかキーワード引数? Noneなりnullなりが連続する関数呼び出しはつらいよね
904 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 03:49:38.33 ID:qRZqKkc3.net] デフォルト引数のことか C、Java、Go、Rust、Haskell、…とサポートしていないプログラミング言語は多いけど それらの言語が劣っている欠陥言語と言われることはないよ
905 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 07:13:04.48 ID:bAwBngwg.net] やっぱりカリー化が欲しいのよ
906 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 10:59:53.21 ID:W1b6m0i9.net] デフォルト引数はあったほうがいい 究極的にはPythonみたいに書けるC言語が欲しい それを目指したのがおそらくGoだと思うが
907 名前:デフォルトの名無しさん [2022/06/18(土) 11:19:30.38 ID:56BPbiHd.net] cpythonでええやん
908 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 11:24:27.43 ID:ZQWHh7s0.net] >>891 あのゴミみたいなsyntaxで目指してるとか鼻で笑うで
909 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 12:11:06.20 ID:i5hxcodT.net] >>891 Goには当然デフォルト引数は無い あと、GoはPythonとは真逆の思想
910 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 12:28:29.18 ID:1P56+GFt.net] Kotlinみたいにサポートしてほしい