公式
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
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 老害さん 今日も公式読まずに 愚痴たれる
117デフォルトの名無しさん
2021/08/27(金) 18:02:52.05ID:i+fGpSJz >>115
そのレベルの大企業というのは策定側で関与しうるし
投機的な技術的投資にも貪欲だから
「大企業は動きが遅い」「稟議が厳密」という感覚ではない。
グーグルが大規模なサービスを開始からそれほど間を置かずに畳んだことなんて何度もあるだろう。
ぽんっとやって駄目だったらポイッと捨てられるんだよ。
そのレベルの大企業というのは策定側で関与しうるし
投機的な技術的投資にも貪欲だから
「大企業は動きが遅い」「稟議が厳密」という感覚ではない。
グーグルが大規模なサービスを開始からそれほど間を置かずに畳んだことなんて何度もあるだろう。
ぽんっとやって駄目だったらポイッと捨てられるんだよ。
118デフォルトの名無しさん
2021/08/27(金) 18:09:32.26ID:34BhyfmP そういう考え方ならISO標準でもできてから検討すればいいよ
時期尚早で時間の無駄
時期尚早で時間の無駄
119デフォルトの名無しさん
2021/08/27(金) 18:10:07.62ID:EkQRESx5 実際のところC++みたいに委員会とかが仕様がっちり決める言語ってどんくらいあるの?
そもそもC++だって仕様は決まってもコンパイラが微妙に準拠しきれてない気がするんだが
gccとclangは実用上困らんレベルだとは思うが
そもそもC++だって仕様は決まってもコンパイラが微妙に準拠しきれてない気がするんだが
gccとclangは実用上困らんレベルだとは思うが
120デフォルトの名無しさん
2021/08/27(金) 18:16:18.84ID:V38ET8xt ISO標準のある言語で一番新しいのがRubyくらいか
もっと新しいのあったっけ?
やはりリリースから10年以上はかかる感じかね
もっと新しいのあったっけ?
やはりリリースから10年以上はかかる感じかね
121デフォルトの名無しさん
2021/08/27(金) 18:18:18.61ID:i+fGpSJz 今の時点ではアーリーアダプタが使う言語なんだという立場でやってるならそれでもいいんだけど、
個別には割と (どこかには) まとまってるっぽいからもったいねーなという感覚がある。
個別には割と (どこかには) まとまってるっぽいからもったいねーなという感覚がある。
122デフォルトの名無しさん
2021/08/27(金) 18:27:08.06ID:zNEUYlcQ お前が標準化委員会になるんだよ!
123デフォルトの名無しさん
2021/08/27(金) 18:31:21.32ID:6epxU4jC GAFAMだけでなく
日本でもNTTやTOYOTAなどもRustを採用しているわけで
まともな企業ならば支障なくRust採用を決定していってるでしょう
日本でもNTTやTOYOTAなどもRustを採用しているわけで
まともな企業ならば支障なくRust採用を決定していってるでしょう
124デフォルトの名無しさん
2021/08/27(金) 18:52:17.41ID:nKzWHFHq 特定の組織の土着信仰を一般論のように入れてもね
125デフォルトの名無しさん
2021/08/27(金) 18:54:13.62ID:+wfLaYar 権威でものを判断したり
権威を借りて発言したり
頭ワリーわ
正気になれ
権威を借りて発言したり
頭ワリーわ
正気になれ
126デフォルトの名無しさん
2021/08/27(金) 19:30:34.42ID:wbifwX7a127デフォルトの名無しさん
2021/08/27(金) 19:32:40.90ID:+7PBhugx あの松下もわが社の製品を採用しているんですよ〜
情弱「ほほう、じゃうちも採用率するわ!」
情弱「ほほう、じゃうちも採用率するわ!」
128デフォルトの名無しさん
2021/08/27(金) 19:33:38.34ID:ul1V6iOZ メモリ開放の意味が解らない馬鹿に合わせるための言語なんだよな
馬鹿に合わせるとロクなことがない気がするんだけど
馬鹿に合わせるとロクなことがない気がするんだけど
129デフォルトの名無しさん
2021/08/27(金) 19:36:05.44ID:i+fGpSJz わかってても間違えるのが人間なんだよ。
ヒューマンエラーを防止するのに「注意する」とかで対策を済ませちゃうわけ?
ヒューマンエラーを防止するのに「注意する」とかで対策を済ませちゃうわけ?
130デフォルトの名無しさん
2021/08/27(金) 19:43:24.40ID:6epxU4jC >グーグルによればAndroidに存在した深刻なセキュリティー脆弱性の70%近くがメモリー安全に関するバグに起因するという。
>同様にマイクロソフトも、同社製品に存在したセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。
>C/C++を使う限りセキュリティー脆弱性を根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
>同様にマイクロソフトも、同社製品に存在したセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。
>C/C++を使う限りセキュリティー脆弱性を根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
131デフォルトの名無しさん
2021/08/27(金) 19:45:18.24ID:+7PBhugx132デフォルトの名無しさん
2021/08/27(金) 19:48:14.38ID:+wfLaYar C++で苦しんできた連中は
Rustのやろうとしたことは分かるし
例え失敗に終わっても責める気にはならん
どうころんでもしょせん死屍累々
Rustは人類の明日への尊い礎になるだけ
Rustのやろうとしたことは分かるし
例え失敗に終わっても責める気にはならん
どうころんでもしょせん死屍累々
Rustは人類の明日への尊い礎になるだけ
133デフォルトの名無しさん
2021/08/27(金) 19:57:25.52ID:2e6D9xTm134デフォルトの名無しさん
2021/08/27(金) 21:00:14.71ID:lzIWzz0k135デフォルトの名無しさん
2021/08/27(金) 21:03:28.03ID:lzIWzz0k 人々の関心の高さは感じるけどな。twitterとか見てると。
136デフォルトの名無しさん
2021/08/27(金) 21:07:48.98ID:lzIWzz0k でもtwitterでは、Pythonも活況だし、KotlinもRustと似たり寄ったりの数、検索される。
なぜかQtやRailsは検索されにくい。Djangoは沢山検索される。
cplusplusは僅かに検索される。C++やC#は直接的にはそもそもtwitterでは検索できない。
Rustの話題性がPythonやKotlinやDjangoと比べて取り立てて多いということではないようだ。
なぜかQtやRailsは検索されにくい。Djangoは沢山検索される。
cplusplusは僅かに検索される。C++やC#は直接的にはそもそもtwitterでは検索できない。
Rustの話題性がPythonやKotlinやDjangoと比べて取り立てて多いということではないようだ。
137デフォルトの名無しさん
2021/08/27(金) 21:44:01.80ID:pUsRfODL The Bookは読まないくせにどうでもいいTwitter検索ばっかりしやがって
あーあのTwitterで独り言つぶやき続けてるひとだっけ?
忘れてた
あーあのTwitterで独り言つぶやき続けてるひとだっけ?
忘れてた
138デフォルトの名無しさん
2021/08/27(金) 21:51:00.96ID:6al70LN5 とにかく仕様が必要ならC++使えばよいのでは。主要メンバーがC++標準理解しているようなすごい人ばかりなんだろう
139デフォルトの名無しさん
2021/08/27(金) 21:58:56.53ID:LFxFkvSL140デフォルトの名無しさん
2021/08/27(金) 22:04:01.75ID:cMIVTei2 実際は、Rails : Laravel = 8:2。
Django は、0
どこの学校・サロンもほぼ、Ruby on Rails
Django は、0
どこの学校・サロンもほぼ、Ruby on Rails
141デフォルトの名無しさん
2021/08/27(金) 23:00:14.26ID:n5qLAlq9 確実にinline展開する方法ってある?
手動で書く?
マクロだとどうにかなる?
手動で書く?
マクロだとどうにかなる?
142デフォルトの名無しさん
2021/08/27(金) 23:01:33.75ID:81/NfoJ7143デフォルトの名無しさん
2021/08/27(金) 23:13:16.52ID:EkQRESx5 #[inline(always)]でも100%ではないんだっけ?
144デフォルトの名無しさん
2021/08/27(金) 23:22:31.27ID:i+fGpSJz >>138
把握してないから必要なときにそれを調べればいいというようなまとまったものが必要なんだよ。
把握してないから必要なときにそれを調べればいいというようなまとまったものが必要なんだよ。
145デフォルトの名無しさん
2021/08/27(金) 23:40:58.77ID:Q0/jYufH Rust以外で高信頼性指向だとAdaとかMISRA Cとか?
146デフォルトの名無しさん
2021/08/27(金) 23:45:38.03ID:8/O2Ek7n >>143
実装はわからんけど、スペック的にはalwaysも飽くまでヒントらしい
実装はわからんけど、スペック的にはalwaysも飽くまでヒントらしい
147デフォルトの名無しさん
2021/08/27(金) 23:52:40.05ID:8/O2Ek7n148デフォルトの名無しさん
2021/08/28(土) 00:02:42.33ID:sJf3n258 ファッション感覚のバカしかアピールしてない言語だわ。
c++理解してない奴がライフタイムをまともに理解できるとも思わん。
それもわからんバカがcをバインディングなんかしたら事故しか起きんわ。
安全性もクソもない。
c++理解してない奴がライフタイムをまともに理解できるとも思わん。
それもわからんバカがcをバインディングなんかしたら事故しか起きんわ。
安全性もクソもない。
149デフォルトの名無しさん
2021/08/28(土) 00:03:44.74ID:7QeSIxjF 組み込み向けRustって1冊本が出たみたいだけど
実際のとこ、見込みありそうなの?
ただのホビー?
実際のとこ、見込みありそうなの?
ただのホビー?
150デフォルトの名無しさん
2021/08/28(土) 00:05:05.86ID:V8MBAFoh >>148
C++ はわかっててもミスるんだってば。
C++ はわかっててもミスるんだってば。
151デフォルトの名無しさん
2021/08/28(土) 01:13:09.37ID:d8vtmqNS C/C++知らないと〜と言う人には型理論知ってる?って聞きたくなる
コンパイルが通れば大体ちゃんと動くようになってるって感覚はhaskellとかOCaml寄りだと思う
コンパイルが通れば大体ちゃんと動くようになってるって感覚はhaskellとかOCaml寄りだと思う
152デフォルトの名無しさん
2021/08/28(土) 01:30:02.36ID:V8MBAFoh Haskell の型システムは好きなんだけど
さすがに副作用 (Haskell 的にはアクションだが……) の扱いがしんどすぎるし
元から C++ には慣れてるので C++ (というか C) 風な文法や意味論と
組み合わせた言語があったらいいなぁと思ってたので
Rust の台頭にはばんじゃーい ∩( ・ω・)∩
さすがに副作用 (Haskell 的にはアクションだが……) の扱いがしんどすぎるし
元から C++ には慣れてるので C++ (というか C) 風な文法や意味論と
組み合わせた言語があったらいいなぁと思ってたので
Rust の台頭にはばんじゃーい ∩( ・ω・)∩
153デフォルトの名無しさん
2021/08/28(土) 01:31:18.92ID:RscIlgzn おまえらスルー力低すぎやろw
154デフォルトの名無しさん
2021/08/28(土) 07:36:29.05ID:sJf3n258155デフォルトの名無しさん
2021/08/28(土) 08:21:08.61ID:t8+wI51G ガファムがファッションでプログラミングしてるとは知らなかった
156デフォルトの名無しさん
2021/08/28(土) 08:46:20.33ID:YWpKrN9v twitterでRustは話題性があるように見えるが、ためしにLISPやSchemeや
Clojure(言語)を検索してみてもRustと似たり寄ったりの書き込みがあった。
Haskelが次代を担う言語だ、的な書き込みすらある。
Clojure(言語)を検索してみてもRustと似たり寄ったりの書き込みがあった。
Haskelが次代を担う言語だ、的な書き込みすらある。
157デフォルトの名無しさん
2021/08/28(土) 09:10:33.46ID:sJf3n258 今のgoogleじゃまともなc++プログラマもだいぶ減ってるわな。。
kumagiとかイキってるだけでまともに理解してねーじゃん。
kumagiとかイキってるだけでまともに理解してねーじゃん。
158デフォルトの名無しさん
2021/08/28(土) 10:14:03.36ID:M1lC0AeK159デフォルトの名無しさん
2021/08/28(土) 11:32:23.88ID:70jgR/1l CG無し
160デフォルトの名無しさん
2021/08/28(土) 11:39:53.86ID:mx2u+dFv 特撮オンリーでいくわけですねわかります
161デフォルトの名無しさん
2021/08/28(土) 11:48:49.70ID:H94428G1 >>145
MISRAに従ってコーディングするの辛いぞ。
MISRAに従ってコーディングするの辛いぞ。
162デフォルトの名無しさん
2021/08/28(土) 12:14:36.47ID:UcVwcAtV >>160
特撮にはCG有るぞ
特撮にはCG有るぞ
163デフォルトの名無しさん
2021/08/28(土) 12:24:36.28ID:WeXzUgff 次のようなloop文のプログラム(可動)を
while文やfor文に書き換えてわかりやすくしたいのですが
上手く値をbreakできないので助けてください
fn main() {
let a = [3, 5, 1, 6, 9, 4];
print_first_even_else_zero(&a);
}
fn print_first_even_else_zero(a: &[i32]) {
let mut i = a.iter();
let even = loop {
if let Some(&n) = i.next() {
if n % 2 == 0 {
break n;
}
} else {
break 0; // not found
}
};
println!("{}", even);
}
例えばwhile文なら let even = while let Some(&n) = i.next() { となりそうで
さらに可能ならfor文で let even = for &n in a { となるかと思うのですが
while文やfor文に書き換えてわかりやすくしたいのですが
上手く値をbreakできないので助けてください
fn main() {
let a = [3, 5, 1, 6, 9, 4];
print_first_even_else_zero(&a);
}
fn print_first_even_else_zero(a: &[i32]) {
let mut i = a.iter();
let even = loop {
if let Some(&n) = i.next() {
if n % 2 == 0 {
break n;
}
} else {
break 0; // not found
}
};
println!("{}", even);
}
例えばwhile文なら let even = while let Some(&n) = i.next() { となりそうで
さらに可能ならfor文で let even = for &n in a { となるかと思うのですが
164デフォルトの名無しさん
2021/08/28(土) 12:44:34.41ID:t8+wI51G let even = a.iter().find(|n| *n % 2 == 0).unwrap_or(&0);
165デフォルトの名無しさん
2021/08/28(土) 13:03:12.27ID:WeXzUgff >>164
当然それはわかりますが、for式やwhile式ではどうなるのか、という質問です
当然それはわかりますが、for式やwhile式ではどうなるのか、という質問です
166デフォルトの名無しさん
2021/08/28(土) 13:07:44.67ID:lHkfX/Au 前スレより
625 デフォルトの名無しさん 2021/08/16(月) 09:44:36.63 ID:MZWGbmHz
loop式はbreakで指定した値を返せるのに
なぜwhile式やfor式は値を返せないの?
Option型にしてbreakで値を指定した時だけSome(値)としてそれ以外はNoneとすれば便利なのに
630 デフォルトの名無しさん sage 2021/08/16(月) 14:32:54.40 ID:ebJKRLr3
手間かけて機能拡張するほどのメリットがないってことだろうね
https://github.com/rust-lang/rfcs/issues/1767#issuecomment-292678002
625 デフォルトの名無しさん 2021/08/16(月) 09:44:36.63 ID:MZWGbmHz
loop式はbreakで指定した値を返せるのに
なぜwhile式やfor式は値を返せないの?
Option型にしてbreakで値を指定した時だけSome(値)としてそれ以外はNoneとすれば便利なのに
630 デフォルトの名無しさん sage 2021/08/16(月) 14:32:54.40 ID:ebJKRLr3
手間かけて機能拡張するほどのメリットがないってことだろうね
https://github.com/rust-lang/rfcs/issues/1767#issuecomment-292678002
167デフォルトの名無しさん
2021/08/28(土) 13:08:21.57ID:t8+wI51G そうでしたかすみません
forとwhileは値を返さないのでご想像のようにはなりません
forとwhileは値を返さないのでご想像のようにはなりません
168デフォルトの名無しさん
2021/08/28(土) 14:07:01.17ID:WeXzUgff >>166
なるほど
そこでの議論を読むと一番の肝が、
「for式が()を返さないと、最後がfor式で終わる関数の返り値で互換性が無くなる」
というところにあるようですが
「break;」が()を返すことにすれば特に問題ないように見えます
実際にloop式で値なしのbreakだと()を返しています
つまり
・「for/while/loop式が返す型」は「break式の型」とする
・「値指定のない『break;』の型」は()とする
・「break式がない場合の型」も()とする
ここまでは現状と同じになりますね
問題はfor/while式はbreakせずともループを抜けるので、値を返すには、
・「『break 値;』があるfor/while式」は「else節を取ってbreak式と同じ型を返す」
という単純ルールだけで済むように見えます
何か見落としがあるでしょうか?
なるほど
そこでの議論を読むと一番の肝が、
「for式が()を返さないと、最後がfor式で終わる関数の返り値で互換性が無くなる」
というところにあるようですが
「break;」が()を返すことにすれば特に問題ないように見えます
実際にloop式で値なしのbreakだと()を返しています
つまり
・「for/while/loop式が返す型」は「break式の型」とする
・「値指定のない『break;』の型」は()とする
・「break式がない場合の型」も()とする
ここまでは現状と同じになりますね
問題はfor/while式はbreakせずともループを抜けるので、値を返すには、
・「『break 値;』があるfor/while式」は「else節を取ってbreak式と同じ型を返す」
という単純ルールだけで済むように見えます
何か見落としがあるでしょうか?
169デフォルトの名無しさん
2021/08/28(土) 14:41:22.43ID:AMsYRDZ6170デフォルトの名無しさん
2021/08/28(土) 15:14:25.46ID:WeXzUgff >>169
なるほどありがとうございます
ところで現状のRustで>>163の例のloop式をfor式で行おうとすると
即時関数を使ってbreakをreturnに置き換えることで
let even = (|| {
for &n in a {
if n % 2 == 0 {
return n;
}
}
0
})();
と実現できることを思いつきましたが
この方法は表記コストはともかく実行コストもかかってしまいますか?
ちなみにこの「最初の偶数を見つけるコード」はあくまでも例として単純化したものを出しているだけで
実際には様々な例でこのパターン(=forやwhileで値を返せると便利)が出てくるので簡略な例題として話をしています
なるほどありがとうございます
ところで現状のRustで>>163の例のloop式をfor式で行おうとすると
即時関数を使ってbreakをreturnに置き換えることで
let even = (|| {
for &n in a {
if n % 2 == 0 {
return n;
}
}
0
})();
と実現できることを思いつきましたが
この方法は表記コストはともかく実行コストもかかってしまいますか?
ちなみにこの「最初の偶数を見つけるコード」はあくまでも例として単純化したものを出しているだけで
実際には様々な例でこのパターン(=forやwhileで値を返せると便利)が出てくるので簡略な例題として話をしています
171デフォルトの名無しさん
2021/08/28(土) 15:30:38.48ID:TLYe8gOd >>168
イテレータのコードのほうが遥かにわかりやすい上に簡潔なので
新しく文法を拡張する価値がないと開発陣は考えてる点を見落としてる。る?
特にPythonの失敗例を鑑みれば機能追加される可能性は限りなくゼロ
イテレータのコードのほうが遥かにわかりやすい上に簡潔なので
新しく文法を拡張する価値がないと開発陣は考えてる点を見落としてる。る?
特にPythonの失敗例を鑑みれば機能追加される可能性は限りなくゼロ
172デフォルトの名無しさん
2021/08/28(土) 15:43:20.61ID:M1lC0AeK173デフォルトの名無しさん
2021/08/28(土) 16:01:24.35ID:Zz3t2OiP Rustに限った話じゃないけど新しめの言語だとイテレータで記述可能な
ループは、出来るだけイテレータで記述するのが主流じゃね
forだのwhileはループ条件の誤りから簡単にバグが生まれるし
使わないで済むならそれに越したことはない
CやCの派生系言語がメインの人には理解しがたいかもしれないが
ループは、出来るだけイテレータで記述するのが主流じゃね
forだのwhileはループ条件の誤りから簡単にバグが生まれるし
使わないで済むならそれに越したことはない
CやCの派生系言語がメインの人には理解しがたいかもしれないが
174デフォルトの名無しさん
2021/08/28(土) 16:07:59.88ID:V8MBAFoh C++ だとテンプレートの組み合わせで回すのも一般的だけど
Go だと凝ったことするよりなんでも愚直にループを回したほうがいいというのは
基本的なスタンスになってるよね。
Go だと凝ったことするよりなんでも愚直にループを回したほうがいいというのは
基本的なスタンスになってるよね。
175デフォルトの名無しさん
2021/08/28(土) 16:18:39.14ID:TLYe8gOd >>172
説得力のある実例を出せば今みたいにRFCが即closeされることはないんじゃない?
状況によってはイテレータを拡張したほうがいいという判断も有り得るし
今のforやwhileループみたいにmutで定義した変数を更新するのでも十分かもしれない
説得力のある実例を出せば今みたいにRFCが即closeされることはないんじゃない?
状況によってはイテレータを拡張したほうがいいという判断も有り得るし
今のforやwhileループみたいにmutで定義した変数を更新するのでも十分かもしれない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【子ども・子育て支援金】来年4月から徴収、月収50万円なら月600円程度…健保連試算 [蚤の市★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」★4 [ぐれ★]
- 「加熱式たばこ」の受動喫煙、「紙巻き」同様の対策強化を検討へ…厚労省の専門委が議論スタート [蚤の市★]
- 【札幌】「アニメのキャラのまねをするためだった」上半身はダウンジャケット・下半身はスッポンポン…43歳無職の男を逮捕 [nita★]
- 熊恐れ外出控え、飲食店苦慮 秋田、盛岡で売り上げ半減 「コロナ禍並みの状況」 [蚤の市★]
- 【芸能】篠田麻里子「水戸黄門」のオフショット公開!「くの一姿が可愛い」「うっひゃー」「スケさんカクさんが羨ましい!」 [湛然★]
- 【動画】メンヘラ女子、自殺 [856698234]
- 10年振りにマックナゲット食べてるんやが
- 竹中平蔵氏、万博を批判していた人たちにチクリ「反省の弁聞きたい」 [686538148]
- 「加熱式たばこ」、「紙巻き」同様の対策強化を検討へ…厚労省の専門委が議論スタート [668970678]
- 【速報】高市、今度はロシアに喧嘩を売る [329271814]
- 【速報】高市早苗、G20サミット”社長出勤” [614650719]
