Rust part16

■ このスレッドは過去ログ倉庫に格納されています
2022/06/27(月) 08:17:03.45ID:gDlfKP6u
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

日本語の情報
https://rust-jp.rs/

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust

※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/

※次スレは原則>>980が立てること

前スレ
Rust part15
https://mevius.5ch.net/test/read.cgi/tech/1652347700/
403デフォルトの名無しさん
垢版 |
2022/07/21(木) 17:50:57.39ID:eNA5340i
traitの画期的な部分はc++のabstract classで実現できないの?
2022/07/21(木) 17:54:16.35ID:F7Gtvv1S
>>402
何が言いたいのかよくわからないけど型クラスになくてtraitにあるものって何?

associate typeはrustの発明だと思うけど、そういうこと言いたいわけでもなさそうだし
2022/07/21(木) 18:07:36.13ID:ySHdWcK4
自分が崇拝する神だけが唯一正しいと妄信して
他人の考え方を徹底的に糾弾排斥するのがカルト

カルト化した人間とまともな議論ができると思うな
2022/07/21(木) 18:19:30.67ID:xy799ZfA
>>404
公式サイトにすら出典付きで載ってあることなんだけどなんでここで聞くの?
繰り返しになるがtraitの型クラス以外の側面に気づけないのはお前が単に馬鹿なだけ
2022/07/21(木) 19:01:28.92ID:HGs+QJMA
>>406
そういうのを誘導しないからお前はダメなんだよ。

prev.rust-lang.org/ja-JP/faq.html#how-do-rust-traits-compare-to-haskell-typeclasses

How do Rust traits compare to Haskell typeclasses?
Rust traits are similar to Haskell typeclasses, but are currently not as powerful, as Rust cannot express higher-kinded types. Rust’s associated types are equivalent to Haskell type families.
2022/07/21(木) 19:15:30.44ID:F7Gtvv1S
>>407
traitの方が表現力低いって言ってるじゃねーか
2022/07/21(木) 20:10:50.68ID:SY914jbi
レスバスレ使ってくれませんか?
2022/07/21(木) 20:48:28.30ID:rGFlKcYB
>>407
それURLがprevで始まっているように古い情報ページ
わざわざそれを出すのは何か意図がある?
411デフォルトの名無しさん
垢版 |
2022/07/21(木) 21:43:04.55ID:vaotA28G
>>408
正しい情報を啓蒙するのは面倒だということを知らしめる意図じゃない?
2022/07/21(木) 21:59:42.36ID:vJeGD7jb
>>404
Rustのトレイトは
トレイト境界を実装で指定できるだけでなく
トレイト境界を型宣言でも指定できるなど
様々な点で型クラスと異なるよね?
2022/07/21(木) 22:56:58.50ID:crFoTo11
幽霊型🥺
2022/07/21(木) 23:06:53.32ID:XUR5FORi
>>404
associated typeもhaskell由来
2022/07/21(木) 23:56:47.54ID:vrEITS91
>>412
トレイトに関しては当然Haskellの型クラス由来の部分が多いけど互いに片方にしかないものもあり異なる側面があるわけか
2022/07/22(金) 00:02:56.00ID:Dec8FkF+
>>412
よくわかんないからコードで書いて
2022/07/22(金) 00:07:23.73ID:3PGiuxDq
今のところ型システムは完全下位互換だよ
2022/07/22(金) 00:22:12.08ID:hXBfLf2I
>>416
普通のこれだろ
struct Foo<T: Trait1 + Trait2> {
 inner: T,
}
2022/07/22(金) 00:32:54.07ID:/9LzCqck
>>418
これが>>402が言う型クラス以上の意義があるものなの?
2022/07/22(金) 00:45:08.67ID:hXBfLf2I
402の話は402に聞け
少なくとも>>418は型定義の時点で制約できるから意義がある
2022/07/22(金) 00:46:45.91ID:Dec8FkF+
>>418
-XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
2022/07/22(金) 01:09:40.70ID:hXBfLf2I
>>421
いきなり何かわからない話を向けられても困る
解説せよ
2022/07/22(金) 01:43:49.12ID:kvE65+oR
トレイトのどの辺が「洗練された新たなプログラム構成要素」と感じるのか全然分からん
俺の中ではインターフェースと一緒の扱い

