スレタイ(順番はRedMonk準拠)以外の言語もok
前スレ
次世代言語24 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1647887021/
探検
次世代言語25 TypeScript Swift Go Kotlin Rust Nim
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2022/04/17(日) 17:52:35.38ID:KG26dcth2022/04/17(日) 19:32:21.39ID:9SWISpNV
セックスも男女関係を円滑にする一つの言語なんですよ。
2022/04/17(日) 20:50:44.94ID:jKBP2PvH
プログラミング言語は以下の3つに分類される
CとC++ ←省メモリ高速だが、メモリ解放でミスると危険
GC言語 ←省メモリ高速ではないが、メモリ解放は自動で気にしなくていい
Rust ←省メモリ高速だが、メモリ解放は自動で気にしなくていい
CとC++ ←省メモリ高速だが、メモリ解放でミスると危険
GC言語 ←省メモリ高速ではないが、メモリ解放は自動で気にしなくていい
Rust ←省メモリ高速だが、メモリ解放は自動で気にしなくていい
2022/04/17(日) 22:01:20.83ID:ki8GFFnY
「省メモリ高速ではない」はNANDなのかNORなのか
プログラミングの才能無さそうな日本語
プログラミングの才能無さそうな日本語
2022/04/17(日) 22:35:52.69ID:HtOTcTar
このスレは実質「Go vs Rust」のスレです。
2022/04/17(日) 22:37:31.27ID:Xo1y3bfH
僕は生前、同業・Googleの言語センス同調圧力に抗うも努力は虚しく、無残な敗北を余生噛みしめる結果となった。
君たちには底辺職言語オタクの僕の分まで、強く自由に生きてほしいデス。
君たちには底辺職言語オタクの僕の分まで、強く自由に生きてほしいデス。
2022/04/17(日) 22:58:55.21ID:xE2XgYmS
PHPの”勝ち”やね・・・
"1000" 名前:デフォルトの名無しさん[sage] 投稿日:2022/04/17(日) 22:31:30.13 ID:xE2XgYmS [6/6]
1000ならPHP大復活時代でルースターズを蹂躙レイプする
"1000" 名前:デフォルトの名無しさん[sage] 投稿日:2022/04/17(日) 22:31:30.13 ID:xE2XgYmS [6/6]
1000ならPHP大復活時代でルースターズを蹂躙レイプする
8デフォルトの名無しさん
2022/04/18(月) 00:05:49.90ID:RiOKXL412022/04/18(月) 00:30:56.61ID:6Qt778/v
PHPはドル記号がダサいから駄目
2022/04/18(月) 02:55:12.95ID:X0td+574
C++使っててもコンテナクラス使うかスマートポインタを普通に使っていればメモリリークすることは殆どないでしょ。
手動でnewとdeleteしなくてはいけない時ってある?
手動でnewとdeleteしなくてはいけない時ってある?
2022/04/18(月) 05:38:14.77ID:O5CqVN8y
go とrust が合体した言語があったらいいのに
2022/04/18(月) 06:25:23.07ID:MYm7lCHF
>>11
vlang
vlang
2022/04/18(月) 07:03:56.62ID:e4wxGEsZ
絵に描いた餅を出されても
2022/04/18(月) 07:21:19.73ID:6Qt778/v
>>10
リークというかダングリングだけど、人が書いたメソッド中身見ないで使ってると参照切れてたり日常茶判事だよ
リークというかダングリングだけど、人が書いたメソッド中身見ないで使ってると参照切れてたり日常茶判事だよ
2022/04/18(月) 07:25:53.68ID:usoGfIPO
2022/04/18(月) 07:45:20.51ID:3ssVn6Z5
>>10
・スマートポインタを使い忘れてもコンパイルが通ってしまう
・スマートポインタを間違って使ってもコンパイルが通ってしまう
後者はC++ベテランでも複雑化するとうっかりミスがある
・そもそも毎回unique_ptr指定が面倒かつ無駄なのでデフォルト適用にして欲しい
・スマートポインタを使い忘れてもコンパイルが通ってしまう
・スマートポインタを間違って使ってもコンパイルが通ってしまう
後者はC++ベテランでも複雑化するとうっかりミスがある
・そもそも毎回unique_ptr指定が面倒かつ無駄なのでデフォルト適用にして欲しい
2022/04/18(月) 07:51:49.28ID:usoGfIPO
新しいプロダクトできました。メモリーリークはないです。
なんでいいきれるの?
Rustで、実装してるからです。
ああ、納得。
こんな感じで会話できるかどうかの差はものすごく大きい。
なんでいいきれるの?
Rustで、実装してるからです。
ああ、納得。
こんな感じで会話できるかどうかの差はものすごく大きい。
2022/04/18(月) 07:52:22.78ID:rznbXz+G
2022/04/18(月) 08:15:02.57ID:ndwLrDA6
やはりRustが最強
JavaScript/TypeScriptの高速フォーマッター「Rome Formatter」リリース。Rust製でPrettierより約10倍高速と
https://www.publickey1.jp/blog/22/javascripttypescriptrome_formatterrustprettier10.html
JavaScript/TypeScriptの高速フォーマッター「Rome Formatter」リリース。Rust製でPrettierより約10倍高速と
https://www.publickey1.jp/blog/22/javascripttypescriptrome_formatterrustprettier10.html
20デフォルトの名無しさん
2022/04/18(月) 09:12:25.91ID:33Ybip/c Rustの文法すごい好きだから、c#ぐらいのノリでかけて文法がRustっぽい式指向な言語が欲しい
2022/04/18(月) 09:21:04.84ID:usoGfIPO
なんでもその言語はC#のノリで書けるらしい
Goやないかい!
GoはC#のノリで書けるんやから!
俺はなんでもオミトオシやねんから!
Goやそんなもんは!
Goやないかい!
GoはC#のノリで書けるんやから!
俺はなんでもオミトオシやねんから!
Goやそんなもんは!
2022/04/18(月) 09:33:56.22ID:Hv7oPs1o
>>20
Rustの構文や標準メソッド等ほぼそのままに
所有権と借用ルールとライフタイムだけを削除というか無視して処理するGC言語『GC-Rust』を作るとよいかもね
プログラミング初心者入門用にもなるし速さ省メモリを必要としない場でも使えるような
多少遅くてもいいのだからインタプリタ型でも十分かもね
あとは所有権参照借用lifetimeだけ学べば本物のRustへすぐに進める
Rustの構文や標準メソッド等ほぼそのままに
所有権と借用ルールとライフタイムだけを削除というか無視して処理するGC言語『GC-Rust』を作るとよいかもね
プログラミング初心者入門用にもなるし速さ省メモリを必要としない場でも使えるような
多少遅くてもいいのだからインタプリタ型でも十分かもね
あとは所有権参照借用lifetimeだけ学べば本物のRustへすぐに進める
23デフォルトの名無しさん
2022/04/18(月) 09:43:43.33ID:4vneGtME24デフォルトの名無しさん
2022/04/18(月) 09:46:35.13ID:33Ybip/c2022/04/18(月) 10:29:24.32ID:Mcv+P1OB
Rcじゃだめなの?
2022/04/18(月) 11:06:57.46ID:e4wxGEsZ
もう調べてるかもしれないけどもっと現実的な話で式志向がいいならF#どうっすか
2022/04/18(月) 11:23:46.03ID:X0td+574
>>14,15,16
スマートポインタを使い忘れるってことはmake_sharedかmake_unique使わないでnew使ってるってことだからgrepすれば簡単に見つけられる。全ての関数の引数の型とクラスメンバの型に生ポインタが無いようにすれば間違った使い方をして生ポインタがでてきてもコンパイルエラーなる。(もしそれらに生ポインタがあっても正規表現使えば見つけられるだろうし)
スマートポインタを使い忘れるってことはmake_sharedかmake_unique使わないでnew使ってるってことだからgrepすれば簡単に見つけられる。全ての関数の引数の型とクラスメンバの型に生ポインタが無いようにすれば間違った使い方をして生ポインタがでてきてもコンパイルエラーなる。(もしそれらに生ポインタがあっても正規表現使えば見つけられるだろうし)
2022/04/18(月) 11:32:19.66ID:Yow4FQAb
2022/04/18(月) 11:45:09.21ID:VMhcwqBx
>>18
アリが象を潰すつもりですか?
アリが象を潰すつもりですか?
2022/04/18(月) 11:47:49.11ID:GWhRkThq
>>27
ある瞬間自分の書いたコードだけチェックできればいいってならその通りだとは思う
ただ実際には依存ライブラリや他の人が入れてくるコード全てを常時チェックし続けないといけなくなるし
もし依存ライブラリがnew使ってたとして毎回フォークして書き直すのか?という問題もある
ある瞬間自分の書いたコードだけチェックできればいいってならその通りだとは思う
ただ実際には依存ライブラリや他の人が入れてくるコード全てを常時チェックし続けないといけなくなるし
もし依存ライブラリがnew使ってたとして毎回フォークして書き直すのか?という問題もある
2022/04/18(月) 12:03:53.59ID:e4wxGEsZ
巷に出没するRust信者自分でRustまともに書いてない説を提唱したい
2022/04/18(月) 12:14:51.12ID:MYm7lCHF
そうなるとRustを広めたい勢力に雇われてる工作員の可能性出てきちゃう
2022/04/18(月) 12:27:52.69ID:FXKoB+ib
2022/04/18(月) 12:35:25.60ID:pNu/+WEX
所有権のmoveセマンティクスらへんがRustの最大の文法的特徴なのに、そこがいらんとな
最初からKotlinとか使ってればええやんか
最初からKotlinとか使ってればええやんか
2022/04/18(月) 12:42:20.62ID:FXKoB+ib
36デフォルトの名無しさん
2022/04/18(月) 12:52:02.32ID:4vneGtME rustはインストール先がユーザーホームディレクトリの下なのが何だかな。
マルチユーザーで使う場合が手間かかる。
マルチユーザーで使う場合が手間かかる。
2022/04/18(月) 13:04:30.11ID:nKPrtbqz
>>33
それはおかしい
一般的に参照を引き渡すということは様々な問題を生じさせるということ
競合の種も産むし参照切れの種も産む
だから参照を引き渡す方が記述コストを増やすことこそ道理
次に
C言語でもポインタ参照渡しは&を付けて表記する
したがって無印よりも&前置こそ参照渡しに相応しい
それはおかしい
一般的に参照を引き渡すということは様々な問題を生じさせるということ
競合の種も産むし参照切れの種も産む
だから参照を引き渡す方が記述コストを増やすことこそ道理
次に
C言語でもポインタ参照渡しは&を付けて表記する
したがって無印よりも&前置こそ参照渡しに相応しい
2022/04/18(月) 13:08:07.19ID:usoGfIPO
>>30
これ。
見つけたからってどう住んだよ?って話だよな
他社のコードを修正できないし、そもそもそんなチェックを未来永劫担当者に引き継いでいけるのか?ってこと
個人でできることと、組織やプロダクト関係者全体としてできることは違う
これ。
見つけたからってどう住んだよ?って話だよな
他社のコードを修正できないし、そもそもそんなチェックを未来永劫担当者に引き継いでいけるのか?ってこと
個人でできることと、組織やプロダクト関係者全体としてできることは違う
2022/04/18(月) 13:33:30.85ID:X0td+574
>>30,38
そんなこと言ったら、Rustでも他人の書いたコードにunsafeが入ってる可能性もあるでしょ。
>>33
Nim言語だとデフォルトで不変コピー渡しだけど引数のサイズが一定サイズ以上(確かポインタサイズの3か4倍以上)だとポインタで渡すようなコードを生成するんだよね。
>>37
Rustは参照を使ったときの問題が起きないようにコンパイル時にチェックしているんだからデフォルトがconst参照渡しでも問題ないんじゃないの?
Rustって借用したり借用を参照するときに&や*をつけないといけないけどその結果コードの見た目が生ポインタを使ってるCのコードに似てるんだよね。暗黙に借用したり参照しちゃダメって考えでそうなってるんだと思うけど。
そんなこと言ったら、Rustでも他人の書いたコードにunsafeが入ってる可能性もあるでしょ。
>>33
Nim言語だとデフォルトで不変コピー渡しだけど引数のサイズが一定サイズ以上(確かポインタサイズの3か4倍以上)だとポインタで渡すようなコードを生成するんだよね。
>>37
Rustは参照を使ったときの問題が起きないようにコンパイル時にチェックしているんだからデフォルトがconst参照渡しでも問題ないんじゃないの?
Rustって借用したり借用を参照するときに&や*をつけないといけないけどその結果コードの見た目が生ポインタを使ってるCのコードに似てるんだよね。暗黙に借用したり参照しちゃダメって考えでそうなってるんだと思うけど。
2022/04/18(月) 13:42:31.54ID:ZRRbnpkI
>>17
メモリリークは防げないでしょ
メモリリークは防げないでしょ
2022/04/18(月) 13:51:24.45ID:vMsThGEl
>>39
>Nim言語だとデフォルトで不変コピー渡しだけど
>引数のサイズが一定サイズ以上だとポインタで渡すようなコードを生成するんだよね。
この議論でそんな話を持ち出す時点であなたは以下の理解が足りない
一般的にプログラミング言語によるセマンティクスと最終的に生成されるコードは全く無関係でありそこに関連があってはいけない独立のものである
完全に独立したものであるが故に最終コード生成オプティマイズを十分にすることが可能となる
>Nim言語だとデフォルトで不変コピー渡しだけど
>引数のサイズが一定サイズ以上だとポインタで渡すようなコードを生成するんだよね。
この議論でそんな話を持ち出す時点であなたは以下の理解が足りない
一般的にプログラミング言語によるセマンティクスと最終的に生成されるコードは全く無関係でありそこに関連があってはいけない独立のものである
完全に独立したものであるが故に最終コード生成オプティマイズを十分にすることが可能となる
2022/04/18(月) 14:04:44.92ID:usoGfIPO
>>40
そうですね。スミマセン
そうですね。スミマセン
2022/04/18(月) 14:09:14.47ID:e4wxGEsZ
やべーアスペおるな
2022/04/18(月) 14:11:19.47ID:usoGfIPO
プログラミングを勉強しようと思って
なにを勉強すればいいか先生に聞いたらパイソンっていうから
検索したら大きな蛇の画像とかがでてきたのでやめたわw
なにを勉強すればいいか先生に聞いたらパイソンっていうから
検索したら大きな蛇の画像とかがでてきたのでやめたわw
2022/04/18(月) 14:29:04.41ID:X0td+574
生成されるコードがプログラミング言語のセマンティクスと無関係じゃだめでしょ。
コード生成はプログラミング言語のセマンティクスと矛盾しない範囲内で生成しないといけない。コンパイラはその中で最適なコードを生成しようとするわけでしょ。
Nimではデフォルトで引数はプロシージャ内で変更不可(変更しようとしたらコンパイルエラー)だから引数の型のサイズに併せて生成するコードをコピー渡しにしたりポインタ渡しにできるわけで。
もし引数が可変参照渡しだと引数の型が1バイトでもコピー渡しでは無くポインタ渡しにしないといけない。関数がインライン展開されると話が違ってくるけど。
コード生成はプログラミング言語のセマンティクスと矛盾しない範囲内で生成しないといけない。コンパイラはその中で最適なコードを生成しようとするわけでしょ。
Nimではデフォルトで引数はプロシージャ内で変更不可(変更しようとしたらコンパイルエラー)だから引数の型のサイズに併せて生成するコードをコピー渡しにしたりポインタ渡しにできるわけで。
もし引数が可変参照渡しだと引数の型が1バイトでもコピー渡しでは無くポインタ渡しにしないといけない。関数がインライン展開されると話が違ってくるけど。
2022/04/18(月) 14:44:43.88ID:usoGfIPO
>>44
あ、すまん。これ誤爆しました。スミマセン〜。
あ、すまん。これ誤爆しました。スミマセン〜。
2022/04/18(月) 14:49:14.45ID:pGCdIhc3
「プログラミング言語によるセマンティクスと最終的に生成されるコードは全く無関係」そんな訳ない、RustはLLVMのIRを前提に
コードが吐かれるし、コードのリンケージをアトリビュート指定できる。C言語だって同様だし、むしろ、ハードウェアよりの低レベルな
システムプログラミングが可能な言語であれば、生成されるバイナリが厳密に言語の「セマンティック」を決める。
例えば今どきのCPUには分岐予測命令があるが、これに対応するstd::intrinsics::likelyのような分岐予測にヒントを与える、
セマンティクスはCPUがサポートされていれば100%生成されるバイナリがそうなる事を望む。無関係などありえない
コードが吐かれるし、コードのリンケージをアトリビュート指定できる。C言語だって同様だし、むしろ、ハードウェアよりの低レベルな
システムプログラミングが可能な言語であれば、生成されるバイナリが厳密に言語の「セマンティック」を決める。
例えば今どきのCPUには分岐予測命令があるが、これに対応するstd::intrinsics::likelyのような分岐予測にヒントを与える、
セマンティクスはCPUがサポートされていれば100%生成されるバイナリがそうなる事を望む。無関係などありえない
2022/04/18(月) 14:53:46.39ID:ykvGLY9n
2022/04/18(月) 14:57:34.06ID:2ZPl5Bs7
>>45
その言語のセマンティクスとしてimmutableで渡すケースでも
値をポインタで渡すか値自体を渡すかはどちらでも構わないから言語のセマンティクスとは別問題
もっと顕著にわかりやすい例
構造体を一つ返す関数があったとする
小さい構造体なら値を返すだろうが
大きな構造体なら領域を用意してそこに書き込んでそのポインタを返すかもしれない
あるいは関数を呼ぶ側が領域を用意してそのポインタを裏引数として渡してそこへ返す値を書き込むかもしれない
このように3種類考えられるが呼ぶ側と呼ばれる側で一貫していれば目的を果たす
プログラマーはその生成コードが3種類のどれになるかを把握する必要はない
つまりそこで明白にレイヤーが分離される
その言語のセマンティクスとしてimmutableで渡すケースでも
値をポインタで渡すか値自体を渡すかはどちらでも構わないから言語のセマンティクスとは別問題
もっと顕著にわかりやすい例
構造体を一つ返す関数があったとする
小さい構造体なら値を返すだろうが
大きな構造体なら領域を用意してそこに書き込んでそのポインタを返すかもしれない
あるいは関数を呼ぶ側が領域を用意してそのポインタを裏引数として渡してそこへ返す値を書き込むかもしれない
このように3種類考えられるが呼ぶ側と呼ばれる側で一貫していれば目的を果たす
プログラマーはその生成コードが3種類のどれになるかを把握する必要はない
つまりそこで明白にレイヤーが分離される
2022/04/18(月) 14:59:44.25ID:X0td+574
>>33
もし文字列のベクタに文字列を追加する関数があったとき文字列が参照渡しでその関数が実行された後もその文字列が読まれていると、その関数は文字列をmoveすることができずコピーしなくてはならなくなるからじゃないかな。
メモリコピーは遅いから絶対に許さない人にはデフォルトがmoveのほうがいいのかも。
もし文字列のベクタに文字列を追加する関数があったとき文字列が参照渡しでその関数が実行された後もその文字列が読まれていると、その関数は文字列をmoveすることができずコピーしなくてはならなくなるからじゃないかな。
メモリコピーは遅いから絶対に許さない人にはデフォルトがmoveのほうがいいのかも。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】物価高対策の“おこめ券”全米販は1枚477円で販売へ 鈴木農水大臣「国民の皆様に活用いただきやすいよう工夫いただいた」★2 [ぐれ★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★5 [蚤の市★]
- 【埼玉】54歳男性死亡…菓子店で機械に挟まれる 昼前に1人で作業中、あんを混ぜる“かくはん機”に巻き込まれ…女性従業員が発見 入間 [ぐれ★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★5 [蚤の市★]
- 神田沙也加さん元恋人で元俳優の前山剛久 六本木のメンズラウンジ勤務を報告「真叶(まなと)です。よろしく」 [muffin★]
- 【老舗文具メーカー】「生成AIで制作していた」――サクラクレパス、“AI疑惑”ポスターの調査結果を報告 ★2 [ぐれ★]
- 鈴木農水大臣「物価高対策でお米券1枚477円で販売します☺」 [931948549]
- ムミィ🥺いる❓🏡
- お前らの使える固有魔法ってなに?
- ママカースト、地獄すぎるwwwwwwwwwwwwwwwwwwwww [977790669]
- 【高市悲報】片山さつき「かじ取り間違えてデフレになったらどうすんの!😡」😲 [359965264]
- 【高市】「女は男のコンテンツに興味を持つが、男は女のコンテンツに興味を持たない」👈これ何で?🧐 [762037879]
