次世代言語26 TypeScript Swift Go Kotlin Nim

■ このスレッドは過去ログ倉庫に格納されています
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/07/30(土) 00:21:22.07ID:ubkbv7J1
>>659
アンチ死亡でも何でも無くて、順当な採用じゃないの?
これが、全てRust採用だったら、アンチ死亡で良かったかも。
679デフォルトの名無しさん
垢版 |
2022/07/30(土) 00:39:25.79ID:jLcNrHr1
>>678
RustアンチってRustの有用性をほんの少しも認めない印象あったから、
大手の採用事例一つ挙げれば逝くと思ったが、
それならそもそもGoogleが採用した段階で死んでたな
2022/07/30(土) 00:47:59.08ID:YI8isAMR
サーバサイドやOSのそういう分野はRust
後は別の言語
681デフォルトの名無しさん
垢版 |
2022/07/30(土) 00:49:11.37ID:7D+RM/xA
>>672
領域をこまめに解放するより、あとになってからまとめて解放する方が全体的な性能は良いでしょうよ。
2022/07/30(土) 00:56:14.93ID:vZ7IHR0I
どうせRustなんて流行らずに消えるよ
サーバーサイドで使う理由が無い
Goもそうだけど何かこういう変な独自性がある自己満足言語は消える
683デフォルトの名無しさん
垢版 |
2022/07/30(土) 01:06:34.71ID:7D+RM/xA
大企業がバックについて広めようとしたら広まるよ。
C++なんてあんなヘンテコな言語が広まったのもMSが広めたようなもんだし。
当初はSTLも無かったからな。
2022/07/30(土) 01:13:21.06ID:vZ7IHR0I
C++は言うほどヘンテコでも無くね?
Cを使っていれば構造体にメソッドが追加出来るだけぐらいなもんだし
クラスの継承やら仮想関数みたいなC++の要素はあるけど別に使わなくてもいいし
今まで使わずに書いてて何の問題も無かった訳で
むしろSTLやらそういう余計な要素がヘンテコみたいに思える原因では?
後はMSの独自拡張とかな
685デフォルトの名無しさん
垢版 |
2022/07/30(土) 01:30:32.56ID:GJbGwXKe
>>684
構造体にメソッドを追加というのはC言語そのものだぞ。

構造体に関数へのポインタを持たせるのは、よくゲームプログラムのキャラクタに使われた。

C言語はOSの進化についていけなかった。C++だとコード量を一気に減らせる。

オープンソースソフトウェアだと、ほぼC++で作られている。C言語で高度なものを作る時代なんてとっくに終わっている。
2022/07/30(土) 01:34:19.10ID:zk4vAp+v
>>681
どこを解放すべきか事前にわかってるならね
687デフォルトの名無しさん
垢版 |
2022/07/30(土) 01:41:46.71ID:GJbGwXKe
おまえら、解放するかどうかはOS次第だから、あまり解放と言わない方がいい。

語弊がある。
2022/07/30(土) 02:10:34.73ID:EFDLI0My
>>676
ゼロコスト抽象化が可能なことも多い
だから抽象的に書くと常に遅くなるわけではない
そして遅くならない抽象的な書き方が可能ならそれをなるべくした方が好ましい
また遅くならない抽象的な書き方をできることの多いプログラミング言語を使った方が好ましい
更に、差が非常にわずかならば少しだけ遅くなりうる抽象化であっても生産性や保守面から抽象的に書いた方が好ましい
2022/07/30(土) 02:16:12.90ID:EFDLI0My
>>681
「後でまとめて解放する」がガベージコレクション(GC)を指しているならば
当然GCの方が遅い
GCは色んな方式を取ることができる が結局>>449がまとめているような3方式かその変種となる
いずれの方式でも解放すべきものと残すものとを区別判断するところでGCはコストが高くなる
その判断をコンパイル時に静的に確定できる即時解放の方式が当然有利
690デフォルトの名無しさん
垢版 |
2022/07/30(土) 03:26:11.17ID:GJbGwXKe
>>688
だから多少、遅くなることはデメリットではないと自分で言ってしまっているじゃないか。
691デフォルトの名無しさん
垢版 |
2022/07/30(土) 03:28:20.76ID:GJbGwXKe
>>689
そんなレベルの低いアルゴリズムじゃないし、そもそも本当に解放しているかどうかなんてわからない。

