次世代言語26 TypeScript Swift Go Kotlin Nim

レス数が950を超えています。1000を超えると書き込みができなくなります。
2022/06/21(火) 09:27:46.30ID:5vOFCGpG
スレタイ(順番はRedMonk準拠)以外の言語もok

※ Rustは現世代最強言語なので除外します

前スレ

次世代言語25 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1650185555/
2022/08/01(月) 12:42:24.49ID:p2tKrs72
>>846
「簡単」とか大嘘つくなよ。
所有権を意識しないで使えるようになってから言えや。
2022/08/01(月) 12:52:39.69ID:XdiV44rb
>>851
Goの並行プログラミングではチャネルによるデータの所有権の受け渡しが基本なことすら知らないのか?
所有権を意識しないバカは口を挟まない方がいいぞ
2022/08/01(月) 13:01:13.40ID:tnFadW7s
>>851
C++などでメモリ共有方式でやるときも所有権の共有は意識せざるを得ない
並行並列プログラミングで所有権を意識するなと言われても無理な話
854デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:14:38.08ID:/SNhoAxJ
>>846
大嘘くそ太郎
2022/08/01(月) 13:16:08.61ID:XSveJ/JR
その分野ならRustが一番いいかな
所有権の取り扱いにミスがあればコンパイラが詳しく指摘してくれる
データ競合してるところがあればコンパイラが詳しく指摘してくれる
実行時エラー発生まで待たずに済み開発効率も高い
2022/08/01(月) 13:19:04.33ID:XSveJ/JR
>>854
RustでもシームレスなM:Nスレッドが簡単に使えるよ
857デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:24:02.26ID:/SNhoAxJ
>>852
”チャネルによるデータの所有権の受け渡し”GoにもRustにもそんな概念はありませんが?おまえが考えたの?
858デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:41:40.37ID:wpl6Jivu
>>856
Rustの標準ライブラリは、1:1スレッドの実装のみを提供しています。
さらに外部ライブラリでも、有名なものはかなり煩雑に書いてI/Oバウンドのものしか作れません、Rustの(多くのライブラリの)ポリシーとして勝手にタイマーなど時系列で特定の処理を実行しているCPUコアが切り替わったりしません。
これは大きいランタイムを嫌うからですが、kernelなどやハードウェアに近いものを書く分には良いですが、I/Oが詰まったら、他は実行できないでプログラム全体がフリーズします
これを”M:Nが簡単”というにはあまりに、お粗末であり、記述の煩雑さを見ても、”簡単に使える〇〇カラおすすめ”なんて人を騙すための背信行為です。
言語をススメたい、シェアを伸ばしたいと思うなら真摯で誠実になりなさい。
あんたに言ってもしょうがないけど、あと開発効率は全然高くない、コンパイル遅い、mut mutめんどくさい、いい加減改良しろや!ボケカスMozila!
2022/08/01(月) 13:45:13.17ID:/T7zJm8q
>>857
並列プログラミングでは常識
データの所有権を共有するか、共有を避けて所有権の受け渡しのみにするかなど、意識せざるを得ない
そのうちGoではデータの所有権を受け渡しをするチャネルの利用を推奨していて公式にも明記

