1 ななしのよっしん
2017/11/29(水) 20:38:22 ID: iz38qy13FU
「もしC++11を一から設計したら」という印なんだがどうなんだろう。
👍
高評価
0
👎
低評価
0
2 ななしのよっしん
2018/01/03(水) 10:20:12 ID: IxykD1yeXk
速度が必要なことやりたいんでちょっと調べたけど
配列いちいちチェックが入るという事実に驚いた
チェックしないアクセス法と[]演算子オーバーロードはあるみたいだから
ごにょごにょすればいいのかもしれんが
本当にC++と同等まで最適化されるのだろうか
👍
高評価
0
👎
低評価
0
3 ななしのよっしん
2018/01/07(日) 02:39:30 ID: XjG3zx77pA
>>2
ソースコード上の見かけが同じかどうかではなく、
機械語レベルでやってる事が同じなら同等になるというだけのことですね
結局LLVM optに突っ込んでるだけなので……

チェックに関しては自明なものは最適化で消えますし
実装前から心配する部分ではない気がします
自分は計測しながらパフォーマンスに寄与する箇所だけget_uncheckedに置き換える感じでしたね
デフォルトで安全側に倒してある言語なので、まあその辺の調整は必要です
👍
高評価
0
👎
低評価
0
4 ななしのよっしん
2018/04/28(土) 11:44:10 ID: t82q20nfkI
最近名前を聞くようになったので、ドキュメントをちょっとだけ読んだけど、所有権のところでスタックとヒープの話に突っ込んでいったのでそっ閉じした。
所有権が書き込む権利の独占であり、読む権利はにもあるという仕様からして、おそらく並行処理のメモリの書き込みロックの問題を言語仕様に取り込んだのだと思う。
確かに、並行処理のミスコンパイル段階で摘してくれるのは魅力的だけれど、並行処理を的にしない限りは、スタックとかヒープとか考えながらプログラミングしたくない。
そっ閉じした。
👍
高評価
0
👎
低評価
0
5 ななしのよっしん
2018/07/06(金) 22:11:28 ID: VeUtcE+HqT
安全性に絶対的価値があって、高速性を両立させることが的な場合最も有効な選択肢だよね
👍
高評価
2
👎
低評価
0
6 ななしのよっしん
2019/03/12(火) 03:45:17 ID: QK6vfwKRxM
みんな大好きオライリー本の内容がCやPythonの低レベル階層の知識前提で書かれてて全に初心者お断り感がスゴイ。それでもamazonレビュー高評価(.comの方)なのは相応の人だけが読んでるってことか...
👍
高評価
1
👎
低評価
0
7 ななしのよっしん
2019/06/28(金) 01:49:46 ID: zuwjAPIhCh
オライリー本は程度の差こそあれ基本的に初心者にはちとキツイ内容が多いからなぁ
というかいつの間にかトレイトオブジェクトが&traitからdyn traitになったりimplトレイトが追加されたり初心者へのハードルあげまくるねぇ!
👍
高評価
1
👎
低評価
0
8 ななしのよっしん
2019/11/25(月) 05:17:38 ID: dT5t22ACJF
なんか名前カッコいいからいつかやって見たいとは思っている
👍
高評価
1
👎
低評価
0
9 ななしのよっしん
2020/02/02(日) 00:11:39 ID: vQA707rVDi
Option<T>とResult<T, E>の扱いを丁寧に練習したら、ようやく一歩前進できた気がする。
わかってしまえば単純で、エラーになりうる箇所は手抜きせず場合分けして全パターンの処理書いとけって思想なのね。
👍
高評価
1
👎
低評価
0
10 ななしのよっしん
2020/09/26(土) 09:57:19 ID: A9tvoRUKRh
新参言語としては有名だと思ってたけど身の回りだと結構知らない人多い
知ってるけど使えない、じゃなくて名前も聞いたことないって人多いんだよね
👍
高評価
1
👎
低評価
0
11 ななしのよっしん
2020/09/30(水) 00:36:43 ID: qdmHtSlDEK
普通webアプリケーション作りたい!みたいなのには向かない言語だからね
メモリで高性アプリメモリ安全に作りたいみたいなどちらかというとニッチ向け言語
👍
高評価
0
👎
低評価
0
12 ななしのよっしん
2020/09/30(水) 00:41:56 ID: qdmHtSlDEK
またはミドルウェア向けかな
そういえばlinux開発Rustをとりれたいみたいな話があった
linusもc++の時ほどRustに拒否反応はないっぽい
👍
高評価
0
👎
低評価
0
13 ななしのよっしん
2020/11/07(土) 01:47:51 ID: iz38qy13FU
C++は熟練しても正しいコードを書くことが異常に難しい上に、(だいたいテンプレートのせいで)正しいコードを書く&理解するために言語自体をハックする時間がやたら長いからlinusが嫌うのはよく分かる。
Rustは難しいことは難しいが、それは対とする概念のややこしさに起因するもので言語自体は割と素直だよね。GNU義である「取り敢えずCにしとけ」をベターな形でやれるのかなと。
👍
高評価
2
👎
低評価
0
14 ななしのよっしん
2020/11/09(月) 18:24:01 ID: qdmHtSlDEK
難しいところに所有権と借用と参照周りだからね
ユーザーが明確に定しない限り余計な事をなるべくしないって感じは低レイヤ書く上で良い
👍
高評価
0
👎
低評価
0
15 ななしのよっしん
2021/02/15(月) 08:49:32 ID: N+GhogTFjO
生まれてくる時代を40年間違えた言語
1980年代Rustあったら今頃Cは過去遺産みたいな扱いになってそう
👍
高評価
0
👎
低評価
0
16 ななしのよっしん
2021/02/15(月) 09:03:06 ID: qdmHtSlDEK
Rust1980年代以降の関数型プログラミング言語のエッセンスを取り込んでいるのでまぁ多少(の登場の遅さ)はね?
👍
高評価
0
👎
低評価
0
17 ななしのよっしん
2021/02/15(月) 09:09:38 ID: 1Ec0tbdfGE
40年前に生まれてたらCと大して変わらずに見向きもされずに終わってそう
今急速にC++シェアを奪ってるから生まれる時代は正しかった
👍
高評価
0
👎
低評価
0
18 ななしのよっしん
2021/02/15(月) 09:41:14 ID: yQJ0PRB6m7
Adaというものがありまして、ってAda登場が約40年前なのか
👍
高評価
0
👎
低評価
0
19 ななしのよっしん
2021/02/15(月) 19:35:50 ID: iz38qy13FU
時代というか、明らかRust近代C++関数の土壌があって初めてできた言語だよ。
あとボーランドのTurboシリーズ速くてサイコー!みたいな時代にRust仕様がマトモに動かせたとは思えない。だってrustcって8MBぐらいあるんだぜw
今はコンパイル速度はそこまで問題じゃないし、LLVMがあるからバックエンドは考えなくていいし、言語の素性が素直に評価しやすくなってるんだけども。
👍
高評価
0
👎
低評価
0
20 ななしのよっしん
2021/03/03(水) 21:29:16 ID: DjO3C52mgc
👍
高評価
0
👎
低評価
0
21 ななしのよっしん
2021/03/04(木) 16:42:48 ID: DjO3C52mgc
Rustで書かれたKubernetesのためのWASM実行環境Krustletとは
https://thinkit.co.jp/article/17560exit
DenoNode.js依存しなくなった
https://qiita.com/kt3k/items/74cb8fef07f9a47e53f7exit
[忙しい人向け] 100行から始めるWebGPU(WGSL対応版)
https://qiita.com/cx20/items/1f2dcfe0e7ac60fc8ce9exit
>WGSL は WebGPU Shading Language の略で、その名の通り WebGPU 用のシェーダです。
>GLSL では C言語ライクな構文でしたが WGSL では Rust に似た構文が採用されています。

