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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2022/04/17(日) 17:52:35.38ID:KG26dcth
スレタイ(順番はRedMonk準拠)以外の言語もok

前スレ
次世代言語24 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1647887021/
2022/04/25(月) 22:11:48.53ID:EH/Dcnf1
ふたりを とめて〜
2022/04/25(月) 22:17:54.71ID:PqJDEf6z
有名税とか言う前にまずDとNimとUFCSを無理筋でこき下ろした件に対するごめんなさいは?
2022/04/25(月) 22:34:36.42ID:BiA6VIMH
あと無関係な争いに巻き込まれたRustも可哀想
2022/04/25(月) 23:13:51.83ID:W8ZZnspt
調べたところRustにもUFCSがあるようだけど。
https://doc.rust-lang.org/1.30.0/book/first-edition/ufcs.html
2022/04/25(月) 23:32:05.72ID:PJo8eL2A
それ古い版のthe bookだし>>224の条件付きだからUFCSってあるってだけだよ
2022/04/25(月) 23:34:40.87ID:PJo8eL2A
途中送信した
条件付きだからこれをUFCSと呼ぶのは誤用ってことで今は使ってないよ(>>284
2022/04/25(月) 23:52:22.15ID:+dAy6ibx
>>344
もちろんRustにもあるけど微妙に違うので今はUFCSとは呼ばなくなった
その微妙な差というのは既に>>245で書いたように

> 例えばu64型のxに対して
> xのn乗はu64::pow(x, n)という関数が標準であるけど
> これはx.pow(n)と呼び出すことができる

とメソッド形式でなく関数形式の時に型名等の前置パスで常に制限される
2022/04/26(火) 00:24:29.22ID:HRWQKuSX
ほんのわずかだけ違うとはいえ
D、Nim、RustといったUFCS対応言語は2通りの記述方法が出来て便利で良いですよね
2022/04/26(火) 07:04:16.95ID:Y0YWAbka
Goってマジで終わりかけてる?
使う価値あんまり感じなかったのは事実だけどw
2022/04/26(火) 07:06:24.67ID:nY6A0xRe
バカヤロー、まだ始まっちゃいねぇよ
2022/04/26(火) 09:33:09.74ID:N3l9Q94/
Goジェネリクスの実装とパフォーマンスについて
https://www.infoq.com/jp/news/2022/04/go-generics-performance/
352デフォルトの名無しさん
垢版 |
2022/04/26(火) 10:53:42.88ID:jf0A6U3h
>>260
ちげーよ。
記法の問題。
353デフォルトの名無しさん
垢版 |
2022/04/26(火) 11:05:30.65ID:jf0A6U3h
>>295
これが正しい
354デフォルトの名無しさん
垢版 |
2022/04/26(火) 11:06:06.60ID:jf0A6U3h
>>295
これが正しい
2022/04/26(火) 12:45:23.73ID:AcQNW5IU
>>295
(UFCS方式を含めて)メソッドを追加できない次世代言語が存在するのですか?
356デフォルトの名無しさん
垢版 |
2022/04/26(火) 13:27:25.51ID:jf0A6U3h
頭痛くて寒気すると思ったら熱あったわ。
2022/04/26(火) 13:49:04.73ID:US6qo08V
>>355
Rust、Kotlin、Swift、C#は拡張できるし、メソッド形式呼び出しがあるモダン言語なら必須機能っぽいけどね
2022/04/26(火) 14:12:26.27ID:DbGjJV4L
最後にGoの悪口に収束するのは、おまいらの悪い癖だと思う

>>356
現代日本の片づけのキモはゴミ在庫の管理だ。 これはコンマリも言ってない..
pptppc2 「キモ」「ゴミ」とかいうワードが真っ先に出てくると身構えてしまう。
2022/04/26(火) 14:18:27.51ID:jETt/1T7
>>357
スレタイにある言語だと
TypeScriptもJavaScriptだからメソッド追加可能
残るGoは?
360デフォルトの名無しさん
垢版 |
2022/04/27(水) 10:39:21.30ID:8eBizIGw
nimググってみたけどけっこう良さそうな言語じゃん。
2022/04/29(金) 09:51:11.18ID:nibPTxk+
Go開発者の92%が「Go言語に満足」
https://mag.osdn.jp/22/04/27/135700
2022/04/29(金) 11:41:20.06ID:nnpkzAOE
>>360
自演乙
2022/04/29(金) 11:41:58.13ID:nnpkzAOE
>>361
ガイジの中のガイジ煮詰めたデータに何か意味あるんか?
2022/04/29(金) 11:48:23.80ID:HTMH1VGQ
なんかの統計でphpも満足度が高かったような
2022/04/29(金) 11:57:31.13ID:izq7WstO
Nimは100%ですよ
366デフォルトの名無しさん
垢版 |
2022/04/29(金) 12:04:51.33ID:okzbgZOG
>>362
何いちゃもんつけてんだ。
nimは使ったことすらねーわ。ググっただけだ。
一応このスレタイトルのtypescriptとgoは使ってる。
2022/04/29(金) 12:06:43.44ID:0R1ha4qI
サーチフレンドリな名前ではある
2022/04/29(金) 14:28:08.64ID:bzqD+Da/
生存者バイアスとしか…
2022/04/29(金) 15:45:25.25ID:nnpkzAOE
phpは障害者雇用枠だから
2022/04/29(金) 19:23:50.76ID:fXQBWCQI
前にも書いたけど学校のサイトとかをワードプレスで運用してるところ結構あるんだよね
他の言語では先生達に書き換えて運用とか無理だと思う

PHPはそういう用途に向いてる
絶対そこはRustとかGoにはならない
2022/04/29(金) 19:44:01.30ID:Crnvpu67
言語と人を比較して言うのだが
PHPを批判するような子は
たいていPHP以下の存在
そして必ずPHPの作者以下の技量
2022/04/29(金) 19:58:05.95ID:FaPJ+Yjv
たぶんPHPが存在してなければ、また誰かが気軽にwebサイトをさらっとかけるスクリプト言語をRustのようなシステムプログラミング言語で開発していただろう
そしてそれはPHPのようなものになるのだろうね
2022/04/29(金) 21:18:48.98ID:nnpkzAOE
たしかにPHPが障害者を吸ってくれたおかげで助かってるところはあるかも
ITの汚物入れ、人類最底辺のクズ、エタヒニン・罪人
それがPHPoor
2022/04/29(金) 21:24:48.98ID:cvAz2ZRh
Reasonってどうですか?

https://reasonml.github.io/
2022/04/29(金) 22:15:53.12ID:K6x/4GwT
こんスレってなぜかJuliaの話、完全スルーするよな。Go?Rust?Zig?Nim?時代遅れのローエンド言語や
2022/04/29(金) 22:27:03.12ID:gkaMUNbq
>>370
GoとPHP、どっちも使わない人からしたら大して変わらない説。
2022/04/29(金) 22:38:01.94ID:awtM9gjL
>>373
よっぽど根に持ってるんだな。
ちょっと病的な感じ。
2022/04/29(金) 22:48:27.27ID:6EgfuGip
ローエンド言語なんて言葉ある?
ローレベル言語ならわかるけど
2022/04/29(金) 22:57:18.29ID:IOMhb3u+
>>375
単に知られてないから話題に反応できないだけだと思う
良いところ教えてよ
2022/04/29(金) 23:02:55.81ID:kzHHMnSC
Julia、せっかく新規言語で型付けと動的性のバランスを取れる立ち位置にあったのに、抽象-具象の継承ベースの型を採用した部分が個人的にジェネリクスと噛み合いが悪いと思っていて悲しい
1-originとかは正直瑣末事だと思ってる分そこだけが本当に合わない

一応最新バージョンだとパラメトリックな抽象型とそのパラメータに抽象型を使えるし、その部分型をパラメータにも抽象型コンストラクタ(?)にも適用できるから実用上十分なんだと思うが
2022/04/29(金) 23:13:16.89ID:6EgfuGip
JuliaのユーザーってPythonは当然として、他にはMATLABやRが競合になるようなコミュニティだから、
このスレとはまるで層が違うんじゃないかな
MATLABやRの話も全く出ないし
2022/04/29(金) 23:27:24.69ID:awtM9gjL
Juliaって計算科学や数値解析に特化した、R言語みたいなものでしょ?
2022/04/29(金) 23:34:47.33ID:fFwxA39Q
Julia厨はクソみたいな押し付けするくらいなら
自分で他言語のライブラリの移植でもした方がよっぽど使ってもらえるという当たり前のことすら理解してないからな。
2022/04/29(金) 23:47:45.01ID:dUco7/4p
>>380
その継承が中途半端なことしかできないし
継承を採用したことも失敗してるし
Juliaはあかんね
2022/04/30(土) 00:03:38.50ID:UesQSoYk
継承は基底クラスと派生クラスの役割(責務)の分担が非常に難しいです。
よほど上手く設計しないと、すぐに「スパゲッティ・オブジェクト・プログラム」ができあがります。
継承は実装の再利用という面があるので、得てしてコピペの代わりに使われがちでもあります。
既存のあるクラスの振る舞いをちょっとだけ変えたいから継承を使おうってやってしまうと、
派生クラスのソースを見ただけでは何をやってるのか全くわからない最悪のコードになります。
まだコピペのほうがマシなことも。

最初はちゃんとクラス階層の設計がされていたとしても、だんだん皆が使う共通ルーチンを基底クラスに持たせよう、としてしまうとか、
基底クラスは、すぐに、巨大かつ影響範囲が広すぎてイジれない「神クラス」になるでしょう。
この場合の基底クラスの役割は、グローバル変数そのものと言ってよいですね。

とにかく、継承を使うと、コピペ、グローバル変数の使用、といった「禁じ手」と実質的に同じことが簡単にできてしまいかねません。
もし継承を使うのであれば、かなり注意が必要です。

その一方で、継承でないと絶対にダメという用途もあんまりないのです。
継承を一律禁止してしまってもそんなに困らないところがあります。
そのため最近ではGoやRustなど言語の仕様として継承(インタフェースではない実装を持つクラスの継承)を禁止している言語が増えているという有り様です。
2022/04/30(土) 00:45:40.28ID:JnqjPuKd
今北産業
387デフォルトの名無しさん
垢版 |
2022/04/30(土) 00:48:57.89ID:LJ+fWFU3
長い。そして間違っている。
Rustは代わりにtraitで継承を表現できるが、Goは表現する方法はなく、似たことをするとデータ構造を弄くることになる。
そもそも継承においてはデータ構造と実装の併合が問題なので、あとは察してください。
2022/04/30(土) 00:53:39.80ID:03/a5/ox
じゃあ継承使わないでプラグイン機構使いたいときはどうすんの?
2022/04/30(土) 00:55:27.41ID:xinPqoeI
プラグイン機構とだけ言われても意味が一意じゃないと思うけど
mixinのことかいな?
2022/04/30(土) 00:56:29.80ID:5YZgJnSQ
Composition over inheritanceは30年近くも前のGoFですでに広まってるのになぜ次世代言語スレで話題になるんだろう
2022/04/30(土) 01:03:52.06ID:xinPqoeI
ていうかJuliaの型システム知らなかったから簡単に調べたけど具象型はsupertypeになれないとか書いてあるんですが
Juliaでもいわゆる継承の問題点はちゃんと回避されているんではないですかね
2022/04/30(土) 01:17:16.86ID:mZJBhlPe
>>391
継承とジェネリクスとの相性の悪さが問題なのではないかな
2022/04/30(土) 01:19:25.03ID:onyz3Xxm
>>390
その後に継承のデメリットの方が多いと分かってきたため
そのデメリットをどう回避するかが各言語の主題となっている
2022/04/30(土) 02:04:17.75ID:LJ+fWFU3
>>390
知った気になって語りやすい話題だからだろう。

実装の拡張を肯定しつつデータ構造を直接拡張しないところが重要。
それを字面だけ解釈して、結局は妥協でデータ構造が暗黙に継承するような、先進言語の形だけ真似した言語もあるくらいだからね。
2022/04/30(土) 02:17:19.37ID:Z7DxbzXv
>>387
Goだけがどの話題でも機能不足との結論になっていて悲しいです
2022/04/30(土) 02:24:06.80ID:iqR9XqAh
クラス継承しか知らないプログラマーは何でも継承で表現しようとするために失敗しているわけだから
継承のないプログラミング言語で修行させればそこは学習できるはずだ
2022/04/30(土) 03:12:19.75ID:TIk5gKqZ
実際言うほど継承使わないからなぁ
共通的な部分を継承で済ます場合はあるけど
データもその共通部分がはっきりしているなら親クラスで定義するけど
ただフレームワークを使ってたらコントローラはControllerから継承みたいなのはどうしてもあるが
2022/04/30(土) 03:18:56.57ID:QdZCFn9O
>>397
そこは移譲ではダメなの?
2022/04/30(土) 05:30:17.12ID:ES8eyWNp
typescriptは不要だな。jscript .netといっしょで空虚だ。
2022/04/30(土) 08:27:54.46ID:UilcMqZz
マイクロソフト、JavaScriptに型宣言を追加しつつトランスパイラ不要の「Types as Comments」をJavaScript仕様策定会議のTC39に提案へ
https://www.publickey1.jp/blog/22/javascripttypes_as_commentsjavascripttc39.html
2022/04/30(土) 11:29:38.19ID:8xaJAFlZ
継承自体は悪くなくて設計が悪い
実際継承使わないパターンが多くなったのでそれもどうでもいい

クラスに当たるものに委譲で継承的なことをすると状態が問題になる
そしたら状態を持つのが悪いと言うまた不思議な話になる

そしてどんどん学習時間取られてみんな疲弊していく
2022/04/30(土) 11:37:07.51ID:8xaJAFlZ
委譲元のクラスが単体では問題なく動くのに組み合わせるとテストを通らない

よく見ると以上元のクラスの内部状態が必要になってるけど公開されていない
完全な設計ミス

interfaceに必要な要素を追加…などできずデフォルト実装を追加
こうしてゴミが出来上がる
2022/05/01(日) 13:19:33.60ID:GvRRQSqT
継承はそのオブジェクトの内に閉じた処理、オブジェクトの外の処理でもリスコフ置換原則が成立する範囲ではスマートでいいと思うよ
ただ現実的な話、ビジネスルール自体がそうなってないケースが多い
オブジェクトの外の処理は多くの場合、処理対象の子クラスの型で分岐を求められる
これにオブジェクト指向で対処しようとすると、めんどくさいデザインパターンの洪水に呑まれる

オブジェクトの内側のことは継承でエレガントに実現しておk(嫌いなら使わなくてもおk)
外側のことは地道にpattern matchingで泥臭く頑張る
これでいいと思うね
2022/05/01(日) 14:26:43.52ID:TYpzgypv
キチガイ隔離すれの本領発揮
2022/05/01(日) 15:30:58.63ID:1sKYDrOo
RustもJuliaやGoみたいに廃れて消えていく気がしている。
https://qiita.com/AKKYM/items/78c04840bc72d9db834d
2022/05/01(日) 15:37:27.28ID:KjQtFKQ9
ポエムすぎ。
2022/05/01(日) 16:13:59.61ID:KIr6c+FR
このRustと同じ分類となる、更に便利な言語が登場しないと、Rustを置き換えることが出来ないだろう

> プログラミング言語は以下の3つに分類される
> CとC++ ←『省メモリ高速』だが、「メモリ解放でミスると危険」
> GC言語 ←『省メモリ高速』ではないが、「メモリ解放は自動で気にしなくていい」
> Rust ←『省メモリ高速』だが、「メモリ解放は自動で気にしなくていい」
2022/05/01(日) 16:14:52.25ID:1l9w5D7n
>>405
妄想でつか?
2022/05/01(日) 21:23:49.61ID:Z7VnuZFm
JuliaはFORTRANを駆逐できましたか?
2022/05/01(日) 22:23:58.30ID:BE/fpmM/
https://mun-lang.org/
Mun触ったことのある人いる?
ぱっと見GCつきのrustみたいに見える
2022/05/01(日) 23:42:24.67ID:/piMIc6O
>>410
文法や基本型はRustと同じっぽいね
ドキュメントを見る限りでは非常に小さいサブセットで開発途上なのかよくわからない
2022/05/02(月) 12:37:31.52ID:LXFM7yFt
>>407
その分類、そもそもニーズが大きくない気がするし、
このまま競合は現れずに行きそうだよね。
2022/05/02(月) 13:23:34.89ID:2hhO4/Db
>>410

Dlang: C++風のGC言語
Crystal: Ruby風のGC言語
nim: Python風のGC言語
Vlang: Go風のGC言語
Mun: Rust風のGC言語 ← New!

こういうこと?
2022/05/02(月) 13:56:24.42ID:nH+No7UX
VlangはGC無かったと思った
2022/05/02(月) 14:17:19.74ID:2hhO4/Db
>>414
ほんとだ、ありがとう
2022/05/02(月) 16:08:02.28ID:btF26FKd
>>412
重視されているからこそ
C/C++からRustへの移行(安全化)だけでなく
各種GC言語からRustへの移行(高速化)が起きている現実
2022/05/02(月) 16:39:23.58ID:zwMG9j3G
>>416
ないわ~
pythonからRustってありえないよ
2022/05/02(月) 17:38:01.22ID:/8s7agyt
NumPy, SciPyのライブラリの実装FORTRANをCにベタ移植して更にC++でラップしたような物ばかりだったけどRsutへの移行は順調に進んでいますか?w
2022/05/02(月) 18:06:45.99ID:+Vpltyoe
それらPythonの使い方は単なる皮言語だからな
次世代言語スレで皮言語を持ち出す時点で頭おかしい
2022/05/02(月) 18:19:24.75ID:cySxIzYo
>>418
どの分野でもどの言語でも同じだけど
他の言語に移行するのは新たな物(仕組み・システム)を作る時だよ
そのまま移植は非常にレアケース
例えば古すぎるたり性能面で難があるけどアルゴリズムだけだから再設計せずそのまま他言語へ移植など
2022/05/02(月) 18:33:01.46ID:LXFM7yFt
>>416
GCあり言語では、データ構造は気にしても、
メモリ操作を意識している人は、少数じゃない?
だから置き換えは、結構ハードル高いと思うけれど。

>>417
Pythonは、グルー言語でもあるから、
単純な置き換えは、そうそう進まなさそうだよね。
2022/05/02(月) 18:40:21.71ID:YtZJWkql
>>421
メモリ操作とは具体的になあに?
めったにない特殊なケースは除くとしてハードルが高いことなんて無いんじゃないかしら
2022/05/02(月) 18:48:20.40ID:/8s7agyt
>>422
低レイヤー言語だとメモリ読む前にキャッシュしたりアライメント揃えたりするでしょ
2022/05/02(月) 18:52:18.84ID:qXzB3q2R
>>423
何それ?
よほど特殊なことをしない限りそんなコードを書くことはないよ
C言語でもアライメント気にせずに変数に値が入るし変数そのものがキャッシュだし
2022/05/02(月) 18:55:15.58ID:/8s7agyt
>>424
426デフォルトの名無しさん
垢版 |
2022/05/02(月) 19:01:36.90ID:srM4fb0r
>>424
他人のこさえたライブラリと構造体を受渡するときなんかは意識せざるを得んよな。
コレはレアケース?
2022/05/02(月) 19:06:45.80ID:TE2kIXA8
>>426
それはFFIと言って低レイヤー言語だけの問題ではない
PythonでもJavaScriptでもある

元の話題
>>423
> 低レイヤー言語だとメモリ読む前にキャッシュしたりアライメント揃えたりするでしょ
2022/05/02(月) 19:16:29.24ID:nqnbrNKO
例えばSIMD命令使うのが "よほど特殊なこと" に該当するかどうかという話?
2022/05/02(月) 19:29:07.60ID:TE2kIXA8
この流れでFFIもSIMDも関係ないと思います
GCあり言語の普通のプログラムをGCなし言語へ置き換える話をしています

>>421
> GCあり言語では、データ構造は気にしても、
> メモリ操作を意識している人は、少数じゃない?
> だから置き換えは、結構ハードル高いと思うけれど。

>>422
> メモリ操作とは具体的になあに?
> めったにない特殊なケースは除くとしてハードルが高いことなんて無いんじゃないかしら
2022/05/02(月) 19:31:38.61ID:LXFM7yFt
メモリ操作って言い方が曖昧なら、スタックとヒープを意識するかしないかって言い方ならどう?

GCあり言語でスタックとヒープを意識するような事ってあまり無いと思うんどけど。
2022/05/02(月) 19:44:24.10ID:xCWuNsuo
>>430
GCなし言語でどうしてもスタックとヒープを意識しないとプログラミングできないことってある??
2022/05/02(月) 20:03:38.83ID:nqnbrNKO
>>431
ありなしで言ったらあるでしょ
性能意識するコードとか
2022/05/02(月) 20:09:21.38ID:9bp9MTNx
>>432
それは性能をよっぽど気にする特殊な場合だけでしかもその中の一部のコードだけやろ
それ以外は関係ないやん
2022/05/02(月) 20:41:15.68ID:hiZvMXbQ
言うほど低レイヤーコード書いてるやつはここにはおらん。
だから話がおかしな方向に行く。
2022/05/02(月) 20:50:55.80ID:cNSfGfye
>>434
GCあり言語のコードをGCなし言語にする話だから
低レイヤーコードなんて一切関係ない
2022/05/02(月) 22:55:54.22ID:54UIx2Ed
スタックは普通に意識するでしょう、末尾最適化されてないナンチャッテ意識高い系の再帰呼び出しとか直すけど・・・
GCアリ言語でも無しでも、スタックサイズは普通に意識する。
ヒープは言うほどRustは組み込みに使わないし、トヨタが使うというてもそれはメモリコンパクションのあるようなOSが載ってる場合だから
本当の組み込みじゃないし、でもアロケーターが64byte-4kでもVec::with_capacity(size);とか普通にIO系の処理では意識するでしょ
2022/05/02(月) 23:14:26.49ID:zFIpg6hX
>>436
Rustはヒープ無しでも動作するからヒープを意識しなくていいのはその通りだが
ヒープが有る場合でもVec::with_capacity(size);等は動作最適化を手動でする時のみ必要であって、
プログラマーは何もしなくても全自動でcapacity拡張してくれるから意識しなくてもよい
2022/05/02(月) 23:25:13.41ID:nqnbrNKO
>>433
そもそもの質問が「ヒープ意識しないとプログラムできないことってある?」だから、反論になってないよ
頻度は問題にしてなくて有無の話だから
2022/05/02(月) 23:32:26.49ID:uvbh46KP
>>438
それは君の方がおかしい
今回のこの文脈ではそこは意識する必要がない

>GCあり言語の普通のプログラムをGCなし言語へ置き換える話をしています

ベクタの使用領域の大きさはどちらの言語でも自動的に拡張してくれるのに任せればよいから意識しなくてよい
2022/05/02(月) 23:45:32.15ID:2hhO4/Db
GCありの言語で循環参照するようなデータの持ち方をしまくってるようなコードだったりすると、
そのまま移植できないだろうし面倒かな?
場合によってはRustでいうArenaみたいなのまで持ち出して再設計しないといけなそう

移植なんてしたことないしあくまでも想像だけど
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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