Rustが画期的だったのはOwnership/Referenceルール + Borrow Checker
この点に異論ある人はいないよね?
2022/07/22(金) 02:15:42.10ID:g+hZIhYV
>>423
一般的なインタフェースなんて
Trait Boundsもimpl Traitもdyn Traitもないゴミ

>>419
その点でも差異があるだけでなく
Rustのトレイトは基本概念こそHaskellの型クラスと同じだがそれ以外は各々の言語に適応してかなり異なる
2022/07/22(金) 03:26:24.88ID:fX2QhDiX
>>424
そりゃ言語に合わせて変えるところがあるのは当たり前だが、
基本概念が同じだというなら類似物ではあるだろう。
カテゴリ分けしたらおおよそ同じところに分類するよ……。
2022/07/22(金) 03:47:26.49ID:u1/oKmBi
>>425
それは違うのではないかな
例えばHaskellはRustのtraitでのdyn(動的解決)とimpl(静的解決)といった重要な基本概念を欠いているよ
427デフォルトの名無しさん
垢版 |
2022/07/22(金) 05:52:26.07ID:FhKnOINS
C++の欠点は、何でもできること。
その欠点をなくして、わかりやすくしたのがRust。
バイナリ界のJavaと言い換えても良い。
ほとんどのプログラマはC++よりRustを使うほうが良い。
2022/07/22(金) 08:04:03.49ID:FDKNW5k7
>>410
だから最新情報に誘導しろよ。
無能か?
2022/07/22(金) 09:31:13.18ID:8cs6kRrX
>>427
これからRustはIT土方専用言語になっていくんだろうなあ
2022/07/22(金) 09:55:09.86ID:aK9LU/qI
>>424
>一般的なインタフェースなんて
>Trait Boundsもimpl Traitもdyn Traitもないゴミ

言語化できてないから本質を理解できていように見える

Trait Boundはジェネリック型の型制約で一般的なインターフェイスも型制約として機能する
一般的なインターフェイスは動的ディスパッチなのでdyn Trait相当

impl Traitがmonomorphizationのことを言ってるならそれはTraitの機能じゃなくGenericsの機能
C++で20年前から使えるよね?
C++以外でもSwiftみたいに一部の言語はGenericsのspecialization機能があるけど一般的にはオーバーロード使ってstatic dispatchにすることが可能
431デフォルトの名無しさん
垢版 |
2022/07/22(金) 10:57:57.42ID:GQh1j6M0
>>418
javaのgenericsでextends使うとできるやつかな?
432デフォルトの名無しさん
垢版 |
2022/07/22(金) 11:30:46.07ID:emgmw9dd
Java厨は出て来ないで下さいうざいだけです
2022/07/22(金) 11:34:22.85ID:LVIZaCij
>>429
msとかgoogleとかの狙いはそうだろ。
土方がコーティングしてもバグが入り込まない。
その代わり難易度が上がっているからコーダーの単価上がりそうだけど、msとかgoogleはそんなの気にしないだろうし。
434デフォルトの名無しさん
垢版 |
2022/07/22(金) 13:14:37.08ID:GQh1j6M0
>>432
rustの画期的な部分なんだろ?言い返せないのかよダサいなお前

本当に革新的なのは>>423あたりなんじゃないの
2022/07/22(金) 14:36:57.37ID:ZDp8+ZKO
kumagiとか見てると、google社員でもc++触らせたらあかん奴ってのが結構いるのがわかる。
2022/07/22(金) 14:59:23.46ID:hnGDX2CP
>>431
Javaのジェネリクスは変な制限が多く
インタフェース指定していって問題があってもコンパイルエラーとならず実行時エラーとなるものがあるなどJavaは論外
他にも問題多すぎてRustに何ひとつ勝てないから新システムを機会にJava→Rustとなったものも出てきている
2022/07/22(金) 15:43:33.15ID:yLavWCdC
>>434
Ownership/reference自体はc++にもあるからあんまり革新的とは思えないな。