解放は解放しても問題ないと通知しているだけで、解放するかどうかはOS側の仕様による。
692デフォルトの名無しさん
垢版 |
2022/07/30(土) 03:57:27.65ID:5b4tKXes
>>691
誰が解放するにしても、かかるコストは同じだろ
メモリには限界があるからいつかは解放しないとならん
で、その時にGCは遅くなる
2022/07/30(土) 04:45:42.22ID:EFDLI0My
>>691
レイヤ切り分けが出来ていないのは致命的
プログラミング言語を用いるプログラマーとしては言語が提供する何らかのアロケータへ言語が提供する機構により引き渡されれば「解放」はおしまい
アロケータ内部のメモリ管理もOSへの各種システムコールもOSによるメモリ管理もいずれも詳細を知らずともプログラミングできる
レイヤの切り分けが明確になされているから他のレイヤの内部の仕組みに依存せず扱える
694デフォルトの名無しさん
垢版 |
2022/07/30(土) 06:17:34.81ID:PTbJKKoA
どれだけ言い訳しようとも、RustがPHPに負けた事実は覆らない。
2022/07/30(土) 06:17:46.92ID:KSdXIpAO
そのうちnim風Rust出てくるんじゃない?
Rust初心者お断りだし、つけ入る隙はあるかと。
2022/07/30(土) 06:27:42.95ID:H9aJG6PT
>>658
いや、ならんでしょ。
安全性の劣る言語に速い言われても、そういうこともあるかもねって感じだし。
2022/07/30(土) 06:32:28.04ID:zHogqexf
>>690
突っ込まれてるのは
>>676 > 高水準言語と速度は「完全な」トレードオフの関係だよ
の部分だろ
トレードオフでない場合もあるって話だしC/C++やrustは可能な限りそれを実現しようとしてる
2022/07/30(土) 06:41:15.45ID:KSdXIpAO
>>692
メモリ領域を確保したままにして再利用するのはGCで良くあるよ。
マネージド ヒープとかスタックと同じくらい高速と自慢しているし。
2022/07/30(土) 07:15:11.54ID:SG/QuGLs
>>694
RustがPHPに負けたことは一度もありません
嘘を連呼してもムダです
2022/07/30(土) 07:22:44.08ID:niU/nXdl
>>698
そこは関係なくGC言語は必ず遅くなる
>>449のいずれかの方式のコストがGC言語には必ず加わるためだ
そして実際にC/C++/Rust並みに速いGC言語は存在しない
701デフォルトの名無しさん
垢版 |
2022/07/30(土) 07:35:49.92ID:PTbJKKoA
Rustは速さではなく精密さを目指しているのです。
したがってPHPに負けたことは問題になりません。
2022/07/30(土) 07:56:05.87ID:gpkGfFAa
>>701
それなのにパフォーマンスがいいから最強だとか勘違いしてるのがRust信者
適材適所というものを理解できない連中

あくまでもOS開発のための言語だね
2022/07/30(土) 07:59:49.65ID:aLG5Mg1K
>>695
Rustは非GC言語の中で最も初心者向けでしょ
メモリ解放は自動だし完全なnull安全やデータ競合安全などRustは初心者でも困らないようになっているよ
あとプログラミングをしやすいことも大きいね
2022/07/30(土) 08:24:37.30ID:22goHl66
負けたっていいじゃない。にんげんだもの。
2022/07/30(土) 08:24:59.98ID:wHG6g3qw
Facebook(現Meta)が本格的にRust利用を広げるってよ
サーバーサイドとツール類にRust採用らしい
https://engineering.fb.com/2022/07/27/developer-tools/programming-languages-endorsed-for-server-side-use-at-meta/
706デフォルトの名無しさん
垢版 |
2022/07/30(土) 08:30:05.00ID:PTbJKKoA
PHPで大きくなったのにな。
Rustで小さくなるのかな。
2022/07/30(土) 08:55:54.39ID:1qBADAB3
レトロゲーは永久保存され
クラウドはサービス終了する
クラウドとはそういうもの
2022/07/30(土) 09:19:48.59ID:nZbTiPiA
>>705
Rustのプログラミング生産性の高さから当然そういう流れになっていくわな
2022/07/30(土) 09:29:11.23ID:YI8isAMR
>>705
多分ザッカーバーグはRust使えないと思うわ
2022/07/30(土) 09:54:29.08ID:zHogqexf
いきなりどうした?
ザッカーバーグがrust使う必要なんてないだろ
2022/07/30(土) 10:01:43.95ID:5YkC3TrK
>>705
そのように多くの分野で今後じわじわとRustが主流になっていくのだろう
2022/07/30(土) 10:03:14.41ID:BLhd9RDX
生産性はGoが最強
ソースはKubernetesやGoogleなど大規模なソフトウェアで使われててコンテナ周りのツールはほぼGo製であること

