[表示 : 全て 最新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/

809 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:42:18.44 ID:FiSspViM.net]
Goにオプショナル型とスプレッド構文とmap,reduce,filterのコネクション系操作が入ったら最高なんだけど
Go 2だとかで機能増やしてくれないかな

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とは真逆の思想






[ 続きを読む ] / [ 携帯版 ]

前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