次世代言語28 TypeScript Swift Go Kotlin Rust Nim

■ このスレッドは過去ログ倉庫に格納されています
2022/08/29(月) 11:22:16.48ID:5dAad4gs
スレタイ以外の言語もok

前スレ
次世代言語27 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1659655598/
2022/09/05(月) 22:39:25.77ID:LWnBOcCn
利用される分野が違う言語を比較して、なんの参考にしたいんだろう
分野は気にならんの?
2022/09/05(月) 22:43:52.15ID:098gBdTn
>>313
Rust以外は言語機能で本質的な改善になってないからね
2022/09/05(月) 22:45:04.42ID:4OHy49Sd
>>314
jsのマイナスはtsに乗り換えてるんだろけど
Rubyの落下率がひどいな…
2022/09/05(月) 22:49:48.10ID:TWq6epN6
GoとTypescript書ければ仕事には困らないな、うん

Rustは仕事の需要はないけど趣味やOSS活動でやる分にはいいかもしれない
2022/09/05(月) 23:05:10.53ID:g3RfqaIY
>>315
それを言うとそもそもこのスレのスレタイがどうなのよという話になる
2022/09/05(月) 23:11:05.60ID:LWnBOcCn
このスレは言語機能そのものについて語るスレだと思ってた
人気について話したいひともたくさんいるんだろうけど
2022/09/05(月) 23:26:38.48ID:1hFtemgL
Nim言語マニュアルの日本語訳がスゴい

Nim ドキュメンテーションの総覧
https://nim-lang-081.osdn.jp/docs/index.html

Arigatou
322デフォルトの名無しさん
垢版 |
2022/09/05(月) 23:26:43.28ID:iWQD5HeB
Rustはオワコンだから使たらアカンやで。
323デフォルトの名無しさん
垢版 |
2022/09/05(月) 23:27:36.08ID:9iTWKe04
>>311
全てを最初から用意するのは不可能だけど、標準ライブラリで事足りるってのは利用側としてはメリットでかいぞ。
もちろんrustがあえてコア重視してるのはわかるが、お陰で非同期とか今時普通なものも乱立してる。
324デフォルトの名無しさん
垢版 |
2022/09/05(月) 23:31:48.82ID:iWQD5HeB
Rsutと云う泥船に乗せて一緒に沈没させようとしている奴らが居る。
どこの教団や!?
325デフォルトの名無しさん
垢版 |
2022/09/05(月) 23:33:58.91ID:9iTWKe04
>>324
はいはい、おじいちゃんもう寝る時間よ。
326デフォルトの名無しさん
垢版 |
2022/09/05(月) 23:36:58.16ID:iWQD5HeB
Redditの今年最悪の言語に早くもリーチかけてるからな。
2022/09/05(月) 23:57:58.08ID:g3RfqaIY
>>326
どこで集計してるの?
328デフォルトの名無しさん
垢版 |
2022/09/06(火) 00:00:31.26ID:bpHcrLU1
>>318
俺は趣味ならnimにちょっと興味ありな感じ。まだ全く手は出せてないけど。
2022/09/06(火) 08:19:45.27ID:AHhd6ypa
>>321
コンパイラの内部構造とかは勉強になるな。メモリ管理は種類多すぎな気もするが。
330デフォルトの名無しさん
垢版 |
2022/09/06(火) 09:44:45.25ID:9WMtC8UL
>>322
Rubyのことなら同意
2022/09/06(火) 09:47:23.91ID:eR9fijNj
Rust使えない癖に持ち上げまくってるキチガイとRustとRubyの区別のつかないやつが論争する地獄のようなスレ
2022/09/06(火) 10:25:40.40ID:VRQQIzRo
RustとRubyはほぼ同じや
2022/09/06(火) 10:30:10.58ID:eR9fijNj
CのライブラリとJavaのライブラリと.NETが使えてWebAssemblyも記述できる言語ができれば最強
と思ったけどそれってC#やF#じゃん
2022/09/06(火) 10:33:00.76ID:eR9fijNj
https://biotech-lab.org/articles/12849
numpyも使えたのか
もう全部C#でいいんじゃないかな
2022/09/06(火) 10:50:43.10ID:c9hFcGPw
>>200のグラフを見ると
C#やNimは遅くて
C++やRustより2-3倍も遅い理由はなぜ?
2022/09/06(火) 10:54:20.03ID:eR9fijNj
>>335
誤差
10の13乗ものループでそれだけのミリ秒数しか違いが出ないということは実際にその違いが問題になることはほとんどない
2022/09/06(火) 10:55:43.20ID:eR9fijNj
要するにそのグラフの差は五十歩百歩でしかなくそれ以上の速度が必要ならスーパーコンピュータを視野に入れることになる
2022/09/06(火) 11:22:14.85ID:7s2bxSL8
スーパーコンピュータなら速く動くとかいうことは全くないけどな
なんならオーバークロックしたゲーミングPCとかのほうが速い
スパコンはPCではそもそも実行不可能なレベルの超大規模な問題を解くためのもので
普通のプログラムが魔法のように速く動くという代物ではない
2022/09/06(火) 11:23:08.83ID:VRQQIzRo
教プロで13乗も扱わねえよ
多くても7,8ぐらい
2022/09/06(火) 11:38:16.60ID:hbXRPtoA
>>331
そもそも地獄レベルの問題を処理する競技が流行ってるので
2022/09/06(火) 12:01:26.94ID:6ZyYoNhQ
>>339
温すぎて笑う
ブルートフォースで解けるレベルじゃん
PaizaのAランクの話でもしてんの?
2022/09/06(火) 12:04:20.22ID:6ZyYoNhQ
>>338
競プロの問題は並列化で速く解けることも多いからスパコンの得意とするところだぞ
2022/09/06(火) 12:31:10.58ID:QxRWO4Sk
Ruby は遅いから、1秒で100万回ループ。
これがJIT で、1千万回になる

