Mozilla発のRust言語のスレ
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
前スレ
Rust part8
https://mevius.5ch.net/test/read.cgi/tech/1579834072/
探検
Rust part9
■ このスレッドは過去ログ倉庫に格納されています
2020/08/23(日) 01:07:35.52ID:MgEpWwVh
632デフォルトの名無しさん
2021/02/08(月) 22:14:40.49ID:tj1CufyM633デフォルトの名無しさん
2021/02/08(月) 22:48:07.53ID:UsSsiWeS >>632
特殊化が必要なら当然特殊化するし、プロトタイプしか与えられてない関数は当然中身を他の場所で実装しなければならない
が、いずれもヘッダその他で書いてあるのと同じことを繰り返し書くという意味ではない
「引数と返り値をプロトタイプと実装で二度書くじゃないか」と主張してるのか?
だとしたら、「Rustのtraitとimplは同じことの繰り返しだ」と同レベルのデタラメだ
> あとイテレータはbegin/endのこと
範囲for文はあるので、コンテナを走査する時にはbegin()もend()も書く必要はない
が、begin()やend()の指すイテレータが必要なら当然書く必要がある
しかしこれより簡潔な表現方法があるか?
特殊化が必要なら当然特殊化するし、プロトタイプしか与えられてない関数は当然中身を他の場所で実装しなければならない
が、いずれもヘッダその他で書いてあるのと同じことを繰り返し書くという意味ではない
「引数と返り値をプロトタイプと実装で二度書くじゃないか」と主張してるのか?
だとしたら、「Rustのtraitとimplは同じことの繰り返しだ」と同レベルのデタラメだ
> あとイテレータはbegin/endのこと
範囲for文はあるので、コンテナを走査する時にはbegin()もend()も書く必要はない
が、begin()やend()の指すイテレータが必要なら当然書く必要がある
しかしこれより簡潔な表現方法があるか?
634デフォルトの名無しさん
2021/02/08(月) 22:59:07.96ID:tj1CufyM >>633
いや、Rustのtraitとimplも同じことの繰り返しだと思うが。
もちろんそれぞれに意味があるのは分かるが、今話題になってるのは長いかどうかなので、単に長いのでは?ということ。
begin/endは言われてみれば確かにそんなに長くもないな。
いや、Rustのtraitとimplも同じことの繰り返しだと思うが。
もちろんそれぞれに意味があるのは分かるが、今話題になってるのは長いかどうかなので、単に長いのでは?ということ。
begin/endは言われてみれば確かにそんなに長くもないな。
635デフォルトの名無しさん
2021/02/08(月) 23:04:02.74ID:tj1CufyM そういえばRustだとderiveで導出できるようなのを
手で書かないといけないのも面倒だと思ってたけど
それも最近のC++だと便利になってるのかな?
手で書かないといけないのも面倒だと思ってたけど
それも最近のC++だと便利になってるのかな?
636デフォルトの名無しさん
2021/02/08(月) 23:09:22.70ID:UsSsiWeS >>634
〜〜〜〜〜ッッ!!?!!????
型を示すだけぞ???
どういう理屈で「どちらかというとC++の方が長い」???
「プロトタイプ」なる仕様が冗長だと思ってるということか?
だとしてもどこがどうRustより長い?
traitとimplが同じことの繰り返しに見えるなら尚更
〜〜〜〜〜ッッ!!?!!????
型を示すだけぞ???
どういう理屈で「どちらかというとC++の方が長い」???
「プロトタイプ」なる仕様が冗長だと思ってるということか?
だとしてもどこがどうRustより長い?
traitとimplが同じことの繰り返しに見えるなら尚更
637デフォルトの名無しさん
2021/02/08(月) 23:20:22.89ID:34Jom8HU 刃牙みてぇな驚き方
638デフォルトの名無しさん
2021/02/09(火) 00:25:25.36ID:HbSSO5iG >>636
気持ち悪いなお前……
気持ち悪いなお前……
639デフォルトの名無しさん
2021/02/09(火) 00:34:18.83ID:wDpL+x9E ゆうてID:tj1CufyMがもの知らん過ぎるよ
刃牙クンが正しい
刃牙クンが正しい
640デフォルトの名無しさん
2021/02/09(火) 00:49:55.66ID:M+MJQwFs >>627 がどういうところでrustを冗長に感じたのかが分からないと身のある議論にならないのではないか
641デフォルトの名無しさん
2021/02/09(火) 01:06:11.87ID:iu64Jkj8 let v2 = v.iter().take_while(pred).collect::<Vec<_>>();
auto iter_end = std::find_if_not(v.cbegin(), v.cend(), pred);
auto v2 = std::vector<Hoge>(v.cbegin(), iter_end);
auto iter_end = std::find_if_not(v.cbegin(), v.cend(), pred);
auto v2 = std::vector<Hoge>(v.cbegin(), iter_end);
642デフォルトの名無しさん
2021/02/09(火) 14:34:18.07ID:u94zqiaA Rust言語を推進する「Rust Foundation」設立。AWS、Google、マイクロソフト、モジラ、ファーウェイらが設立メンバー
https://www.publickey1.jp/blog/21/rustrust_foundationawsgoogle.html
https://www.publickey1.jp/blog/21/rustrust_foundationawsgoogle.html
643デフォルトの名無しさん
2021/02/09(火) 15:30:38.01ID:kPdoOyk6644デフォルトの名無しさん
2021/02/09(火) 15:37:53.29ID:hLMZgkSi ファーwww
ウェーイwww
ウェーイwww
645デフォルトの名無しさん
2021/02/09(火) 15:48:29.20ID:Pj9Pa3V5 >>642
GoogleもMSも節操ないな。
GoogleもMSも節操ないな。
646デフォルトの名無しさん
2021/02/09(火) 16:43:44.21ID:gWi0ogeT 非同期って結局のところtokio使えばいいの?
647デフォルトの名無しさん
2021/02/09(火) 17:12:10.08ID:hLMZgkSi648デフォルトの名無しさん
2021/02/09(火) 18:32:36.30ID:nK2/UuNc traitとimplが同じことの繰り返しは流石にキテレツ過ぎてワロタ
こういう基本的な言語仕様も分かってない人にとってRust使うメリットってあるのかな
「どっちが短く書けるか」については、流石にC++じゃないかな
良くも悪くも自由だし、短さだけを追求したクソコードも作れる
一方でRustも一応エルゴノミクスを掲げてはいるし、冗長さは感じない
C++が短くでき過ぎる、って言い方が正しいとおも
こういう基本的な言語仕様も分かってない人にとってRust使うメリットってあるのかな
「どっちが短く書けるか」については、流石にC++じゃないかな
良くも悪くも自由だし、短さだけを追求したクソコードも作れる
一方でRustも一応エルゴノミクスを掲げてはいるし、冗長さは感じない
C++が短くでき過ぎる、って言い方が正しいとおも
649デフォルトの名無しさん
2021/02/09(火) 19:12:15.97ID:tpC3waGh >>642
林檎やfacebookの参入、ゲームやスマホでの導入例が出てくればこれはかなりの地位を占めるな
林檎やfacebookの参入、ゲームやスマホでの導入例が出てくればこれはかなりの地位を占めるな
650デフォルトの名無しさん
2021/02/09(火) 20:13:22.59ID:G8as3nFu コードを短くできるなんてどうでもいいことに囚われて半端になってる印象。
651デフォルトの名無しさん
2021/02/09(火) 21:03:00.62ID:9cByPiIZ >>650
rustが?
rustが?
652デフォルトの名無しさん
2021/02/09(火) 22:20:32.26ID:tpC3waGh どうでもいいことか?
653デフォルトの名無しさん
2021/02/09(火) 23:19:34.12ID:iu64Jkj8 程度問題
654デフォルトの名無しさん
2021/02/10(水) 00:30:31.60ID:KzEq3JVg 具体的なコードの話も出さずに議論されても困る
655デフォルトの名無しさん
2021/02/10(水) 02:24:50.74ID:E/DLe6HD Firefoxでは160,000行のC ++コードを85,000行のRustコードに置き換えたと言ってる
656デフォルトの名無しさん
2021/02/10(水) 06:12:58.16ID:IJdnUleO いやーRust難しくないっすか…
3回くらい入門したけどrustlingsのiterあたりでつらくなってくる
アホは他の優しい最新言語やったほうがいいんですかねぇ
3回くらい入門したけどrustlingsのiterあたりでつらくなってくる
アホは他の優しい最新言語やったほうがいいんですかねぇ
657デフォルトの名無しさん
2021/02/10(水) 08:20:43.62ID:Y3LDlcI4 でもRustのコンパイル基盤のLLVMはいつまで経ってもC++製のまんまだよね
書き直さなきゃC++の牙城は壊せんで
書き直さなきゃC++の牙城は壊せんで
658デフォルトの名無しさん
2021/02/10(水) 08:39:46.46ID:KAhsYwl/ それAppleに言えよ…
659デフォルトの名無しさん
2021/02/10(水) 09:32:21.19ID:KzEq3JVg craneliftがあるじゃん
デバッグビルド向けだけど
デバッグビルド向けだけど
660デフォルトの名無しさん
2021/02/10(水) 09:36:57.75ID:+cBPKBOz コンパイラはrust自身で作られてるからそのうちそうなるんじゃね?
661デフォルトの名無しさん
2021/02/10(水) 23:59:35.72ID:ToMnnTm0662デフォルトの名無しさん
2021/02/11(木) 01:31:10.60ID:9tQEVdS2663デフォルトの名無しさん
2021/02/11(木) 02:06:38.13ID:Bko8L/Zl664デフォルトの名無しさん
2021/02/11(木) 02:10:08.49ID:9tQEVdS2665デフォルトの名無しさん
2021/02/11(木) 02:23:45.58ID:Bko8L/Zl >>664
「使いこなす」がレベチ過ぎてワロシ
コンテナとアルゴに関しては俺もSTL使う方が良いと思ってたわ
vector<bool>とか、難のある仕様があるのは理解してたがそういうのに個別に対処すれば十分だろうと
リーナスとかもSTLが大ッ嫌いだという記事をよく見るが、具体的にどこを毛嫌いしてるのか俺は理解していない
「使いこなす」がレベチ過ぎてワロシ
コンテナとアルゴに関しては俺もSTL使う方が良いと思ってたわ
vector<bool>とか、難のある仕様があるのは理解してたがそういうのに個別に対処すれば十分だろうと
リーナスとかもSTLが大ッ嫌いだという記事をよく見るが、具体的にどこを毛嫌いしてるのか俺は理解していない
666デフォルトの名無しさん
2021/02/11(木) 03:22:28.69ID:veopzNW6 いつもの爺だよ
667デフォルトの名無しさん
2021/02/11(木) 10:32:11.70ID:uGNpwdY5 そりゃOSレベルで見たらメモリの使い方がラップされるようなライブラリは使わんだろ。
馬鹿でもわかる話だと思ってたがそうでもないのか。
馬鹿でもわかる話だと思ってたがそうでもないのか。
668デフォルトの名無しさん
2021/02/11(木) 10:55:34.35ID:681aVeVl むしろ C++ のつらさを知ってないと Rust の良さは (悪さもだが) わからんだろ。
669デフォルトの名無しさん
2021/02/11(木) 12:17:58.13ID:tLNN1WhF >>667
それ言ったらC++のCじゃない部分は全部ダメじゃね
それ言ったらC++のCじゃない部分は全部ダメじゃね
670デフォルトの名無しさん
2021/02/11(木) 12:18:18.96ID:tLNN1WhF STLに限らず
671デフォルトの名無しさん
2021/02/11(木) 12:38:34.69ID:veopzNW6672デフォルトの名無しさん
2021/02/11(木) 15:13:11.82ID:9tQEVdS2673デフォルトの名無しさん
2021/02/11(木) 15:46:32.06ID:LFj6F75s >>672
> STLはCの良さを台無しにするような傾向がある。
これは観念的な話?
パフォーマンス的には、もちろん不要なコピー等は避けるという前提のもとで、同じなのかなって思ってたんだけど
> C++の言語仕様自体は適切に使えばそのようなことはない。
適切というのは、C with class として使えば、ということ?
> STLはCの良さを台無しにするような傾向がある。
これは観念的な話?
パフォーマンス的には、もちろん不要なコピー等は避けるという前提のもとで、同じなのかなって思ってたんだけど
> C++の言語仕様自体は適切に使えばそのようなことはない。
適切というのは、C with class として使えば、ということ?
674デフォルトの名無しさん
2021/02/11(木) 16:26:39.58ID:681aVeVl >>672
STL というものは C++ の中にはない。
STL というものは C++ の中にはない。
675デフォルトの名無しさん
2021/02/11(木) 16:31:10.44ID:681aVeVl C++ の標準ライブラリは C 的な良さを殺さないように配慮しまくってるから
抽象化層で抽象化しきれずにイビツになってるんで、
出来が良いとは思わんが C の良さを台無しにしてるとは思わんな。
抽象化層で抽象化しきれずにイビツになってるんで、
出来が良いとは思わんが C の良さを台無しにしてるとは思わんな。
676デフォルトの名無しさん
2021/02/11(木) 16:32:15.96ID:9tQEVdS2 >>675
そう思ってるならあなたも設計者の頭の出来も馬鹿。
そう思ってるならあなたも設計者の頭の出来も馬鹿。
677デフォルトの名無しさん
2021/02/11(木) 17:01:42.79ID:/o5Cctlu 他所でやれ
678デフォルトの名無しさん
2021/02/11(木) 17:04:12.74ID:BUYxyJ+C >>662
MozillaもGoogleもMSもC++を使いこなせないからRustを支援してるって主張か?
MozillaもGoogleもMSもC++を使いこなせないからRustを支援してるって主張か?
679デフォルトの名無しさん
2021/02/11(木) 17:27:06.59ID:9tQEVdS2 >>678
Mozillaなんか独占禁止法違反を誤魔化すためのGoogleの下請けに過ぎないので
レベルの高いプログラマはもはやいないし、MSやGoogleは巨大すぎるので
できそこないのプログラマも多い。
Mozillaなんか独占禁止法違反を誤魔化すためのGoogleの下請けに過ぎないので
レベルの高いプログラマはもはやいないし、MSやGoogleは巨大すぎるので
できそこないのプログラマも多い。
680デフォルトの名無しさん
2021/02/11(木) 17:42:02.28ID:7PiE9zQt おじいちゃんの想像力が凄すぎる
681デフォルトの名無しさん
2021/02/11(木) 19:00:14.15ID:yn2eFMfP トランプ好きそう
682デフォルトの名無しさん
2021/02/11(木) 19:04:26.47ID:BUYxyJ+C >>679
なるほど、Mozillaのプログラマは全員レベル低いしGoogleやMSでrustに関わってる人も全員出来損ないという主張なのね
なるほど、Mozillaのプログラマは全員レベル低いしGoogleやMSでrustに関わってる人も全員出来損ないという主張なのね
683デフォルトの名無しさん
2021/02/11(木) 19:17:51.67ID:du0efLq8 ダニング=クルーガー効果
ダニング=クルーガー効果とは、能力の低い人物が自らの容姿や発言・行動などについて、
実際よりも高い評価を行ってしまう優越の錯覚(英語版)を生み出す認知バイアス。
この現象は、人間が自分自身の不適格性を認識すること(メタ認知)ができないことによって生じる。
1999年にこの効果を定義したコーネル大学のデイヴィッド・ダニング(英語版)とジャスティン・クルーガー(英語版)は、
「優越の錯覚を生み出す認知バイアスは、能力の高い人物の場合は外部(=他人)に対する過小評価に起因している。
一方で、能力の低い人物の場合は内部(=自身)に対する過大評価に起因している。」と述べている。
ダニング=クルーガー効果とは、能力の低い人物が自らの容姿や発言・行動などについて、
実際よりも高い評価を行ってしまう優越の錯覚(英語版)を生み出す認知バイアス。
この現象は、人間が自分自身の不適格性を認識すること(メタ認知)ができないことによって生じる。
1999年にこの効果を定義したコーネル大学のデイヴィッド・ダニング(英語版)とジャスティン・クルーガー(英語版)は、
「優越の錯覚を生み出す認知バイアスは、能力の高い人物の場合は外部(=他人)に対する過小評価に起因している。
一方で、能力の低い人物の場合は内部(=自身)に対する過大評価に起因している。」と述べている。
684デフォルトの名無しさん
2021/02/11(木) 19:50:13.66ID:veopzNW6 いつもの爺だって言ってんのに
685デフォルトの名無しさん
2021/02/11(木) 20:05:54.55ID:LFj6F75s686デフォルトの名無しさん
2021/02/11(木) 20:11:37.99ID:ntK2cQ4K ここはC++のスレじゃないので他所に行ってね
687デフォルトの名無しさん
2021/02/11(木) 20:55:43.37ID:681aVeVl >>685
インターフェイス (仕様) の話だけど実装の話でもある。
たとえば C++ では vector の大きさが変わったら (それの要素を指す) イテレータは一斉に無効になって
コンパイル時にも実行時にも捕捉されない (捕捉することを保証しない) のは
明らかに vector の実装の都合を想定していて、
仕様を満たす範囲で効率的に実装すれば (vector の) イテレータの実体はポインタ一個になる。
C++ の標準ライブラリは C で出来ること、 C の習慣の見栄えを変えているに過ぎないし、
そうなるようにデザインされている。
実装がどうなっているかが透けて見えるような仕様になっているという意味で抽象化がしきれていないと書いた。
インターフェイス (仕様) の話だけど実装の話でもある。
たとえば C++ では vector の大きさが変わったら (それの要素を指す) イテレータは一斉に無効になって
コンパイル時にも実行時にも捕捉されない (捕捉することを保証しない) のは
明らかに vector の実装の都合を想定していて、
仕様を満たす範囲で効率的に実装すれば (vector の) イテレータの実体はポインタ一個になる。
C++ の標準ライブラリは C で出来ること、 C の習慣の見栄えを変えているに過ぎないし、
そうなるようにデザインされている。
実装がどうなっているかが透けて見えるような仕様になっているという意味で抽象化がしきれていないと書いた。
688デフォルトの名無しさん
2021/02/11(木) 21:35:06.01ID:qccRsQET >>676はクソか馬鹿。理由は説明しない。
689デフォルトの名無しさん
2021/02/11(木) 23:40:49.80ID:zsmCiXPn690デフォルトの名無しさん
2021/02/12(金) 00:55:03.10ID:rREL60wB691デフォルトの名無しさん
2021/02/12(金) 01:08:51.70ID:2OOQ6m86 >>689
完全に成功していると言い切れない部分はあるかもしれないけど、
実行時に処理すべきことが同じならクラスやらテンプレートやらでラップしても
C と C++ でほとんど差は付かないよ。
少なくとも現代的な処理系で最適化を有効にして比較した場合には。
完全に成功していると言い切れない部分はあるかもしれないけど、
実行時に処理すべきことが同じならクラスやらテンプレートやらでラップしても
C と C++ でほとんど差は付かないよ。
少なくとも現代的な処理系で最適化を有効にして比較した場合には。
692デフォルトの名無しさん
2021/02/12(金) 01:20:11.09ID:2OOQ6m86 >>690
それはどうだろう。
俺はアマチュアだがそれでも C++ を二十年以上触ってきた感覚で言えば
Rust はかなり良いという印象なので、 C++ のグダグダさに
うんざりしてる人は結構いるんじゃないか?
C++ の自由さを楽に感じている部分もあるんだが、結局はツギハギだからなぁ。
理念的な良し悪しを置くとしても長期にわたって機能を増やしていれば
一貫性のないところだっていっぱい出てくるのは仕方がないことで、
どこかで時代をリセットしてやり直す必要はあるんじゃないかと思う。
俺にとってはそれが Rust って感じ。
それはどうだろう。
俺はアマチュアだがそれでも C++ を二十年以上触ってきた感覚で言えば
Rust はかなり良いという印象なので、 C++ のグダグダさに
うんざりしてる人は結構いるんじゃないか?
C++ の自由さを楽に感じている部分もあるんだが、結局はツギハギだからなぁ。
理念的な良し悪しを置くとしても長期にわたって機能を増やしていれば
一貫性のないところだっていっぱい出てくるのは仕方がないことで、
どこかで時代をリセットしてやり直す必要はあるんじゃないかと思う。
俺にとってはそれが Rust って感じ。
693デフォルトの名無しさん
2021/02/12(金) 07:21:37.77ID:dfrGT/mn test
694デフォルトの名無しさん
2021/02/12(金) 15:00:39.40ID:Icv/F37w rustももう十分一貫性ないだろ。c++リセットしたい割に同じ道行ってるのがどうしようもねーなという印象。
695デフォルトの名無しさん
2021/02/12(金) 15:46:07.19ID:Sqde6WAi だからお気持ちはいいから具体例を挙げろよ
696デフォルトの名無しさん
2021/02/12(金) 16:25:53.42ID:2OOQ6m86 >>694
一貫性が壊れてきてるというのはわかるよ。
でも、それを繰り返すもんだという諦めがあるから、
Rust がグダグダになりきったらまた新しい何かが登場するだろうと期待して今は Rust ってこと。
C++ の状況をなぞるならこれから 15 年か 20 年くらいはなんとかなるだろ。 それで十分だ。
>>695
以前のスレでも書いたような気がするが、
is_alphabetic の引数は self なのに is_ascii_alphabetic は &self だったりするとかみたいな
微妙な歴史的経緯がちょろちょろと見え隠れする。
個別に見れば重要ではないんだけど、
そういうどうでもいいことの積み重ねが全体としてのいびつさになる。
かといってそこらへんを綺麗に整理しつづけるために互換性を失うようでも
受け入れられなかっただろうというのもあるので、
そこらへんは本当にしゃーないんだわ。
一貫性が壊れてきてるというのはわかるよ。
でも、それを繰り返すもんだという諦めがあるから、
Rust がグダグダになりきったらまた新しい何かが登場するだろうと期待して今は Rust ってこと。
C++ の状況をなぞるならこれから 15 年か 20 年くらいはなんとかなるだろ。 それで十分だ。
>>695
以前のスレでも書いたような気がするが、
is_alphabetic の引数は self なのに is_ascii_alphabetic は &self だったりするとかみたいな
微妙な歴史的経緯がちょろちょろと見え隠れする。
個別に見れば重要ではないんだけど、
そういうどうでもいいことの積み重ねが全体としてのいびつさになる。
かといってそこらへんを綺麗に整理しつづけるために互換性を失うようでも
受け入れられなかっただろうというのもあるので、
そこらへんは本当にしゃーないんだわ。
697デフォルトの名無しさん
2021/02/12(金) 18:51:43.73ID:HD0w64Tf エディションで定期的にリセットする仕組みが機能するかどうかは興味あるな
Rustで初めて挑戦する感じだから、良い感じに機能するのはさらに次世代の言語になるだろうけど
Rustで初めて挑戦する感じだから、良い感じに機能するのはさらに次世代の言語になるだろうけど
>>687
>実装がどうなっているかが透けて見えるような仕様
私はむしろ、実装が透けて見えるのが王道だとおもっていたのですが、あなたのいう「抽象性」というのが私の感覚とは違うのかもしれませんね
抽象性を徹底して理解するためには、どんな勉強をすればいいのでしょうか?
>実装がどうなっているかが透けて見えるような仕様
私はむしろ、実装が透けて見えるのが王道だとおもっていたのですが、あなたのいう「抽象性」というのが私の感覚とは違うのかもしれませんね
抽象性を徹底して理解するためには、どんな勉強をすればいいのでしょうか?
>>692
>C++ のグダグダさにうんざりしてる人は結構いるんじゃないか?
私はまだ経験が浅いのかもしれませんが、そんなに C++ がグダグダだとは思っていません
どういうところがグダグダなのか例示していただけるとありがたいです‥‥
>C++ のグダグダさにうんざりしてる人は結構いるんじゃないか?
私はまだ経験が浅いのかもしれませんが、そんなに C++ がグダグダだとは思っていません
どういうところがグダグダなのか例示していただけるとありがたいです‥‥
700はちみつ餃子 ◆8X2XSCHEME
2021/02/13(土) 11:09:55.70ID:sNJoTpmN >>698
抽象というのは、要は余計な要素をそぎ落とすという話なので考え方によっては
どこが余計なのかというのは変わりうるけども、仮に vector の本質を
「縮小・伸長可能な配列」であると考えるならば
・ 要素が隣り合う
・ 要素アクセスのコストのオーダーは O(1) である
といった性質は本質に付随する性質として受け入れられる。 でも、
・ 配列を伸ばしたらイテレータが無効になる
という仕様は
・ 配列の大きさを変えるのをメモリの確保しなおしで実現する
・ イテレータの実体はポインタ一個である
という実装上の理由 (を想定している) なので、抽象化の漏れだと思う。
イテレータをコンテナ (の参照) とインデックスの組で実装すれば回避可能なわけだし。
でも C++ の標準ライブラリでは C の価値観を以て抽象化よりも実行効率を優先するという選択をした。
繰り返すけど、これは何を本質とみなすかという見方によって変わりうるので、
考え方によって詳細は変わるかもしれないということには注意。
・ 対象は何である (ように見せている) か?
・ 対象がそう見せようとしている通りに使えるか?
・ その上で対象がそう見せかけようとする以外の部分 (実装の都合) を「忘れられる」か?
というのがライブラリが持つ抽象性。
カプセル化で大事なのは情報隠蔽だというのをどっかで読んだことくらいあるでしょ。
余計なことは見せないほうがいい。
んで、私 (>>687) にとっては vector のメモリ管理の都合は (少なくとも必要になるまでは)
忘れていたい余計なことだと思えるということ。
抽象というのは、要は余計な要素をそぎ落とすという話なので考え方によっては
どこが余計なのかというのは変わりうるけども、仮に vector の本質を
「縮小・伸長可能な配列」であると考えるならば
・ 要素が隣り合う
・ 要素アクセスのコストのオーダーは O(1) である
といった性質は本質に付随する性質として受け入れられる。 でも、
・ 配列を伸ばしたらイテレータが無効になる
という仕様は
・ 配列の大きさを変えるのをメモリの確保しなおしで実現する
・ イテレータの実体はポインタ一個である
という実装上の理由 (を想定している) なので、抽象化の漏れだと思う。
イテレータをコンテナ (の参照) とインデックスの組で実装すれば回避可能なわけだし。
でも C++ の標準ライブラリでは C の価値観を以て抽象化よりも実行効率を優先するという選択をした。
繰り返すけど、これは何を本質とみなすかという見方によって変わりうるので、
考え方によって詳細は変わるかもしれないということには注意。
・ 対象は何である (ように見せている) か?
・ 対象がそう見せようとしている通りに使えるか?
・ その上で対象がそう見せかけようとする以外の部分 (実装の都合) を「忘れられる」か?
というのがライブラリが持つ抽象性。
カプセル化で大事なのは情報隠蔽だというのをどっかで読んだことくらいあるでしょ。
余計なことは見せないほうがいい。
んで、私 (>>687) にとっては vector のメモリ管理の都合は (少なくとも必要になるまでは)
忘れていたい余計なことだと思えるということ。
701はちみつ餃子 ◆8X2XSCHEME
2021/02/13(土) 11:21:51.89ID:sNJoTpmN >>699
特にいびつさを生み出している例はヘッダファイルかな。
ソースファイル (.c) がひとつのモジュールとして機能して
ヘッダファイルがモジュールの外に向けたインターフェイスとして機能する
というのは C の世界ではまあまあ上手くいっているのだけど、
ヘッダファイルに定義を書くようになってから役割の境界が破綻してきた。
従来の C の世界では「定義はどこかのコンパイル単位に属す」という前提があったが、
ヘッダ内での実装 (テンプレートやインライン関数) ははっきりした所属がない。
テンプレートαがテンプレートβを使っていてソースファイルγでαを使いたければ
γ内からβも見えてしまうので隠蔽しきれない。 (カプセル化の破綻)
C++er にとってモジュール機能の導入が悲願のひとつと言われ続けていたのは、
ヘッダファイルという仕組みが理由になっている色々なグダグダの解消につながることが
期待されていたからだよ。
C++20 でとりあえずモジュールが導入されたけど色々な機能をモジュールを前提
にしたものに置き換えて古い仕組みがフェードアウトするまではまだまだグダグダする
だろうけどな。
ところでこれ以上は Rust スレで C++ の話を続けるとうっとうしがられるので、
質問があればこれ以降は C++ スレで。
特にいびつさを生み出している例はヘッダファイルかな。
ソースファイル (.c) がひとつのモジュールとして機能して
ヘッダファイルがモジュールの外に向けたインターフェイスとして機能する
というのは C の世界ではまあまあ上手くいっているのだけど、
ヘッダファイルに定義を書くようになってから役割の境界が破綻してきた。
従来の C の世界では「定義はどこかのコンパイル単位に属す」という前提があったが、
ヘッダ内での実装 (テンプレートやインライン関数) ははっきりした所属がない。
テンプレートαがテンプレートβを使っていてソースファイルγでαを使いたければ
γ内からβも見えてしまうので隠蔽しきれない。 (カプセル化の破綻)
C++er にとってモジュール機能の導入が悲願のひとつと言われ続けていたのは、
ヘッダファイルという仕組みが理由になっている色々なグダグダの解消につながることが
期待されていたからだよ。
C++20 でとりあえずモジュールが導入されたけど色々な機能をモジュールを前提
にしたものに置き換えて古い仕組みがフェードアウトするまではまだまだグダグダする
だろうけどな。
ところでこれ以上は Rust スレで C++ の話を続けるとうっとうしがられるので、
質問があればこれ以降は C++ スレで。
702デフォルトの名無しさん
2021/02/13(土) 12:33:21.13ID:WXR7/a5A 板違いでしたらすみません。
カスタムSMGでリロードしても
弾が装填されません。
弾はピストル弾であってますよね?
バグですかね
よろしくお願いします
カスタムSMGでリロードしても
弾が装填されません。
弾はピストル弾であってますよね?
バグですかね
よろしくお願いします
703デフォルトの名無しさん
2021/02/13(土) 12:36:25.47ID:WXR7/a5A 板違いでしたらすみません。
カスタムSMGでリロードしても弾が装填されません。
ちなみにピストル弾です。
バグですかね
よろしくお願いします。
カスタムSMGでリロードしても弾が装填されません。
ちなみにピストル弾です。
バグですかね
よろしくお願いします。
704デフォルトの名無しさん
2021/02/13(土) 12:37:34.81ID:36lE3GzA わかりにくいボケ
705はちみつ餃子 ◆8X2XSCHEME
2021/02/13(土) 12:45:41.52ID:sNJoTpmN たぶんこれとひっかけたネタ
https://store.steampowered.com/app/252490/Rust/
https://store.steampowered.com/app/252490/Rust/
706デフォルトの名無しさん
2021/02/13(土) 13:05:51.12ID:w+5Lz0+D 鉄道やデジカメ、プログラム、ゲームの板のスレって
いつも無関係な話題で罵りあってるよね
これらの板って何か変な物を吸引するのだろうか
いつも無関係な話題で罵りあってるよね
これらの板って何か変な物を吸引するのだろうか
707デフォルトの名無しさん
2021/02/13(土) 13:33:02.22ID:WXR7/a5A →704
ボケ言うなカス
ボケ言うなカス
708デフォルトの名無しさん
2021/02/13(土) 14:06:11.02ID:jbR8Qrt4 ▷707
なんじゃワレやるんかコラ
なんじゃワレやるんかコラ
709デフォルトの名無しさん
2021/02/13(土) 14:49:42.47ID:pbGXUc6m pythonのモジュール作成者にもっとrustの利用が促進されればいい感じになりそうな気がする
710デフォルトの名無しさん
2021/02/13(土) 19:30:22.42ID:cu3O8Dcb はっきり言って邪魔でしかない
711デフォルトの名無しさん
2021/02/13(土) 19:58:39.56ID:3pvm/7w/ >>709
Rust 使えるなら Python 要らないだろ。
Rust 使えるなら Python 要らないだろ。
712デフォルトの名無しさん
2021/02/13(土) 20:30:02.97ID:iTD0ef09 プラグインとしてのwasmは流行りますか?
713デフォルトの名無しさん
2021/02/13(土) 21:46:14.79ID:sNJoTpmN >>712
可能性は十分にあると思う。
可能性は十分にあると思う。
714デフォルトの名無しさん
2021/02/13(土) 23:21:08.34ID:ahglb0ed wasmはWebブラウザだけでなく、令和のJavaアプレットのように Write once, run anywhere を標語に
あらゆる目的で使われるようになるよ
あらゆる目的で使われるようになるよ
715デフォルトの名無しさん
2021/02/13(土) 23:57:58.78ID:qgbbzUT6 ちょっとしたやつでもファイル容量大きくなるからまだ無理
さらにいえばjsでもgpu使えるから並列計算ならそれ使えばいいし、wasmの用途は限られる
将来的に5gとかで通信速度上がったら使われるようになると思う
さらにいえばjsでもgpu使えるから並列計算ならそれ使えばいいし、wasmの用途は限られる
将来的に5gとかで通信速度上がったら使われるようになると思う
716デフォルトの名無しさん
2021/02/14(日) 00:05:54.10ID:FhxBluZZ 今、5GのEdge Computingがwasmの適用範囲として最も注目されている領域
717デフォルトの名無しさん
2021/02/14(日) 10:45:44.60ID:ICgnupj6 wasmバブルってのはちょっと考えにくい
718デフォルトの名無しさん
2021/02/14(日) 11:17:05.02ID:fVniJNpS 泡沫の夢という意味かもw
>>700
>・ 配列を伸ばしたらイテレータが無効になる
>という仕様は
> ・ 配列の大きさを変えるのをメモリの確保しなおしで実現する
> ・ イテレータの実体はポインタ一個である
>という実装上の理由 (を想定している) なので、抽象化の漏れだと思う。
ふむふむ‥‥抽象化といってもいろいろあるんですね‥‥
>イテレータをコンテナ (の参照) とインデックスの組で実装すれば回避可能なわけだし。
私はイテレータはポインタの読み替えだと決め付けていたので、こういうイテレータの実装はちょっと抵抗がありますね
コンテナへの参照とインデックスを組みするとなると、これはスレッドセーフのことを考えないといけないな、と、どうしても思ってしまいます
そういうこと、すなわち必要に応じて重たいけれどもスレッドセーフにするか、それとも単一スレッド内の話だから軽く書きとばすか、というのはアプリケーション側の裁量だと思っています
言語標準で最初から「スレッドセーフにしました!」というのは、C/C++ 的にはイマイチではないかな、と
>・ 配列を伸ばしたらイテレータが無効になる
>という仕様は
> ・ 配列の大きさを変えるのをメモリの確保しなおしで実現する
> ・ イテレータの実体はポインタ一個である
>という実装上の理由 (を想定している) なので、抽象化の漏れだと思う。
ふむふむ‥‥抽象化といってもいろいろあるんですね‥‥
>イテレータをコンテナ (の参照) とインデックスの組で実装すれば回避可能なわけだし。
私はイテレータはポインタの読み替えだと決め付けていたので、こういうイテレータの実装はちょっと抵抗がありますね
コンテナへの参照とインデックスを組みするとなると、これはスレッドセーフのことを考えないといけないな、と、どうしても思ってしまいます
そういうこと、すなわち必要に応じて重たいけれどもスレッドセーフにするか、それとも単一スレッド内の話だから軽く書きとばすか、というのはアプリケーション側の裁量だと思っています
言語標準で最初から「スレッドセーフにしました!」というのは、C/C++ 的にはイマイチではないかな、と
720はちみつ餃子 ◆8X2XSCHEME
2021/02/15(月) 01:57:36.14ID:GNSRFiac >>719
> C/C++ 的にはイマイチではないかな、と
そうだよ。
C++ が C 的な考え方から離れなかった (他の方針も取れたのに) という話をしてる。
C/C++ 的にイマイチになる例を出したんだからイマイチだよ。
> C/C++ 的にはイマイチではないかな、と
そうだよ。
C++ が C 的な考え方から離れなかった (他の方針も取れたのに) という話をしてる。
C/C++ 的にイマイチになる例を出したんだからイマイチだよ。
721デフォルトの名無しさん
2021/02/15(月) 02:16:06.50ID:dmuMtjqZ WebAssemblyで書かれたアプリはあるんですか?
722デフォルトの名無しさん
2021/02/15(月) 03:28:26.27ID:QPKY0Zj9 喧嘩売りたいわけじゃないんですけど、Rustって明示性を重視してますよね、mutとか、所有権とか
でもそのくせ式としてreturnを省略できたり、でも例外はないからOptionやResultが普通でunwrap
しなくちゃならなかったり、でも>>505-508のようにメモリモデルの(まだ)定義がなく?、>>333
みたいな暗黙の再借用が出来たり色々ちぐはぐな気がするんですが、1.5、2.0辺りになったら大幅に
変わったりしますか?足を撃ち抜かないCPPとしては「良い」出来だと思うんですが、、正直、ほんの
ちょっと触ってみてCargoコンパイルが重くて、特徴の明示的など非常にめんどくさいんですがそういうもの?
C++20やC++23なんてありますが正直、もう時代の役目を終えたと感じます。いくら色々な機能を追加しても
能力次第で足を撃ち抜く事には変わりなく、そのような用途であるカーネルさえ古典的な安定したC、C++を
使いますよね。RustがWebkitを倒せたらほとんど使いどころがないような?
それと恐らく借用があるのでGCは搭載・あるいはON/OFFされないとほぼ確実に思いますが、async
awaitな非同期ではくGoのようなライトウェイトなGoroutineみたいなのが搭載される計画はありますか?
余談ですがLinux-kernelやドライバに使われると聞いているので、(標準的・言語的にはランタイムに入る事は)
無いんだと思ってますが、Goも例外は無いけど、なんであの界隈はブロック例外がアンナにも、お嫌い
なんでしょうかね?ちなみに最近、Nimというのを触ってとても感銘を受けました。
でもそのくせ式としてreturnを省略できたり、でも例外はないからOptionやResultが普通でunwrap
しなくちゃならなかったり、でも>>505-508のようにメモリモデルの(まだ)定義がなく?、>>333
みたいな暗黙の再借用が出来たり色々ちぐはぐな気がするんですが、1.5、2.0辺りになったら大幅に
変わったりしますか?足を撃ち抜かないCPPとしては「良い」出来だと思うんですが、、正直、ほんの
ちょっと触ってみてCargoコンパイルが重くて、特徴の明示的など非常にめんどくさいんですがそういうもの?
C++20やC++23なんてありますが正直、もう時代の役目を終えたと感じます。いくら色々な機能を追加しても
能力次第で足を撃ち抜く事には変わりなく、そのような用途であるカーネルさえ古典的な安定したC、C++を
使いますよね。RustがWebkitを倒せたらほとんど使いどころがないような?
それと恐らく借用があるのでGCは搭載・あるいはON/OFFされないとほぼ確実に思いますが、async
awaitな非同期ではくGoのようなライトウェイトなGoroutineみたいなのが搭載される計画はありますか?
余談ですがLinux-kernelやドライバに使われると聞いているので、(標準的・言語的にはランタイムに入る事は)
無いんだと思ってますが、Goも例外は無いけど、なんであの界隈はブロック例外がアンナにも、お嫌い
なんでしょうかね?ちなみに最近、Nimというのを触ってとても感銘を受けました。
723はちみつ餃子 ◆8X2XSCHEME
2021/02/15(月) 04:42:37.54ID:GNSRFiac >>722
これはきちんと議論を追っているわけではなく私なりの理解だということを事前に断っておくけど、
(unsafe を除いて) メモリ管理のチェックが自動化できることが最重要の指針だと思う。
チェックするにあたって必要な情報が多いから結果的にたくさんのことを明示する必要があるけど、
曖昧さがないなら明示する必要はないし、
実際の利用でほとんど常に同じような指定をしているならそれをデフォルトにして違うときだけ指定するのでも問題にならない。
これはきちんと議論を追っているわけではなく私なりの理解だということを事前に断っておくけど、
(unsafe を除いて) メモリ管理のチェックが自動化できることが最重要の指針だと思う。
チェックするにあたって必要な情報が多いから結果的にたくさんのことを明示する必要があるけど、
曖昧さがないなら明示する必要はないし、
実際の利用でほとんど常に同じような指定をしているならそれをデフォルトにして違うときだけ指定するのでも問題にならない。
724デフォルトの名無しさん
2021/02/15(月) 09:10:14.02ID:Rhj6q0xj >>722
単に明示性を重視してるというよりは、分かりにくいとか非推奨とか高コストなとこは明示して
そうでないとこは省略させたいように見えるな。
例えば関数の型なんかは技術的には省略して推論できるけど
分かりにくくなるからあえて書かせるとか。
なのでreturnは自明だけどResultはちゃんと処理させたい、
という考え方かと。
goroutineみたいなのはまず入らないだろうね。
そもそもなるべく標準ライブラリは小さくする方針だし、
現状でもrayonみたいな並列処理ライブラリ使えばいいし。
単に明示性を重視してるというよりは、分かりにくいとか非推奨とか高コストなとこは明示して
そうでないとこは省略させたいように見えるな。
例えば関数の型なんかは技術的には省略して推論できるけど
分かりにくくなるからあえて書かせるとか。
なのでreturnは自明だけどResultはちゃんと処理させたい、
という考え方かと。
goroutineみたいなのはまず入らないだろうね。
そもそもなるべく標準ライブラリは小さくする方針だし、
現状でもrayonみたいな並列処理ライブラリ使えばいいし。
725デフォルトの名無しさん
2021/02/15(月) 14:18:13.02ID:QPKY0Zj9726デフォルトの名無しさん
2021/02/15(月) 18:15:16.43ID:Y11JAZ1I goroutineの代替ならtokioとかasync-stdみたいな非同期IO系のランタイムも外せないのでは
goroutineの並列と並行のどっちの側面について言ってるのか次第ではあるけど
goroutineの並列と並行のどっちの側面について言ってるのか次第ではあるけど
727デフォルトの名無しさん
2021/02/15(月) 18:57:38.65ID:Rhj6q0xj asyncではなく、って言ってるのでrayonとかの方が近いかな、と。
まぁどっちにしてもgoroutineそのものなモデルを提供するライブラリは多分ないので
各自必要な並列並行性に応じたライブラリを選ぶ必要はある。
まぁどっちにしてもgoroutineそのものなモデルを提供するライブラリは多分ないので
各自必要な並列並行性に応じたライブラリを選ぶ必要はある。
728デフォルトの名無しさん
2021/02/15(月) 22:30:19.90ID:LbvG7Uo/ RustにあってC++にない機能はありますか?
729デフォルトの名無しさん
2021/02/15(月) 23:16:52.31ID:Yv9X0Du7 >>728
memory safety
memory safety
730デフォルトの名無しさん
2021/02/15(月) 23:34:00.74ID:FO8OS1Ro リージョン推論とアフィン型
731デフォルトの名無しさん
2021/02/15(月) 23:35:54.84ID:jLBVKIGa 勢い
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★3
- 麻生太郎が石破政権の1年を酷評「どよーんとして何も動かない感じだったな。それに引き換え高市政権は物事が動いている」 [597533159]
- 【速報】室井佑月、米山隆一との離婚を決意wwwwwwwwwwwwwwwwwwww [802034645]
- 箱根そばのうまさは異常
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
