[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/22 14:52 / Filesize : 279 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rust part16



1 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:17:03.45 ID:gDlfKP6u.net]
公式
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/

363 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 23:59:24.88 ID:qlTJEO+a.net]
>>353
もっと便利にできるぜ

use std::cell::Cell;

trait CellWithMethod<T> {
fn with<R>(&self, f: impl FnOnce(&mut T) -> R) -> R;
}

impl<T: Default> CellWithMethod<T> for Cell<T> {
#[inline]
fn with<R>(&self, f: impl FnOnce(&mut T) -> R) -> R {
let mut inner = self.take();
let result = f(&mut inner);
self.set(inner);
result
}
}

fn main() {
let foo = Cell::new(vec![1, 2, 3]);
foo.with(|v| v.push(7));
assert_eq!(4, foo.with(|v| v.len()));
assert_eq!(7, foo.with(|v| v[3]));
assert_eq!(vec![1, 2, 3, 7], foo.with(|v| v.clone()));
}

364 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 21:39:01.85 ID:qV4GyRtM.net]
>>360
CellでVec使えるのか
何か間違って学習していた

https://qiita.com/wada314/items/24249418983312795c08
> 1. Cellの中身の型はCopyをimplしていなければならない

https://dev.classmethod.jp/articles/rust-smart-pointer/
> ・Cellの中の型はCopyトレイト実装が必須

https://qiita.com/usagi/items/fc329895cebd3466910e
> Cell は値の "移動" によって内部可変性を実装するため <T> は Copy 可能な "値" 向けのコンテナーで、
> i32 や Copy trait を実装した何かを扱うのに"適した"コンテナーです。

https://zenn.dev/mebiusbox/books/22d4c1ed9b0003/viewer/5df75e
> Cell<T> の大きな制約として, T は Copy トレイト境界があることです.

実際にはCellはCopyを要求していない
やってみたら>>360のコードが動いてCell<Vec<_>>が使えた

365 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 22:48:49.30 ID:fFdw7/F8.net]
#[derive(Clone)]のコーナーケースに遭遇した
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=487e64c7c762fb0e015e1bc9b1267fbd

366 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 22:50:32.95 ID:SBkpZpFk.net]
やっぱりrustcはバグが多いね

367 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 23:12:58.85 ID:nxNpCMHU.net]
>>362
標準ライブラリのderiveは型パラメータに無条件にトレイト制約課すようになってるから
derivativeみたいな制約を自分で指定できるcrateを使うと良いよ
https://github.com/mcarton/rust-derivative

368 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 00:28:56.56 ID:730D9OZt.net]
>>361
get()がCopyを要求するからってのもあるけど
古いThe BookにはCellはCopy専用・RefCellはCopy以外も使えるという説明があったので
それが日本語訳とかで残ってたんじゃないかな

369 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 23:27:56 ID:MG4+BxCd.net]
>>360
!Syncで参照無しならデータ競合を起こさない、という点を使った用法だな
便利だから公式サポートすればいいのにな

370 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 00:26:56.65 ID:XqWqiApN.net]
StackOverflowで「好きな言語No.1」だそうだが、調査方法に問題が有り、
二位以下も聞いた事が無いような言語ばかり。

371 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 01:36:05.55 ID:bF1qPY0V.net]
>>367
お前の観測範囲が狭いだけ。



372 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 08:04:49 ID:XbfHqe9W.net]
CarbonとかいうRustとC++のあいのこみたいなのが出てきた

373 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 12:35:25 ID:FCfDFeLf.net]
Carbonは最強言語ぞ

374 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 12:39:05 ID:MUkQlR/e.net]
RustがCarbonに勝ててるところが見つからないな

375 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 12:45:18 ID:ThH+Z+BW.net]
Rust vs Carbonスレ立ててそっちでやれ

376 名前:デフォルトの名無しさん [2022/07/20(水) 13:30:14 ID:S6pSKHOi.net]
このスレにはRust好きの愚民がたくさんいるようですね。
Carbonさん、やっておしまいなさい

377 名前:デフォルトの名無しさん [2022/07/20(水) 13:30:16 ID:S6pSKHOi.net]
このスレにはRust好きの愚民がたくさんいるようですね。
Carbonさん、やっておしまいなさい