コールスタック&RAIIを中心にしてメモリ管理ルールを再構築して、厄介なヒープメモリの管理をできるだけ避けて高速化しているのが特徴だと思う。
革新的なのはそのルールを徹底していることくらいかと。
2022/07/22(金) 17:12:05.71ID:efNbKFVE
安全性とゼロコスト抽象化の制約下で開発効率を高める仕組みを導入していることがRustの特徴だよね
言語仕様や処理系実装上での苦労や工夫はいろいろあるが、それらによって実現される機能自体が目新しいものというわけではない
2022/07/22(金) 17:40:06.82ID:whw2xWQR
Rustが発明したのかどうかはしらんけど、Borrow Checkerは他の普通の言語にはない仕組みで、目新しく感じるけどなあ
Borrow Checkerが効かないようなコードを書くんだったらRustを使う意味が感じられないぐらいにはね
2022/07/22(金) 17:44:11.14ID:t0V8WW9J
>>436
インターフェースの問題とJavaの問題を混同するのが論外
2022/07/22(金) 18:05:15.33ID:K++ItniC
Borrow checker自体は2000年頃のCycloneの時点でほぼできていたっぽい
Rust独自なのは多分shared xor mutableとmove by defaultじゃないかな
442デフォルトの名無しさん
垢版 |
2022/07/22(金) 19:11:51.06ID:yoEBUVfk
>>437
そう。
C++には何でもある。
それが欠点。
必要なものに厳選して誰でも使えるようにしたのがRust。
C++のアイデアとJavaの実用性、二つの遺伝子を組み合わせたのがRust。
ちなみにお母さんがJava、お父さんはHaskellという建前だけど、本当のお父さんはC++。
Haskellさんは、自分の子供だと信じてる。
2022/07/22(金) 21:06:16.19ID:UonvlDt9
キモいな
Javaは遺伝子引き継いでないから代理出産に違いない
444デフォルトの名無しさん
垢版 |
2022/07/22(金) 21:16:25.55ID:i57cd+Nw
>>442
javaの立ち位置なんて、無関係な癖に建物の影からチラチラこちらをうかがって変な妄想してる気味悪い知らない奴だよ。
2022/07/22(金) 21:29:36.07ID:zWgtMzpY
>>435
あの人はプログラミング能力だけの人じゃなくてDBとか分散システムのアルゴリズムが主戦場の人でしょ。
プログラム読み書き堪能に越したことはないけど、そこだけで人を評価するのは視野が狭いよ。
2022/07/23(土) 04:53:27.63ID:Yc68YnRu
>>444
意味不明なこと言わないで
2022/07/23(土) 05:40:41.12ID:xoLMiefm
>>435
C++だけでなくRustも理解できてない?


純粋に疑問なんですけどRust使ってる中で「値オブジェクトマジ助かる!」って事あるんですか。
適当に参照で渡したデータが意図せず書き換えられて伝搬して困る典型ケースはコンパイラが潰してくれる認識なんですが。
2022/07/23(土) 08:37:27.70ID:0xKT+wLu
>>447
それはRustじゃなく値オブジェクトを理解できてない
院卒の新人だったりしない?
449デフォルトの名無しさん
垢版 |
2022/07/23(土) 09:37:03.85ID:bR39w9BX
Googleは金の亡者
2022/07/23(土) 11:55:37.32ID:8Uydd8B4
>>448
低レイヤーのプログラマーは値オブジェクトとか知らないほうが普通
アーキテクチャ設計といったらCPUやメモリアーキテクチャの事だと思ってたりするw
2022/07/23(土) 13:10:56.93ID:RBxCW/xN
OwnershipルールとReferenceルールがWhat
Borrow CheckerはHowに相当

Howにももちろん価値はあるが
それと同じくらいWhatをシンプルに絞り込んだものにしたことにも価値がある