Go公式ページ
https://github.com/golang/go/wiki/MutexOrChannel
Channel = passing ownership of data
860デフォルトの名無しさん
垢版 |
2022/08/01(月) 14:06:14.34ID:dhRVNKzB
>>857
言い方はオカシイ奴だけど、明確に所有権の概念のある言語から見たらそう見えるということは正しいだろう?
859の上に書いてある、channelがある言語によく聞くスレッドにまつわる話に
"Share memory by communicating, don't communicate by sharing memory."
「通信によってメモリを共有し、メモリを共有(して通信)しないで」というのが、golang的には正しいかもしれんが
golangだって実通信しているわけじゃなく、スレッド間のブロッキングの入るFIFOバッファへのデータのコピーに過ぎない
2022/08/01(月) 14:27:50.20ID:U9D47cKc
>>858
本質を捉えらてないからそんな無駄な間違えた話になる
言語に関係なくGoでもRustでも、M:NのM部分つまりカーネルスレッドの標準起動数はCPUコアスレッド数と同じ最適化
これら全てを計算のみ実行し続けて強制奪取なくば塞ぐ使い方をM:Nですることは実際になく、仮にあったとしても容易に定期自主返納も可能だからフリーズを現実に起こすことはない
現実に影響する大きな違いは、Goroutineが個別にスタックを必要としてスタック切り替えコストもメモリコストもかかるのに対して、Rustタスクはスタックレスだから切り替えコストやメモリコストが生じない点
Rustではシンプルな状態マシンとしてそれを実現していて上手く機能している
2022/08/01(月) 16:22:19.93ID:fWHteKMx
>>861
>これら全てを計算のみ実行し続けて強制奪取なくば塞ぐ使い方をM:Nですることは実際になく
普通に?数千数万の要求に、並列・時分割でプログラムをCPUのコア数以上に動作させる要件は世界中にたくさんあるが?
多くの言語でOSスレッドがフリーズしたら、容易でもないし、定期自主返納なんてあり得ない。容易に自主返納するおまえの
コードの実力を見せてもらおうか?
ランタイムありのグリーンスレッドを提供している一部の言語の場合、スレッドの停止は致命ではないがRustは全くそうではない。

>Rustタスクはスタックレスだから切り替えコストやメモリコストが生じない点
OSスレッドにスタックが存在しない現代のOSはほぼ無い。
問題になるのはメモリやスタックにあるデータをスレッド間で共有したりメッセージパッシングしたりするときに、OSスレッドをまたいで
データやりとりしたり、排他ロックはコストが掛かるという話だけ。
そもそもグリーンスレッドはOSコンテキストスイッチを嫌ってそもそもスレッドを跨がない場合が多い。だからGoのメニーコア用の
M:Nランタイムは、他の糞のようなI/Oバウンドしか出来ない言語のライブラリより、遥かに軽量
切り替えコストやメモリコストが生じないのではなく、機能としてグリーンスレッドような存在がなく、軽量に切り替えるような事が
出来ないだけの出来ない尽くし、これはまったく誇れることではなくむしろ汚点

>Rustではシンプルな状態マシンとしてそれを実現していて上手く機能している
では、なぜシンプル・上手く機能なはずのRustにM:Nスケジューラーの実装標準搭載要望が多いのか?
2022/08/01(月) 16:52:48.39ID:IUF0b1bQ
なんか盛り上がってるな
おれはアクターモデルを安全に使いやすい言語が登場してほしい
2022/08/01(月) 16:56:36.04ID:lJab6YiY
ステートマシンの生成をゼロオーバーヘッドと言い張るのは流石に無理筋じゃないかね
ステートマシン手書きと同じというだけの言葉遊びやね
2022/08/01(月) 17:04:06.77ID:pETNc0gm
>>864
rustが標榜してるのはzero cost abstractionで言わんとしてるのはまさにそういうことだよ
抽象化されたコード書いても手書きでステートマシン書くのと同じ性能特性になる
他の典型的な言語だとオーバーヘッドあるよね?という主張

長文レスは目が滑るから読んでないから的外れだったらスマン
2022/08/01(月) 17:15:17.99ID:a+lwQcR6
グリーンスレッドは初期rubyのウリだったよね
マッツも誇らしげやったで
ワイもユーザとして誇らしかったのを覚えてる
2022/08/01(月) 17:21:31.08ID:Ctxi9Kcc
ここまでにponyおじさんが現れないことがそこはかとなく悲しい
2022/08/01(月) 17:45:58.72ID:zlIOq9vz
オブジェクト一つにつきスレッド一つ作れるようになったら
オブジェクト指向はただのマルチスレッド手続き型になってしまう
869デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:38:15.71ID:xcPFI+XD
Rustで実用的なソフトウェアを書くには、Java、C#、C/C++の5〜8倍ほどの労力が必要と言われてる。
870デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:39:52.35ID:xcPFI+XD
>>866
Linuxにスレッドがなかったからでは?
871デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:42:48.07ID:Qe0j28fb
ものりしっくですね
872デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:44:36.03ID:xcPFI+XD
グーグルトレンドによると、世界では存在感ゼロのRustが、日本では6月初めの一時期、Goを抜いたからね。
世界ではGoのほうが100倍ほど検索ボリュームがあるので、逆転はあり得ない。
なんか工作くせえ。
873デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:46:31.09ID:xcPFI+XD
スレッドがなかったころ、Linuxユーザーはスレッドの邪悪さを主張してて、Windowsはスレッドがあるからダメなんだとか言ってたのにな。
874デフォルトの名無しさん
垢版 |
2022/08/01(月) 19:15:06.90ID:gURUUmzn
こいつKENTAおじさんと同じ病気だな
875デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:02:40.94ID:xcPFI+XD
ぶっちゃけ、C++が常に次世代言語では?
3年に一度改定され続けるんだし。
C++20は、C++11以来のメジャーバージョンアップと言えるのでは?
2022/08/01(月) 20:06:43.75ID:zlIOq9vz
完全なコピーができるデータには
参照も参照カウントもGCも所有権もロックもスレッドも必要ない
プロセス間通信だけでいい