378 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 14:11:36.68 ID:xLuB33a9.net]
1.0が出てからにしてください

379 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 14:52:25.57 ID:IMMZUJf4.net]
CarbonとRustは名称の紛らわしさではどっこいどっこいだな

380 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 14:54:39.84 ID:igxVbWbR.net]
ほーん
https://github.com/carbon-language/carbon-lang

381 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 17:02:14.65 ID:xLuB33a9.net]
とりあえずcarbon自体のコードの8割がcarbonで書かれるエコシステムが確立してからだろう



382 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 19:50:56 ID:hGf+NvAH.net]
JSのTypeScript
C++のCarbonって感じかね

どうなるんだろうね
確かにC++を無くすのは勿体ないがまだ0.1か いつ1.0になるかなぁ 10年後くらいか
Rustよりも難しくはなくメモリ管理も楽になるのかな

383 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:00:37 ID:xdIX6xM1.net]
Rustはあらゆる面で安全と高速の両立する抽象化を実現した言語だから
現在のCarbonのドキュメントを見る限りRustの領分に入ってきていないでしょう
それよりもC++と書き方がかなり変わっていて互換性がなく別言語の様相でCarbonは中途半端な立ち位置に見える

384 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:01:46 ID:sReX4jGj.net]
Carbonは「Rustが難しすぎるから簡単にしたい」とは言ってなくて、C++と相互運用できる言語を目指してるだけっぽいからなぁ
結果的にRustより難しくなっても驚かないけど

385 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:33:50.16 ID:sReX4jGj.net]
そもそもCarbonの使い所ってC++のレガシーコードが大量にあるところだから
C++も当然マスターしてないといけなくて、学習量は明らかに増えてる気もする

386 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 20:52:36.69 ID:oyesoq1v.net]
ドラゴンボールのゲームでドドリアの色違いでカーボスと言うのがいたのを思い出した

どちらかと言うとザーボンの色違いがカーボスなら納得なんだけど…

387 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 21:27:24.19 ID:mJssGRdK.net]
Carbonって中途半端すぎね?
まともな言語設計者ならオブジェクト指向もう採用しないと思うんやけどなんか継承機能もあるみたいだし
なんでこういう中途半端のところもC++参考するんだよこういうところこそRust参考にしろよ

388 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 21:44:56.66 ID:qLBZujX3.net]
>>384
C++とシームレスに相互運用することが最優先課題だから、そこはC++と同じにしておかないとそもそも存在意義がなくなる

389 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:16:07.31 ID:gROTqHCf.net]
ま、2-3年後にどうなってるかだな
バックにGoogleいるらしいから開発終了なんてことはなさそうだが

390 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:21:24.71 ID:9oJrmZpV.net]
>>386
逆じゃね?企業だからこそ開発者の熱意とか関係なくコストに見合わないとなれば容赦なく切られるかと
Goみたいに社内で使うことが確定してしまえば安泰だけど

391 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:28:16.35 ID:3tivAU0I.net]
SDGsの流れ的にCarbonは使われなくなる運命



392 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:43:27.67 ID:xLuB33a9.net]
なる、元素記号Cからの名称か

393 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 00:45:01.09 ID:g1dckGB4.net]
5年たったらまたオブジェクト指向が再燃してるかもしれない
と言うか業務では大規模開発にはオブジェクト指向が必須なんだな

モジュールでは全体が見通せない

394 名前:はちみつ餃子 mailto:sage [2022/07/21(木) 00:52:44.62 ID:/hG5LMVG.net]
話題が逸れるが >>384 が C++ の型システムをオブジェクト指向と呼んでるっぽいのが気になる。
オブジェクト指向はオブジェクト同士がメッセージを送りあう形でプログラムを構成する思想のことで、
それを言語機能としてどのように支援するのかには様々なバリエーションが有りうる。
型システムとは独立した概念だよ。
ふんわりした概念なので定義によるが Rust もオブジェクト指向 (をサポートする) 言語に分類されることはある。