後知恵で見れば当然に見えるようなシンプルなルールを作るのはものすごく難易度が高い
452デフォルトの名無しさん
垢版 |
2022/07/23(土) 16:15:20.09ID:tefRxlpq
>>451
わかる
Rustのメモリ周りや、UnixとかRISC-Vみたいに、システムを動作させるに必要な機能の数をできるだけ小さくするのって難しいけど、完成品を見ると当たり前じゃんみたいな印象を受ける
2022/07/23(土) 18:34:20.81ID:u2Y0Vizw
>>445
残念ながらスパナーとか普通に実装してるgoogleにおいてはあんまり価値のある能力ではないよ。
454デフォルトの名無しさん
垢版 |
2022/07/23(土) 19:04:05.94ID:ehQy/P8s
ISO、C++標準化委員のグレイドン・ホアレ氏はC++0xの標準化過程で、後方互換性を削ぎ落せば理解しやすくなることに気が付く。
そして私的プロジェクトとして実装し始めた。
2016年4月、ホアレ氏は最初の製品をRustと命名し出荷した。
2022/07/23(土) 19:21:14.26ID:NE7ljYY1
C++標準化委員の人でもあったんか
それにしてもRustっていいネーミングだよな
なんかしっくりくる
456デフォルトの名無しさん
垢版 |
2022/07/23(土) 19:57:02.71ID:uphZtYPd
正直なところ一般的な単語とか1文字とかの言語名はやめて欲しいと思わなくもない。
2022/07/23(土) 20:43:26.21ID:PgM2fTTz
>>453
逆じゃね。自分たちで作ってるからこそアルゴリズム方面の知識の意味があるのでは
2022/07/23(土) 21:05:19.84ID:IDFlcwhf
>>454
Hoareはホーアかホアだと思うんだが
ホアレはどこの国の読み方?
2022/07/23(土) 21:18:57.29ID:91gi6HhK
日本じゃね?
2022/07/23(土) 21:28:49.17ID:zqWGCIwO
>>456
昔は大変だったけど今時はグーグルさんもだいぶ賢くなって来たから〇 言語や〇 langでいける
2022/07/23(土) 22:37:12.56ID:SkYdpzS6
>>454
>2016年4月、ホアレ氏は最初の製品をRustと命名し出荷した。
2006年の間違いじゃない?

ちなみに>>451に書いてるReferenceルールやBorrow CheckerはGraydon時代にできたものじゃないよ
2022/07/24(日) 09:21:08.56ID:lG8qI40d
>>461
じゃあいつできたの?
463デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:29:10.51ID:TkuAh24s
RustじゃなくてHoareの方が検索性は高かったと思う
言語に自分の名前つけたっていいじゃん、最初だけイタい人扱い受けるだけだし
2022/07/24(日) 12:23:10.54ID:A2ivE9+A
でも本当にHoareなんて名前付けたら絶対Tony Hoareのほうだと思われるやろな
2022/07/24(日) 12:53:11.52ID:lG8qI40d
>>464
ほんこれ
あんな有名人とfamily nameが一緒とかすごい偶然だよな
466デフォルトの名無しさん
垢版 |
2022/07/24(日) 13:06:01.37ID:hnBeY/7d
木村拓哉と苗字が同じ木村君みたいな。
2022/07/24(日) 13:06:50.57ID:iVL8opWs
すごい偶然ですねえ・・・ えっ
2022/07/24(日) 13:35:38.58ID:q7gbemmZ
Rust-Oneとか見たいな感じの名前が良かったんじゃないかとw
2022/07/24(日) 13:48:30.68ID:q7gbemmZ
新言語を作る際にはありふれた言葉を使うなってコンセンサスがあれば…