コピーを回避することが邪悪かどうかは知らんけど全ての元凶ではある
877デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:18:48.94ID:xcPFI+XD
ちょうどLinuxでスレッドが使えるようになったころ、世の中はC10K問題全盛期に入った。
しかし、Linuxユーザーはスレッドマンセーに宗旨替えしてしまい、C10Kには目もくれなくなってしまった。
そのころC++では、boostと黒魔術が広まりつつあり、5chではWTLなんかが流行ってた。
当然ながらC++では非同期が一つのキーワードであり、IOCPが関心を集めていた。
それがBoost.Asioへと繋がっていく。
878デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:20:33.99ID:xcPFI+XD
>>876
ヒープレスプログラミングとか考えて提唱してみれば?
21世紀を代表するアーキテクトとして歴史の本に載るかもよ?
879デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:27:15.17ID:XxSklYrz
Tauriでデスクトップアプリ作りたくてRust始めようと思ったけど
なんかPythonやらNimやらもサポートされるらしい
じゃあRustやらなくていっか
2022/08/01(月) 20:32:21.83ID:fIML+ep7
>>878
それ何てFORTH?
881デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:36:12.25ID:xcPFI+XD
C++11以前から見たら、C++20はやりたかったことが全てできるフルセットの言語になった。
もう使うしかないでしょコレ。
882デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:36:36.15ID:xcPFI+XD
>>880
普通のFORTHです。
2022/08/01(月) 20:38:40.87ID:OHxYp4mJ
>>864
Rustプログラマーは抽象的に開発効率よく非同期プログラミングをすることができる
そこからステートマシンの生成は静的にコンパイラが自動的に行なう
手書きでステートマシンを最速化のために書いたのと同じ結果を得られる
プログラマーはそのステートマシンの存在を知る必要がない
実行時の付加コストもない
884デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:40:36.23ID:xcPFI+XD
その手のメタプログラミングするなら・・・
C++しかないでしょう!
885デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:46:52.01ID:xcPFI+XD
状態機械を作るときには、状態の圧縮が肝要なので、結局、外部のプログラムが必要になります。
必要にならないというのなら、せいぜい手書きと同レベルのものなんですよ。
2022/08/01(月) 20:54:41.00ID:KVizZk4Y
>>869
Rustでは抽象的に効率よくプログラミングしてもほぼ最速の結果を得られるようになり
コンパイル時の様々な静的なエラー化により実行時デバッグも激減して開発効率が上昇したよ
887デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:56:30.57ID:xcPFI+XD
>>886
よくわかんないので英語でお願いします。
2022/08/01(月) 21:01:50.59ID:KVizZk4Y
>>884
C++はメモリ解放の自動化ができていないから
プログラミングでもデバッグでも無駄に労力を要して馬鹿らしいよ
889デフォルトの名無しさん
垢版 |
2022/08/01(月) 21:06:27.96ID:xcPFI+XD
std::unique_ptr<>使えば良いのでは?
2022/08/01(月) 21:46:26.81ID:MtrpFMZN
>>863
ス、ス、スウィ?
2022/08/01(月) 21:48:32.95ID:DjsRD2G7
>>889
C++がダメな点はそれ
1. その面倒な指定が必要
2. それを使い忘れると実行時にアウト
3. 使い間違えると実行時にアウト
4. ムーブの指定なども記述が煩雑
5. それら全て正しく頑張っても所有権の問題を解決してるだけで参照の問題は解決できていない
C++は安全なメモリ自動解放がなされない欠陥言語
2022/08/01(月) 21:49:39.23ID:SuXYGZGf
>>869
C#の2~3倍
Javaの1~2倍
Cの0.5~0.3倍
C++は幅が広すぎて一般解じゃ意味がない
2022/08/01(月) 21:50:26.57ID:cpDeSwcY
>>874
やっと気づいたの?
894デフォルトの名無しさん
垢版 |
2022/08/01(月) 21:53:44.40ID:xcPFI+XD
>>891
ダメなら自分で差し替えれば良いのでは?
C++は、それこそメモリー管理をGCに変えることだってできるのだから。
2022/08/01(月) 22:01:55.21ID:DjsRD2G7
>>894
そこで欠陥言語C++を使う意味が全く無い
896デフォルトの名無しさん
垢版 |
2022/08/01(月) 22:13:45.19ID:xcPFI+XD
>>892