生産性を考えたらGC言語であることは必須である
2022/07/30(土) 10:13:42.65ID:5YkC3TrK
>>712
それはRustが今のように安定&普及する前に作られただけやろ
今から新たなものはGoではなくRustとなりつつある
2022/07/30(土) 10:35:49.96ID:ubkbv7J1
facebookなら、大規模だから効率性にコスト割いても効果があるし、維持する為の人も確保できるだろうし、いいじゃん。
2022/07/30(土) 11:02:06.99ID:BLhd9RDX
>>713
なんかそういうデータあるんですか?それってあなたの感想ですよね?
2022/07/30(土) 11:07:03.94ID:ekgh2oqS
Rustは書きやすさと保守性の良さがええね
2022/07/30(土) 11:16:02.54ID:BN91FBRx
悔しかったらrustでdockerなりkubernetesなり作ったらいいのに。
できないよね?
2022/07/30(土) 11:16:50.46ID:YI8isAMR
え?
Rustは学びにくく書きにくく保守しにくいんだけど
もしかしてc++なんかと比較してる?
2022/07/30(土) 11:17:59.70ID:BLhd9RDX
ちなみにGoが広く使われているソースね
https://landscape.cncf.io/

有名なのを適当に上げるだけでも
prometheus,helm,vitess,jaeger,argocd,istio,influxdb

とか最近のコンテナ・クラウド周りのツールはほとんどGo製だね

Rustはあまり使われてないな、使われているにしてもリソース効率やパフォーマンスがシビアなソフトウェアであって
これは生産性を犠牲にしコストを払ったうえでリソース効率やパフォーマンスを追い求めて選択しているようなソフトウェアしかない
リソース効率やパフォーマンスより生産性を重視する場合はRustがGoに勝ることは100%ありえない
当たり前ながらGC言語が生産性で勝ることはないから、ソフトウェアの特性によってRustが適していることがあるのであって
Rust信者が全てGoを置き換えるとか吹聴しているの見ると笑ってしまうわ
2022/07/30(土) 11:30:44.56ID:oF6V4sWv
クラウド周りと相性いいのはgoroutineが便利だから

Goはエラーハンドリングどうにかしてくれないと仕方なく使うことはあっても積極的に使う気にはなれない
2022/07/30(土) 11:54:45.44ID:m0SGpnW3
Rust作った人(Graydon Hoare)より
Go作った人(ケン・トンプソン)のほうが賢くて偉大だよね
2022/07/30(土) 12:07:35.65ID:1qBADAB3
多神教を許さない者だけが二者択一しなさい
2022/07/30(土) 12:09:21.35ID:m0SGpnW3
腕が四本頭脳が二個あったら二つ言語選んでいいと思うけど
2022/07/30(土) 12:10:40.26ID:YI8isAMR
そんなことを言いだしたら
結局人類はjavascriptかcの二択になってしまう
この二つは今のところ替えが効かない