それはそれとして、 C++ の型システムもベストとは言えないが最悪というわけでもない。
実際にかなり多くの場面で活用されている実績は認めないといけない。
要するに「この程度で十分」ではあるんだよ。
C++ の本当につらいところは C から引き継いだガバガバさや歴史的事情のワケわからんところであって、
型システムの根本的な改善はそれほど切実に必要だとは思わないな。

C++ が駄目だと否定するんじゃなくて C++ みたいなことを C++ より上手くやるという方向性はアリだろう。

395 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 00:54:52.22 ID:0vTmbBj3.net]
話題が逸れるが、...で読む気失せたわ

396 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 00:58:24.47 ID:MOkaWH3B.net]
>>391
前半は正しいが
後半のクラス継承システム程度で十分という点には賛同しかねる
今までの現実の多くのケースはクラス継承システムしか使えない環境だったから無理矢理にそれを使っているだけである

397 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 01:00:56.06 ID:g1dckGB4.net]
似たような機能のものを大量に書く場合どのように実装するのが楽かどのように管理するのが楽か

モジュールではないな

398 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 01:15:53.78 ID:MOkaWH3B.net]
>>394
その点ではRustもC++も同じオブジェクト指向なので何を主張したいのかわからない

Rustの基本はselfに見られるようにオブジェクト指向
違いはC++がクラス継承なのに対してRustはトレイト
ジェネリックから見るトレイト境界による型制約となり
逆の視点から見るとトレイト付加によるメソッド拡張となる

399 名前:デフォルトの名無しさん [2022/07/21(木) 03:25:39.61 ID:DiLbgRco.net]
いくらRustが有望だと言われていても、ポインターがないと使いづらい場面ってあるよな
ツリー構造とか、ポインターなしで大して実行速度も落とさず記述する技があるようだけど・・・・大掛かりなことをするのなら労力を割くのもいいけど、ちょっと使うだけには労力がかかりすぎる

400 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 04:26:36.96 ID:VmE9g8Ff.net]
ポインタあるじゃん

401 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 05:01:15.84 ID:hbmQrHo+.net]
>>396
Rustにも様々なポインタがあり
様々な仕様と様々な安全度合いで記述できる



402 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 08:09:40 ID:HHuzACnI.net]
>>385
Rustからわかるように、求められているのは膝を打ち抜く自由の無いc++であり、コーダーに使わせる言語。
unsafeはc++で実装すりゃいいので、継承とかは使うだけに限定するという手もある。

403 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 13:48:15.98 ID:xy799ZfA.net]
>>391
話し手がなにをオブジェクト指向の言語としているのかどうか判断する程度の読解力は持ち合わせてくれないかな?
RustはC++のように継承を導入することによってもたらされる問題を回避するためにclassじゃなくてtraitを基本的なプログラムの構成要素として採用することで既存のオブジェクト指向言語と一線を画すというプログラミング言語史に残る進歩を達成していた

404 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 15:49:13.07 ID:Q1uK5/Rv.net]
>>400
Haskellの型クラスの方が先だろ。

「プログラミング言語史に残る進歩」とかさすがに恥ずかしいレベル。

405 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 16:58:11.12 ID:xy799ZfA.net]
>>401
RustのtraitをただのHaskellの型クラスの類似物としてしか認識できないのはお前が単に馬鹿だから
Rustのtraitは本来継承もmixinとも違ったC++のclassより洗練された新たなプログラムの構成要素だっていう側面が理解できていない馬鹿が多すぎる
ただRustではこのtraitという構成要素に実用上の面から今度は型クラスという機能も持たせているというだけで話の順序が違う
こんぐらいRust書いていたらtraitには単に型クラスだけの意義だけじゃないってわかると思うんやがお前にはそういった才能もないただのネット上で繰り返し喧伝されている宣伝にしか注目する脳がないいわばにわかの部類の奴だということがわかった

406 名前:デフォルトの名無しさん [2022/07/21(木) 17:50:57.39 ID:eNA5340i.net]
traitの画期的な部分はc++のabstract classで実現できないの?

407 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 17:54:16 ID:F7Gtvv1S.net]
>>402
何が言いたいのかよくわからないけど型クラスになくてtraitにあるものって何?

associate typeはrustの発明だと思うけど、そういうこと言いたいわけでもなさそうだし