> ただし、このプログラム言語によって実用的なプログラムを作成するためには、
> C/C++/C#と比較して5〜10倍、Javaと比較して2〜3倍の労力を要する事は事実である。

と説明書に書いてあるよ?
2022/08/01(月) 22:40:21.87ID:67qbuqx0
Rust と言うゲームがあるみたい。
それで、Rustは言語ランキングが1位になるのかも

並行プログラミングでは、Elixir。
100GB ぐらいのメモリで、5,000万個の小プロセスが稼働する

Ruby on Rails と似ている
2022/08/01(月) 22:46:46.79ID:Ctxi9Kcc
Elixirは大元のErlangの実行が中々愉快なことになってるんだけどもそれを継承してるんだっけ?
2022/08/01(月) 23:02:32.84ID:6UjeNpN/
>>896
それらのプログラミング言語で労力が10倍も変わるなんてありえない
変わるとしてもそのなぜか一緒にしているC/C++とC#の差が大きい程度
自動的にメモリ解放してくれないC/C++ではその分だけ労力がかかる
もちろんC#は多少労力が楽な分だけ遅くなるため優れていることを意味するわけではない
900デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:10:21.89ID:xcPFI+XD
>>897
320GBのメモリーがあれば、国民一人一人にプロセスを与えられるね。
901デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:11:24.47ID:xcPFI+XD
>>899
いや、Rustなら10倍かかってもおかしくないでしょう。
2022/08/01(月) 23:14:57.62ID:XSveJ/JR
安全にメモリ自動解放してくれて楽なのにC並に高速なRustがおすすめ

>>901
Rustなら楽に効率よくプログラミングができて高速な実行も得られます
903デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:16:39.89ID:xcPFI+XD
キミは何でIDが変わるの?
2022/08/01(月) 23:25:18.49ID:0OfTpNey
労力って使える人材探し始めてから完成するまでの時間でしょ?
Rust使える人を見つける時間考えたら、他の言語選んだ方が圧倒的に早くて安いよ
2022/08/01(月) 23:39:41.39ID:XSveJ/JR
>>904
次世代言語スレでそれは意味のない話ですね
Rustも他の言語も使える普通の人にとって開発効率もその実行生産性も最も高い言語がRust
そしてRustコンパイラの親切さにより誰でもRustを使えるようになるところも大きなポイント
古き概念のみに固執して学習に失敗した人を除きみんなが学習に成功しています
2022/08/01(月) 23:39:51.69ID:zlIOq9vz
オリジナルよりパクリの方が時間は短い
時刻はオリジナルの方が早い
2022/08/01(月) 23:43:41.81ID:QBiSvFw1
>>905
> 開発効率もその実行生産性も最も高い言語がRust

ソースは?そんなに最強なのになんで流行っていのか説明できる?
2022/08/01(月) 23:45:10.83ID:6UjeNpN/
>>904
それで遅くメモリを喰うものが出来上がってもリソース運用コストが嵩むだけだ
さらにそういう連中は保守性の低いプログラムしか書けないだろうから今後のコストも膨らむ
2022/08/02(火) 00:00:32.68ID:4QK2QLWC
あとメモリ効率ってそんなに大事なことなの?
OSや組み込みなど低レイヤーならわかるけど