でも、Rails などでは、10万個をJITしても、そんなに速くならない。
I/O 中心の処理では効果がない

外部にアクセスせずに、延々と行列演算を繰り返すような、
CPU セントリックな処理では効果があるのかも
344デフォルトの名無しさん
垢版 |
2022/09/06(火) 12:45:16.87ID:9WMtC8UL
Nimは始まる前に終わりそう
がんがれ
2022/09/06(火) 14:09:11.24ID:0lLJmQPI
>>342
実際のスパコン触ってみれば分かるんだけど、競プロの問題って小さすぎて並列性がなさすぎるんよ
1秒以内で終わっちゃうようだとMPIのコストどころかGPUにオフロードするコストすら回収できるか怪しい
2022/09/06(火) 14:13:42.45ID:zHtqeu+H
>>345
ダイクストラ法とか結構出番あるだろ
なんで並列化しねーの?
2022/09/06(火) 14:47:11.13ID:Uhu0FGeL
Amazonが>>9の記事で書いているように
C/C++/Rustで書けば2〜10倍は速くなり
それは電気代やCo2排出も同様になる
さらに省メモリになる点も考慮すると
サーバーやクラウド利用コストは確実に数倍差
言語の選択を変えるだけで支出も激減
2022/09/06(火) 14:57:13.57ID:zHtqeu+H
ハードウェアアクセスの速度が変わらんのにベンチマークだけで胡散臭いこと言うなよ
2022/09/06(火) 15:08:57.93ID:gWeaoLnz
>>346
並列性がないというか、並列化しても元々の実行時間が短いからオーバーヘッドが大きすぎて割に合わないという話では
スパコンのジョブって短くても実行時間数十分だったりするから競プロとは前提が違う
2022/09/06(火) 15:28:54.40ID:VRQQIzRo
元々の問題設計がN^2で失格 NやNlogNオーダーで通るようなってるとしたら
N^2で並列化出来てもTLEだわ
2022/09/06(火) 15:49:30.99ID:hbXRPtoA
誰でも思いつくのはGCの並列化だが
GCは何言語で書かれているのかを誰も知らない
352デフォルトの名無しさん
垢版 |
2022/09/06(火) 17:20:08.41ID:ri7pjbsX
コンパイル型の実行速度でスクリプトでも実行でき、コンパイルもできる言語が欲しい。反対を言えばbashのように
1行ずつ実行し、実行中で書き換えられることまでは必要ない。
単純なスカラーのループを書いたら、一台のCPUのレジスターだけをブン回す機械語のコードが生成されて欲しい。
A*Bと書くだけで千の計算を搭載されているメジャーなGPUで勝手に計算したり、あるいは千のマシンに分散して
実行して巨大な行列の積をポンと計算してもらいたい。
型だって必要ないなら指定したくない。もしポリモーフィックな関数が必要な時には、ジェネリックプログラミングを
使ってアルゴリズムを一度だけ書いて、あとは全ての型に使いたい。
ガーベージコレクション、あるいはメモリーマネージメントは循環参照や多重参照がなければRustのようにスコープを
抜けたら基本は消えるだけで十分でもあるが、循環参照をもったら自動でサイクリックGCも欲しい
並列化、あるいは非同期化に余計なコストを払いたくない、async/awaitなんてもってのほか論外、世紀の間違い。
ErlangやGoのようにspawnやGoで軽量プロセス起動は仕方ないにしても、これは必須ではなく、デコレーションで
あって並列ではなくとも動ける控えめなヒント情報であってほしい
ドライバ、あるいはOSやカーネルなどのハードウェアよりな開発にも利用できてほしいけど、例外あるいはpanicも欲しい
353デフォルトの名無しさん
垢版 |
2022/09/06(火) 18:45:34.78ID:txnX2wDb
Amazonの言うこと信じる人もいるんだ。
そりゃ霊感商法もなくならないわ。
354デフォルトの名無しさん
垢版 |
2022/09/06(火) 18:50:05.82ID:iU1ybZ8L
GCしないでプロセスごと捨てるのがスマートよ
2022/09/06(火) 20:47:28.58ID:NO/n5LTM
>>321
https://nim-lang-081.osdn.jp/docs/tut1.html
> # 前方宣言:
> proc even(n: int): bool

前方宣言てw
これ書かされる言語まだあるんだ

> プロシージャで呼び出し元の引数を変更する必要があるならば、 var パラメータを使います。
> proc divmod(a, b: int; res, remainder: var int) =

パスカルのVariable parameterっぽいなこれ
ちなパスカルだと

https://wiki.freepascal.org/Variable_parameter
> procedure xorSwap(var left, right: integer);

こっち側にvarを書く
2022/09/06(火) 21:02:15.19ID:+TeoQt4K
>>355
immutableかmutableかの区別宣言は絶対に必要だから
あとは各言語でそれをどのように表現するかだけでしょ
それをvar val let const など各言語で色んな表現の使い分けがあり更に引数でどうするかだけ
>>241のケースも考慮するとRustのmut付加方式がベストな解決かな
2022/09/06(火) 21:05:47.04ID:NO/n5LTM
ん?
パラメータのいわゆる参照渡しの話なんだけどな
2022/09/06(火) 21:17:25.60ID:MV3crhGe
ponylangだとbehaviorが終わるごとに該当アクターでGCを回すからプログラムとしては停止しないんだけども、これを並列GCですって言うのもなんだかなといった風情
2022/09/06(火) 21:21:35.81ID:3wQQbwTr
>>355
>>357

何が ? なのかも少し詳しく
2022/09/06(火) 21:31:19.57ID:ItiT2cL1
MPIバリバリ使ってるけど競プロの問題を解くようなタスクでは使わないよ
課題設定があまりにも違い過ぎる
2022/09/06(火) 21:37:52.05ID:6CvxnJgX
>>357
Rustはその2種類の区別もmutの位置で区別できてるね

①引数が値渡しで来て関数内で値を書き換える場合
例: fn func1(mut x: i32) { …
 →値渡しなので呼び出し元には影響なし

➁引数が参照渡しで来て関数内で参照元を書き換える場合
例: fn func2(x: &mut i32) { …
 →可変参照渡しなので呼び出し元の対象は書き換わりうる
2022/09/06(火) 22:22:04.19ID:jOWG7AxE
あんた上手に振る舞えって言われてたやつだろ
Rustは出来るじゃねえよw 当たり前だ
お前が議論を理解出来てなかっただけだろ
そういうところが周りをイラつかせてるんだぜ
2022/09/06(火) 22:30:02.86ID:NO/n5LTM
>>361
> Rustはその2種類の区別もmutの位置で区別できてるね

二種類の区別?

> 例: fn func1(mut x: i32) { …
> 例: fn func2(x: &mut i32) { …

これリファレンスかどうかってmutの位置関係ある?
Rustよくわからんけど & つけたらリファレンスになるだけじゃないの?
何の話を俺にしたいの?

>>359
Nimの参照渡しの表現に見覚えあるわってレスしただけなんよ俺はw
2022/09/06(火) 22:34:57.09ID:2HxKYUoj
Rustだと両方ができて当たり前だが
プログラミング言語の中には
値を渡すか参照を渡すかをプログラマーが選べない言語も意外と多い
全てがどちらかに決められていたり
型によって各々どちらかに決められたり
メジャーな言語でも制限があったりする
365デフォルトの名無しさん
垢版 |
2022/09/06(火) 22:40:49.84ID:V53xvAGb
>>363
Rustは2種類の参照渡しがある
Tを参照元の型とすると
&T が(可変じゃない)参照
&mut T が可変参照
だから貴方が書いた>>355の話と同じじゃないかな
2022/09/06(火) 22:43:24.65ID:ZgGRtw1t
>>362 >>364 本当だ自分の勘違いを棚に上げている
2022/09/06(火) 22:44:16.65ID:NO/n5LTM
パスカル書いてた人なら
「パスカルなついw 引数んとこにvarって書いてたなw」
で終わる話
皆の衆なんか混乱させてすまんかったな(´・ω・`)
2022/09/06(火) 22:47:53.44ID:ZgGRtw1t
上手いね 見習いたまえ
2022/09/06(火) 22:53:11.35ID:tijl2CjL
複オジに相手にしてもイライラするだけやぞ
もう少しスルー力の鍛えようや
2022/09/06(火) 22:53:17.60ID:2HxKYUoj
可変参照を渡すか可変じゃない参照を渡すかの区別がない言語もある
区別がある言語でもさらに2種類に分かれて
呼び出される関数でその参照が可変かどうか区別するだけの言語と
呼び出し側でも渡す参照が可変かどうか区別できる言語に分かれる
それら3種類のうち最後のタイプの言語が最も安全にプログラミングできる
2022/09/06(火) 22:58:14.58ID:ZgGRtw1t
野放しは危険やで NGワードでtag付けする?
>>NNN複オジ
372デフォルトの名無しさん
垢版 |
2022/09/06(火) 23:04:31.77ID:V53xvAGb
&Tを渡すか&mut Tを渡すかを渡す側で区別できない言語だと書き換えられちゃうのか分からない点で困るね
その場合でも呼び出す関数の引数宣言を見に行けばいいけど、そこにも可変かどうか宣言できない言語もあって絶望的なことも
2022/09/06(火) 23:10:15.88ID:ZgGRtw1t
自演でしょ
>>372
複オジ
2022/09/06(火) 23:12:00.01ID:p3/oNdmv
その点もRustが一番考えられてる仕様のような
色んな言語の中で一番ちゃんときちんと区別してくれていてプログラミングする上で安心感もあるなあ
2022/09/06(火) 23:18:07.56ID:ZgGRtw1t
一番宣言
>>374
複オジ
2022/09/06(火) 23:23:59.02ID:MV3crhGe
ponyなら書き込みどころか読み込みまで制限できるぜ
参照の持ち方だけで6つもあるのやばいだろと思ったが減らせる見込みもないぜ
2022/09/06(火) 23:27:00.72ID:ZgGRtw1t
>>376いいねこのスレにふさわしい
2022/09/06(火) 23:29:15.38ID:ItiT2cL1
Nim好きなんだけど何で売れんかね
pythonからの乗り換えに最適なんだが
2022/09/06(火) 23:30:19.86ID:ZgGRtw1t
よく考えたらこれも組織票野党が投票率下がった方が有利なように、スレ乗っ取りの下地作り?
>>369複?オジ?
2022/09/06(火) 23:30:47.03ID:3jr2SH77
ponyとか真面目な話がしたいならワッチョイスレ行ったほうがいいよ
複おじをいじって遊びたいならここでいいけど
381デフォルトの名無しさん
垢版 |
2022/09/06(火) 23:34:47.24ID:V53xvAGb
昔は変数もmutableとimmutableの区別をしないのが多数派だった時代もあったそうだから
新しく作られた言語のほうが色々と新たな進化ができて有利なのかもね
2022/09/06(火) 23:36:47.66ID:ZgGRtw1t
>>378いいね ちょっと動かせるデモサイトで乗り換え例のようなものはあるの?
2022/09/06(火) 23:39:56.37ID:W/Xh3l1r
>>376
マジ?
ponyで読み込みを制限して書き込みのみにするのはどの修飾子を使えばいいの?
2022/09/06(火) 23:42:44.75ID:ZgGRtw1t
>>380いや このスレが乗っ取られないことが重要 tag付けhelp me pls
2022/09/06(火) 23:50:57.29ID:ZgGRtw1t
>>381そうそう設計時点での思想って重要 増改築は面倒だから でも増改築できる柔軟性も必要

そろそろ落ちます tag付けhelp us pls
2022/09/06(火) 23:55:28.57ID:k32oXi62
Ponyで参照はsingle writer xor multiple readersが課されているためwriterがいる時は読み込みができない
つまりRustと同じ
387デフォルトの名無しさん
垢版 |
2022/09/07(水) 00:17:09.26ID:ordz3g2+
>>383
食いつかれると思ってなかったから少し語弊がある書き込みだったかもしれない
ponyは変数ごとにReference Capabilityという修飾子を持ってて、それで読み書きと変数をコピーしたときの権限を管理してる
読みを制限しながら書き込めるのはisoとtrn

>>386
Rustって変数の参照を作らせないって設定はできるんだっけ?
あと読み書きしないけど値の存在だけは確認したいときってどうすんの?
2022/09/07(水) 00:39:18.74ID:8j1OJp6D
ほとんどの言語はオブジェクトとかヒープで確保したものとか参照のみサポートが多いよね
参照を作らせなかったらどうやってアクセスするのだろう
移動しかないか
2022/09/07(水) 01:29:02.34ID:zcaR9K+x
>>388
へーRustにできないことがあるんだね
スタックかヒープなんて聞いてないよ
2022/09/07(水) 02:20:15.23ID:NRm/XQ9U
Rustなら&selfメソッドを作らずにselfメソッドだけを用意すれば
その型は参照に対して全く働かずに移動に対してのみ使える型にすることはできるな
もちろんそのままだと移動で消費してしまい消えるのでそれを避けたい時Selfで再び自分を返すことになる
不便だが参照を全く使わずともその範囲で色々やれるようだ
2022/09/07(水) 02:31:29.39ID:nvFpxuri
移動も聞いてないぞ
2022/09/07(水) 03:01:09.81ID:NRm/XQ9U
>>391
参照を使わないなら値そのものを移動するしかないだろ
他に何を期待してるんだ?
2022/09/07(水) 03:02:32.55ID:ossJLtb4
>>380
ここは複おじを育てるスレだからな
育成ゲームみたいなもん
2022/09/07(水) 03:08:26.53ID:FVgAnmdd
ははぁーん

聞かれたことに答えない
息をはくように話をそらす
それた話を修正しない
そもそも何を聞かれたかわかっていない

これって?

もしかして国語で苦労した?
tag付けて欲しい?
2022/09/07(水) 03:19:36.97ID:2H+EvabS
Ponyでもconsumeにより参照を使わず移動になるよ
2022/09/07(水) 03:25:07.36ID:Lg2r352+
それた話を修正しない

Goスレで論破されて敗走してきたんだ
でここに居つくために育成ゲームだとホザキ始めた
2022/09/07(水) 04:13:08.28ID:2H+EvabS
なんのことやら
参照を全く使わないのは無理だけど
単独参照となり読み書き自由に専有できるのならあるよー
Ponyならiso
Rustなら&mut
2022/09/07(水) 04:15:54.48ID:GNmKbNsR
そらした話は修正しない
そもそも何を聞かれたかわかっていないフリ

Flutterスレ盛り上げてこいよ
2022/09/07(水) 05:49:18.66ID:a/SEXojX
誰にも参照されてないのにGCされない現象を実現したいわけではなさそう
ということは「参照を作らせない」とはいえ参照は作れるんだよね
2022/09/07(水) 05:54:23.55ID:OvNIIrS4
そらした話は修正しない
すり替えた土俵ではRustと〜は同等
そもそも何を聞かれたかなんて知らない。無意味 気持ち悪い
参照とかGCの事は実はよく知らない。育成してくれ

Flutterスレ盛り上げてこいよ
2022/09/07(水) 06:26:49.06ID:t2gi/CWf
>>378
Pythonで十分だからじゃね
情報の多さが違う
Pythonは遅いのが欠点だけど遅いのが問題になることってそんなにないんだよねえ
2022/09/07(水) 06:52:15.00ID:ordz3g2+
>>390
Rustの構造体は中身が非公開だからメソッド制限でいけるのか
失念してたわ
あとはtrnあたりの挙動を再現できるかだな

>>397
&mutだと新しい読み取り専用の参照が出てくるの防げなくない?
2022/09/07(水) 06:53:00.83ID:nA6d9voX
どうしても速さが必要なところだけRustにするとしても
それ以外はPythonで十分な気がする
2022/09/07(水) 07:00:12.32ID:7SEt3XdA
>>403
実は速度の事、よく知らない
つい先日 自動ベクトル化とかSIMDとか育成された。育成を要求した俺すごい

Flutterスレ盛り上げてこいよ
2022/09/07(水) 07:13:06.99ID:+WGAm7/P
>>386 >>397
GoスレでSIMDをふりかざしたのに論破された。更なる育成を要求する

Flutterスレ盛り上げてこいよ
2022/09/07(水) 07:16:05.47ID:hRBB26Yn
>>402
弱くなる方向は何も問題無いでしょう
しかもRustは参照のライフタイムもコンパイラが管理把握できているため大丈夫でしょう
Ponyはその分をプログラマーが細かく指定して更にrecoverなど変化させていくことで補うわけです
2022/09/07(水) 07:18:00.16ID:ordz3g2+
>>399
ponyだとどの変数も参照だから最初の参照は作れる
で、その参照から新しい参照を複製するときに複製さきの権限を制御する

Rustだと最初に作る変数は値のはずだから雑に変えてる
2022/09/07(水) 07:21:36.81ID:6xyGFf7w
>>406
Rustはコンパイラが管理で安全 Pnoyはプログラマーの責任
Rustスレでビット幅なんて間違えていない。コンパイラが保証した

Flutterスレ盛り上げてこいよ
2022/09/07(水) 07:23:19.72ID:8x7iT+wj
ponyは面倒すぎて萎える
こんな参照の管理くらいコンパイラが自動的にやるべきで人間に押し付けるのは悪手
2022/09/07(水) 07:30:00.20ID:ANYrsupz
>>409
参照とか永遠に分からなくてもコンパイラが保証してくれるRustすごい、俺すごい。成長した

Flutterスレ盛り上げてこいよ
2022/09/07(水) 07:42:15.35ID:ordz3g2+
>>406
確かにborrow checkerも働くみたいだし機能上の問題はないようだね
とはいえ、元の発言は単独参照で読みを占有できると言ってるからね
2022/09/07(水) 07:45:25.38ID:+d3zlyKh
参照とかスタックとかヒープ、移動、元の発言なんて実はよく知らない。
所有権の複製こそ最善手
永遠に分からなくてもコンパイラが保証してくれるRustすごい、俺すごい。成長した
だがいつでも育成を要求する扉は開いている

Flutterスレ盛り上げてこいよ
413デフォルトの名無しさん
垢版 |
2022/09/07(水) 07:57:54.75ID:eUEKoWnI
>>412
すみません、所有権の複製ってなんですか...?
clone()とかでオブジェクトをコピーすると、複製後のオブジェクトに対して、別の新しい所有権がただ一つ代入先の変数に束縛されるという認識だったのですが...
2022/09/07(水) 08:06:19.67ID:gZR3Yo8R
>>413
ゴネれば相手が勝手に折れる
ゴネ権の複製こそ最善手
いつでも妥協を要求するカードを複製している

Flutterスレ盛り上げてこいよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況