そんなの嫌だ
2022/07/30(土) 12:12:50.66ID:v+3Xyc3D
C++がウンコすぎるからGoが活躍する余地があった
2022/07/30(土) 12:33:28.27ID:s2073y24
>>700
オブジェクト生成が多くなると、GC実行コストよりメモリ領域確保・解放コストの方が高くなるという話があったかと思うけど、どこだか忘れた。
スタックの話をするなら、Javaとかでもエスケープ解析してスタック利用していると思うけど。どうなのかね?
2022/07/30(土) 12:50:07.02ID:zwdjEDGk
>>726
alloc/deallocをゴリゴリ呼ぶような処理は普通に書くとGC言語がはやくなることは多々ある
低レイヤーの言語でそれやるときはまとめて確保/解放するように書く
2022/07/30(土) 12:51:57.77ID:s2073y24
そういや、c/c++みたいにスタックに置くインスタンスとヒープに置くインスタンスを区別する言語てどれくらいあるのかしらん?
2022/07/30(土) 12:54:04.01ID:EF2/0cvh
Rustさえ使えばメモリは安心安全
2022/07/30(土) 12:57:52.28ID:YI8isAMR
>>729
コードが書き終わるかどうかは保証なし
2022/07/30(土) 13:03:07.00ID:s2073y24
>>729
初心者は無理だね。
初心者を無視したHaskellとかLispの二の舞。
2022/07/30(土) 13:09:33.66ID:/CjwjaIl
Haskellになれるんなら上出来じゃん
2022/07/30(土) 13:11:20.56ID:YI8isAMR
もうHaskellでしかコード書かないとかいう記事がいっぱいあったけど
あの人たちどうしたん?

副作用とかのご高説投げ飛ばして
もうRustでしかコード書かないって言ってそうなんだけど
734デフォルトの名無しさん
垢版 |
2022/07/30(土) 13:18:47.71ID:ZTMi/t93
ここまで全然次世代言語の話無し
2022/07/30(土) 13:26:07.79ID:lvsm0et/
>>727
アロケータの性能が問題になる場合はc/c++はそれ専用のアロケータモジュールを自前で用意するのが普通。
736デフォルトの名無しさん
垢版 |
2022/07/30(土) 13:34:22.66ID:PTbJKKoA
>>733
上位互換のRustへ移行したのでは?
2022/07/30(土) 13:41:46.57ID:YBnrvLJY
>>734
このスレはRustゴブリンやGoゴブリンに乗っ取られたのでシン・次世代言語スレを建ててそこでちゃんとした次世代言語の話に花を咲かせればよいのでは。
738デフォルトの名無しさん
垢版 |
2022/07/30(土) 13:45:54.51ID:PTbJKKoA
だから5chで次世代言語と言えば織田信長しかないのに、なんで無視するのさ。
2022/07/30(土) 14:03:54.41ID:7y/PdVwP
だって君たちFlixもGleamもスルーするじゃん……
2022/07/30(土) 14:15:21.87ID:YI8isAMR
ファッションプログラマはいりません
741デフォルトの名無しさん
垢版 |
2022/07/30(土) 14:23:08.85ID:PTbJKKoA
>>740
ファッションプログラマで検索してみると、株式会社オプトの人事部インタビューが出てきた。
ずいぶん上からなご意見をお持ちのようで、これじゃあ利益を上げる優秀な人間は採用できないだろうと思った。
742デフォルトの名無しさん
垢版 |
2022/07/30(土) 14:43:34.19ID:5b4tKXes
>>739
話題を振ってください
2022/07/30(土) 15:02:59.30ID:v+3Xyc3D
次世代言語といえばPonyが良いと思うよ
2022/07/30(土) 15:04:59.08ID:v+3Xyc3D
PonyはRustよりも安全
データ競合だけでなく、デッドロック、実行時例外が起きないことも保証されてる
745デフォルトの名無しさん
垢版 |
2022/07/30(土) 15:08:15.54ID:PTbJKKoA
良いかもしれんね。
2022/07/30(土) 15:23:50.77ID:jrTi3WXO
>>735
arenaで検索してね
2022/07/30(土) 15:27:43.89ID:1qBADAB3
>>733
副作用をエラーにするHaskellコンパイラは存在しない
副作用を誹謗中傷する人間が負けてコンパイラが勝っただけ
2022/07/30(土) 15:34:56.21ID:YI8isAMR
昔聞いた話

大隈重信が若いころ
字を書くのは自分が一番上手だ誰にも負けないと吹聴していた