高いコストを払ってまで得られる価値はないことが多いのでは?今までGC言語が流行ってきたわけだが?
むしろIOやCPUがボトルネックになる方が大半でメモリ効率がいいことによって恩恵が得られるケースってほとんどないのでは?
2022/08/02(火) 00:03:12.51ID:mFGD+3ik
>>907
マジで知らんのか?
それはRustが新しい言語だから

Rustの大きな強みの並行プログラミングがまともに使えるようになったのが2019年から2020年にかけて
そしてその効率と実用性が幅広く確認されたためIT大手各社が共同でRust Foundationを設立したのが2021年
プログラム言語史上でも初めてIT大手各社が揃って共同で支持するほどの革命的な言語
2022/08/02(火) 00:05:28.81ID:mFGD+3ik
>>909
その高いコストもGCコストも両方を無くした画期的な言語がRust
これで誰もが楽に安全で速いプログラムを書けるようになった
2022/08/02(火) 00:13:54.99ID:4QK2QLWC
GC言語の方が生産性高いのでは?
GC言語より生産性が高い根拠は?
異常に速いとか言っておきながら単語カウントとかその辺にあるベンチマークでGoやNimに普通に負けることがあるのはなんで?

大手が採用しているのはあくまでもOS開発など低レイヤー用途でグーグルとかはサーバーサイドがGoで書かれているようだけどそれをRustにするという話はどこにも出ていないね

低レイヤー以外だとMetaとDiscordぐらいで日本でRust採用してる企業は特に存在しないね
グーグルトレンド見ればわかるようにRustは全然流行っていないな
2022/08/02(火) 00:19:52.75ID:4QK2QLWC
GoogleやMicrosoftはOSやカーネル開発でRustを採用することにしたらしいが
OSやカーネルやコンパイラだとかを開発しているエンジニアって全体の何%ぐらいだと思ってんの?

Rustは一部の数%程度の少数向けに向いているってのが事実だけど
ここにいるRust信者は他のあらゆるプログラミング用途でRustが最強で既存言語を置き換えていくとかほざいているわけだが
何の根拠もない妄想でしかないわ
適材適所って言葉を知らない無能

MetaとDiscord以外で採用している有名企業あげてみろや
2022/08/02(火) 00:25:19.06ID:/i6BuvyD
ネットに嘘が多いのは、検査が足りないからじゃないかな

Rustコンパイラはある種の嘘を検査している
それが非効率だと思うなら嘘に寛容な効率化をやってみせろ
2022/08/02(火) 00:28:37.12ID:mFGD+3ik
>>912
その嘘を繰り返すのはいい加減やめよう
バッファリングしない入出力を使わされたsimple版ですらRustはGoより速い>>603
そして両者の改善版でもRustはGoの1.5倍速い結果となった
この一瞬で実行が終わりGCも起きないほどの規模でもGC言語が大きく負けた
2022/08/02(火) 00:28:42.85ID:4QK2QLWC
RustはGCがないからあらゆる面で最強で他のあらゆる言語を置き換える←妄言

RustはGCや手厚いランタイム環境が使えない、もしくは適さないようなシビアな要件で安全なプログラムを作成できるためC++を置き換えることがある←正しい


正しい理解をした上でRustを広めような
2022/08/02(火) 00:33:51.61ID:4QK2QLWC
>>915
記事を見て言ってるわけだけど。記事の段階でGoに負けたのは事実でしょう
あとこれはベンチマークの一例ね。他にもネットで探せばRustが微妙な位置にいるのはよくあることだね。

そもそもハッシュが遅いだとかで最適化したバージョンが記事で使われてないのは何故だか考えてみようね

