公式
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のasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
前スレ
Rust part11
https://mevius.5ch.net/test/read.cgi/tech/1623857052/
Rust part12
■ このスレッドは過去ログ倉庫に格納されています
2021/08/24(火) 22:55:27.78ID:972JwtmU
16デフォルトの名無しさん
2021/08/25(水) 13:42:20.13ID:6n+Di1sM >>983
なるほどサンクス
リージョン理論に線形論理を上手く組み合わせて、cycloneとかの欠点を克服したrustってすげーなあ
とはいってもそもそも二重開放してエラーになるというのがピンとこない
free(a);
free(a);
は二重解放しているように見えて合法だろ?
一度目のfreeでaにNULLが代入されて、二度目のfreeでは引数がNULLの場合はそのままreturnって処理されるんだから、理論上は何度free使ってもエラーにならないじゃないか
なるほどサンクス
リージョン理論に線形論理を上手く組み合わせて、cycloneとかの欠点を克服したrustってすげーなあ
とはいってもそもそも二重開放してエラーになるというのがピンとこない
free(a);
free(a);
は二重解放しているように見えて合法だろ?
一度目のfreeでaにNULLが代入されて、二度目のfreeでは引数がNULLの場合はそのままreturnって処理されるんだから、理論上は何度free使ってもエラーにならないじゃないか
17デフォルトの名無しさん
2021/08/25(水) 13:42:36.69ID:6n+Di1sM これに答えろ
18デフォルトの名無しさん
2021/08/25(水) 14:22:27.47ID:aLlQE3on >>16
なぜRustのスレに書いているのか不明だけど
当然NULLにならなかったよ
キャスト警告無視で
#include <stdlib.h>
main() {
char *ptr = malloc(1024);
printf("ptr(1): %x\n", ptr);
free(ptr);
printf("ptr(2): %x\n", ptr);
free(ptr);
printf("ptr(3): %x\n", ptr);
}
実行結果
ptr(1): ea8f72a0
ptr(2): ea8f72a0
free(): double free detected
core dump
なぜRustのスレに書いているのか不明だけど
当然NULLにならなかったよ
キャスト警告無視で
#include <stdlib.h>
main() {
char *ptr = malloc(1024);
printf("ptr(1): %x\n", ptr);
free(ptr);
printf("ptr(2): %x\n", ptr);
free(ptr);
printf("ptr(3): %x\n", ptr);
}
実行結果
ptr(1): ea8f72a0
ptr(2): ea8f72a0
free(): double free detected
core dump
2021/08/25(水) 14:49:12.37ID:FDhW8k6p
20デフォルトの名無しさん
2021/08/25(水) 14:50:41.52ID:6n+Di1sM21デフォルトの名無しさん
2021/08/26(木) 04:09:52.45ID:wR4WgiQO そういやNull代入派とかいうのもいたな
22デフォルトの名無しさん
2021/08/26(木) 07:18:01.38ID:BSY6c8/C uaf防ぐのってぶっちゃけ簡単ですよね?freeしたあとにNULL代入するのを鉄則化するだけですよね?
2021/08/26(木) 07:18:53.92ID:tGDEA4MX
ポインタコピーすることないの?
加減算することないの?
加減算することないの?
2021/08/26(木) 07:42:26.49ID:YoD5H0JF
int* p1 = malloc(sizeof(int));
int* p2 = p1;
free(p1);
p1 = NULL;
free(p2);
極端に書くとこうかなあ?
int* p2 = p1;
free(p1);
p1 = NULL;
free(p2);
極端に書くとこうかなあ?
2021/08/26(木) 08:58:05.69ID:yCq+tuyV
>>22
1つのオブジェクトを複数のポインタで挿している場合にそういうわけにはいかない。
1つのオブジェクトを複数のポインタで挿している場合にそういうわけにはいかない。
2021/08/26(木) 09:21:56.64ID:yCq+tuyV
>>25
誤字訂正: 挿して ---> 指して
誤字訂正: 挿して ---> 指して
27デフォルトの名無しさん
2021/08/26(木) 14:46:24.90ID:BSY6c8/C28デフォルトの名無しさん
2021/08/26(木) 14:52:56.47ID:BSY6c8/C29デフォルトの名無しさん
2021/08/26(木) 14:53:33.93ID:BSY6c8/C >>24
p2=NULL;すればいいだけの話ですよね?
p2=NULL;すればいいだけの話ですよね?
2021/08/26(木) 14:54:04.18ID:ILFADcfC
Cスレでやれよ
2021/08/26(木) 14:55:34.47ID:s9ncfwmd
>>27
効率が落ちる。
効率が落ちる。
2021/08/26(木) 15:01:32.05ID:jqKFKJA4
2021/08/26(木) 15:04:39.60ID:s9ncfwmd
手で書くと効率は落ちないが、実行段階で自動的に NULL を入れようとすると
効率が落ちるという意味ね。時間とメモリーの両方で。
NULLが入っているか判定して error にするなどの処理も必要となったりする。
効率が落ちるという意味ね。時間とメモリーの両方で。
NULLが入っているか判定して error にするなどの処理も必要となったりする。
2021/08/26(木) 15:06:19.25ID:VJ7dcvV2
>>27
難しいです…
難しいです…
35デフォルトの名無しさん
2021/08/26(木) 15:11:05.26ID:BSY6c8/C2021/08/26(木) 15:18:41.61ID:s9ncfwmd
>>36
凄く落ちるわけではないが。
凄く落ちるわけではないが。
2021/08/26(木) 15:21:09.64ID:s9ncfwmd
>>36
参照カウンタ方式は、自動的に関連するポインタを巡ってNULLを入れるよりは
効率が良いのでプログラマーの裁量で選択できるようになっている。
しかし、それでも僅かに効率が落ちるのでなるべく使わないでプログラムする
方が良いと思うプログラマーが多いということだよ。
参照カウンタ方式は、自動的に関連するポインタを巡ってNULLを入れるよりは
効率が良いのでプログラマーの裁量で選択できるようになっている。
しかし、それでも僅かに効率が落ちるのでなるべく使わないでプログラムする
方が良いと思うプログラマーが多いということだよ。
2021/08/26(木) 15:24:37.81ID:bKmDdfbf
プログラマーならば、まず思考実験、それで解決しなければコーディング
その上で問題点を尋ねる
それをしない人はプログラマーではないから、このスレの邪魔
その上で問題点を尋ねる
それをしない人はプログラマーではないから、このスレの邪魔
40デフォルトの名無しさん
2021/08/26(木) 15:24:45.61ID:BSY6c8/C41デフォルトの名無しさん
2021/08/26(木) 15:25:39.02ID:BSY6c8/C >>39
こわい。。
こわい。。
2021/08/26(木) 15:25:45.57ID:s9ncfwmd
手作業で書く場合は、1つのオブジェクトを削除する場合、それを参照する
全てのポインタに NULL を入れるのは効率が良い。だから、多くのC/C++
プログラマはかつてそうしてきたし、今でもそうすることも多い。
ところが自動でそれをやるには静的解析は難しいので実行段階でも
余計なメモリーを追加で消費して行うことになる。それが効率が悪い。
そして、NULLが入っているかどうか分からないのでその参照を
使う場合には、いつも最初にNULLが入ってないことを確認してから
作業をする必要があり、その判定に 2 クロックくらいかかる。
この2クロックが忌避される。
全てのポインタに NULL を入れるのは効率が良い。だから、多くのC/C++
プログラマはかつてそうしてきたし、今でもそうすることも多い。
ところが自動でそれをやるには静的解析は難しいので実行段階でも
余計なメモリーを追加で消費して行うことになる。それが効率が悪い。
そして、NULLが入っているかどうか分からないのでその参照を
使う場合には、いつも最初にNULLが入ってないことを確認してから
作業をする必要があり、その判定に 2 クロックくらいかかる。
この2クロックが忌避される。
43デフォルトの名無しさん
2021/08/26(木) 15:26:04.39ID:pXAeL9Oq >>7
言ってる事はかねがね同意ですが、プログラムが共同作業の為にRefCell<Rc<List>>とA氏が定義してあるものに
違う人B氏が何も考えずにRc::clone(&a)で循環を入れてしまう事は十分あり得るでしょう。
状況次第ですが循環参照を考慮してないA氏が悪いのか、Rc::clone(&a)でぶち込んだ人が悪いのかは要件次第ですが
これを簡単と言わずに(あなたは言っていませんが)難しいと表現するのは違和感がありますよ
言ってる事はかねがね同意ですが、プログラムが共同作業の為にRefCell<Rc<List>>とA氏が定義してあるものに
違う人B氏が何も考えずにRc::clone(&a)で循環を入れてしまう事は十分あり得るでしょう。
状況次第ですが循環参照を考慮してないA氏が悪いのか、Rc::clone(&a)でぶち込んだ人が悪いのかは要件次第ですが
これを簡単と言わずに(あなたは言っていませんが)難しいと表現するのは違和感がありますよ
44デフォルトの名無しさん
2021/08/26(木) 15:28:09.24ID:BSY6c8/C2021/08/26(木) 15:28:30.66ID:uyKM6LSq
46デフォルトの名無しさん
2021/08/26(木) 15:29:12.92ID:BSY6c8/C >>45
自力で数えればいいんではないでしょうか?
自力で数えればいいんではないでしょうか?
2021/08/26(木) 15:30:36.47ID:s9ncfwmd
>>40
まあ、そういうこと。
というのは、参照カウンタも、1つのヒープノードに対して必ず1つ必要になるので、
ノード数が多いときには膨大なメモリーの無駄になるから。
それとノード数が多いときに参照カウンタを 0 クリアしたり、1足したり
する作業も馬鹿にならないと考えるプログラマが多い。
なぜかというと、そういう自動化を行わなくても、人が頭で考えて手作業で
NULLを入れても十分に安全にプログラムできるプログラマが多かったからだよ、
少なくとも昔のCプログラマには。
手作業でやってもとくに危険を感じないので、効率を落としてまで自動化する
必要が無いと思われている。
手作業でNULLを入れるのは難しくない。
ところが、コンパイラが自動で効率を落とさずにそれをやるのはめちゃくちゃ難しい。
それは人間の脳がそれだけ優秀だということだよ。
まあ、そういうこと。
というのは、参照カウンタも、1つのヒープノードに対して必ず1つ必要になるので、
ノード数が多いときには膨大なメモリーの無駄になるから。
それとノード数が多いときに参照カウンタを 0 クリアしたり、1足したり
する作業も馬鹿にならないと考えるプログラマが多い。
なぜかというと、そういう自動化を行わなくても、人が頭で考えて手作業で
NULLを入れても十分に安全にプログラムできるプログラマが多かったからだよ、
少なくとも昔のCプログラマには。
手作業でやってもとくに危険を感じないので、効率を落としてまで自動化する
必要が無いと思われている。
手作業でNULLを入れるのは難しくない。
ところが、コンパイラが自動で効率を落とさずにそれをやるのはめちゃくちゃ難しい。
それは人間の脳がそれだけ優秀だということだよ。
2021/08/26(木) 15:31:47.17ID:s9ncfwmd
2021/08/26(木) 15:32:40.17ID:GoG5gW1P
コピーしたポインタを別スレッドに転送とかしてたら、いつNULL代入すべきかすら分からんしなぁ
2021/08/26(木) 15:32:44.57ID:s9ncfwmd
2021/08/26(木) 15:42:17.45ID:Nkfv2brF
52デフォルトの名無しさん
2021/08/26(木) 15:43:01.48ID:BSY6c8/C >>51
僕がです。
僕がです。
2021/08/26(木) 15:46:08.68ID:s9ncfwmd
2021/08/26(木) 15:47:35.53ID:s9ncfwmd
言っておくが現実世界では俺は天才だと言われているから、俺が簡単だと
思うことは、大部分のプログラマには難しいと思うかもしれないがな。
思うことは、大部分のプログラマには難しいと思うかもしれないがな。
2021/08/26(木) 15:48:12.84ID:fifffju2
>>52
データ構造は入出力の変化に伴いどんどん変化していく可能性がありますから人間は覚え追いきれないよね
さらに一つのmalloc毎にそれぞれそこをポイントしている利用者の数も利用者数も異なりますよね
それらのデータをどこでどうやって管理するつもりですか?
データ構造は入出力の変化に伴いどんどん変化していく可能性がありますから人間は覚え追いきれないよね
さらに一つのmalloc毎にそれぞれそこをポイントしている利用者の数も利用者数も異なりますよね
それらのデータをどこでどうやって管理するつもりですか?
56デフォルトの名無しさん
2021/08/26(木) 15:54:12.28ID:BSY6c8/C まず前提が誤りです
変化を追えば覚えられます
思考実験できないんですか?
変化を追えば覚えられます
思考実験できないんですか?
2021/08/26(木) 16:04:38.88ID:xjpSGKrK
>>56
利用者リストを覚えておくためにメモリが必要やね
それもmallocするか
mallocで取ってきたメモリ管理のために更にmallocが必要となってしまったぞ
利用者が増えてきたら利用者リストの領域が足りなくなる
またmallocするか
全てにNULLを入れるためだけに大がかりになってきたな
この方法は本当に大丈夫なのか?
利用者リストを覚えておくためにメモリが必要やね
それもmallocするか
mallocで取ってきたメモリ管理のために更にmallocが必要となってしまったぞ
利用者が増えてきたら利用者リストの領域が足りなくなる
またmallocするか
全てにNULLを入れるためだけに大がかりになってきたな
この方法は本当に大丈夫なのか?
58デフォルトの名無しさん
2021/08/26(木) 16:08:02.62ID:BSY6c8/C >>57
静的に確認すればすむ話です
静的に確認すればすむ話です
2021/08/26(木) 16:17:15.72ID:5iULk00o
データが育っていったら100か所からリンクされるとか普通によくあるわけだが
その100か所にNULLを代入しにいくために100か所の場所をリストで持つのか
しかもmallocした各データ毎にリストを持つのか
全てにNULL代入はあきらめた方がいいんじゃね?
その100か所にNULLを代入しにいくために100か所の場所をリストで持つのか
しかもmallocした各データ毎にリストを持つのか
全てにNULL代入はあきらめた方がいいんじゃね?
2021/08/26(木) 16:20:01.23ID:4xBLfuks
アクセスするとたちまち例外発生するぬるぽにはどんなデータが格納されているのだろうか
2021/08/26(木) 16:23:55.37ID:YoD5H0JF
int* p1 = malloc(sizeof(int));
int* p2 = malloc(sizeof(int));
int* p3;
if (なんかの条件) p3 = p1; else p3 = p2;
free(p1);
p1 = NULL;
// p2はまだまだ使う
こういうときp3はどうするのかっていう
int* p2 = malloc(sizeof(int));
int* p3;
if (なんかの条件) p3 = p1; else p3 = p2;
free(p1);
p1 = NULL;
// p2はまだまだ使う
こういうときp3はどうするのかっていう
2021/08/26(木) 16:28:43.55ID:HI0uJlB9
すべてのヒープを**ptrで管理すればできなくもない気がする
参照するたびに有効かチェックしないといけないから激しく面倒だけど
参照するたびに有効かチェックしないといけないから激しく面倒だけど
63デフォルトの名無しさん
2021/08/26(木) 16:29:37.04ID:BSY6c8/C2021/08/26(木) 16:32:51.02ID:+fzqgCTs
2021/08/26(木) 16:33:25.33ID:W3uKoL9G
何の参考だよ
2021/08/26(木) 16:36:08.26ID:YoD5H0JF
https://twitter.com/cpp_akira/status/1430779310885859330
最近はC++の発表資料を公開すると「Rustでいいじゃん」というコメントがたくさんつくのか…。Rustへの言及とか一文字も書いてないのに。
普及活動だと思うけど、さすがに嫌がらせチックに見える。
↓の資料公開した時の話っぽいんだけど、Rustでいいじゃんって言われてるソースが見つからない・・・
https://speakerdeck.com/faithandbrave/opunhua-gajin-muc-plus-plus-falsexian-zhuang-tozhan-wang
言われててもおかしくないとは思うけど、実際のところどうなんすかねえ
アロケータ回りがまだ弱いから少なくともゲームは10年後もC++のが強そう
https://twitter.com/5chan_nel (5ch newer account)
最近はC++の発表資料を公開すると「Rustでいいじゃん」というコメントがたくさんつくのか…。Rustへの言及とか一文字も書いてないのに。
普及活動だと思うけど、さすがに嫌がらせチックに見える。
↓の資料公開した時の話っぽいんだけど、Rustでいいじゃんって言われてるソースが見つからない・・・
https://speakerdeck.com/faithandbrave/opunhua-gajin-muc-plus-plus-falsexian-zhuang-tozhan-wang
言われててもおかしくないとは思うけど、実際のところどうなんすかねえ
アロケータ回りがまだ弱いから少なくともゲームは10年後もC++のが強そう
https://twitter.com/5chan_nel (5ch newer account)
2021/08/26(木) 16:38:42.43ID:n3k5ztC+
2021/08/26(木) 16:39:16.76ID:6RYxqPIE
おまえらスレチがすぎるぞ
まとめてどっかいってくれ
まとめてどっかいってくれ
2021/08/26(木) 16:43:10.20ID:xwYftXVU
>>66
Rust はメモリ安全性を保証することが論文で示されているので
どうしてもC++でないと出来ないこと(=まだRustが対応してないこと)であることを示さないと
「Rustでいいじゃん」となってしまうのは仕方ないかも
Rust はメモリ安全性を保証することが論文で示されているので
どうしてもC++でないと出来ないこと(=まだRustが対応してないこと)であることを示さないと
「Rustでいいじゃん」となってしまうのは仕方ないかも
2021/08/26(木) 17:32:35.75ID:guyKB2RO
Rustは言語仕様が未確定なのが懸念事項かな
実用上は大して困らないからどうでもいいんだけど
期待してたRust Foundationは何故かディレクター探し始めてるしw
実用上は大して困らないからどうでもいいんだけど
期待してたRust Foundationは何故かディレクター探し始めてるしw
2021/08/26(木) 17:40:08.48ID:ek8X72OL
>>70
2018editionに2019のasync/awaitゼロコストサポートで言語としては完成でしょ?
2018editionに2019のasync/awaitゼロコストサポートで言語としては完成でしょ?
2021/08/26(木) 17:48:35.66ID:TtF6fD9w
73デフォルトの名無しさん
2021/08/26(木) 18:01:26.94ID:BSY6c8/C >>69
どの論文だよ
どの論文だよ
2021/08/26(木) 22:38:09.77ID:57cnJJ44
>>71
まだOpenなRFCいくつあると思ってるんだ
まだOpenなRFCいくつあると思ってるんだ
2021/08/26(木) 23:09:41.27ID:6XyucKpc
そんなこと言い出したら他の言語も未完成
永久にね
永久にね
2021/08/26(木) 23:45:46.81ID:3VQCq3O/
でもSchemeとか言語仕様も形式意味論も定まってるし
2021/08/26(木) 23:50:11.85ID:guyKB2RO
2021/08/26(木) 23:57:00.95ID:yl47Ujhv
確定できないというよりメンテする人がいないんじゃないかな
言語仕様に詳しいけどコード書くよりドキュメント書きたいっていう奇特な人が要求されるわけで
言語仕様に詳しいけどコード書くよりドキュメント書きたいっていう奇特な人が要求されるわけで
2021/08/27(金) 00:00:45.70ID:cm2Md9qJ
ferroceneみたいに具体的な目標があって企業が投資してるなら進むだろうけど
リファレンスの更新とかあまり需要もないじゃない?
リファレンスの更新とかあまり需要もないじゃない?
2021/08/27(金) 00:16:19.30ID:i+fGpSJz
完全な仕様書は間違いなく必要ではあるよな。
2021/08/27(金) 00:25:02.14ID:LvLZjQiD
完全な仕様書www
どんだけ素人なんw
どんだけ素人なんw
2021/08/27(金) 00:25:46.96ID:vEj4Ie0t
第三者が処理系を作れるレベルで言語仕様が固まれば普及が進むと思うんだけどね
Rust Foundationにはそういう方向性を期待してたけど想像以上に何もしなかった
Rust Foundationにはそういう方向性を期待してたけど想像以上に何もしなかった
2021/08/27(金) 00:39:02.98ID:cm2Md9qJ
Foundationはもともと裏方に徹する組織だと言ってたし
その通りに動いているのでは
最近だとgccrsのライセンス絡みの知財チェックとかやってたかと
その通りに動いているのでは
最近だとgccrsのライセンス絡みの知財チェックとかやってたかと
2021/08/27(金) 00:45:32.58ID:foV8RWB5
言語仕様が固まるってのは新機能の追加をやめるということ?
2021/08/27(金) 00:49:06.81ID:21t4GoG3
言語仕様とコンパイラのバージョンが一体化しているようではミッションクリティカルな領域で採用されない
2021/08/27(金) 01:13:55.67ID:vEj4Ie0t
2021/08/27(金) 01:28:41.09ID:i+fGpSJz
>>84
現状では「今そのように動いている処理系」と「処理系の (不十分な) ドキュメント」がある状態で、
それのどこからどこまでが言語仕様として満たすべき要件なのか保証されている動作なのかがわからない。
追加するも何も今の時点でどうなっているのかわからん。
どこかにはあったりもするんだろうけど、開発者向けの議論の中などに分散していて「仕様書」としてまとまってないんだ。
現状では「今そのように動いている処理系」と「処理系の (不十分な) ドキュメント」がある状態で、
それのどこからどこまでが言語仕様として満たすべき要件なのか保証されている動作なのかがわからない。
追加するも何も今の時点でどうなっているのかわからん。
どこかにはあったりもするんだろうけど、開発者向けの議論の中などに分散していて「仕様書」としてまとまってないんだ。
2021/08/27(金) 02:31:48.28ID:RPPiA5lc
安全性は型システムによるところが大きいから、仕様書が無いと使えないというのは無いと思うがね
2021/08/27(金) 02:39:18.77ID:8/O2Ek7n
コンパイラだってバグがない保証なんてないんだから
テストするしかないね
テストするしかないね
2021/08/27(金) 02:39:45.83ID:xRe29h0Q
ISO 26262のコンパイラ認証とか無理そう
2021/08/27(金) 07:59:32.64ID:ebhntqkF
LLVMの中間表現に依存してる時点で、言語仕様をまともに設定するのは無理。
だから他のコンパイラが作られることもない。
だから他のコンパイラが作られることもない。
2021/08/27(金) 08:07:16.05ID:PnoFi7iU
仕様書、仕様書言っている人はOSやライブラリのAPIとかシステムコールとかはどう考えているんだろうね
MSDNだって盲信できるほどの信頼性はないし、OSS系なんてソースコードが仕様書状態だろ
もっと言えば処理系だってオプティマイザの仕様などは文書化されていなく、実際に調査しないと判らない事も多いよな
MSDNだって盲信できるほどの信頼性はないし、OSS系なんてソースコードが仕様書状態だろ
もっと言えば処理系だってオプティマイザの仕様などは文書化されていなく、実際に調査しないと判らない事も多いよな
2021/08/27(金) 08:07:24.55ID:/EVH9JcP
こんな状態じゃc++の置き替えなんて夢のまた夢だな。
2021/08/27(金) 08:43:05.29ID:8HMvxqPN
完全な仕様書wがないのが問題だ思うなら使わなければいいだけ
クッソ無駄なやりとりでスレ消費すんな
クッソ無駄なやりとりでスレ消費すんな
2021/08/27(金) 08:54:32.00ID:ZVb7iGYH
少なくともC++はもっとずっと細かな仕様が書いてある。
例で説明する時でも、変な例で説明せずに数学の教科書の様な粒度の細かい例で
説明されているで、数学の教科書の様な雰囲気を持っている。
Rustの場合、ライフタイムの説明をとってみても、ちゃんとした数学的説明になってない。
例で説明する時でも、変な例で説明せずに数学の教科書の様な粒度の細かい例で
説明されているで、数学の教科書の様な雰囲気を持っている。
Rustの場合、ライフタイムの説明をとってみても、ちゃんとした数学的説明になってない。
2021/08/27(金) 08:57:07.99ID:ZVb7iGYH
時々プログラミングは文系でも出来るという人が居るが、そういう人には、
数学的な説明とは何かがぴんと来ないかもしれないので、良い仕様書も
書けないかもしれない。Rustのbookの著者ももしかしたらそうなのかも。
本人は頑張って書いているつもりでも数学的な論法になってない。
数学的な説明とは何かがぴんと来ないかもしれないので、良い仕様書も
書けないかもしれない。Rustのbookの著者ももしかしたらそうなのかも。
本人は頑張って書いているつもりでも数学的な論法になってない。
2021/08/27(金) 09:04:15.77ID:ZVb7iGYH
高校数学レベルで言えば、ベクトルの和の定義は図で例を使って説明されるが、
3つの矢印で、c = a + b が説明される。
これは最も粒度が細かい説明で、これ以上簡単に説明できない。
ところがRustのライフタイム注釈の説明は、説明に使われている例が不適切で
とても長いが本質が説明し切れてない。
本来は、「ライフタイム注釈とは何か」を数式や擬似命令などを使ってせいぜい2ページ以内で
説明できるはずだ。
ところが実際の説明は、変な例を使って長々と説明されている。
数学的な説明になっていないので応用が効かない。
数学的説明とはほとんどの場合「パターン」だ。パターンになっているから応用が効く。
パターンとして説明されてないと応用が効かない。
3つの矢印で、c = a + b が説明される。
これは最も粒度が細かい説明で、これ以上簡単に説明できない。
ところがRustのライフタイム注釈の説明は、説明に使われている例が不適切で
とても長いが本質が説明し切れてない。
本来は、「ライフタイム注釈とは何か」を数式や擬似命令などを使ってせいぜい2ページ以内で
説明できるはずだ。
ところが実際の説明は、変な例を使って長々と説明されている。
数学的な説明になっていないので応用が効かない。
数学的説明とはほとんどの場合「パターン」だ。パターンになっているから応用が効く。
パターンとして説明されてないと応用が効かない。
2021/08/27(金) 09:06:37.74ID:pCZxoLJn
コンパイラが一つしかない状況は現状メリットでしかない
C++のようなレガシー言語の轍を踏まない賢い選択
C++のようなレガシー言語の轍を踏まない賢い選択
2021/08/27(金) 09:11:46.45ID:ZVb7iGYH
数学的説明にしたいなら、
「仮定」を置く。
「入力」と「出力」を明確にする。
「最も粒度の小さい例を書き、パターン」にする。
集合論や論理学の「かつ」「または」「積集合」「和集合」「背反集合」「区間の積」
などの言葉を使って書く。
ところが、Rustのbookはこのようなことが全く出来てない。
「仮定」を置く。
「入力」と「出力」を明確にする。
「最も粒度の小さい例を書き、パターン」にする。
集合論や論理学の「かつ」「または」「積集合」「和集合」「背反集合」「区間の積」
などの言葉を使って書く。
ところが、Rustのbookはこのようなことが全く出来てない。
100デフォルトの名無しさん
2021/08/27(金) 09:15:12.91ID:ZVb7iGYH >>98
仕様書が数学的(パターン的、自動機械的)に書いてないので、厳密な
仕組みや仕様が分からず、他の人がコンパイラが作りにく。
だから、「Rustは実験してみないと分からない」。
ところが、CやC++やRuby,Java,C#,Pythonなどは実験しなくても分かる
ようになっている。それはなぜかというと、仕様が粒度が細かく説明されて
いるから、パターンになっており「パターンの一部への代入」や「当てはめ」
が出来るので頭の中だけで全てプログラミングできてしまうから。
仕様書が数学的(パターン的、自動機械的)に書いてないので、厳密な
仕組みや仕様が分からず、他の人がコンパイラが作りにく。
だから、「Rustは実験してみないと分からない」。
ところが、CやC++やRuby,Java,C#,Pythonなどは実験しなくても分かる
ようになっている。それはなぜかというと、仕様が粒度が細かく説明されて
いるから、パターンになっており「パターンの一部への代入」や「当てはめ」
が出来るので頭の中だけで全てプログラミングできてしまうから。
101デフォルトの名無しさん
2021/08/27(金) 09:17:17.15ID:X7Hfy4km 今日のNGIDがすぐ分かって助かった
感謝感謝
感謝感謝
102デフォルトの名無しさん
2021/08/27(金) 09:20:43.18ID:ZVb7iGYH ちょっと難解だが高速なスクリプト言語としては使えるとは思う。
でもC++の置き換えは難しいな。
なぜならC++で出来ていたことがRustには移植できないから。
でもC++の置き換えは難しいな。
なぜならC++で出来ていたことがRustには移植できないから。
103デフォルトの名無しさん
2021/08/27(金) 09:47:25.61ID:nKzWHFHq 算数がクラスで一番君がきてますね
104デフォルトの名無しさん
2021/08/27(金) 10:21:55.10ID:EkQRESx5 なんやいつぞやのパターンマッチングの規格についてゴネてた子か
105デフォルトの名無しさん
2021/08/27(金) 11:04:36.95ID:VpJ5g/uH ・Fortran/BASICからCへの移植は容易。単純なパターンが存在する。
アルゴリズムの変更は不要。
・C++からJavaやC#への移植は容易。単純なパターンが存在する。
アルゴリズムの変更は不要。
・C++からRustへの移植は困難。単純なパターンは存在せず。
アルゴリズムを根本的に変える必要がある場合がある。
アルゴリズムの変更は不要。
・C++からJavaやC#への移植は容易。単純なパターンが存在する。
アルゴリズムの変更は不要。
・C++からRustへの移植は困難。単純なパターンは存在せず。
アルゴリズムを根本的に変える必要がある場合がある。
106デフォルトの名無しさん
2021/08/27(金) 11:10:56.79ID:ANmCg7EV Rustアンチスレでやればいいのに
107デフォルトの名無しさん
2021/08/27(金) 16:15:37.78ID:Ogrd1P9P 嫌なら使うなでおわり
現状嫌でも使うしかないくらいまでのシェア獲得してないし
現状嫌でも使うしかないくらいまでのシェア獲得してないし
108デフォルトの名無しさん
2021/08/27(金) 16:28:39.42ID:i+fGpSJz 個人としては使いたいけど組織として導入するには仕様の確実さというのは必要なんだわ。
109デフォルトの名無しさん
2021/08/27(金) 16:36:16.05ID:+7PBhugx C++ドロップアウターがOOPを学び直すには良いんでないの
110デフォルトの名無しさん
2021/08/27(金) 16:44:56.69ID:2IayjhUe 大手IT企業たちの方針
プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設
https://japan.zdnet.com/article/35166267/
Facebookが「Rust Foundation」に参加
https://japan.zdnet.com/article/35170192/
プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設
https://japan.zdnet.com/article/35166267/
Facebookが「Rust Foundation」に参加
https://japan.zdnet.com/article/35170192/
111デフォルトの名無しさん
2021/08/27(金) 16:56:21.47ID:e9EjTnUc112デフォルトの名無しさん
2021/08/27(金) 17:09:08.75ID:dNdDj0y1 >>111
lifetime関連
lifetime関連
113デフォルトの名無しさん
2021/08/27(金) 17:14:05.77ID:CxV5dN8D114デフォルトの名無しさん
2021/08/27(金) 17:44:50.51ID:i+fGpSJz で、それはどこにあるっていうんだ。
これについての仕様はこっちに有ってあれについての仕様はあっちに有って
詳細はブログのここにあって……でもこれは議論のための暫定的なまとめで……
みたいなのじゃ組織の中で話を通せんのよ。
「Rust の仕様はこれです」「これを満たした処理系は (少なくとも今のところは) Rust と呼べます」
というのが仕様書であって、そういうのが欲しいわけよ。
これについての仕様はこっちに有ってあれについての仕様はあっちに有って
詳細はブログのここにあって……でもこれは議論のための暫定的なまとめで……
みたいなのじゃ組織の中で話を通せんのよ。
「Rust の仕様はこれです」「これを満たした処理系は (少なくとも今のところは) Rust と呼べます」
というのが仕様書であって、そういうのが欲しいわけよ。
115デフォルトの名無しさん
2021/08/27(金) 17:53:04.46ID:n5KpIChT その論法は流石に違和感が強い
GAFA級の組織(のどこか)では採択されるのにその組織では通らないというなら、その組織か説得者が外れ値なだけでは?
GAFA級の組織(のどこか)では採択されるのにその組織では通らないというなら、その組織か説得者が外れ値なだけでは?
116デフォルトの名無しさん
2021/08/27(金) 17:58:34.36ID:VUXc1RWG 老害さん 今日も公式読まずに 愚痴たれる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国連大使「日本が中国に武力行使すると脅しをかけたのは初めて」 国連事務総長に書簡★4 [♪♪♪★]
- 【芸能】44歳・池脇千鶴、激変ぶりにネット衝撃 「まるで別人…」「変化が凄い!!」の声 [冬月記者★]
- なぜ立花孝志氏の言葉は信じられたのか…"異例の逮捕"が浮き彫りにした「SNSの危険な病理」 [ぐれ★]
- 【🐼】パンダ、日本で会えなくなる? 中国との関係悪化で不安の声 ★2 [ぐれ★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★15 [BFU★]
- 竹中平蔵氏、万博は大成功だったと持論 批判していた人々にチクリ「反省の弁の一つも聞きたい」 [バイト歴50年★]
- 中国のプロパガンダ、もうめちゃくちゃ「沖縄人は在日米兵にしいたげられているが日本政府は対応しない。もはや日本の領土とはいえない」 [329329848]
- 砂糖しろし・あましっていう芸名
- VIPってたまに本物のガイジみたいなのいるけど、お前らは健常者だよな?
- プロレスラーってロープに振ると走って戻ってくるけど
- 中国から旅行客来なくてざまあwwとかいう論調あるけど
- 俺、明日から旅行だ。親知らずいるだろうな。