C java go Perl Ruby Rust ...
2022/07/24(日) 13:53:14.16ID:iVL8opWs
せめて後ろに +lang した名前を正式名称にしてくれりゃなあ
Javalang、Clang、Golang、Rustlang...
clangは名前衝突するから今更ムリだけど
2022/07/24(日) 14:08:13.51ID:6QULAMze
RustとかGoはもう今じゃメジャーだから大分マシだけど
上の方に出てるCarbon?だのみたいな新しい知名度低いようなのにとっちゃ検索されづらいのって結構大きいデメリットじゃないのかね
2022/07/24(日) 14:11:15.69ID:q7gbemmZ
Car-bonおすすめ
2022/07/24(日) 17:26:22.59ID:AIK5SBoS
Rustでは検索にこまったことないけどなぁ
CやGoではそれなりに困ったことある
特にC
2022/07/24(日) 17:35:43.91ID:nz/s3YoW
>>469
perlは違うくね
入れるならpython
2022/07/24(日) 18:34:31.10ID:kd/zxSl1
Pythonはまさかちょっとしたイタズラ心で命名した言語が
30年経ってこれほどまでに普及するとは思ってないだろうなぁ。
2022/07/24(日) 20:35:51.30ID:T5Io3liY
ゲームのRustが人気になっていても問題なく検索できてるなぁ
2022/07/25(月) 09:42:55.60ID:OE8E5RfU
パーソナライズ (その人のアクセス傾向を検索結果に反映する) がそこそこ機能してるっぽいという話はあるなぁ。
個人情報保護の法律との兼ね合いが難しいみたいだが。
2022/07/25(月) 11:46:03.92ID:fotNOYOj
RustはCやC++の後継にはならないな。
2022/07/25(月) 12:46:43.99ID:/yXgS7y/
CはC言語で検索してもC++が出てきやがるからな
迷惑な言語だわC++
2022/07/25(月) 14:10:01.30ID:fotNOYOj
全然、思想や人柄が違う人を後継者に立てようとしても無理が有るな。
2022/07/25(月) 19:30:13.93ID:qs4kuyp6
>>456
その例でいってとにかくクソダメなのが Go
言語仕様も前時代的なウンコみたいな仕様だが何がだめといって名前がクソすぎ
ついでにいうとマスコットが致命的にキモすぎる
482デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:08:08.67ID:uz33IoOs
goはgolangって呼び方が一般化してるから問題なくね?
親会社もalphabetだし、仮に一般名詞でも検索してやんよっていう自信の現れなのかも。
あとlisp monsterのほうが可愛いよね
2022/07/25(月) 21:31:20.25ID:o3/zkeTE
langってなに?
484デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:42:28.43ID:GF1rw+EH
ゴラン高原はイスラエルが不法に占領してるシリアの土地であり、日本政府はシリア高原と呼称するそうだぞ。
2022/07/26(火) 07:10:48.91ID:4TZ4RWr2
今ちいかわってキモいキャラが流行ってるように
Gopherくんもいずれ世界的なマスコットキャラクターになるよ
2022/07/26(火) 08:04:10.89ID:B/e7/0Va
>>484
それはGolan
2022/07/26(火) 08:15:07.77ID:RlhOzjvN
今マイコン用クレートでメジャーなのってどのあたり?
自分で作るにあたり参考にしたいのだが
2022/07/26(火) 08:36:59.30ID:+EhcIf+H
>>487
おれたちが知るわけないだろバカか?
489デフォルトの名無しさん
垢版 |
2022/07/26(火) 08:37:23.50ID:jFWmtimM
言語の名前がGopherだったらよかったのに
2022/07/26(火) 09:10:32.87ID:gGUkeHRo
プロトコルの方のgopherについて調べる人が困るでしょ
2022/07/26(火) 09:38:10.98ID:hAg2HYen
プロトコルはイーサリアムとビットコインで実現出来ます
この2種類以外は今後不要になります
2022/07/26(火) 09:42:41.59ID:xvJteLGG
😲
2022/07/26(火) 09:57:43.88ID:khPn0eWd
>>491
2022/07/26(火) 11:19:17.05ID:wEdk200U
Web3なんて流行るわけねーだろ
スマートコントラクトの開発コスト高すぎ&不便すぎ
2022/07/26(火) 11:50:54.04ID:m36KkBXx
それに引き換えBorrow Checkerは開発コスト低くて便利だね
2022/07/26(火) 11:55:05.12ID:xpFZew7X
Rust=Web3 だからWeb3業界の勢いが無くなったら影響受けるよ
2022/07/26(火) 11:59:58.82ID:EbLORSqB
>>496
意味不明
2022/07/26(火) 12:14:19.05ID:/Gebh7sM
Etherはイーサーだけど
Ethereumはァセーリアム
日本語読みだと外人に通じないから注意な
2022/07/26(火) 12:46:34.54ID:NppJ7uYb
>>487
AVR-HALとかいうやつ使ってる
2022/07/26(火) 14:54:22.29ID:6ZBHWj0q
3年以内にMoveが天下取るとか言われてるけど本当かね
2022/07/26(火) 14:58:00.69ID:m36KkBXx
本当だから高くなる前にいっぱい買っておけ
2022/07/26(火) 21:01:19.60ID:WAPUil1D
ʕ◔ϖ◔ʔ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況