あとRustはNimにも負けているね。GC言語だけど。。
2022/08/02(火) 00:38:10.10ID:4QK2QLWC
CPU処理だけのプログラムでもGoに負けることがあるのだから
低レイヤー以外の用途でRustを採用する必要なんか皆無であることがよくわかるね
2022/08/02(火) 00:40:03.84ID:4QK2QLWC
ちなみに俺はRustアンチじゃないからね
何でもかんでもRustが最強!GC言語はゴミで駆逐されるとかほざいてて
Rust使ってる自分に酔ってて他人にマウント取るだけが生きがいのゴミが嫌いなだけだね
2022/08/02(火) 00:40:19.24ID:A0k69qij
全言語の中でCに次いでRustが最速となったプログラムのコード>>602を見てみよう
どの言語のプログラマーであってもすぐに理解できるほど抽象度が高く平易で分かりやすいコードとなっている
つまりRustを学習すれば誰もが分かりやすくてコード&C並みに高速を両立するプログラムを書けるようになることを意味している
2022/08/02(火) 01:56:40.26ID:+AA3LPDF
このままRustでまるまる1スレッド潰すのか
2022/08/02(火) 02:07:05.35ID:cWws5nRf
俺はRustでStringをcloneしまくるコード書いちゃうからなぁ
あんま速くないかも
923デフォルトの名無しさん
垢版 |
2022/08/02(火) 02:24:14.36ID:u5Pbv834
クソコードがそもそも詠唱できない時点で
クソコードのおもりをさせられるエンジニアがいなくなる

このことは重要
924デフォルトの名無しさん
垢版 |
2022/08/02(火) 05:52:39.70ID:LaxCL9ek
RustはDropbox、Cloudflare、IBM、トヨタなども使っているね。
コストってなんのコストを指しているかわからないけど、個人的にはシステムの生涯でかかるコストは他言語より安く済むと思うよ。
925デフォルトの名無しさん
垢版 |
2022/08/02(火) 06:21:12.68ID:9HUaTRvZ
基本的にRustは遅いよね。
実用的なソフトウェアを作るには10倍の労力がいるし。
ベンチマーク特化型言語なのに、ベンチマークも遅いし。
926デフォルトの名無しさん
垢版 |
2022/08/02(火) 08:10:44.50ID:boBO3Fux
>>915の認識は微妙に間違っていて、simpleは標準ライブラリにこだわって遅いhashmapを使ってて、バッファが噛んでないのはoptimizeの方。
2022/08/02(火) 09:29:37.95ID:PkkC7YEU
はいはいRust最強最強
とりあえず現時点で最強ってことらしいから、スレタイから外していいし、どっかいってくれ
次世代言語のスレだから既に最強のRustを語る必要はない
2022/08/02(火) 10:16:23.49ID:QkVXmXpB
>>926
コードを見てみたが>>430のベンチマークは恣意的過ぎて酷い比較になってたんだな
optimizeの方だけ取り上げてもCとC++では最適化した専用のカウント用テーブルを用いているのにRustだけ放置
結局Rustでも同様の実装をしたらC++よりもRustが速くなった>>602を見て唖然
2022/08/02(火) 10:44:19.34ID:zk210DB0
スピードなんかどうでもよくてメモリが安全なのがいいんだよ
930デフォルトの名無しさん
垢版 |
2022/08/02(火) 11:02:56.88ID:MHrspXIN
狭義のGC あり言語の欠点はGC走って処理が引っ掛かるところかと。
2022/08/02(火) 11:04:01.76ID:SwmbA253
>>929
Rustは確かに高速でも安全でもあるが
同じアルゴリズムとなった元記事のoptimuzed.cとoptimized.cppと>>602のRustコードを見比べると
Rustは抽象度が高く記述できていてコードが読みやすいな
それでいて高速および安全と三者が揃っているのは驚いた
2022/08/02(火) 12:08:32.96ID:Xz99VLOB
GC有りでPythonくらい所有権とか気にせず雑に扱えて、且つRustの効率性を実現できれば、次世代と呼べるのではないかな?
2022/08/02(火) 12:21:54.19ID:Z7Qybw/O
Nimのoptimize版のコードかなり頑張ってるのにC/C++/Rustより倍くらい遅いのはGC言語の限界なのかな
2022/08/02(火) 12:54:54.89ID:aHuzTsGL
tauriってどうなの?価値ある?
2022/08/02(火) 13:01:21.17ID:YfIh+LzH
さあ、Electronで十分だと思うが
2022/08/02(火) 14:25:29.92ID:T6r67EvT
スレタイにRustはないのにここで暴れる理由がわからん
Rustスレで啓蒙活動してればよろしい
937デフォルトの名無しさん
垢版 |
2022/08/02(火) 15:13:23.73ID:EoK+AbMq
>>936
>>1によるとRustは現世代最強言語だから比較として出てくるのは当たり前だろ
2022/08/02(火) 16:47:02.67ID:h0wFySH1
>>937
スレのルールに従えよ。
2022/08/02(火) 17:38:35.92ID:AUryLawh
> スレタイ(順番はRedMonk準拠)以外の言語もok
>
> ※ Rustは現世代最強言語なので除外します