408 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 18:07:36 ID:ySHdWcK4.net]
自分が崇拝する神だけが唯一正しいと妄信して
他人の考え方を徹底的に糾弾排斥するのがカルト

カルト化した人間とまともな議論ができると思うな

409 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 18:19:30.67 ID:xy799ZfA.net]
>>404
公式サイトにすら出典付きで載ってあることなんだけどなんでここで聞くの?
繰り返しになるがtraitの型クラス以外の側面に気づけないのはお前が単に馬鹿なだけ

410 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 19:01:28.92 ID:HGs+QJMA.net]
>>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.

411 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 19:15:30.44 ID:F7Gtvv1S.net]
>>407
traitの方が表現力低いって言ってるじゃねーか



412 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 20:10:50.68 ID:SY914jbi.net]
レスバスレ使ってくれませんか?

413 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 20:48:28.30 ID:rGFlKcYB.net]
>>407
それURLがprevで始まっているように古い情報ページ
わざわざそれを出すのは何か意図がある?

414 名前:デフォルトの名無しさん [2022/07/21(木) 21:43:04.55 ID:vaotA28G.net]
>>408
正しい情報を啓蒙するのは面倒だということを知らしめる意図じゃない?

415 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 21:59:42 ID:vJeGD7jb.net]
>>404
Rustのトレイトは
トレイト境界を実装で指定できるだけでなく
トレイト境界を型宣言でも指定できるなど
様々な点で型クラスと異なるよね?

416 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 22:56:58.50 ID:crFoTo11.net]
幽霊型🥺

417 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 23:06:53.32 ID:XUR5FOR ]
[ここ壊れてます]

418 名前:i.net mailto: >>404
associated typeもhaskell由来
[]
[ここ壊れてます]

419 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 23:56:47.54 ID:vrEITS91.net]
>>412
トレイトに関しては当然Haskellの型クラス由来の部分が多いけど互いに片方にしかないものもあり異なる側面があるわけか

420 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:02:56.00 ID:Dec8FkF+.net]
>>412
よくわかんないからコードで書いて

421 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:07:23.73 ID:3PGiuxDq.net]
今のところ型システムは完全下位互換だよ



422 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:22:12.08 ID:hXBfLf2I.net]
>>416
普通のこれだろ
struct Foo<T: Trait1 + Trait2> {
 inner: T,
}

423 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:32:54.07 ID:/9LzCqck.net]
>>418
これが>>402が言う型クラス以上の意義があるものなの?

424 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:45:08.67 ID:hXBfLf2I.net]
402の話は402に聞け
少なくとも>>418は型定義の時点で制約できるから意義がある

425 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:46:45.91 ID:Dec8FkF+.net]
>>418
-XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.

426 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:09:40.70 ID:hXBfLf2I.net]
>>421
いきなり何かわからない話を向けられても困る
解説せよ

427 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:43:49.12 ID:kvE65+oR.net]
トレイトのどの辺が「洗練された新たなプログラム構成要素」と感じるのか全然分からん
俺の中ではインターフェースと一緒の扱い

Rustが画期的だったのはOwnership/Referenceルール + Borrow Checker
この点に異論ある人はいないよね?

428 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 02:15:42.10 ID:g+hZIhYV.net]
>>423
一般的なインタフェースなんて
Trait Boundsもimpl Traitもdyn Traitもないゴミ

>>419
その点でも差異があるだけでなく
Rustのトレイトは基本概念こそHaskellの型クラスと同じだがそれ以外は各々の言語に適応してかなり異なる

429 名前:はちみつ餃子 mailto:sage [2022/07/22(金) 03:26:24.88 ID:fX2QhDiX.net]
>>424
そりゃ言語に合わせて変えるところがあるのは当たり前だが、
基本概念が同じだというなら類似物ではあるだろう。
カテゴリ分けしたらおおよそ同じところに分類するよ……。

430 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 03:47:26.49 ID:u1/oKmBi.net]
>>425
それは違うのではないかな
例えばHaskellはRustのtraitでのdyn(動的解決)とimpl(静的解決)といった重要な基本概念を欠いているよ

