スレタイ以外の言語もok
前スレ
次世代言語21 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1587276362/
探検
次世代言語22 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
2021/08/22(日) 08:59:03.31ID:QorwbXcj
432デフォルトの名無しさん
2021/11/04(木) 18:13:51.03ID:DB49gC4z >>431
defer文でcloseできます。
nim-lang.org/docs/manual.html#exception-handling-defer-statement
コードを書けばデストラクタからcloseできるようになるけどNimにデストラクタができたのが最近なんで
標準ライブラリのFileはdefer文使うか自分でcloseを呼ぶ必要があります。
defer文でcloseできます。
nim-lang.org/docs/manual.html#exception-handling-defer-statement
コードを書けばデストラクタからcloseできるようになるけどNimにデストラクタができたのが最近なんで
標準ライブラリのFileはdefer文使うか自分でcloseを呼ぶ必要があります。
433デフォルトの名無しさん
2021/11/04(木) 18:30:25.81ID:MjRPJM3Z Rustはファイルディスクリプタ類を関数を超えて持ち回ったり複雑化しても使い終わると即座に確実にクローズが自動的にされるのが凄いよね
434デフォルトの名無しさん
2021/11/04(木) 18:37:46.92ID:7RmUj5cL それは標準ライブラリがDropトレイとで成り立ってるだけの話で、openとcloseが完全対になるような
リソースならそれで良いがBufWriterの場合とかflushしなければならないし、何回もopen呼んでも良い
ようなリソース管理は、結局は自分で実装しないとならない
リソースならそれで良いがBufWriterの場合とかflushしなければならないし、何回もopen呼んでも良い
ようなリソース管理は、結局は自分で実装しないとならない
435デフォルトの名無しさん
2021/11/04(木) 19:00:18.43ID:UnTZr4yd436デフォルトの名無しさん
2021/11/04(木) 19:33:56.36ID:lAAyXHqu その分とっつきにくいけどな
437デフォルトの名無しさん
2021/11/04(木) 19:53:06.80ID:UnTZr4yd >>436
え?他の言語よりはわかりやすくてとっつきやすい
え?他の言語よりはわかりやすくてとっつきやすい
438デフォルトの名無しさん
2021/11/04(木) 20:10:30.05ID:lAAyXHqu 「rust 難しい」とかで検索すれば出てくるけど、残念ながら世の人々はそうは思わんのだよ
比較的進歩的な人でもそういう意見をよく聞くし、所有権は理解しないわけにいかない基礎だから端折れない
逆にgoではほとんどそういうことがない
比較的進歩的な人でもそういう意見をよく聞くし、所有権は理解しないわけにいかない基礎だから端折れない
逆にgoではほとんどそういうことがない
439デフォルトの名無しさん
2021/11/04(木) 20:22:55.80ID:MjRPJM3Z Goはガベージコレクション言語だから比較の土俵が違うような
さらにGoはプログラミング言語として様々な機能を失いすぎてプログラミングしにくいのが辛いですね
さらにGoはプログラミング言語として様々な機能を失いすぎてプログラミングしにくいのが辛いですね
440デフォルトの名無しさん
2021/11/04(木) 20:26:36.52ID:lAAyXHqu 比較的守備範囲の近い、とっつきやすい言語の例w
441デフォルトの名無しさん
2021/11/04(木) 20:33:45.40ID:iRkMc3Gk 失い過ぎたw
意図して実装してないだけだがw
意図して実装してないだけだがw
442デフォルトの名無しさん
2021/11/04(木) 20:42:10.69ID:UnTZr4yd >>440
Goは守備範囲が狭すぎて違う
Rustの元々の守備範囲はC/C++が使われている領域
その領域に加えてGC無くメモリ安全性の保証によりJavaなどの置き換えにも使われつつある
さらに加えてイテレータ等の現代的なプログラミングスタイルがメインとなってコーディングしやすいためスクリプト言語を含めた幅広い方面からの移行/兼用が起きている
いずれもGoは満たせない要件
Goは守備範囲が狭すぎて違う
Rustの元々の守備範囲はC/C++が使われている領域
その領域に加えてGC無くメモリ安全性の保証によりJavaなどの置き換えにも使われつつある
さらに加えてイテレータ等の現代的なプログラミングスタイルがメインとなってコーディングしやすいためスクリプト言語を含めた幅広い方面からの移行/兼用が起きている
いずれもGoは満たせない要件
443デフォルトの名無しさん
2021/11/04(木) 20:55:34.08ID:wrxqAvPZ だからこれからのコーディングの奴隷はRustで決まりってことなんだろ
444デフォルトの名無しさん
2021/11/04(木) 21:00:15.23ID:lAAyXHqu goとrustならrustの方が守備範囲狭いよw
ひとえに難しいからw
OS周りならC/C++でいいし
現状ではweb周りのごくごく一部の超高速領域を除きrustには置き換わっていない
javaからの置き換えならgoでいい
ひとえに難しいからw
OS周りならC/C++でいいし
現状ではweb周りのごくごく一部の超高速領域を除きrustには置き換わっていない
javaからの置き換えならgoでいい
445デフォルトの名無しさん
2021/11/04(木) 21:09:43.64ID:MjRPJM3Z446デフォルトの名無しさん
2021/11/04(木) 21:16:55.71ID:lAAyXHqu 他rust向きの領域だとdatabaseかなぁ・・・
ただ既存のDBを置き換えるのはなかなか厳しそうw
何かに特化したやつならいいかもねw
ただ既存のDBを置き換えるのはなかなか厳しそうw
何かに特化したやつならいいかもねw
447デフォルトの名無しさん
2021/11/04(木) 21:31:58.67ID:7+L798k8 RustがJavaの代わりってマジか
Scalaみたいな負債の再来か
Scalaみたいな負債の再来か
448デフォルトの名無しさん
2021/11/04(木) 21:36:42.56ID:UnTZr4yd449デフォルトの名無しさん
2021/11/04(木) 21:42:25.68ID:lAAyXHqu450デフォルトの名無しさん
2021/11/04(木) 22:03:32.17ID:C83Gt3We ビルドシステムでGCの動きを気にすることってほぼないけどな。
なんかやばい方向いってるね。
なんかやばい方向いってるね。
451デフォルトの名無しさん
2021/11/04(木) 22:27:26.54ID:lAAyXHqu rustのスポンサー企業一覧
https://foundation.rust-lang.org/members/
プラチナメンバが錚々たる顔ぶれw リンゴおらんw
nimのスポンサー企業一覧
https://nim-lang.org/sponsors.html
https://foundation.rust-lang.org/members/
プラチナメンバが錚々たる顔ぶれw リンゴおらんw
nimのスポンサー企業一覧
https://nim-lang.org/sponsors.html
452デフォルトの名無しさん
2021/11/04(木) 22:47:21.35ID:3s9ShBm/ まあrustは天才向け言語と思うので、コアなところがrust縛りになってくれると安心なところはあるね。goとかnimとかはちょろい分野で頑張れば良い
453デフォルトの名無しさん
2021/11/04(木) 22:51:16.80ID:kgE3GEs9 て、天才ww
454デフォルトの名無しさん
2021/11/04(木) 22:53:26.72ID:fybR+JX+ nimも良い言語だと思うけど、GAFAMみたいなとこがバックアップしてるわけじゃないし、仕事では使う気せえへんなあ。もったいない。
趣味ユーザが使いまくってエコシステムが充実するまで待つしかないな。
趣味ユーザが使いまくってエコシステムが充実するまで待つしかないな。
455デフォルトの名無しさん
2021/11/04(木) 23:11:49.09ID:mYdjk53s >>451
リンゴにはswiftがあるからなあ
リンゴにはswiftがあるからなあ
456デフォルトの名無しさん
2021/11/05(金) 02:15:48.45ID:KGYxGlBy python嫌いだからnimも嫌いなんだわ
457デフォルトの名無しさん
2021/11/05(金) 05:25:56.07ID:Q0weZe1J 嫌いっていうより、ウチの爺らはPythonすら出来なそうだけどね
458デフォルトの名無しさん
2021/11/05(金) 06:52:06.45ID:0gW7V402459デフォルトの名無しさん
2021/11/05(金) 09:11:02.86ID:pAK9gvBl しょーもない見栄張ってるだけだな
460デフォルトの名無しさん
2021/11/05(金) 09:40:04.97ID:ZsL5S5NL サーバーサイドに企業のバックアップなどいらぬ
趣味で弄れない仕様になってる車の内部やスマホのアプリを企業がしっかり作れよ
趣味で弄れない仕様になってる車の内部やスマホのアプリを企業がしっかり作れよ
461デフォルトの名無しさん
2021/11/05(金) 10:28:44.23ID:ShfctMVX Node.jsの話?
462デフォルトの名無しさん
2021/11/05(金) 11:30:58.07ID:pLniUbgZ463デフォルトの名無しさん
2021/11/05(金) 12:57:06.14ID:oXyREoQy 死ぬほど恥ずかしい知ったかだなこれ
464デフォルトの名無しさん
2021/11/05(金) 12:58:33.47ID:MOYeaH5z 新手の自己紹介か?
465デフォルトの名無しさん
2021/11/05(金) 20:37:57.51ID:DvmJ6O3T >>458
国外も国内も大手有名どころはRust採用で大勢が決した感じね
国外も国内も大手有名どころはRust採用で大勢が決した感じね
466デフォルトの名無しさん
2021/11/05(金) 21:28:24.58ID:Xs8oV2Az 国外も国内も全然違うw
467デフォルトの名無しさん
2021/11/06(土) 00:50:02.35ID:iXKnTImN rustもアピールすごいな、内容の無いrust押しもどんどんrustから離れて行きたくなるけど
468デフォルトの名無しさん
2021/11/06(土) 01:56:27.18ID:x0h3LLto YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
キャリアパスは、Ruby on Rails → Go のみ
Rust, Elixir などは、普及のキャズムを越えなかったので、やる必要なし。
なのに、Rustが再評価され始めたのか
キャリアパスは、Ruby on Rails → Go のみ
Rust, Elixir などは、普及のキャズムを越えなかったので、やる必要なし。
なのに、Rustが再評価され始めたのか
469デフォルトの名無しさん
2021/11/06(土) 02:00:59.99ID:EdP5MzkQ C++でいろんな新規開発する組織ではRustが好評価されてるでしょ
それ以外の現場ではめったに見向きされない
それ以外の現場ではめったに見向きされない
470デフォルトの名無しさん
2021/11/06(土) 06:29:11.65ID:bdG9YXuk 転職サイトとかフリーランスのサイトでRustで検索したら1桁か2桁ぐらいしか求人が出てこないけど国外国内で覇権を握る言語らしい
471デフォルトの名無しさん
2021/11/06(土) 07:32:09.49ID:a2wAz4xJ Rustでもユーチューバーでも国会議員でもそうなるわな
472デフォルトの名無しさん
2021/11/06(土) 12:03:26.15ID:2f1Vgy/C rustが評価されてるのは高速・安全の2点
これらが難しさを無視できるほど重要になる領域では唯一の選択肢になる
世界規模のサービスでは特にクリティカルな問題になるのでこの分野の発展を望む巨人共が投資してる
これらが難しさを無視できるほど重要になる領域では唯一の選択肢になる
世界規模のサービスでは特にクリティカルな問題になるのでこの分野の発展を望む巨人共が投資してる
473デフォルトの名無しさん
2021/11/06(土) 12:24:00.21ID:WoXv+kRZ >>469
転職サイトw
転職サイトw
474デフォルトの名無しさん
2021/11/06(土) 20:58:43.30ID:9KDcj+aF >>468
Goは言語仕様の欠陥により全くオススメ出来ない
Goでは例えばうっかりローカル変数の参照(ポインタ)をそのスコープ外へ持ち出しても
言語仕様としてコンパイラにもチェックされずそして禁止もされず
そのまま通ってしまうため実運用で致命的なバグを引き起こしてしまい
実際に以下のような大事件まで引き起こしている
Go言語で書かれたLet's encryptが300万以上の証明書の失効を迫られた致命的バグはRustで実装していたら防げたの?→Yes
https://qiita.com/komasayuki/items/02785730d486ec4b397f
Goは言語仕様の欠陥により全くオススメ出来ない
Goでは例えばうっかりローカル変数の参照(ポインタ)をそのスコープ外へ持ち出しても
言語仕様としてコンパイラにもチェックされずそして禁止もされず
そのまま通ってしまうため実運用で致命的なバグを引き起こしてしまい
実際に以下のような大事件まで引き起こしている
Go言語で書かれたLet's encryptが300万以上の証明書の失効を迫られた致命的バグはRustで実装していたら防げたの?→Yes
https://qiita.com/komasayuki/items/02785730d486ec4b397f
475デフォルトの名無しさん
2021/11/06(土) 21:25:57.27ID:8rFQ20lW そういう問題じゃねーわ。
そこでポインタを外に出すようなバカはどんな言語使っても同じようにカスなことやってるよ。。
そこでポインタを外に出すようなバカはどんな言語使っても同じようにカスなことやってるよ。。
476デフォルトの名無しさん
2021/11/06(土) 21:32:11.29ID:v/Totsm8477デフォルトの名無しさん
2021/11/06(土) 21:37:20.60ID:wE/AlpPI じゃあunsafeも禁止にしないと
478デフォルトの名無しさん
2021/11/06(土) 21:45:46.17ID:f6JHtgP7 >>475
だから、よりチェックが厳密な(100%とは言わない)rustが良いのでは。
だから、よりチェックが厳密な(100%とは言わない)rustが良いのでは。
479デフォルトの名無しさん
2021/11/06(土) 22:24:42.47ID:2f1Vgy/C rustにしたら防げたのかもしれないが、だからってrustにした方が良いとは思わんw
480デフォルトの名無しさん
2021/11/06(土) 22:30:30.69ID:v/Totsm8 少なくともその分野のプログラミングならばRustを用いるのがベスト
他に解がない
他に解がない
481デフォルトの名無しさん
2021/11/06(土) 22:34:25.16ID:PDDtrjdC 静的解析さん……
482デフォルトの名無しさん
2021/11/06(土) 22:35:30.57ID:bqXF1v8h Last
483デフォルトの名無しさん
2021/11/06(土) 22:38:46.87ID:twTYwhnI Rustは天才向け言語だからそんな凡ミスするやつが使うべきじゃない
はい終わり
はい終わり
484デフォルトの名無しさん
2021/11/06(土) 23:12:13.85ID:2f1Vgy/C rustにしたらメンテナンスできる人や便利にしてくれる人が減ってしまう
明確に別の問題があるんだよ
本当にそれしか解がないのなら問題が起きる前に誰かがすでに書き換えている
明確に別の問題があるんだよ
本当にそれしか解がないのなら問題が起きる前に誰かがすでに書き換えている
485デフォルトの名無しさん
2021/11/06(土) 23:18:58.54ID:EdP5MzkQ 全人類Rustを極めてたらいいのに
486デフォルトの名無しさん
2021/11/06(土) 23:27:58.99ID:2f1Vgy/C それな
487デフォルトの名無しさん
2021/11/06(土) 23:32:27.72ID:9KDcj+aF >>484
Rustにしたらメンテナンスもしやすくなったよ
例えば機能追加で今回の件のようなバグが紛れ込むことも無くなった
もしその種のミスをしているとコンパイルが通らないから安心してメンテナンスできる
Rustにしたらメンテナンスもしやすくなったよ
例えば機能追加で今回の件のようなバグが紛れ込むことも無くなった
もしその種のミスをしているとコンパイルが通らないから安心してメンテナンスできる
488デフォルトの名無しさん
2021/11/06(土) 23:35:57.66ID:bBqH6KfG 天才が使う言語なんだからならそもそもメンテナンスなんてしなくていいだろ
はい終わり
はい終わり
489デフォルトの名無しさん
2021/11/06(土) 23:36:45.09ID:2f1Vgy/C メンテナンスできる人の数の話をしてるのに、そもそもメンテナンスできる人がメンテナンスしやすくなったからって関係ないよね
490デフォルトの名無しさん
2021/11/07(日) 09:04:00.93ID:bwFiQ/UZ アスペ=天才
491デフォルトの名無しさん
2021/11/07(日) 13:38:59.39ID:XJB+ymj6 たまに紙一重のやつがいるのは認めるが
イコールではないな
アスペ⊆天才でもないし
アスペ⊇天才でもない
イコールではないな
アスペ⊆天才でもないし
アスペ⊇天才でもない
492デフォルトの名無しさん
2021/11/07(日) 13:50:16.34ID:Wnisb2X3 サヴァンみたいな一点豪華な才能は気苦労も伴うからな
493デフォルトの名無しさん
2021/11/07(日) 14:10:35.95ID:/d1krDIr 他のスレで暴れてるMbってやつは天才?
494デフォルトの名無しさん
2021/11/07(日) 14:21:05.01ID:nhZF9/LT 召喚すんな
495デフォルトの名無しさん
2021/11/07(日) 15:13:11.87ID:XJB+ymj6 天才でも凡人でも地方でも
最低限のマナーすら守れない香具師は何やっても成功しない
最低限のマナーすら守れない香具師は何やっても成功しない
496デフォルトの名無しさん
2021/11/07(日) 15:30:00.12ID:/d1krDIr マナーなんて無くても天才と馬鹿は行動力があれば成功するだろ
マナーが一番必要なのは凡人だけ
マナーが一番必要なのは凡人だけ
497デフォルトの名無しさん
2021/11/07(日) 16:47:03.65ID:NoqiBvXu 488の煽りごときから天才の話を続けようとすんな
498デフォルトの名無しさん
2021/11/07(日) 22:52:33.86ID:NYPA2RTD >>489
PHPでも使ったら?一番人集まりやすいんでないか?
PHPでも使ったら?一番人集まりやすいんでないか?
499デフォルトの名無しさん
2021/11/08(月) 00:15:26.32ID:vASCcAjA メンテナンスなんて少しも考えてないバカがrustすげーって騒いでるだけだろ。
どうせGAFAも認める言語使ってる俺すげーしてクソコード残して立ち去るような仕事のやり方ばっかしてんだろうね。
どうせGAFAも認める言語使ってる俺すげーしてクソコード残して立ち去るような仕事のやり方ばっかしてんだろうね。
500デフォルトの名無しさん
2021/11/08(月) 00:21:07.56ID:SITQ70se メンテナンスならばRustがもっともしやすいだろう
コンパイルが通ればメモリ安全性が保証される点で他の言語より抜きん出る
これは大きな利点である
コンパイルが通ればメモリ安全性が保証される点で他の言語より抜きん出る
これは大きな利点である
501デフォルトの名無しさん
2021/11/08(月) 00:38:47.53ID:rlmkL2+c それでメモリ安全性の定義ってなんだっけ
意味論を定義したうえで形式的に証明されてるんだっけ
意味論を定義したうえで形式的に証明されてるんだっけ
502デフォルトの名無しさん
2021/11/08(月) 01:21:00.52ID:vrtVczFq GoとRustってCのアドレス演算的なことはできるのですか?
int arr[] = {1, 2, 3};
int *p = arr;
p += 1; // ←これです
printf("%d\n", *p); // 2
int arr[] = {1, 2, 3};
int *p = arr;
p += 1; // ←これです
printf("%d\n", *p); // 2
503デフォルトの名無しさん
2021/11/08(月) 02:24:21.55ID:p+/Hds0z >>502
C/C++のようなポインタ演算は安全性のためにできないようにしてるが
Goならunsafe.Add、Rustならpointer::offsetやpointer::wrapping_offsetで同じようなことはできる
C/C++のようなポインタ演算は安全性のためにできないようにしてるが
Goならunsafe.Add、Rustならpointer::offsetやpointer::wrapping_offsetで同じようなことはできる
504デフォルトの名無しさん
2021/11/08(月) 02:29:59.56ID:J6d/ajGt マンドクセ
505デフォルトの名無しさん
2021/11/08(月) 02:59:59.38ID:6BzlB5w0 >>501
Rustは多くの論文が出ている
https://rustc-dev-guide.rust-lang.org/appendix/bibliography.html#papers-about-rust
>>502
生ポインタと呼ばれていて通常のプログラミングでは使わないが実行可能
Rustコンパイラによるメモリ安全性の保証外などとなることを宣言するunsafe{ ... }の中で使える
以下はRustのコードでコメント部分(=各行の//以降)に対応するCコード
let a = &[1, 10, 100]; // int a[] = {1, 10, 100};
let mut ptr = &a[0] as *const i32; // int *ptr = a;
println!("{:p}: {}", ptr, unsafe{*ptr}); // printf("%lx: %d\n", ptr, *ptr);
→ 0x5645a1293000: 1
ptr = unsafe{ptr.offset(1)}; // ptr += 1;
println!("{:p}: {}", ptr, unsafe{*ptr}); // printf("%lx: %d\n", ptr, *ptr);
→ 0x5645a1293004: 10
Rustは多くの論文が出ている
https://rustc-dev-guide.rust-lang.org/appendix/bibliography.html#papers-about-rust
>>502
生ポインタと呼ばれていて通常のプログラミングでは使わないが実行可能
Rustコンパイラによるメモリ安全性の保証外などとなることを宣言するunsafe{ ... }の中で使える
以下はRustのコードでコメント部分(=各行の//以降)に対応するCコード
let a = &[1, 10, 100]; // int a[] = {1, 10, 100};
let mut ptr = &a[0] as *const i32; // int *ptr = a;
println!("{:p}: {}", ptr, unsafe{*ptr}); // printf("%lx: %d\n", ptr, *ptr);
→ 0x5645a1293000: 1
ptr = unsafe{ptr.offset(1)}; // ptr += 1;
println!("{:p}: {}", ptr, unsafe{*ptr}); // printf("%lx: %d\n", ptr, *ptr);
→ 0x5645a1293004: 10
506デフォルトの名無しさん
2021/11/08(月) 10:23:03.43ID:LdTjNXcL507デフォルトの名無しさん
2021/11/08(月) 13:03:54.54ID:vrtVczFq508デフォルトの名無しさん
2021/11/08(月) 14:46:35.97ID:PFM3PqQ9 >>420
(if true:
echo "You can do this if you want"
(block:
echo "but everyone will hate you" # None indentation is OK
)
(for n in 0..5:
echo n # None indentation is OK
)
)
#for n in 6..10:
#echo n # <-- Error: invalid indentation
https://play.nim-lang.org/#ix=3EmH
(if true:
echo "You can do this if you want"
(block:
echo "but everyone will hate you" # None indentation is OK
)
(for n in 0..5:
echo n # None indentation is OK
)
)
#for n in 6..10:
#echo n # <-- Error: invalid indentation
https://play.nim-lang.org/#ix=3EmH
509デフォルトの名無しさん
2021/11/08(月) 15:56:14.25ID:dWDs4ee0 nimでスレが止まってるとイラっとするまでになってしまったw
前まで比較的好きだったのに・・・
前まで比較的好きだったのに・・・
510デフォルトの名無しさん
2021/11/08(月) 16:03:45.86ID:KvpLYeV7 全員目をつむりなさい、この中に前から嫌いなのにA子さんの縦笛を盗んだ人がいます!
正直に手を挙げなさい!先生は怒りませんよ!
正直に手を挙げなさい!先生は怒りませんよ!
511デフォルトの名無しさん
2021/11/08(月) 16:29:20.11ID:jye9PFXO 先生(クソッ、なんでバレたんだ…なんとか誤魔化さないと…)
512デフォルトの名無しさん
2021/11/08(月) 17:47:01.28ID:zeI+S7c1 >>500
いまどきメモリー安全じゃない言語なんてC/C++/Delphiぐらいなもんだろw、Java/KotlinもC#もNimも、D言語も
Swiftもunsafe的なコードじゃなきゃメモリー安全。Microsoftも採用基準はメモリー安全以外だと言っているよ
いまどきメモリー安全じゃない言語なんてC/C++/Delphiぐらいなもんだろw、Java/KotlinもC#もNimも、D言語も
Swiftもunsafe的なコードじゃなきゃメモリー安全。Microsoftも採用基準はメモリー安全以外だと言っているよ
513デフォルトの名無しさん
2021/11/08(月) 18:45:37.45ID:SITQ70se514デフォルトの名無しさん
2021/11/08(月) 19:23:50.63ID:dWDs4ee0 言葉の定義でしかないなw メモリ安全なんて言葉は使わない方がいいw
515デフォルトの名無しさん
2021/11/08(月) 19:47:27.37ID:SITQ70se516デフォルトの名無しさん
2021/11/08(月) 19:54:02.50ID:9Ys8k33F ほんとアホは相手しちゃだめだな。長さ不定のリスト構造に要素の追加を値渡しではなく参照にしてしまうのは
メモリー安全性なんて一切関係ないw、型チェックの厳密性(緩さ)の違いだけGoは確かに緩いけど、Rustが
強い型付けをしているから。更に極端な例を言うなら秘密情報を一文字違う宛先に送った明らかなプログラミング
ミスと何ら変わりない。代わりにRustはキャストが大変になってる
GCなしなんてSwiftでもNimでも実質Rustと同じ参照カウントだし、S.T.Wで停止をしなければ高負荷な環境の
分野以外で問題になることはない。CrystalなんかでもARCの(まだ無いが)実装が検討されている。
この強烈な匂い立つような他の言語を貶める人たちへ、距離を置きたくなる。
言語のせいじゃないから困るわ・・・もっとアピールすべき点は他にあるでしょ
メモリー安全性なんて一切関係ないw、型チェックの厳密性(緩さ)の違いだけGoは確かに緩いけど、Rustが
強い型付けをしているから。更に極端な例を言うなら秘密情報を一文字違う宛先に送った明らかなプログラミング
ミスと何ら変わりない。代わりにRustはキャストが大変になってる
GCなしなんてSwiftでもNimでも実質Rustと同じ参照カウントだし、S.T.Wで停止をしなければ高負荷な環境の
分野以外で問題になることはない。CrystalなんかでもARCの(まだ無いが)実装が検討されている。
この強烈な匂い立つような他の言語を貶める人たちへ、距離を置きたくなる。
言語のせいじゃないから困るわ・・・もっとアピールすべき点は他にあるでしょ
517デフォルトの名無しさん
2021/11/08(月) 19:58:54.68ID:6BzlB5w0518デフォルトの名無しさん
2021/11/08(月) 20:10:59.23ID:CQj4IFht >>517
違います。 利用先へ渡された参照渡しされたデータは寿命はやってきません。値渡しもしくは値コピーであれば
コピー元のデータは普通に寿命を迎えます。そんな事も分かってないのに強烈な初心者のような言い訳は意味が
ありません。他にも参照渡しされたデータたちの構造がリング状になることを循環参照と言いますが、(この
ような欠陥を作るのは大変ですが)Rustはこれを参照カウントで回収しません、これはARCだけを採用している
他の言語でも同じです。
違います。 利用先へ渡された参照渡しされたデータは寿命はやってきません。値渡しもしくは値コピーであれば
コピー元のデータは普通に寿命を迎えます。そんな事も分かってないのに強烈な初心者のような言い訳は意味が
ありません。他にも参照渡しされたデータたちの構造がリング状になることを循環参照と言いますが、(この
ような欠陥を作るのは大変ですが)Rustはこれを参照カウントで回収しません、これはARCだけを採用している
他の言語でも同じです。
519デフォルトの名無しさん
2021/11/08(月) 20:54:01.15ID:6BzlB5w0 >>518
基本的なことを理解していないようなので補足説明しますよ
まず関数内のローカル変数をスタック上に置く言語と全てヒープ上に置く言語の2種類に分かれます
このうち必ずヒープ上に置く言語でガベージコレクションを行なう言語は今回の問題が起きないので
ここでの説明では関数内のローカル変数をスタック上に置く言語を対象とします
スタック上に置かれたローカル変数の参照(ポインタ)を用いて関数内で様々な処理をしてももちろん大丈夫です
さらに別の関数を呼び出して先ほどのローカル変数の参照(ポインタ)を渡して別の関数で処理するのも問題ありませんし孫関数でも曾孫でも大丈夫です
そしてそれらの関数引き渡しの時に他の構造体変数に格納されて引き渡されることもあるでしようがそれでも大丈夫です
つまり他の複合的なデータ(配列や構造体など)に参照(ポインタ)が組み込まれて受け渡されることもありますが子孫の呼び出し関数にいるときは大丈夫です
問題が発生するのはその関数内ローカル変数を含む関数を終えたときです
ローカル変数の参照(ポインタ)が単体もしくは他の複合的なデータに格納されたまま呼び出し上位の関数に戻ってしまった時に問題が発生します
もちろん御存知のようにスタック上にローカル変数を確保した言語の話ですから関数を終えたときにスタックは開放されて参照(ポインタ)は無効となっています
この問題はCGの有無とは関係なくスタック上にも変数を確保する言語の場合は生じ得ます
さらにヒープ上に確保した場合でも非CG言語では生じ得ます
そして強力な型チェックを行なっていてもそれだけでは回避できない点にこの問題の難しさがあります
唯一の解決方法は言語が各変数(領域)のライフタイムを管理して更にその参照が渡って行く先々のライフタイムがそれより短いことを言語が保証することによります
基本的なことを理解していないようなので補足説明しますよ
まず関数内のローカル変数をスタック上に置く言語と全てヒープ上に置く言語の2種類に分かれます
このうち必ずヒープ上に置く言語でガベージコレクションを行なう言語は今回の問題が起きないので
ここでの説明では関数内のローカル変数をスタック上に置く言語を対象とします
スタック上に置かれたローカル変数の参照(ポインタ)を用いて関数内で様々な処理をしてももちろん大丈夫です
さらに別の関数を呼び出して先ほどのローカル変数の参照(ポインタ)を渡して別の関数で処理するのも問題ありませんし孫関数でも曾孫でも大丈夫です
そしてそれらの関数引き渡しの時に他の構造体変数に格納されて引き渡されることもあるでしようがそれでも大丈夫です
つまり他の複合的なデータ(配列や構造体など)に参照(ポインタ)が組み込まれて受け渡されることもありますが子孫の呼び出し関数にいるときは大丈夫です
問題が発生するのはその関数内ローカル変数を含む関数を終えたときです
ローカル変数の参照(ポインタ)が単体もしくは他の複合的なデータに格納されたまま呼び出し上位の関数に戻ってしまった時に問題が発生します
もちろん御存知のようにスタック上にローカル変数を確保した言語の話ですから関数を終えたときにスタックは開放されて参照(ポインタ)は無効となっています
この問題はCGの有無とは関係なくスタック上にも変数を確保する言語の場合は生じ得ます
さらにヒープ上に確保した場合でも非CG言語では生じ得ます
そして強力な型チェックを行なっていてもそれだけでは回避できない点にこの問題の難しさがあります
唯一の解決方法は言語が各変数(領域)のライフタイムを管理して更にその参照が渡って行く先々のライフタイムがそれより短いことを言語が保証することによります
520デフォルトの名無しさん
2021/11/08(月) 21:03:57.19ID:r0oqOAIx RAIIですべて解決。
そもそも循環参照とか考えなければならなくなったら、自分の頭が狂っていないか病院で検査したほうが良い。
必要になってる時点で何かがおかしい。
そもそも循環参照とか考えなければならなくなったら、自分の頭が狂っていないか病院で検査したほうが良い。
必要になってる時点で何かがおかしい。
521デフォルトの名無しさん
2021/11/08(月) 21:08:03.70ID:q/kOwwo+ クソみたいな長文書く前に
https://github.com/golang/go/wiki/CommonMistakes#using-reference-to-loop-iterator-variable
をちゃんと読んでこいよ
これをメモリ安全の問題だと思うのはアホだけだろ
https://github.com/golang/go/wiki/CommonMistakes#using-reference-to-loop-iterator-variable
をちゃんと読んでこいよ
これをメモリ安全の問題だと思うのはアホだけだろ
522デフォルトの名無しさん
2021/11/08(月) 21:09:44.36ID:j/frnJ3w >>520
助言ありがとう。早速病院に行ってきた
医者「それで……本日はどのような件で?」
俺「循環参照を考えなければいけなくなったので、検査してもらってもいいですか?」
医者「?????どういうことだね?」
俺「だから……!!!循環参照を考えないといけないんです!!!検査してください!!!」
医者「だめだこりゃw」
とりあえず精神薬は貰えるっぽい。ありがとうな
助言ありがとう。早速病院に行ってきた
医者「それで……本日はどのような件で?」
俺「循環参照を考えなければいけなくなったので、検査してもらってもいいですか?」
医者「?????どういうことだね?」
俺「だから……!!!循環参照を考えないといけないんです!!!検査してください!!!」
医者「だめだこりゃw」
とりあえず精神薬は貰えるっぽい。ありがとうな
523デフォルトの名無しさん
2021/11/08(月) 21:15:19.22ID:WC/FOJEL >>519
基本的なことを理解していないのはあなたです、それはメモリー安全性ではありません。メモリー安全性は
バッファオーバーフローなど配列の添え字や境界を超えてアクセスを許してしまう事です。(または無効な
アドレスを許してしまう)簡潔に説明出来ないのはあなたが言い訳しているからです。
あなたが説明しているのはRustのRAIIを言っているに過ぎません。当然それはメモリー安全性ではありません
これはファイルのクローズ処理などでも限定された処理を自動化しますが、解放を強制しているだけです。
またこのRAIIの自動リソース資源の解放も万能でありません。ある意味では、メモリー(他の資源を含む)
リーク回避策の実装(解決策の1つであり唯一ではない)でしかありません
基本的なことを理解していないのはあなたです、それはメモリー安全性ではありません。メモリー安全性は
バッファオーバーフローなど配列の添え字や境界を超えてアクセスを許してしまう事です。(または無効な
アドレスを許してしまう)簡潔に説明出来ないのはあなたが言い訳しているからです。
あなたが説明しているのはRustのRAIIを言っているに過ぎません。当然それはメモリー安全性ではありません
これはファイルのクローズ処理などでも限定された処理を自動化しますが、解放を強制しているだけです。
またこのRAIIの自動リソース資源の解放も万能でありません。ある意味では、メモリー(他の資源を含む)
リーク回避策の実装(解決策の1つであり唯一ではない)でしかありません
524デフォルトの名無しさん
2021/11/08(月) 21:20:36.74ID:6BzlB5w0525デフォルトの名無しさん
2021/11/08(月) 21:27:40.83ID:6BzlB5w0 >>523
落ち着きましょう
様々な原因(スコープを外れたり再利用のために)自動開放されてしまったものへの参照を維持し続けてしまい発生するその問題は明らかにメモリ管理使用ミスの問題でありメモリ安全性の問題です
あなたが主張するバッファオーバーフローはメモリ安全性の問題の一つに過ぎません
落ち着きましょう
様々な原因(スコープを外れたり再利用のために)自動開放されてしまったものへの参照を維持し続けてしまい発生するその問題は明らかにメモリ管理使用ミスの問題でありメモリ安全性の問題です
あなたが主張するバッファオーバーフローはメモリ安全性の問題の一つに過ぎません
526デフォルトの名無しさん
2021/11/08(月) 21:29:14.32ID:WC/FOJEL >>524-525
じゃあ世の中にメモリー安全性を謳う他の言語の本家に文句言って、この言語たちはメモリー安全ではないと
ホームページを書き換えろと文句言いなさいよ。どうせ相手にしてもらえませんがね
RAIIをアピールするならまだしも、それをメモリー安全性なんて言って勘違いし他を暗に危険だと貶める行為は
とても褒められませんし、なんの意味もなく必死なアピールが嫌悪を伴います。正当なアピールでさえ、最近は
ウザいと嫌がられますよ?
「ライフタイムが尽きたのにその参照を維持してままだから生じた問題です」
ライフタイムが尽きたと考えられるのはGo言語のソースでRust的なコードの見方をしているからです。何度も
言っているように参照で渡したデータの寿命は尽きていません。
じゃあ世の中にメモリー安全性を謳う他の言語の本家に文句言って、この言語たちはメモリー安全ではないと
ホームページを書き換えろと文句言いなさいよ。どうせ相手にしてもらえませんがね
RAIIをアピールするならまだしも、それをメモリー安全性なんて言って勘違いし他を暗に危険だと貶める行為は
とても褒められませんし、なんの意味もなく必死なアピールが嫌悪を伴います。正当なアピールでさえ、最近は
ウザいと嫌がられますよ?
「ライフタイムが尽きたのにその参照を維持してままだから生じた問題です」
ライフタイムが尽きたと考えられるのはGo言語のソースでRust的なコードの見方をしているからです。何度も
言っているように参照で渡したデータの寿命は尽きていません。
527デフォルトの名無しさん
2021/11/08(月) 21:36:44.29ID:6BzlB5w0528デフォルトの名無しさん
2021/11/08(月) 21:43:30.84ID:WC/FOJEL >>527
あなた自分の上げた記事さえ読んでいませんね?「参照が無効状態になっている」無効にはなっていません
$ ./test_gomistake
Values: 3 3 3
ですから問題が起こったのです。もうメモリー安全性でも私の逃げでもイイから勝ち誇って嫌われなさい
Rustには偉い迷惑な存在なので、もう相手しませんよ
あなた自分の上げた記事さえ読んでいませんね?「参照が無効状態になっている」無効にはなっていません
$ ./test_gomistake
Values: 3 3 3
ですから問題が起こったのです。もうメモリー安全性でも私の逃げでもイイから勝ち誇って嫌われなさい
Rustには偉い迷惑な存在なので、もう相手しませんよ
529デフォルトの名無しさん
2021/11/08(月) 21:43:51.47ID:q/kOwwo+ Goの変数は参照がある限り存在するからお前が全て間違ってる
はっきりして良かったな
はっきりして良かったな
530デフォルトの名無しさん
2021/11/08(月) 21:56:52.12ID:6BzlB5w0 >>528
わかりやすいように1回目のiをi1と表現すると
i1への参照を他が持ったままi1は寿命が尽きて解放されてますよね
そして2回目のi2が同じ領域を割り当てられて別の値2となりそれも尽きて
最後に3回目のi3が同じ領域を割り当てられて別の値3となりそれも尽きて解放
つまりPrintlnした時点で未割り当ての領域の値3を指していますよね?
わかりやすいように1回目のiをi1と表現すると
i1への参照を他が持ったままi1は寿命が尽きて解放されてますよね
そして2回目のi2が同じ領域を割り当てられて別の値2となりそれも尽きて
最後に3回目のi3が同じ領域を割り当てられて別の値3となりそれも尽きて解放
つまりPrintlnした時点で未割り当ての領域の値3を指していますよね?
531デフォルトの名無しさん
2021/11/08(月) 22:12:26.06ID:IqA5SPsy C言語でもメモリ的に危ないコードにはunsafeってコメント書いとけば
rustと同じで安心安全だよね
rustと同じで安心安全だよね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 [蚤の市★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【サッカー】上田綺世の活躍は「一過性」 15戦18発も…オランダ英雄は懐疑的な姿勢「確信に至っていない」 [ゴアマガラ★]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★2 [597533159]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ [597533159]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ180
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 韓国政府、高市早苗の「竹島領土」発言にブチギレwwwwwwwwwwwwwwww [834922174]
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