Rust包囲網が逼ってきている(勉強的な意味で)
Linuxカーネルへの導入が始動したら本気出す
👍
高評価
0
👎
低評価
0
22 ななしのよっしん
2021/03/14(日) 03:53:05 ID: ySWtwLfrZ8
理論面は80年代の時点でけっこうってるけど(MLやProlog70年代だし)
ちょうどその頃から始まったオブジェクト指向盛の功罪への反動から生まれた言語だから、登場するならこの10年しかなかったんじゃないかな
👍
高評価
0
👎
低評価
0
23 ななしのよっしん
2021/03/14(日) 04:34:14 ID: qdmHtSlDEK
cpuの高速化の進化が鈍り言語の速度較的重要になった
やっぱって大事だね
GC限界
C/C++メモリ安全性、未定義動作辛い

あたりの事情だから昔だと出ないんだよね
初期は軽量スレッド用にruntimeある想定だったらしいけどruntimeありだったらここまで流行らなかっただろうなー
👍
高評価
0
👎
低評価
0
24 ななしのよっしん
2021/03/15(月) 20:11:49 ID: iz38qy13FU
Rustの筋の良さって「命ベース関数パワーを持つ」ってとこだと思うから、関数理論だけじゃダメなんよ。
関数の何が嬉しいかというとオブジェクトに状態がないことだよね。9割まではそれで幸せなんだけど、
残りの1割に副作用とかI/Oとかの現実では重要な問題が含まれてるという弱点がある。

で、Rustがなぜそのギャップを埋められたかというと、moveの発見によるのではないかと思う。つまりオブジェクトが全部ユニークで所有権を言語レベルで管理できることと、オブジェクトに状態がないことはほとんど一緒なんだと。
moveはスマートポインタの闇の底から出てきたような概念で、これなくしてRustが成立するとは思えないので、やっぱC++11以降の言語ってことになるはず。
👍
高評価
0
👎
低評価
0
25 ななしのよっしん
2021/03/15(月) 23:50:11 ID: qdmHtSlDEK
>残りの1割に副作用とかI/Oとかの現実では重要な問題が含まれてるという弱点がある。

どの非純関数型プログラミング言語はI/Oなどの副作用普通に行うのだから弱点と言われるとハテナ
関数型プログラミング言語は副作用と純関数が強制的に分離されているから合成性とテスタブルの面で手続きよりより扱いやすくなっているのだし

>つまりオブジェクトが全部ユニークで所有権を言語レベルで管理できることと、オブジェクトに状態がないことはほとんど一緒なんだと。

よく分からん
👍
高評価
1
👎
低評価
0
26 ななしのよっしん
2021/04/25(日) 15:15:36 ID: iz38qy13FU
>どの非純関数型プログラミング言語はI/Oなどの副作用普通に行うのだから弱点と言われるとハテナ
それは関数理論的な部分に非純妥協を持ち込んで解決するという話であって、関数それ自体で解決しているわけではない。Haskellとかは得るものは確かにあるが、実用として書きやすいかといわれると。

>>つまりオブジェクトが全部ユニークで所有権を言語レベルで管理できることと、オブジェクトに状態がないことはほとんど一緒なんだと。
>よく分からん
手続きで具体的に何が問題なのかというと、オブジェクトの状態を変更できるやつが複数いるからあるときは正しくあるときは正しくない競合コードを書きがちという点。Rustは記述方式としては手続き的であることを捨てていないが、オーナーシップを強制しているためにそのような競合問題は起こらない。
👍
高評価
0
👎
低評価
0
27 ななしのよっしん
2021/04/25(日) 18:56:18 ID: qdmHtSlDEK
>>26
>それは関数理論的な部分に非純妥協を持ち込んで解決するという話であって
せやね
>Haskellとかは得るものは確かにあるが、実用として書きやすいかといわれると。
そうかな 書きにくいと思うのは普段意識していない事を明示的に書かせるからで(OptionMaybeと同じ)読みやすさ、テスタブル、保守性などを考えるとモナドベース副作用の扱いは悪くないと思うが
複数の副作用Monadが重なった時の問題は確かにあるがそれは別にRustも解決しているわけではないし(モナトラやらeffやら)

所有権と借用は未定義動作とリソース安全性、スレッド安全性に対して有用だがI/Oに対しては特に解決策を提供しているわけではないと思う
(例えばRustはunsafe以外ではnull安全だけどそれはRustオーナーシップのおかげというよりRustOptionを持っているからだし)
👍
高評価
0
👎
低評価
0
28 ななしのよっしん
2021/07/29(木) 04:47:52 ID: l8pP713kXU
Rustのクレートって駄に抽化されててパズルにうんざりすることが多いな
ゼロコスト化なんて実際には存在しないのに
👍
高評価
1
👎
低評価
2
29 ななしのよっしん
2021/07/29(木) 05:15:33 ID: qdmHtSlDEK
ゼロコスト化はランタイムコストが(理想的には)ゼロであって
(抽化によるプログラマが払うコストは)ありますねぇ!
👍
高評価
5
👎
低評価
0
30 ななしのよっしん
2023/04/18(火) 14:30:48 ID: +YDOk8C5P2
最近rustの財団がトレードマーク周りで某魔剤みたいな事やり始めてて
👍
高評価
0
👎
低評価
0