431 名前:デフォルトの名無しさん [2022/07/22(金) 05:52:26 ID:FhKnOINS.net]
C++の欠点は、何でもできること。
その欠点をなくして、わかりやすくしたのがRust。
バイナリ界のJavaと言い換えても良い。
ほとんどのプログラマはC++よりRustを使うほうが良い。



432 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 08:04:03.49 ID:FDKNW5k7.net]
>>410
だから最新情報に誘導しろよ。
無能か?

433 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 09:31:13.18 ID:8cs6kRrX.net]
>>427
これからRustはIT土方専用言語になっていくんだろうなあ

434 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 09:55:09.86 ID:aK9LU/qI.net]
>>424
>一般的なインタフェースなんて
>Trait Boundsもimpl Traitもdyn Traitもないゴミ

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

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

impl Traitがmonomorphizationのことを言ってるならそれはTraitの機能じゃなくGenericsの機能
C++で20年前から使えるよね?
C++以外でもSwiftみたいに一部の言語はGenericsのspecialization機能があるけど一般的にはオーバーロード使ってstatic dispatchにすることが可能

435 名前:デフォルトの名無しさん [2022/07/22(金) 10:57:57.42 ID:GQh1j6M0.net]
>>418
javaのgenericsでextends使うとできるやつかな?

436 名前:デフォルトの名無しさん [2022/07/22(金) 11:30:46.07 ID:emgmw9dd.net]
Java厨は出て来ないで下さいうざいだけです

437 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 11:34:22.85 ID:LVIZaCij.net]
>>429
msとかgoogleとかの狙いはそうだろ。
土方がコーティングしてもバグが入り込まない。
その代わり難易度が上がっているからコーダーの単価上がりそうだけど、msとかgoogleはそんなの気にしないだろうし。

438 名前:デフォルトの名無しさん [2022/07/22(金) 13:14:37.08 ID:GQh1j6M0.net]
>>432
rustの画期的な部分なんだろ?言い返せないのかよダサいなお前

本当に革新的なのは>>423あたりなんじゃないの

439 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 14:36:57 ID:ZDp8+ZKO.net]
kumagiとか見てると、google社員でもc++触らせたらあかん奴ってのが結構いるのがわかる。

440 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 14:59:23.46 ID:hnGDX2CP.net]
>>431
Javaのジェネリクスは変な制限が多く
インタフェース指定していって問題があってもコンパイルエラーとならず実行時エラーとなるものがあるなどJavaは論外
他にも問題多すぎてRustに何ひとつ勝てないから新システムを機会にJava→Rustとなったものも出てきている

441 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 15:43:33.15 ID:yLavWCdC.net]
>>434
Ownership/reference自体はc++にもあるからあんまり革新的とは思えないな。

コールスタック&RAIIを中心にしてメモリ管理ルールを再構築して、厄介なヒープメモリの管理をできるだけ避けて高速化しているのが特徴だと思う。
革新的なのはそのルールを徹底していることくらいかと。



442 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 17:12:05.71 ID:efNbKFVE.net]
安全性とゼロコスト抽象化の制約下で開発効率を高める仕組みを導入していることがRustの特徴だよね
言語仕様や処理系実装上での苦労や工夫はいろいろあるが、それらによって実現される機能自体が目新しいものというわけではない

443 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 17:40:06.82 ID:whw2xWQR.net]
Rustが発明したのかどうかはしらんけど、Borrow Checkerは他の普通の言語にはない仕組みで、目新しく感じるけどなあ
Borrow Checkerが効かないようなコードを書くんだったらRustを使う意味が感じられないぐらいにはね

444 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 17:44:11.14 ID:t0V8WW9J.net]
>>436
インターフェースの問題とJavaの問題を混同するのが論外

445 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 18:05:15.33 ID:K++ItniC.net]
Borrow checker自体は2000年頃のCycloneの時点でほぼできていたっぽい
Rust独自なのは多分shared xor mutableとmove by defaultじゃないかな

446 名前:デフォルトの名無しさん [2022/07/22(金) 19:11:51.06 ID:yoEBUVfk.net]
>>437
そう。
C++には何でもある。
それが欠点。
必要なものに厳選して誰でも使えるようにしたのがRust。
C++のアイデアとJavaの実用性、二つの遺伝子を組み合わせたのがRust。
ちなみにお母さんがJava、お父さんはHaskellという建前だけど、本当のお父さんはC++。
Haskellさんは、自分の子供だと信じてる。