ある時明らかに自分より上手な人が現れてそれでもう字は書かない
書かないから下手もクソもないって言いだして残りの人生で字を書かなかった
749デフォルトの名無しさん
垢版 |
2022/07/30(土) 15:38:59.20ID:5b4tKXes
>>743
面白いね
パフォーマンスに重点を置いてるみたいだが、GCあるし、ストップザワールドは発生しないんかな
アクターの概念も興味深い、意外に実践的な言語なのかも
2022/07/30(土) 15:39:13.75ID:ubkbv7J1
>>729
メモリ安全は、CやC++みたいな代替になり得る言語に対してはアピールになるけれど、GC有り言語に対しては、意味ないよね。
2022/07/30(土) 15:58:08.34ID:1qBADAB3
並行並列マルチタスクに対してはGCがアピールになりにくい

ブラウザのクッキーを消してもサーバー側のゴミは消えないから
2022/07/30(土) 15:59:01.24ID:KHG8L45z
>>750
メモリリークは「メモリ安全」だから仕様としてカバーしないおまけ付き。
2022/07/30(土) 16:19:21.47ID:JJS+3w9D
>>750
GC言語ならNull安全機構が現代言語の基礎機能
2022/07/30(土) 16:34:35.02ID:3yfXvlmT
>>742
>>56
755デフォルトの名無しさん
垢版 |
2022/07/30(土) 18:48:59.58ID:PTbJKKoA
ジョジョかよ。
756デフォルトの名無しさん
垢版 |
2022/07/30(土) 19:17:35.02ID:7D+RM/xA
GCあり言語はもうお腹いっぱいなのでGC無しorGC制御できる言語で頼みますわ。
757デフォルトの名無しさん
垢版 |
2022/07/30(土) 19:20:31.68ID:PTbJKKoA
C++はメモリー管理を自由に変更できる。
しかし、GCはほとんど使われていない。
ということは、メモリー云々はほとんど需要がないのでは?
2022/07/30(土) 19:33:32.66ID:2sMkvp6M
>>753
ところがnull安全でないGoというダメな言語があります
新たに作られた言語の中でGoだけが様々な欠点を抱えています
退化しているGoを次世代言語と呼ぶのは滑稽でもあります
2022/07/30(土) 20:34:13.98ID:1qBADAB3
C++以外のOOPでは、null安全は実装継承のボーナスみたいな感じ
実装継承を使わなければ無駄なポインタが増える
スタックガーヒープガーと同じ理屈で実装継承を使う方が勝つ
2022/07/30(土) 20:52:20.28ID:BN91FBRx
その欠点のある言語のが有名な基盤ソフトを作ってることについてもっと頭を使って考えようね。
2022/07/30(土) 21:13:52.36ID:SZsGBOts
Goは並行並列プログラミングを特殊化したC言語って感じ
今さらそんな貧弱な言語を使うのはヤダ
2022/07/30(土) 21:26:41.67ID:YNdaXkm1
>>758
ところがNull安全は本当に絶対必須でしょうか?あなたのコードはmatchでキチンとNoneを考慮しているでしょうか?
ログあるいはコンソールにメッセージを出し、終了あるいはpanicしているだけではありませんか?
言うほど熟練のプログラマになればなるほどNull安全など、どうでも良い事を「次世代」と言うことに疑問を感じるものです
ニワカと、口だけ雄弁で高い志と低い能力を持つものは、大変に有難がる

本当のNull安全の意味は、それはNoneでもNilでもなく、関数型言語のように変数の宣言と初期化が同時一体になっている言語のことです。
関数型言語の真似をするプログラミング言語が手続き型言語が増えていますが、
Result/Optionなどというプログラミング例外からの反動から来た戻り値の粘着的統一誇るようなNullが存在できない言語を
次世代言語と呼ぶのは*甚だ*滑稽でもあります
2022/07/30(土) 21:32:41.56ID:YI8isAMR
>>762
リアルな会話でで はなはだ や こっけい と言うワードを一切聞いたことがない
おじいちゃん世代かなあ?
2022/07/30(土) 21:32:55.93ID:xwnMTwge
>>761

なんでHaskellやScalaはGoよりも前に出てるのにGoだけ流行るの?

シンプルな言語が求められてるからでは?
2022/07/30(土) 21:54:11.36ID:RPaCgO4f
>>717
OCIコンテナはRust実装あるよ
2022/07/30(土) 22:09:21.95ID:MuK8+gHd
言うほどGo流行ってないけどな

それに使われてる理由は言語がシンプルだからじゃないんだよな
2022/07/30(土) 22:15:12.45ID:PnFWbFUc
>>762
Rustを叩くならRustをもう少しちゃんと学ぼうよ
RustのNoneはOption<T>型
つまりT型の変数にNoneは絶対に代入できない
コンパイル時点で静的にNull安全が保証される
もちろん最近の言語は当然備えている必須の性質(退化しているGoを除く)
2022/07/30(土) 23:25:28.07ID:zHogqexf
> 本当のNull安全の意味は、それはNoneでもNilでもなく、関数型言語のように変数の宣言と初期化が同時一体になっている言語のことです。
とかアホなこと言ってる自称熟練プログラマの相手すんなよ...
2022/07/31(日) 00:03:18.44ID:yCe0hy+/
>>767
Noneが代入できる・できないなんて話はしていない。Noneを正確に処理しているかという話をしている、「コンパイル時点で静的に」なんて話もしていない。
Nullを表すことが出来ないという話をしている
2022/07/31(日) 00:26:51.03ID:FStFDS54
>>762
キミはNull安全に詳しいんだね
本当のNull安全とやらを見せてくれ
2022/07/31(日) 00:34:03.03ID:AhwAlAAo
>>768
その難解?な文章が理解てきるなんておまえスゴイナー
2022/07/31(日) 01:13:59.69ID:1Fc8vI4A
>>769
普通の型(ポインタや数値や文字列など全て)がNullを表すことができないのがNull安全
Null安全な言語でNullを表すときは元の普通の型に対して特殊なNullableな型を用いる
そしてNullableな型はNullableを外して元の普通の型にしないとNullableなままでは元の型として使えない
つまり元の型とは別の型となっているためコンパイラが静的にエラーとすることができる

具体的にはRustならぱ元の普通の型Tに対してNullableな型はOption<T>となりNullはNoneと表記するNull安全な言語
このように表記は異なるがSwiftやKotlinなどもNull安全な言語

一方でGoはNullをnilと表記するがそのnilがそのままポインタなどに代入可能
つまり実行時にヌルポ参照のランタイムパニックが起きるNull安全でない言語
773デフォルトの名無しさん
垢版 |
2022/07/31(日) 04:44:43.27ID:pdOIFS3A
C++20のコンセプトのほうが色々使えて良いのでは?
2022/07/31(日) 05:29:20.33ID:21uzlcdA
>>772
>具体的にはRustならぱ元の普通の型Tに対してNullableな型はOption<T>となりNullはNoneと表記するNull安全な言語
なんだよこの説明w
おっさんもNull安全の意味わかってねーじゃん
長文書く度に墓穴掘るな
2022/07/31(日) 06:15:29.02ID:j7G9Xjcb
>>774
KotlinやSwiftといったNull安全な言語は全て同じその方式だぜ
T型にNullは許容されず、Nullable<T>型にのみNullを許容
両者の型を厳格に区別することでNull安全を保証
Nullable<T>型は言語毎に記述が異なり「T?」型だったりOption<T>型だったり様々
776デフォルトの名無しさん
垢版 |
2022/07/31(日) 06:33:53.74ID:pdOIFS3A
その程度ならtype_traitsで十分では?
2022/07/31(日) 06:53:26.13ID:j7G9Xjcb
C++は何でもあるとともに、ほとんどの機能は皆に使われない、失敗した言語
言語の機能は有効に洗練して採り入れてこそ、初めて意味を持つことを示した反面教師
Null安全に関しては、言語としてNull許容を制限できなければ意味を持たず、C++はもちろんNull安全ではない
778デフォルトの名無しさん
垢版 |
2022/07/31(日) 07:06:06.96ID:pdOIFS3A
でも、C++そのものは、みんなに使われてるよね?
Rustが足元にすら近づけないほどに。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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