※ Rustは現世代最強言語なので(話題にして良い言語から)除外します
※ Rustは現世代最強言語なので(スレタイから)除外します

どっち?
2022/08/02(火) 18:09:03.75ID:67ChPJTw
NimはGC言語って言われるけど、スタック上にobject(C++のstruct/class相当)をおけるし、コンパイル時にサイズが決まれば配列もスタック上における。
objectの内容が配列や親objectのメモリ上に連続して配置することも可能。
C++言語のように自由にスタック上にデータを置くことが可能。
継承使いたいときとか一つのオブジェクトを複数のreferenceから参照したいときにref objectを使うんだけどこれはヒープに確保されGCで管理される。
Nimは複数のGCを選べるんだけど、--mm:arcオプションをつけるとRustのRcのような参照カウント方式でヒープが管理される。
--mm:orcオプションを使うと循環参照があってもメモリを解放できるようにした参照カウント方式が使われる。
詳しくは
https://nim-lang.org/docs/mm.html
2022/08/02(火) 18:25:25.25ID:VFwTK1q5
>>940
スタックに置けるのは当たり前だからそこはおいといて
[1] 継承を使うだけでヒープになるのは厳しい
[2] ヒープになるだけでGCとなるのは厳しい
[3] C++とRustで参照カウンタが使われる状況になるのはもっとレアケースのみ
中途半端な立ち位置だからNimは厳しい
2022/08/02(火) 18:41:12.53ID:6yaBS9ru
>>939
Rustは現世代言語なので、(話題にして良い)次世代言語から除外します。
だろ。
943デフォルトの名無しさん
垢版 |
2022/08/02(火) 18:42:42.88ID:3Auutz71
Rustで実用的なソフトウェアを書くのは大変骨が折れる。
944デフォルトの名無しさん
垢版 |
2022/08/02(火) 18:45:25.03ID:3Auutz71
厨がウザいからRustは除外します(本音)。
2022/08/02(火) 19:45:31.74ID:Ibj6PLNd
valgrindもまともに使ったことなさげなバカが偉そうにしてるの見ると腹が立つってのはあるわな。
946デフォルトの名無しさん
垢版 |
2022/08/02(火) 19:49:07.82ID:3Auutz71
C/C++で書かれたOSの上で動作してるのに、大言壮語も甚だしいという意見もある。
2022/08/02(火) 19:56:24.89ID:KsV0Heuv
システムプログラミング(笑)に特化してるってんならとっととRust製のOS作れよな
2022/08/02(火) 20:22:23.89ID:49BZsXJW
RustでOSか。
一応 Linux は Rust で書いたソースも受け付けるようになったらしいな。ベースがCなのは変えないそうだが。
2022/08/02(火) 20:56:39.03ID:VFwTK1q5
>>945
今となってはコンパイル時に静的解決できることがほとんどだから需要ないな
実行時にMemcheckなんかやってる時点で時代遅れの敗者
2022/08/02(火) 21:03:37.39ID:67ChPJTw
>>941
ヒープ使わずに継承を使うことはできるけどOOPするときは派生オブジェクトを基底オブジェクトのポインタ経由で使うことが多いでしょ。
QtのサンプルコードでGUI関係のクラスはnewしてヒープに確保している。
https://doc.qt.io/qt-6/qtwidgets-widgets-calculator-example.html

https://nim-lang.org/docs/mm.html
に書いてあるけど参照カウントが不要な場合はコンパイラが自動的に最適化してくれる。
そのおかげでunique_ptrとshared_ptrを使いわけるようなことは考えずに済む。

参照カウンタがどれだけ必要になるかは場合によりけり。
C++やRustでRcが不要なコードならたぶんNimでもref objectを使わずにコードを書けるよ。
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。