447 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 21:06:16.19 ID:UonvlDt9.net]
キモいな
Javaは遺伝子引き継いでないから代理出産に違いない

448 名前:デフォルトの名無しさん [2022/07/22(金) 21:16:25.55 ID:i57cd+Nw.net]
>>442
javaの立ち位置なんて、無関係な癖に建物の影からチラチラこちらをうかがって変な妄想してる気味悪い知らない奴だよ。

449 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 21:29:36.07 ID:zWgtMzpY.net]
>>435
あの人はプログラミング能力だけの人じゃなくてDBとか分散システムのアルゴリズムが主戦場の人でしょ。
プログラム読み書き堪能に越したことはないけど、そこだけで人を評価するのは視野が狭いよ。

450 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 04:53:27 ID:Yc68YnRu.net]
>>444
意味不明なこと言わないで

451 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 05:40:41.12 ID:xoLMiefm.net]
>>435
C++だけでなくRustも理解できてない?


純粋に疑問なんですけどRust使ってる中で「値オブジェクトマジ助かる!」って事あるんですか。
適当に参照で渡したデータが意図せず書き換えられて伝搬して困る典型ケースはコンパイラが潰してくれる認識なんですが。



452 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 08:37:27.70 ID:0xKT+wLu.net]
>>447
それはRustじゃなく値オブジェクトを理解できてない
院卒の新人だったりしない?

453 名前:デフォルトの名無しさん [2022/07/23(土) 09:37:03.85 ID:bR39w9BX.net]
Googleは金の亡者

454 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 11:55:37.32 ID:8Uydd8B4.net]
>>448
低レイヤーのプログラマーは値オブジェクトとか知らないほうが普通
アーキテクチャ設計といったらCPUやメモリアーキテクチャの事だと思ってたりするw

455 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 13:10:56 ID:RBxCW/xN.net]
OwnershipルールとReferenceルールがWhat
Borrow CheckerはHowに相当

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

後知恵で見れば当然に見えるようなシンプルなルールを作るのはものすごく難易度が高い

456 名前:デフォルトの名無しさん [2022/07/23(土) 16:15:20.09 ID:tefRxlpq.net]
>>451
わかる
Rustのメモリ周りや、UnixとかRISC-Vみたいに、システムを動作させるに必要な機能の数をできるだけ小さくするのって難しいけど、完成品を見ると当たり前じゃんみたいな印象を受ける

457 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 18:34:20.81 ID:u2Y0Vizw.net]
>>445
残念ながらスパナーとか普通に実装してるgoogleにおいてはあんまり価値のある能力ではないよ。

458 名前:デフォルトの名無しさん [2022/07/23(土) 19:04:05.94 ID:ehQy/P8s.net]
ISO、C++標準化委員のグレイドン・ホアレ氏はC++0xの標準化過程で、後方互換性を削ぎ落せば理解しやすくなることに気が付く。
そして私的プロジェクトとして実装し始めた。
2016年4月、ホアレ氏は最初の製品をRustと命名し出荷した。

459 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 19:21:14 ID:NE7ljYY1.net]
C++標準化委員の人でもあったんか
それにしてもRustっていいネーミングだよな
なんかしっくりくる

460 名前:デフォルトの名無しさん [2022/07/23(土) 19:57:02.71 ID:uphZtYPd.net]
正直なところ一般的な単語とか1文字とかの言語名はやめて欲しいと思わなくもない。

461 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 20:43:26.21 ID:PgM2fTTz.net]
>>453
逆じゃね。自分たちで作ってるからこそアルゴリズム方面の知識の意味があるのでは



462 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 21:05:19 ID:IDFlcwhf.net]
>>454
Hoareはホーアかホアだと思うんだが
ホアレはどこの国の読み方?

463 名前:デフォルトの名無しさん mailto:sage [2022/07/23(土) 21:18:57.29 ID:91gi6HhK.net]
日本じゃね?






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

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<279KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef