X

次世代言語26 TypeScript Swift Go Kotlin Nim

レス数が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/06/21(火) 09:44:18.82ID:GTnizZ2U
文字列の変数sが与えられた時に
変数a(符号付き32bit整数)、
変数b(符号なし64bit整数)、
変数c(64bit浮動小数点数)へそれぞれ変換するコード

【Rust】
let s: &str = "12345";
let a: i32 = s.parse()?;
let b: u64 = s.parse()?;
let c: f64 = s.parse()?;

【Kotlin】
val s: String = "12345"
val a: Int = s.toInt()
val b: ULong = s.toULong()
val c: Double = s.toDouble()

【Swift】
let s: String = "12345"
let a: Int32 = Int32(s)!
let b: Uint64 = Uint64(s)!
let c: Double = Double(s)!

【Go】
var s string = "12345"
var err error
var a int32
a, err = strconv.ParseInt(s, 10, 32)
var b uint64
b, err = strconv.ParseUint(s, 10, 64)
var c float64
c, err = strconv.ParseFloat(s, 64)
3デフォルトの名無しさん
垢版 |
2022/06/21(火) 12:56:04.76ID:/ETIo2hH
オーバーロードが無いと、

例えばライブラリ無いからシステムコール利用する便利ラッパー機能を提供しようとする。例えばソケット関係のAPIをまとめたやつとか。
で socket(2)の場合、
第3引数なんていつも0しか使わないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
2022/06/21(火) 13:12:00.12ID:vSYkmcQ8
>>3
プログラムを書いたことのないキチガイだな
socketの第3引数はgetaddrinfoで得たai_protocolを引き渡すのが常識
あるいはgetaddrinfoを使わないならばgetprotobynameの結果を引き渡すものだ
まともなコードを書けないからそんな意味不明な主張になる
5デフォルトの名無しさん
垢版 |
2022/06/21(火) 13:15:46.21ID:wIb095hs
必要なら変えればいいじゃん
2022/06/21(火) 14:09:10.86ID:l/hCBOZ3
なんでオーバーロードが無いCでうまくやっている例を挙げてオーバーロードの必要性を主張しようと思ったんだろう
2022/06/21(火) 17:22:04.63ID:AK5VMxpO
                     /  ,.----―‐、ヽ. \
       /            /   ヽ      ヽヽ、_ヽ
      /         _,.-‐''"    ヽ      ヽ  `ヽ
    /        _,,.-‐'"        ヽ      ヽ   ヽ
    /      _,.-'"            ヽ      ヽ   ヽ
   /    _,.-‐'"               i!      i! .._ i
  人_,.-‐"         _,,... _;;.::='' \   i!      i!/   >'
 /           _,,..-''_,.-‐''"     入 /_____/  ,.イ'
 | ,.-ヽ、    _,.-'"_,.- ‐┬:.:ァ‐──┬: :ァ= ┬─―-|ヾ  r i!
 |/   ヽ.. ,.-'"  r  |/ ,L:厶\_,   |: / _/二│ / |  .| |
 i     ヽ |   |;   〃  ̄`ヾ    |/  〃 ̄`∨ i   | |ヽ
 i!     ヽ |   .|   {{     }}        {{     }}  {   | | |      また新スレだ!いつもいつも!
 |      i |   |    ゞ' ==彡         ゞ ==彡  l   | | |       1000にも届かないで!!わたしを弄んで!!
 ヽ      | |   |!  ヽヽ             ヽヽ l  | | i!
  ヽ、    |  |   |     /⌒¨¨¨¨¨¨¨¨¨⌒ヽ   /  | i/
   ヽ、   /  ヽ  ヽ、   {           丿  / /,! ,i!
   ヾ`ヽー'   `ヽ、  `ヽ、      ェ-―‐-く  / ./ /
     ``―、_     ` ‐、_  ` ー--/  __ `ヽ/ ./ /
        `゙゙‐-、    ゙`ー、.._/  i'"  `ヽ  /,/
8デフォルトの名無しさん
垢版 |
2022/06/21(火) 18:27:05.65ID:/ETIo2hH
>>4
あくまでも例なのに的外れな回答だな。
fcntlでもいいわ。あれは第2引数によって第3引数の型が変わる。

>>6
うまくいってねーから。
だから閉じる時はcloseなのに開く時はopenじゃなくてsocketって別の名前になってんじゃん。
思考力無さすぎ。
2022/06/21(火) 18:45:23.25ID:cgA+HP5m
例がアカンわそれ
オーバーロードがある言語でもオーバーロードすべき時とメソッドを分けるべき時が当然ある
fcntlなんかはオーバーロードを考えるより先に分割を検討すべきものだから議論がとっちらかる
10デフォルトの名無しさん
垢版 |
2022/06/21(火) 18:55:56.41ID:n99R/Leg
>>9
>例がアカンわそれ
>オーバーロードがある言語でもオーバーロードすべき時とメソッドを分けるべき時が当然ある

当たり前だろ
2022/06/21(火) 18:56:25.10ID:l/hCBOZ3
>>8
いまさらで申し訳ないんですが
s/ライブラリ無いから/ライブラリ内から/
ですか?
2022/06/21(火) 19:00:59.44ID:XqbO80NY
求めてるのはオーバーロードじゃなくてデフォルト引数だね
13デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:02:06.03ID:n99R/Leg
オーバーロードできるからと、いつもオーバーロードするわけではない。
だがオーバーロードが適切な場合はオーバーロードできたほうが良い。
単にそれだけ。
原理主義者になるな。
14デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:15:17.39ID:n99R/Leg
>>11
ライブラリ無いから薄いラッパーを作って提供するんだと思った。
知らんけど。
2022/06/21(火) 19:19:23.26ID:zS+KQ1el
オーバーロードは関数を値として持とうとしたときに関数の実体を取得するのがくそほど面倒臭かった記憶
2022/06/21(火) 19:34:47.92ID:bYqCGEc9
オーバーロードの追加はAPIの変更に含まれますか?
2022/06/21(火) 19:36:24.38ID:l8WwdmAr
ジェネリクス以外でわざわざ同じ関数名使う必然性がないわな。
2022/06/21(火) 19:39:33.13ID:hzkld3Bb
Objective-Cの関数名って長かったよなあ(遠い目)
2022/06/21(火) 19:45:56.46ID:8AFmzPLe
オーバーロードの有無で使用する言語を選ぶ人っているのか?
いないなら些末な議論
2022/06/21(火) 20:30:16.16ID:vSYkmcQ8
>>8
よく考えてから反論の例を挙げよう
fcntlこそオーバーロードに不向きだろ
まずfcntlの引数は代数的データ型になっていることを理解できるか?

つまりRustならばそれはenumなので例えばこんな風に解決される
enum FcntlArgs {
F_GETFL,
F_SETFL(O_Flag),
F_DUPFD(FileDescriptor),
F_SETLK(Flock),
...
}
これでlibcインタフェースよりもシンプルかつ分かりやすく間違いなく表現できる

関数の引数はもちろんfdとこのFcntlArgsの2つに固定される
fn fnctl(fd: FileDescriptor, args: FcntlArgs) -> Result<FcntlReturn, Error>
と戻り値も様々なものが返るからenum FcntlReturnを用意すればミス防止になるだろう
エラーもそのenumに混ぜる手もあるがここでは分けて汎用的にResultとしている

その場合の使い方はこんな感じのコードになるだろう
if let O_Flag(o) = fcntl(fd, F_GETFL)? {
o |= O_NONBLOCK;
fcntl(fd, F_SETFL(o))?;
}
2022/06/21(火) 21:43:34.03ID:gx+wq5uQ
>>15
関数を値として持つ場合は関数シグニチャ的なものを型として使うので
その時点でどのオーバーロード用か明確になってるよ
2022/06/21(火) 21:57:39.81ID:Z7u4GR2t
>>19
>オーバーロードの有無で使用する言語を選ぶ人っているのか?
ドカタは低脳、ゆとり、基地外でも大歓迎な職業なもんだから、
へんな奴が多い。そして、5chのム板に来る奴にはそれの重度な奴が多い。
そんな奴(重度の基地系)だと些細なことでも異常ににこだわる(超粘着する)のが普通なんだよ。
で、俺的にはオーバーロード必死な人が使っている言語(メイン言語)が何なのか興味あるが
2022/06/21(火) 22:00:18.48ID:Z0vonPWK
>>20
wrapper APIとして公開するならそれぞれ別のメソッドにすべきでしょ
メソッドという概念がなかった頃の遺物をそのまま使う必要ない
2022/06/21(火) 22:24:10.62ID:PKuk2WhK
>>13
オーバーロードの使い道は型違いのサポートとオプション引数のサポートの2つ
前者はジェネリック後者はオプション引数が言語機能にあればオーバーロードがなくても困らない
2022/06/21(火) 22:33:00.05ID:vSYkmcQ8
>>23
別のメソッドにしなくても
もし使用ミスがあればコンパイル時エラーとなるため>>20の仕様でも全く問題ない

そしてこの手法はRustでは常套
例えばHTTPのメソッドはGETやPOSTやDELETEなど39種類が定められているが
Rustでは39種類のメソッド関数を用意せず今回の例のようにenumに39種類を並べて用いている
今回のfcntlでも大量のメソッド関数を作るのは好ましくないと考える

さらに今回は>>8がオーバーロードがない場合は関数を分けてfcntl_getfl()やfcntl_setfl()などと大量に作らざるを得なくなる例として持ち出してきた流れ
だからオーバーロードなんか無くてもfcntl()一つで済むことを示した
そしてこれは汎用的な手法である
2022/06/21(火) 22:52:38.19ID:NotgbbUa
相手にしたら負け
学習しましょう
2022/06/21(火) 23:20:14.77ID:Z7u4GR2t
オーバーロードが無いと嫌だ嫌だな人はオーバーロードを変態にした
C++の可変引数テンプレート(可変長ジェネリクス引数)のようなものが実は欲しいってことなんじゃないのか
2022/06/21(火) 23:42:15.69ID:aTTVmXQa
新しく作る前提ならfcntlみたいに責務の異なる複数の処理は
1つの関数ではなく1つのクラスやモジュールにまとめたほうがいいのは間違いない

ただ既存APIのラッパーなら使いやすい形にAPIを変更した方がいいケースもあれば
既存と同じ感覚で使える形に留めたほうがいいケースもあるから
分割がいいかどうかはケースバイケース
2022/06/22(水) 00:47:54.76ID:OgTLLOot
結局>>2の例も>>20の例も
元は「オーバーロードのないRustは一つの関数名にできずに多数の関数名を必要とする!」攻撃から始まったのに
結果はRustの方が一つの関数で対応できちゃっていて不思議
2022/06/22(水) 01:52:24.75ID:li50soYi
ここまですべてスレタイにない言語の話題
2022/06/22(水) 03:03:24.75ID:SASaungr
>>27
なるほどこういうことか

template <class ... Ts, class U> U do_anything(Ts ...);
2022/06/22(水) 07:15:40.26ID:KrJiTw7R
>>29
Rustはtraitを用いたジェネリクスやenumなど便利で強力な機構を備えているため
具体的な現実の問題のほとんどはオーバーロードを使わずともそれらを用いてもっと良い解決を取ることが出来てしまう
2022/06/22(水) 08:41:50.14ID:lobyXiUO
幼稚園児の発想だね
34デフォルトの名無しさん
垢版 |
2022/06/22(水) 08:59:15.48ID:s09CCxIL
nim ってどうよ?
2022/06/22(水) 10:00:29.78ID:V1lHcDUa
>>34
かなりいいよ
36デフォルトの名無しさん
垢版 |
2022/06/22(水) 10:53:23.20ID:tHEXzaPe
flutter で dart だろ。Swift UIとか覚える気ない、というかApple終わってるし
2022/06/22(水) 11:56:08.73ID:4fUU5ZCa
nimダウンロードできない。
なぜか、消える。ノートンが削除してるの?
2022/06/22(水) 12:27:18.00ID:dG1UKNjk
>>37
この文面からして明らかにプログラミング向いてなさそう
2022/06/22(水) 17:58:01.91ID:jR4emiFb
GUIフレームワークがついてる言語が少ないので嫌だな
2022/06/22(水) 23:42:43.21ID:DzsA87OB
ノートンなどアンチウイルスソフトが必ず隔離や削除する、インストールの際はインストール先を例外にする必要があります
全部誤判定なんだがアンチウイルスソフトの会社は殿様商売だな
2022/06/24(金) 13:42:32.48ID:Z+V4WXYl
>>40
ここまで日本語不自由だと生きるのつらそう
2022/06/24(金) 19:59:44.23ID:AZl692OH
【IT】世界中のIT技術者から愛されているプログラミング言語 3位は「Clojure」、2位は「Elixir」 1位は? [田杉山脈★]
https://egg.5ch.net/test/read.cgi/bizplus/1656048302/


スレタイはこの上位といれかえたら?
2022/06/24(金) 20:12:58.51ID:UJITbcs3
ClojureもElixirもいいけど次世代かって聞かれるとう~ん
なんだろうね次世代って
2022/06/25(土) 09:52:11.80ID:+nqB0HMQ
>>42
毎年恒例の1位となってるな

>世界中のIT技術者から愛されているプログラミング言語はなにか。
>プログラミング関連のQ&Aサイト「Stack Overflow」を運営する米Stack Exchangeが
>そのような調査結果を発表した。
>各言語の「Loved」(愛している)と「Dreaded」(恐れている)の比率で
>Lovedが最も高かったのは「Rust」(86.73%)で7年連続で1位になった。
>回答数は7万1467件。
2022/06/25(土) 12:36:15.24ID:ul9cRZkF
>>44
なんかもうネタみたいになってるけどこれってアメリカンジョークなのか?

Rustは自分では使いたくないかな
仕事でコーディングしてる人が使ってくれたらいい
2022/06/25(土) 15:33:06.41ID:KZ/E7BkI
食わず嫌いだったけど
使うようになってRustが最もコーティングしやすいプログラミング言語だとわかった
2022/06/25(土) 17:07:59.40ID:XFOsSqRc
どのへんがとは全く言わない、糞言語Rustアゲおじさん
2022/06/25(土) 17:31:49.13ID:Ubwsp+uM
どういうレベルの人か察してやれ
2022/06/25(土) 20:40:59.84ID:/UVjDglo
次世代って響きは良いけど従来の言語の穴を塞いだ発展型の方が好まれそうと感じる
でもその結果C++とかObjective-Cが生まれたと思うとその考えも合ってるんだか自信がない
50デフォルトの名無しさん
垢版 |
2022/06/27(月) 14:02:27.16ID:kVADuAyl
その意味合いでいうなら
v言語が宣伝してる内容を全部まともに実装できたら次世代と言っていいんじゃないすかね
2022/06/27(月) 14:24:04.88ID:6DiYUBn7
もっといい言語ないかな~
2022/06/27(月) 14:25:31.64ID:BV1DTZv2
過去にない新たなパラダイムを開く言語こそ次世代言語
それが何かは知らんが
2022/06/27(月) 16:35:25.69ID:2zgfe4St
YouTube で有名な雑食系エンジニア・KENTA が、既に結論を言ってる。
文系のキャリアパスは、Ruby on Rails → Go のみ

Rust, Elixir は普及のキャズムを越えなかった。
越えたのはGo だけ

いつも思うけど、Stack Overflow にいる香具師は、プロじゃないと思う。
転職に適さない
5453
垢版 |
2022/06/27(月) 16:50:49.51ID:2zgfe4St
AWS Lambda のデフォルト言語は、
Node.js, Python, Ruby,
Java, Go,
PowerShell, C#

Rust, Elixir, PHP は入っていない。
カスタムコンテナを作るしかない

でも、Elixirは5千万プロセスが、130GB ぐらいのメモリ使用量らしいから、
32GBでも、1千万プロセスぐらい動くかも

IoT で、Nerves には期待している。
Ruby on Rails の本を書いている、黒田努の本も出たし
2022/06/27(月) 17:13:12.52ID:rnJb8tm1
GoはLambdaの新しいAL2環境においては単なるカスタムランタイム扱いに格下げされており、Rustとの違いは無くなっている
キチガイに触るつもりはないが他の人への情報提供として
2022/06/27(月) 17:20:17.54ID:gf8cGZwe
Erlang系の話題も少ないけどGleamとかどうよ
程々にホットだけどフレームワークはまだできてない、現状はそんな感じ
BEAMで動いて型が付いてて開発が動いてるってだけで機能として珍しい所はあんまり無いんだけどさ
そんな関数型関数型しい仕様でもないしギークが喜ぶリッチな型があるわけでもない
あとはjsがこないだ吐けるようになった
2022/06/27(月) 17:41:40.73ID:hsXMzH39
未だにKENTAのゴミ動画を当てにしてるやつが湧くのか
2022/06/27(月) 20:09:14.72ID:7Bf+48fI
本人でしょw
2022/06/27(月) 21:32:09.95ID:BV1DTZv2
>>55
rustとの違いがないってことはRAIIパターン使えるようになるの?
2022/06/27(月) 22:04:16.27ID:6JaS2WC8
>>59
全然関係ない
AWS Lambdaでの実行環境の話
2022/06/28(火) 14:36:14.98ID:1wirEm3f
Rust is coming to Linux, says Torvalds
https://cloud7.news/linux/rust-is-coming-to-linux-says-torvalds/

Torvalds also announced some changes he plans to implement into Linux soon.
Most significantly, the open-source programming language, Rust might be included in the next release. Torvalds stated that Rust will be introduced in a limited way.
2022/06/28(火) 15:53:32.16ID:L5XiZwek
>>61
きたーーーーーーーーーーー
6353
垢版 |
2022/06/29(水) 18:00:11.30ID:zCehF1Jn
KENTA の天敵・モローも、遂にRuby on Rails のキャリア相談までやり出したw

2020年には、Railsはオワコンと言っていたが、
Railsの仕事が増えたため、急きょRailsに鞍替えw
主張が、KENTAと全く同じになったw

【2022年版】Ruby on Railsの将来性
www.youtube.com/watch?v=YWKxh3KoNsY

スタートアップ企業の第一選択肢で、リモートワークも多い。
給料450〜500万円、業務委託は月50〜60万円

データベース設計、React, TypeScript も勉強すると良い

キャリアパスは、
Rails → Go, SRE、エンジニアリング・マネージャー
6453
垢版 |
2022/06/29(水) 18:08:23.13ID:zCehF1Jn
今までのモローの主張は、

KENTA がRuby on Rails サロンをやる目的は、
ポートフォリオを作るための学習期間が長いので、
サロンに長期間入ってもらって、KENTAがもうかるので、Railsを勧めている

Railsはオワコンなので、サロンに入っても、仕事は減っていく一方と言ってたのに、
今じゃ、KENTAと全く同じ事を言ってるw
2022/06/29(水) 18:15:54.85ID:5n1aZHdk
Linux開発にRustで掛かれたコードが解禁された

しかし
Cで書かれたものを置き換えることはしない
APIを変えることはしない
2022/06/29(水) 22:16:42.10ID:a+duSEZX
相変わらず三流ユーチューバーを引き合いに出すやついるのな
2022/07/01(金) 21:34:11.78ID:12jEq8hC
>>65
どこでも同じシンプルな結論が出てるな
・既存のものを書き換えるのは無意味
・新たに作るものはRust一択
2022/07/01(金) 21:52:53.35ID:JFBfOGuK
あまりにも既存コードが膨大だからね
長らくあらゆる環境で機能してたコードをリプレイスするほどまでのメリットはないだろう

もし仮にそこまでメリットあるんだったら、即刻世界中からC/C++のコードを絶滅させてほしいわ
69デフォルトの名無しさん
垢版 |
2022/07/02(土) 07:56:01.10ID:lUSnA9b+
誰もリプレイスするべき、なんて言ってないよ
2022/07/02(土) 09:01:16.19ID:hTSqv50e
そうやってCOBOLのコードが維持それ続けてるんだよなぁ
2022/07/14(木) 20:22:39.85ID:ZkG98XYT
COBOLを舐めてはいけない
そもそも基本的に動的アロケーションをしないから、メモリ管理に関してはRustなんかに比べても信頼性が無茶苦茶高い
72デフォルトの名無しさん
垢版 |
2022/07/15(金) 08:41:12.46ID:LdUI0ldE
>>71
でDATA DIVISIONが半分を占める悪夢のようなコードが蔓延するんですね
2022/07/16(土) 02:22:35.47ID:wu6dkzng
BunはZigで実装してるのか
なかなか尖ってていいじゃないの
https://zenn.dev/k41531/articles/dbedb88f06898a
2022/07/16(土) 07:08:19.77ID:vxjrsiXW
rustじゃ駄目だったのかなあ
2022/07/16(土) 07:25:23.59ID:6ZY7uA4U
多様性があった方が良いんじゃないの?
2022/07/16(土) 12:38:54.49ID:730D9OZt
Zigなかなかおもしろいね
エラーハンドリングがSwift風で好感が持てた
2022/07/17(日) 00:52:05.19ID:vN6ol9NM
Zigやるわ
2022/07/17(日) 01:03:33.43ID:KV4hrNVX
Rustの終わりの始まり
2022/07/17(日) 01:25:06.31ID:0s/4JmSD
Rustは安全性と高速性と書きやすさの両立を実現した
ZigはC++と同じで安全性は保証しない
Rustに対しては相対的にZigのメリットは無い
C/C++で書くよりはZigの方がおすすめではある
2022/07/17(日) 02:03:08.49ID:vKjp9uxK
Zenはどう?
2022/07/17(日) 02:05:03.30ID:vN6ol9NM
Zig軽く見たけどメモリ管理自前なのがキツいな
ここまでむき出しにするかー
2022/07/17(日) 02:45:01.72ID:Zp8ItUSG
zigはそのままCのコンパイラになってかつクロスコンパイルが簡単ってのが良いね
既存のCプロジェクトのコンパイラをzigに置き換えるだけでもメリットがあるし、そうなると徐々にソースもzigに置き換えたくなってきそう
2022/07/17(日) 03:42:19.20ID:Ur3sSwLC
>>80
だいぶ前にZigのパクリって言われてたな
今はどうなんだろ
2022/07/17(日) 09:19:07.01ID:dwElkP1X
>>74
rust実装ならdenoがあるし
nodejs代替ならdenoが本命だし
2022/07/17(日) 11:37:18.91ID:bCNgPTt6
流行るかどうかは別にしてZigはスレタイに相応しい言語だな

今のスレタイはNimを除いて全て現世代の言語になっちゃったから
2022/07/17(日) 11:47:40.57ID:vKjp9uxK
TypeScript、Swift、Go、Kotlinはとっくに普通の言語で、
これから新規プロジェクトやるならその辺の言語しか触らなくてもおかしくないね、ってレベルでもう一般的
87デフォルトの名無しさん
垢版 |
2022/07/17(日) 11:50:14.03ID:+NC/ggVn
>>1
typescript swift go kotlin は十分メジャーだから次スレからは外すように
2022/07/17(日) 14:04:28.95ID:AoTZ8TcP
まだ普及してなくて気になっているのはZig, Nim, V, Valeくらいかな
2022/07/17(日) 14:14:11.96ID:vN6ol9NM
Zig触ってるとRustの所有権ってめちゃくちゃ優れた概念だったんだなと実感できるね
2022/07/17(日) 15:07:20.14ID:SLeX0Vy/
従来のプログラミング言語と違って革命的に新たな概念をもたらした次世代言語はRustだと思うのですが
どうしてスレタイに入れないのですか?
91デフォルトの名無しさん
垢版 |
2022/07/17(日) 15:35:25.31ID:AlxrTtXq
次世代言語ではなくすでに現世代の覇権言語だから
92デフォルトの名無しさん
垢版 |
2022/07/17(日) 16:35:29.89ID:WgvrEhxC
C++0xのパクリだからでは?
2022/07/17(日) 17:26:25.41ID:0s/4JmSD
安全性の保証を実現したC並みの高速な言語はRustしかない
94デフォルトの名無しさん
垢版 |
2022/07/17(日) 17:42:03.18ID:3i/TeYSj
もし今までC/C++でシステム開発をしてきた会社で
モダンなシステムプログラミング言語が試用されるとしたら
それはRustではなくZigもしくはNimだろう
2022/07/17(日) 18:00:29.39ID:SLeX0Vy/
>>94
それらは本質的にはC/C++と変わらないから採用するところはほとんど無いと思われます
もしその分野で新たな言語を採用するとしたら採用に意味のあるRustとなるでしょう
2022/07/17(日) 18:36:18.24ID:occ/cz9x
数名のプロジェクトで、納期も緩ければあるかもね。
2022/07/17(日) 18:51:09.61ID:Zp8ItUSG
>>95
CとC++の欠点は安全性だけだと思ってる?
2022/07/17(日) 18:56:55.96ID:+DL/3zgJ
NimはともかくZigはまだ1.0でもないから会社で使える感じはしないけどな
将来的にCの代替としては期待している
99デフォルトの名無しさん
垢版 |
2022/07/17(日) 19:06:00.51ID:WgvrEhxC
そもそもRustの利点と宣伝されてるものって、C++20のコンセプトを簡易的に実装したものでは?
2022/07/17(日) 19:13:13.63ID:Ur3sSwLC
Rustの話しかしねーなお前ら
2022/07/17(日) 19:48:29.77ID:CH5pcs5m
const std = @import("std");
pub fn main() !void {
const stdout = std.io.getStdOut().writer(); ←ここすこ
try stdout.print("Hello, {s}!\n", .{"world"});
}
writerを変数に取れるとなんか安心する
Rustとかだといきなりマクロでprint!()だしモヤる
2022/07/17(日) 21:24:39.01ID:D6jSpq7E
Rustでもこんな感じで書いてもいいのよ

use std::io::{self, Write};
fn main() {
let mut stdout = io::stdout().lock();
stdout.write_all(b"hello world").unwrap();
}
2022/07/17(日) 21:44:39.47ID:PMMdo41Y
>>101
(1) Cのprintfと同じ機能がRustのprint!であり分かりやすく使いやすい
(2) Rustでも色々な指定は可能
(3) プログラミング言語毎に様々な書き方がなされている中では些細な話
2022/07/17(日) 22:16:39.96ID:PMMdo41Y
>>102
そこは>>101の例に合わせてformat指定

let mut stdout = std::io::stdout().lock();
write!(stdout, "Hello, {}!\n", "world")?;
2022/07/17(日) 22:23:33.10ID:Zp8ItUSG
>>101
これってフォーマット指示と引数があっているかのチェックはいつ行われるの?
2022/07/17(日) 22:26:33.06ID:SZhCYswt
Zigだけどやっぱスコープ抜けた時に一斉に不要なメモリ解放する機構ぐらいは欲しいなあ
そういうのないよね?

Obj-Cにおけるautoreleasepoolとかv8におけるHandleScopeみたいなやつ
2022/07/17(日) 22:33:23.76ID:CH5pcs5m
>>102
ありがとうございます

import java.io.*;
class Ideone {
public static void main (String[] args) {
final PrintStream out = (new java.util.Random()).nextBoolean() ? System.out : System.err;
out.printf("Hello, %s!\n", "world");
}
}
JavaのIOまわりはすこ
2022/07/18(月) 00:06:45.58ID:KMiFC5Pb
>>87
俺的には最初のリリースから10年経っているのはもう次世代とは言えない
って感じなんだよな。

>>96
数名でも初心者に毛が生えた程度のレベルの奴(どかた)でも良いプロジェクトじゃないと駄目だろ
メジャーなC++ですら日本ではスキルのある奴がそろわないんだからな

>>99
逆じゃないのか
Rustの制約をC++でも簡易で良いから欲しいって感じでC++20でようやくコンセプトとして導入じゃないのか
ジェネリクスには制約は必須なのにC++では長い間導入されていなかったからな
2022/07/18(月) 00:50:41.17ID:u6hhGzsh
Zigの特徴はCよりも未定義動作を増やすことでコンパイラによる最適化を過激にできて場合によってはCよりも高速になることを狙う点
つまり未定義動作を無くすことで安全と高速を両立させるRustとは真逆の戦略を採っていること
2022/07/18(月) 01:42:15.77ID:S/imfak8
>>109
UBの種類はさすがにCより少ないよ
2022/07/18(月) 06:06:03.85ID:4eOAm5LE
>>109
お前、未定義動作の意味わかってないだろ...
2022/07/18(月) 06:17:28.08ID:u6hhGzsh
未定義動作によりコンパイラが最適化を進められる話
https://cpplover.blogspot.com/2014/06/old-new-thing.html
2022/07/18(月) 07:01:28.61ID:ssl6Co9E
マジキチかよw
114デフォルトの名無しさん
垢版 |
2022/07/18(月) 08:19:25.09ID:mVdITidT
Rust信者ってこんなに低脳なん?w
ヤバっ...
2022/07/18(月) 11:04:54.36ID:5guVnF2o
てかcにもdefer入るしそれで良くね?
116デフォルトの名無しさん
垢版 |
2022/07/18(月) 11:21:45.49ID:1omE+gQa
そもそもC/C++がまともに使えない低能のための言語がRustですし
117デフォルトの名無しさん
垢版 |
2022/07/18(月) 11:36:06.98ID:biPIwclR
>>95
zigはそう言えなくもないがnimはちゃうやろ。少しはググれよ。
ただまぁ、c/c++からの移行ではrust一強な感はある。
118デフォルトの名無しさん
垢版 |
2022/07/18(月) 11:40:31.18ID:biPIwclR
>>115
決定したの?
2022/07/18(月) 15:04:52.06ID:n//xSWhh
僕は職業プログラマーじゃないんで
新しいBASICたるswiftとswift playgroundでいいです。
ちょっと数学的解析するのに使ったらすげぇ楽だこれ
ちにゃ〜
2022/07/18(月) 16:31:30.05ID:o05Sk4F2
>>119
Mathematicaとかmaxmaとか使ったほうがいいんじゃない
2022/07/18(月) 23:29:01.81ID:V4/YV6GP
>>108
ジェネリクスとRustのトレイトによる制約の相性の良さは感動した
Rustはよく考えられて設計されていると
2022/07/19(火) 00:44:59.22ID:gapBBEtz
よく考えて設計したがためにtraitにasync fnを定義するためにGATsが必要で
コンパイラにSATソルバーを入れる必要が出てきてたりして大変そう
2022/07/19(火) 09:36:36.78ID:wQVGctip
タイトルにRustが無いのに、こいつらは文字も読めなければ知性すらない。そりゃ嫌われるわな
124デフォルトの名無しさん
垢版 |
2022/07/19(火) 22:42:59.43ID:MhwTnkaY
比較としてrustが出るならいいが、単独で出されると何だかなぁ感があるよな。
125デフォルトの名無しさん
垢版 |
2022/07/20(水) 01:23:22.22ID:x6yfnsIC
Google?の新言語
https://github.com/carbon-language/carbon-lang
2022/07/20(水) 01:33:59.92ID:xi/WqfXE
>>125
C++から移行しやすい後継言語ということか
Rustを参考にライフタイムも検討中みたい

C++の既存コードって膨大だし、本当にシームレスにC++から移行できるなら有用そう
2022/07/20(水) 01:40:05.72ID:nOwUi7j2
>>122
GATsがnightlyで使えるようなので試してみたが非常に強力だな
Rustに欠けていた土台部分の穴を埋めて様々な機能の大きな基盤となる感じだ

>>125
画期的なものを期待して見たら単なるAltC++でズッコケた
128デフォルトの名無しさん
垢版 |
2022/07/20(水) 10:38:59.85ID:+8MBpHfA
>>125
なんでCarbonとかにするかなぁ
Macのやつと間違えるやん
2022/07/20(水) 13:53:08.57ID:QduY8YNs
名前は置いておいてついに決定版の言語が出たか
Rustの次の言語だなこれは
2022/07/20(水) 14:18:06.41ID:ThH+Z+BW
見たところZigのC++版ってとこかな
2022/07/20(水) 14:18:06.52ID:GOFKDz27
Rsutは死産だったな
2022/07/20(水) 14:36:18.32ID:CC/ADkRB
Nim言語ならC++の関数だけでなくテンレート関数/クラスを呼び出せる機能があり、std::vectorやstd::stringを使うことも可能。
compileプラグマを使えばC++のコードをコンパイルしてリンクできる。
emitプラグマ使えばNimのコードの中にC++コードを入れることができる。
Nim言語はC++言語を生成してからgcc/clang/vcc等のC++コンパイラを呼び出して実行ファイルを生成するからC++と簡単に連帯できる。
133デフォルトの名無しさん
垢版 |
2022/07/20(水) 15:42:59.72ID:qJwz0nM8
Nimはもっと評価されて良いと思う
2022/07/20(水) 16:04:11.13ID:QduY8YNs
Goはオワコンということでよろしいか?
2022/07/20(水) 16:15:14.40ID:LSK66KxM
なんでセミコロンありなの?
2022/07/20(水) 17:02:44.97ID:ThH+Z+BW
開発者の趣味
2022/07/20(水) 18:42:51.78ID:5UvTR+16
GC言語 GCによる自動メモリ解放
Rust 即時の自動メモリ解放
C/C++/Carbon(現在0.1) 自動メモリ解放ではない
2022/07/20(水) 19:19:34.59ID:XnEgORKH
>>137
Rustはスタックに積んでいる&生ポインタが無いから自動回収されるだけ。c/c++と一緒。
そんなことよりもスタック重視で基本は何でもスタックということを強調したほうがRustらしさの説明になるだろ。
2022/07/20(水) 20:40:05.79ID:xdIX6xM1
Rustはあらゆる面で安全と高速を両立する抽象化を実現した言語
Carbonのドキュメントを見ると目標はそこでなくRustの領分に入って来ていないでしょう
2022/07/20(水) 20:43:23.04ID:CC/ADkRB
ほとんどのシステムプログラミング言語と呼ばれるものは変数がスタックに確保されるかヒープに確保するかはコントロールできるはず。
ただし可変長な配列や文字列型はヒープにデータを格納される。
違いはヒープに変数を確保したときに手動で解放する手法、スコープ抜けたら解放する手法、参照カウンタが0になったら解放する手法、GCを使う手法などがあるところ。(valeのgenerational referencesというのもあるけど)
Nim言語でもrefがついてないobjectはスタックに置かれるしRustでもBoxやRc使えばヒープに確保されるしC++でもscoped_ptr使えば参照カウンタでヒープが管理される。
基本的に変数はスタックに確保して、どうしても必要であれば(一つのオブジェクトを複数の変数から参照したい、OOPしたいなど)ヒープを確保するという感じの書き方になると思うけど。
2022/07/20(水) 20:52:32.44ID:5UvTR+16
Rustでは自動的に安全に即座にメモリ解放される
ここが重要なポイント
だからRustは高速と安全を両立させることができている
それに加えてRustではメモリ競合なども完全に防止する
2022/07/20(水) 21:03:41.80ID:5UvTR+16
そしてCarbonの目標文書を読んでもその目標は書かれていない
つまりRustの本質と競合する言語ではない
2022/07/21(木) 00:23:47.84ID:F7Gtvv1S
変数をヒープに確保するという言い方はなんか気持ち悪いな
2022/07/21(木) 00:34:40.13ID:MOkaWH3B
結局CarbonはC++の変種に過ぎないのか
新たなプロジェクトではRustを利用する流れは変わりそうにないな
Carbon採用の動機や利点が全くない
2022/07/21(木) 00:49:33.21ID:JPxznSjw
Googleが推してるのではなくGoogle社員のプロジェクトやからね
2022/07/21(木) 00:50:32.86ID:mCQN4Yoj
なんでそんな必死なん?
2022/07/21(木) 01:20:47.87ID:F7Gtvv1S
将来的にはcarbon freeにしたいという自虐ネタを込めた命名
2022/07/21(木) 01:25:08.23ID:qcok3Xr6
人によりけりだけど、一つのプログラミング言語を学習してそれをずっと使いつづけたい、他の言語の勉強したくないという人は多い。
Rustは比較的学習コストが高め。
もし他のプログラミング言語がメジャーになったりもっと優れたプログラミング言語が現れると苦労してRustを勉強した努力が無駄になってしまう。
だから新しい言語の話題がでるとRustを苦労して勉強した努力が無駄になってしまうという恐怖感が生まれて必死に否定するんじゃないかと。

異なるプログラミング言語間でも似た所はあるし、新しい言語を学ぶときにRust言語を学んだ経験が全く無駄になることはないだろうと思うけど。
2022/07/21(木) 01:25:42.94ID:nOpNTAAx
Carbonでオブジェクトをヒープに確保するのどうやるの?
なんかよーわからん
ドキュメントがなさすぎる
流石にまだこれを使うのは難しいな
2022/07/21(木) 01:34:26.10ID:nOpNTAAx
Rustの欠点として可変参照の扱いがC/C++互換をかなり難しくしてるんだよな
既存プロジェクトとのinteropにおいては無視できないケースが多い
特にGoogleなどの大企業は
その結果生まれたのがCarbon
2022/07/21(木) 01:56:23.59ID:F7Gtvv1S
Carbon本家もRustが使えるならRustを使えと言っている
でかいC++プロジェクト抱えてる人が使うものだよね
https://github.com/carbon-language/carbon-lang/blob/trunk/docs/project/faq.md#why-not-rust
2022/07/21(木) 02:05:12.80ID:hbmQrHo+
>>148
Rustが出現して以来これだけ時間が経過しても
Rustが実現した『高速と安全の両立』を満たす他の言語が出てこなかった
その結果が大手IT各社による共同でのRustへの支援表明とRust Foundation設立
そしてC++を拒否していたLinux開発陣営までもがRust採用発表
つまり既にこの業界では雌雄が決している
2022/07/21(木) 02:06:50.27ID:hbmQrHo+
>>148
次に学習コストが高いといっても
他との大きな違いは所有権とライフタイムだけでありその概念は一日あれば誰でも理解できる
そして後は具体的にコードを書いて身につけてくのも他の概念と同じ
さらにRustが実現した『高速と安全の両立』のためには所有権とライフタイムによるのが最も適切とわかってきた
つまりRust以外に両立を満たす言語が出てきても学習必須の概念となる
同時にそれは画期的な発明がなされない限りRustの二番煎じの言語しか出現しないことを意味する
2022/07/21(木) 02:13:15.45ID:hbmQrHo+
>>150
データ競合安全性に関しては誰が考えても可変参照の不可変参照との区別が必要となる
むしろその区別をはっきりさせてこなかったために従来の言語はデータ競合の入りうる隙きを許してきた
過渡的には既存の安全でないものと組み合わせる時に扱いが大変だとしても
最終的には可能な限り全て安全なもので組み立てていくことになろう
2022/07/21(木) 02:17:23.88ID:F7Gtvv1S
>>148
現状Rustが初めての言語って人は少ないから
最初に学んだ言語を使い続ける人はrustユーザーの中ではかなり少数派なのでは
2022/07/21(木) 02:41:33.10ID:SY914jbi
>>142
> Rustの本質と競合する言語ではない
>>152
> この業界ではすでに雌雄が決している

どっちやねん
2022/07/21(木) 04:57:34.89ID:tF9h1cCP
ifの条件のとこ括弧必要なのかよ!
2022/07/21(木) 05:28:59.67ID:aDWah/z9
>>156
Rustが実現してる安全と高速性の両立をCarbonが提供するわけではないみたいだから競合しないね
CarbonのFAQ >>151 にもRustが使えるならばRustを使った方が良いと書かれているね
だから雌雄は決していると言っても過言ではないかも
159デフォルトの名無しさん
垢版 |
2022/07/21(木) 06:11:50.65ID:EDO+eFgH
恐らくCarbonはRustのいいところだけを抽出した感じだな
CarbonのほうがC++やTypeScriptに近いのでRustよりも馴染むだろう
Carbon派とRust派で分かれそうだ
2022/07/21(木) 06:23:11.04ID:aDWah/z9
>>159
嘘ついたらダメよ
Carbonはあくまでも既存C++遺産のため限定のもの
そしてRustのいいところは何もサポートしていない
だからCarbonの公式FAQ >>151 でもRustが使えるならばRustを使った方が良いと明記されてるね
2022/07/21(木) 08:20:01.30ID:WJJWa/BR
C++の後継目指すプログラミング言語「Carbon Language」、Googleの技術者が実験的公開。C++は技術的負債で改良が困難と
https://www.publickey1.jp/blog/22/ccarbon_languagegooglec.html
2022/07/21(木) 09:57:08.94ID:6/eI+t+6
>>153
おまえ所有権理解できてなくて恥かいてたやんww
誰でも一日で理解できる概念やのにwww
2022/07/21(木) 11:18:14.67ID:BsoCJ7d4
所有権どころかシャローコピーとディープコピーの違いも知らずにRust通を気取ってるアタオカさんだからRustスレでは鼻つまみもの
2022/07/21(木) 11:19:06.12ID:9tbOXQd/
キモキモRustマン、ワッショイワッショイはRustスレでやれ。二度と来んな
2022/07/21(木) 12:02:23.44ID:nj8XyhCb
Rustスレ民が学習して構ってもらえなくなっちゃったから来てるんでしょ
2022/07/21(木) 13:04:30.75ID:nOpNTAAx
ここ以外でもツイッターとかでやたらRust難しいと印象操作しようとしてるやついるよな
C/C++をまともに書いたこと有ればたいして難しくもないのに
167デフォルトの名無しさん
垢版 |
2022/07/21(木) 13:47:25.39ID:LMMByu3R
>C/C++をまともに書いたこと有ればたいして難しくもない

その通り
で結局C/C++でええやんという話に戻る
2022/07/21(木) 13:47:41.33ID:dTNn2Vwx
色んな言語をやってきてRustが特に難しいとは思わなかった
むしろ便利さと書きやすさで気に入った
他の言語より抽象化されてる感じが良いね
そこが頭の弱い人には逆に難しく感じるのかも
2022/07/21(木) 13:53:10.37ID:dTNn2Vwx
>>167
C/C++はごく最近は抽象的な扱いのものの導入も増えつつあるけど
元がダメだからボロ屋の上に建て増し違法建築みたいになっちゃってる
基礎がしっかりしているRustはその点でも良いね
2022/07/21(木) 14:00:17.21ID:MFhv3qMI
C++はmove semanticsの建て増し感が特に厳しいな
後付するならあれしかなかったのは分かるけど
そこがちゃんとしてるというだけでもRustの方が楽に感じる
2022/07/21(木) 14:02:26.54ID:cxEc0/aI
RustのC++との相互運用性を改善する方向性で頑張ってくれたらよかったのにな
C++の保守専用言語なんか普及するわけないじゃん
2022/07/21(木) 14:11:46.30ID:dTNn2Vwx
>>171
Carbonを新たな開発で使うことはないだろうからC++の保守専用言語という表現いいね
2022/07/21(木) 14:57:52.79ID:j9ULkGXf
>>168
>色んな言語をやってきてRustが特に難しいとは思わなかった
参考までにやってきた色んな言語を列挙してもらえるかな?
2022/07/21(木) 15:55:40.07ID:Q1uK5/Rv
>>166
「CとC++」な。
両方それなりに使えないとRustきついだろ。
2022/07/21(木) 16:06:53.27ID:iRk5Je6N
そんなにシステムプログラミング言語が必要な事をやってるの?

私の場合は、Pythonでほとんど困らなくて、偶に.net系くらいなもんだから、Rustの話が続いても別世界の話過ぎて、付いていない…
2022/07/21(木) 16:25:46.06ID:PcF3TGn3
>>174
ぶっちゃけ全然きつくないよ
どの辺がきついと思うのか逆に知りたい
2022/07/21(木) 16:28:02.22ID:mCQN4Yoj
こういう奴が一番危険なんだよな。。実際仕事すると洒落にならんことし始める。
2022/07/21(木) 17:45:24.11ID:aer6+S9Z
メモリやらリソース管理、分散処理の課題をRust以上まともに解決してない言語だと、次世代って感じしないなぁ。

柔軟さ動的さに極振りだったRubyや、関数型のパラダイムを持ち込んだHaskellとかもなんか新しさがあったわけで。
2022/07/21(木) 18:05:35.14ID:lCXJwEni
rubyは目新しさというよりは
perlよりマシっていう感じだったよね実際は
perlよりマシだしOOPLを自称してるし
イテレータがあるしで
(当初は内部イテレータがあるのをウリにしてた記憶)
「ザ・ちょうどそういうの欲しかってん言語」って感じ
2022/07/21(木) 18:09:56.47ID:nOpNTAAx
Rustわからんって言ってる人ってスタックとヒープを理解してない
せめてメモリのレイアウトぐらい理解しとこうよ
2022/07/21(木) 18:22:38.41ID:iRk5Je6N
>>180
スタックとヒープの違いやメモリ解放とOSへ返却が違う位は分かるけれど、私にはRustは過剰で難しい。
2022/07/21(木) 18:37:11.06ID:nOpNTAAx
>>181
わからんならとりあえずヒープは忘れて全部スタックに乗せるというのが良いと思うよ
スタックをつかって所有権を移動させていくプログラミングすれば不要なコピーは起きないし
効率も良い
2022/07/21(木) 18:50:15.74ID:ppiq2d/L
>元がダメだからボロ屋の上に建て増し違法建築みたいになっちゃってる

まあ同意は出来るが
「C/C++を*まとも*に使える」
という意味の捉え方によるな
違法建築になってるのは「*まとも*に使えてない」人のコード
2022/07/21(木) 18:52:26.12ID:HGs+QJMA
>>183
やっぱりc++のダメな部分を削ったsmart c++欲しいな。
2022/07/21(木) 18:54:02.97ID:ppiq2d/L
>>180-181
結局そいういうのC/C++で勉強する訳で
Rust理解するためにC/C++の勉強が必須なら
C/C++でええやんって話に戻る
2022/07/21(木) 19:14:35.47ID:F7Gtvv1S
C/C++をやればスタックとヒープの概念が身につくのであればRustをやってそれらが身につかない理由もないと思うが
187デフォルトの名無しさん
垢版 |
2022/07/21(木) 19:18:49.81ID:vhEYvTLl
>>184
それがRustの狙いでは?
2022/07/21(木) 19:19:07.93ID:ipycKOwR
>>185
遠回りになるがそこから始めるのもありかもな
メモリ関連はそれなりの失敗経験がないと体で理解できないから

Cでクソでかい構造体をスタックに置いてしまって
スタックオーバーフロー起こしてシステム停止したり
C++でコピーコンストラクタの実装ミスって
ダングリングポインタ作ってシステム停止したり
デストラクタでdelete忘れてメモリリーク起こして
システム停止したり
それなりの地獄を味わってる俺が言うんだ間違いない
2022/07/21(木) 19:44:43.35ID:F7Gtvv1S
趣味プログラミングならどんどん変なことしてクラッシュさせれば良いけど
業務ならもっと安全を期したいなぁ
2022/07/21(木) 19:52:05.48ID:lCXJwEni
> それなりの地獄

かわいい地獄でつねw
2022/07/21(木) 19:54:55.78ID:qQS6uOSz
C/C++のよくある業務ってやっぱり組み込み?
それかゲーム開発?
2022/07/21(木) 20:25:53.32ID:n+UC1473
無料で答える業務はない
2022/07/21(木) 20:54:05.56ID:rGFlKcYB
>>175
Pythonは約10倍くらい遅い
メモリも喰う
ガベージコレクションもある
まともな並行並列プログラミングが大変
Pythonは小さなバッチ的スクリプトの範囲でのみ使うのが正解
2022/07/21(木) 21:04:39.89ID:v1bwr09c
>>191
スマホの課金ゲームのバックグランド鯖の開発とかもあるよ
2022/07/21(木) 22:23:39.66ID:EhpLe0Nv
PythonやJavaScript書くときはでかいアロケーションの有無くらいしか意識しないけど
C#やSwift書くときはvalue typeとreference typeの使い分けがあるからスタックとヒープもそれなりに意識する
Goの場合は気になるところでescape analysis
2022/07/21(木) 23:33:08.48ID:n+UC1473
三角関数や薬剤師の存在を意識してる人は大体が
「コスト」を強く意識した方がメリットが大きいと思い込んで意識している
2022/07/21(木) 23:43:19.63ID:U3FKAWyk
自分でも何を書いてるのか理解できてなさそう
思い込んで意識するというのも意味不明
2022/07/21(木) 23:53:17.15ID:vrEITS91
>>195
PythonやRubyやJavaScriptなどのオモチャ言語しか使ったことのない人だけがスタックとヒープを意識しないわけか
199デフォルトの名無しさん
垢版 |
2022/07/22(金) 06:54:41.09ID:WiEbw06Y
コンピューターの動作を隠蔽すればオモチャに近づくのなら究極的にはアセンブラ以外は全てオモチャなのではないだろうか
200デフォルトの名無しさん
垢版 |
2022/07/22(金) 07:02:16.68ID:FhKnOINS
アセンブラはスタックやメモリーにアクセスするプログラムを書かされる。
Cはメモリーにアクセスするプリグラムを書かされる。

Javaはスタックもメモリーも意識する必要がない。
すなわちJavaが最も優れている。
2022/07/22(金) 07:23:24.99ID:oyZ2TNIq
>>199
メモリについてもそれ以外についても
抽象度が高い方がプログラミングしやすい
アセンブラよりもスタックとヒープというメモリについての抽象化をした言語の方が扱いやすい

一方で過度の抽象化は実用性を失う
例えばメモリとローカルディスクとネット上のディスクを全て統合して一つの巨大なメモリ空間に抽象化すると
巨大なメモリ空間を扱う極一部の用途を除いて過度の抽象化となってしまい速度差があるものは別々のままの方が好ましい

スタックとヒープを意識せずに済むPythonやRubyやJavaScriptなどの言語も同様な面がある
スタックとヒープには速度差があるため速さを重視する用途から見ると過渡の抽象化といえる
速さを重視せず意識しない用途をオモチャ用途と呼ぶならばPythonやRubyやJavaScriptはオモチャ用途すなわちオモチャ言語とも言えないことはない
2022/07/22(金) 08:16:15.80ID:FDKNW5k7
>>187
サブセットが欲しいのであって、併用できないのは要らん。
2022/07/22(金) 08:17:52.69ID:8hejYpL6
おもちゃ程度の事しかしないので、おもちゃ言語で困ってないんだよね。

Rustが、安全で効率良い速いって言われても、書き捨てのPythonでも10秒程度で処理が終わってしまうようなものだと、わざわざRustでってならないさ。

システムプログラミング向け次世代と、もっと緩いおもちゃ向け次世代みたいな感じに分けないと、話が噛み合わない気がする。
2022/07/22(金) 09:02:33.80ID:bANXE+J8
>>198
動的言語コンプレックス恥ずかしい
2022/07/22(金) 09:15:01.41ID:50nE7LhG
>>202
ダメな部分を使わなきゃいいだけじゃね?
間違って使うというならチェックツール作ればいい
2022/07/22(金) 09:57:43.45ID:q3/dBWm5
だからOS、ドライバとかの低レイヤーとWebみたいなのを分けて考えるべきだろ

何でもかんでもRustとはならない
適材適所
2022/07/22(金) 10:34:06.65ID:YNBeKdpL
コンパイル時のメタプログラミングを駆使すると実行時の電気代が安いんよ
ランニングコストを情報隠蔽とはならない
208デフォルトの名無しさん
垢版 |
2022/07/22(金) 11:20:36.22ID:emgmw9dd
>>202,205
どちらも一理ある

>>203
>システムプログラミング向け次世代と、もっと緩いおもちゃ向け次世代みたいな感じに分けないと、話が噛み合わない気がする。
一種と二種みたいなもんだな
209デフォルトの名無しさん
垢版 |
2022/07/22(金) 11:22:08.43ID:emgmw9dd
>>207
SDGsという言葉は胡散臭くて嫌いだが
SDGsの観点から言っても良質のコードを描くことは絶対地球に優しいよな
2022/07/22(金) 11:39:15.65ID:YNBeKdpL
Cのプリプロセッサの存在自体が納得できない人のために
マクロ言語ではなく型システムなら納得できるだろうとなったのがC++
コンパイラではなくインタプリタに近い方式なら前処理が無くなるだろうとなったのがPython
2022/07/22(金) 11:45:23.20ID:LVIZaCij
>>205
それを他人に強制できる、標準orデファクトとして確立したものが欲しい、ということだよ。
コーティングスタンダードでもいいんだけど、独自に作るのは重たいし、教育するのも大変だから、出来合いのものが欲しいところ。
2022/07/22(金) 11:59:28.82ID:ZDp8+ZKO
>>211
>それを他人に強制できる、標準orデファクトとして確立したものが欲しい、ということだよ。
くだらない理由だな。お前の人集めが酷いだけだろ。
2022/07/22(金) 12:21:12.21ID:G8DPlZOX
>>207
メタプログラミング駆使しなくても静的に書けば実行時の電気代が安くなる

そう、COBOLならね
2022/07/22(金) 12:23:13.63ID:LVIZaCij
>>212
コストとか単価を気にしない富豪はうらやましいですなぁ。
215デフォルトの名無しさん
垢版 |
2022/07/22(金) 12:46:18.43ID:65NBtvCk
>>167
>その通り
>で結局C/C++でええやんという話に戻る

お前の後輩の中のダメな奴にコード書かせてもそう言えるのか?
2022/07/22(金) 12:47:04.23ID:efNbKFVE
>>211
適当なリポジトリからclang-tidy等の静的検証ツールのルール設定をパクってくるとかはどうですか
2022/07/22(金) 13:32:14.29ID:YNBeKdpL
趣味のコミュニティなら駄目なコードはどんどん捨てる富豪になれば問題ないけど
趣味じゃない場合は貧乏というかケチになる
2022/07/22(金) 14:03:33.19ID:50nE7LhG
>>211
だからチェックツール作れよ
CIでチェック通らなきゃビルド不可にしときゃいいだけだろ
2022/07/22(金) 14:30:36.22ID:ZDp8+ZKO
いやケチるなら余計に人は選べよ。
2022/07/22(金) 15:07:10.50ID:hnGDX2CP
>>207
サーバーコスト(クラウドコスト)を考えると使う言語を変えることで速さと省メモリにより数倍~十数倍差が出るのは大きいもんな
あとは避けられる実行時エラー(例外含む)をできる限りコンパイル時に静的に解決したいわけだろ
ならばRustがベストチョイス
2022/07/22(金) 15:17:47.41ID:dO8Qo8Lr
>>206
むしろWebはRustむけ
2022/07/22(金) 17:13:14.54ID:efNbKFVE
Webという括り方が雑すぎる
223デフォルトの名無しさん
垢版 |
2022/07/22(金) 17:45:58.45ID:iaUAG8EO
どうせあれとあれを区別出来てないんだろうな
2022/07/22(金) 18:08:11.96ID:8hejYpL6
そのうち、HTMLやCSSのコーダーが、Rustで書き始めるわけか。
テスト工数は減らなさそうだし、制作費上がりそうで嫌だなぁ。
2022/07/22(金) 18:24:55.78ID:hnGDX2CP
>>221
こちらもWeb関係でRustを使っている
2022/07/22(金) 18:31:07.28ID:YNBeKdpL
アルゴリズムとデータ(構造)を区別するのやめようって言い始めた人も悪いのだよ
227デフォルトの名無しさん
垢版 |
2022/07/22(金) 19:46:38.86ID:56UVShba
型推論がモダンなら、動作推論でスタックヒープ最適化ぐらいあって良いのではないか
2022/07/22(金) 21:07:06.38ID:Fn4mSUKv
>>227
そう、Goならね
2022/07/23(土) 00:56:36.98ID:xoLMiefm
>>228
コンパイル時になるべく静的に解決して実行時の負荷をゼロもしくは可能な限り少なくしたいのに
Goはその真逆で実行時の負荷が大きい(ランタイムがデカい)から好ましくない
2022/07/23(土) 07:49:46.21ID:i/T78yqA
もしかして、Rust製のWordpressみたいなCMSあったりします?
2022/07/23(土) 08:34:42.30ID:+NLDKrMc
こういう奴に限ってロクなアルゴリズム書いてない、遅いうえに負荷だらけなのはお前のせい
2022/07/23(土) 08:45:37.01ID:YgKX3LKM
>>229
で、それをWebに適用したがる理由は?
なんのメリットがあんの?
2022/07/23(土) 09:08:24.13ID:z+0uNfVv
なくはないが、1要素に過ぎない
そういうやつに限って実行環境について無頓着で、クソ巨大なコンテナイメージ作ったりするし
2022/07/23(土) 09:12:35.67ID:YgKX3LKM
IOバウンドが主体の現代プログラムで積極的にRustを採用したがる理由がわからない
OSやドライバみたいな低レイヤーならわかる
2022/07/23(土) 09:30:42.73ID:h0kR6t/A
>>234
単一のリクエストの処理についてはその通りだけど、
1ノードで同時に処理するリクエストが増えていけばCPUまたはメモリが上限に達してスケールアウトが必要になる
つまりCPUやメモリの消費を削減することでノード数を少なくでき、コストを抑えられる
まあ現実にはDBや人件費の方が金かかるから大した効果はないんだからね
2022/07/23(土) 10:35:13.77ID:PgM2fTTz
>>234
IOバウンドが現代プログラムの主体というのはさすがに特定分野しか見てなさ過ぎ
2022/07/23(土) 11:04:56.52ID:zqWGCIwO
最近覚えたIOバウンドって言葉を使ってみたかったんだろうな
って感想しかない
2022/07/23(土) 11:22:01.68ID:YgKX3LKM
>>235
NodeやGoに比べて何%効率がいいの?なんかデータある?
2022/07/23(土) 11:24:44.12ID:YgKX3LKM
このスレにいるなんでもかんでもRustにしろおじさんはRust使ってる日本の企業是非あげてほしい
2022/07/23(土) 11:37:34.85ID:Oc+8bztj
MirakurunとMirakcとか見ればわかるけどメモリ効率が劇的にRustは優れてるけどCPUは大して変わらない
そこにコストをかけるモチベーションがどこまであるかって話じゃないの、録画サーバーはラズパイとか低スペPCで動かすっていうモチベーションがある

Rust推しの人はなんで実行コストのばかり話をして開発効率を軽視するのか?OS開発以外で企業で使われることはほとんどないだろうね。
2022/07/23(土) 11:37:55.41ID:XVn4RLKh
>>238
その2つを同列に並べるなよ
RustとGoの差よりNodeとGoの差のほうがはるかに大きいぞ
2022/07/23(土) 11:39:54.42ID:lSlSJyR5
>>239
ボッチの自宅開発者にそういうの求めるのは酷
2022/07/23(土) 11:50:03.97ID:gjUW5TY/
>>240
実行コストは情報隠蔽ができない高水準のスペック
だが開発コストは隠蔽できるので
低レイヤーの事情をいちいち考慮して右往左往したくないんじゃないかな
2022/07/23(土) 11:56:58.24ID:PgM2fTTz
>>240
開発効率の話は客観的な比較難しいのでは
なんか良い指標ある?
2022/07/23(土) 12:26:01.80ID:zqWGCIwO
>>244
普通にIPAが白書出してるよ
残念ながらRustは主要開発言語には入ってないけど
https://www.ipa.go.jp/ikc/publish/whitepaper_dl.html
2022/07/23(土) 12:54:16.63ID:KTZwFAzP
>>245
それ見ると指標はFPかSLOCだけ
しかも両方とも主開発言語による有意な差はないという結論

調査方法を考えれば当たり前の結論だけどね
2022/07/23(土) 12:56:45.10ID:KTZwFAzP
そもそもIPAが土方のやり方を推奨してるのが問題
248デフォルトの名無しさん
垢版 |
2022/07/23(土) 13:05:43.74ID:xNUThAwD
主観的にはRustはかなり開発効率高い
言語そのものもいいし周辺のエコシステムもいい
学習コストなんて二束三文だし
2022/07/23(土) 13:09:35.85ID:bizn9oDX
ScalaやHaskellでも同じこと言ってた
2022/07/23(土) 13:14:10.92ID:gjUW5TY/
他の言語で、初期化と代入の違いを学習したコスト
初期化時には参照カウントが2以上にならないという事実を認識するコスト

こういうのはRustの学習コストにはあたらない
251デフォルトの名無しさん
垢版 |
2022/07/23(土) 14:13:31.48ID:vuZXWhrA
今更な話じゃなく次世代言語の話してくれ。
2022/07/23(土) 14:30:45.45ID:7X2pFb00
現状Rustはライブラリの選択と学習と継続的な監査のコストが著しく高い
速度やリソース面でそれを補って余りあるメリットがあるようなシステムにしか採用されない

言語だけでみればライフタイム周りの煩雑さがある分だけC#よりもやや面倒という程度
2022/07/23(土) 14:41:37.43ID:tu3rIwC3
rustが向いてるのは明らかにミドルウェア層だわな。
アプリ層で使おうとするとかまともに仕事で使ったことない奴の戯言でしかないわ。
2022/07/23(土) 14:51:11.37ID:zqWGCIwO
>>246
> しかも両方とも主開発言語による有意な差はないという結論
どこをどう読んだらそんなアホな結論に達するんだ?
https://i.imgur.com/OQpwGw9.jpg
2022/07/23(土) 15:00:55.50ID:Bnag5ryf
むしろメモリ効率こそ現代の言語で重要なんだぞ?
CPUの性能は頭打ちというのを知らず?
機械学習みたいな行列演算するなら別だが普通のシステムプログラミングやWebアプリ、組み込みみたいな要件ではコアのパフォーマンスなど無意味

スクリプト言語みたいなGCコテコテの言語が速いことは絶対にない
現代のメモリアーキテクチャを知ってればあんなに参照を作りまくって
オブジェクトに触りまくって速いわけない
それはGoも同じ
現にGoは遅い
現代の言語での要件はスタックとヒープをプログラマが明確に意識でき
かつメモリ管理を安全にできる
これができているのは今のところRustのみ
2022/07/23(土) 15:14:50.07ID:QXN0FRoF
>>255
DockerとかKubernetesとかコンテナ技術を活用してマシンのリソースを有効活用するって流れになってるのはそうだけど
Rustで置き換えるってのは聞いたことがないな

> スクリプト言語みたいなGCコテコテの言語が速いことは絶対にない
それはIO待ちがほとんどないCPU処理が主体なプログラムでの話じゃない?
Goは適当に並行処理書いても極力処理がブロックしないように動作するけど
Rustは中断ポイントを自分で記述する必要があるから注意して書かないとGoより遅いなんてことはザラにある

このスレッドにあるベンチマークとか見ればいかにGoが優秀であるかがわかる
https://www.reddit.com/r/rust/comments/lg0a7b/benchmarking_tokio_tasks_and_goroutines/

IO待ち主体のプログラムはいかにブロックせずに処理するかが大事なのであってメモリ効率がボトルネックになることはないわ
2022/07/23(土) 15:31:18.71ID:Bnag5ryf
>>255
そういう特定のユースケースの話をしてるわけじゃないよ
そりゃベンチマークによって速かったり遅かったり
特定のエッジケースで速かったり遅かったりはあるでしょう

もっと数学的かつ抽象的に考えよう
ヒープにオブジェクトが1000個あります
しかしそのうち本当にヒープに乗せる必要があるオブジェクトが100個しかありませんでした
本来ヒープに100個しか必要のないオブジェクトなのに無駄な
ヒープアクセスが900個も起きてしまう
これをメモリ効率が悪いという
Goでもこれは起きうる
もちろんそれが*起きないように*書くこともできなくはないが
エスケープ解析などをしないとわからないし非常に難しいでしょう
しかしrustではこのようなことは起きない
2022/07/23(土) 15:31:55.55ID:Bnag5ryf
レス番間違えた
259デフォルトの名無しさん
垢版 |
2022/07/23(土) 15:40:38.68ID:FAO+OpS7
自演失敗お
2022/07/23(土) 16:04:31.85ID:zqWGCIwO
>>257
> 無駄なヒープアクセスが900個も起きてしまう
> これをメモリ効率が悪いという
お前はまず用語をちゃんと使えるようになってから出直してこい
2022/07/23(土) 16:08:37.49ID:Bnag5ryf
>>260
よくわからない
何が間違ってるの?
2022/07/23(土) 16:14:43.93ID:PgM2fTTz
>>252
ライブラリの選択コストが低い言語ってのは標準ライブラリがでかい言語のこと?
2022/07/23(土) 16:22:30.56ID:zqWGCIwO
>>261
アクセス回数の話なら実行効率
メモリー効率は必要とされるメモリーの量
2022/07/23(土) 16:33:12.53ID:L+Wx1/B2
自演rust狂信者の圧倒的な敗北.....
Rc<T>で無駄なメモリアクセスが起きてることを分かってない。参照カウントで、かなり無駄なカウントアップ・ダウンが現実に起きてるし非効率。
エスケープ解析なんぞでわかるのはほんの一部、goでメモリアクセスが遅めに見えるのは、goroutine間の変数への排他制御が無いからだしGCのせいでもない
古典的なメニーコアを素直に活用できない言語では起きない事を同じ土俵で無理に比べようとしている
確かにgoやrustがstructを使って、javaのようにobjectではないのはメモリー効率を考えているけど、ピープなんちゃらの説明はホントに
分かってないアホの説明。GCで掃除される対象の変数へのアクセスのことを言いたいのだと思うけど、そんなのアクセスするかはGCアルゴリズム次第だ
1回でいいから参照カウントの欠点を調べてこい
265デフォルトの名無しさん
垢版 |
2022/07/23(土) 16:47:16.76ID:GCyS0Uey
AndroidアプリをKotlinベースで作っているんですが、
一定時間スマホ操作ができなくなるような機能を作りたいのですが、どうやればできますかね?
いわゆるデジタルデトックスアプリみたいに、一定時間画面を覆って操作できなくなるアプリ
(バックグラウンド写ったりしないやつ)を想定してます
2022/07/23(土) 17:07:56.92ID:ObegvUfD
>>263
無駄なヒープアロケーションが900あるって書いてあるやん
>>257の文章は気持ち悪いけど
そういうことは起きうるよねとは思うよ
2022/07/23(土) 17:11:14.32ID:4etWwAtX
>>265
セキュリティ的に問題があるから無理
何もできないホームアプリを作って設定するくらいじゃないかな
それでも抜け道を完全に防ぐことはできないと思う
奥の手としては、バックグラウンドサービスでマルチスレッドで無駄な計算をぶん回して使用に耐えないくらい重くすればいい
2022/07/23(土) 17:30:04.86ID:zqWGCIwO
>>266
> 無駄なヒープアロケーションが900あるって書いてあるやん
お前プログラマに向いてないだろ...
書いてあるのは
> 無駄なヒープアクセスが900個も起きてしまう
2022/07/23(土) 18:08:33.07ID:jqS/WIc6
>>264
プログラミング経験が少なく勘違いしてるのだと思うけど
C++のshared_ptrやRustのRc/Arcはほとんどのプログラムではその出現が0個~数えられる程度
別の者が同時に同じ物を指し誰が使い終わるかわからないという特殊な状況でしか使われないため出現がレア
実際にプログラミングをするとそのようなケースは多くを避けることができるため極一部でのみ使用となっている
ガベージコレクション言語が全てをガベージとして捨てて回収するコストと比較してC++とRustのこの極一部のみを参照カウントで管理する方式は圧倒的に速くて有利となっている
2022/07/23(土) 18:17:12.38ID:IVV76sYn
> C++のshared_ptrやRustのRc/Arcはほとんどのプログラムではその出現が0個~数えられる程度

🤭
2022/07/23(土) 18:23:45.94ID:1dNQWzE2
>>256
それは無意味な比較
いくつもリプライコメントが付いて指摘されているように
まずまもともな並行処理コードの比較となっていない
次にそのコードのことをしたいならば別の適用をすることでGoとRustでほぼ同じ時間となることもリプライで示されている
きちんと読まずにそんなことでRust叩きをするアンチは愚か
2022/07/23(土) 18:28:20.30ID:PgM2fTTz
>>264
何と何を比較していて何が優れていると言っているのかがまったくわからん...
主張を明らかにするかID変えないで発言追えるようにしてくれ
2022/07/23(土) 18:43:45.96ID:QXN0FRoF
>>271
リプライ読んだ上で言ってるけど?文盲か?
Goはランタイムが賢いから適当に書いても極力ブロックしない様に高速に動作する
Rustは中断ポイントを自分で指定する必要があるから無駄にブロックしないように注意しないといけないって書いたよね?

つまり適当に書いたGo>>>適当に書いたRust

となるわけ。
2022/07/23(土) 18:45:49.99ID:1dNQWzE2
>>269
Rcが極一部にしか出てこないのもそうだが
>>264はもっと大きな勘違いをしていて「Rc<T>で無駄なメモリアクセスが起きてる」と書いて参照カウントを批判している
実際にはRc<T>にアクセスしても付加コストはゼロでRcでないポインタとコストは同じ
つまり無駄なメモリアクセスは発生しない
参照カウントにアクセスされるのは生成clone時や解放drop時などのみ
2022/07/23(土) 18:50:33.61ID:1dNQWzE2
>>273
中断ポイントを自分で指定するとは意味がよくわからないので解説してほしい
もう一つ、適当に書いたコード同士の比較をしていることも現実離れしていて何をしたいのかわからない
2022/07/23(土) 19:26:59.84ID:zqWGCIwO
>>273
> つまり適当に書いたGo>>>適当に書いたRust
そういう主張ならGoのほうが楽に書けると言うべき
2022/07/23(土) 20:04:44.48ID:C7rfIgjP
>>276
ちよっと違う
その部分の話に限定すると
Goは他に選択肢なく書けてそこそこの性能が出る素人向け
C++/Rustはもっと多様な選択肢を取れてGoより高い性能を出せる玄人向け
そのことに加えてGoはランタイムコストが高くメモリについてもGCコストがかかる
あとGoは使用が適している分野が狭い
2022/07/23(土) 20:24:12.66ID:z/1+plFJ
つまりエンタープライズに適してるのはGoで
選ばれた人が作る出来のいいOSSに適してるのはRustだな

玄人によるRust>>>>>>素人によるGo>>>ここにいる自称玄人によるRust

ということだな
2022/07/23(土) 20:37:54.47ID:1dNQWzE2
>>278
使っているとGoは性能面だけでなく開発面での限界も感じてくる
Goはあくまでも簡素なスクリプト言語+αの位置付け
2022/07/23(土) 20:43:18.42ID:z/1+plFJ
とか自称玄人がほざいておりますわw
2022/07/23(土) 20:59:08.03ID:wfVoITZZ
>>279
さすがにお前が言うと説得力ゼロ
282デフォルトの名無しさん
垢版 |
2022/07/23(土) 21:00:05.36ID:uphZtYPd
Goの出自からしてpythonの置き換えみたいなとこあるし。
2022/07/23(土) 21:02:59.95ID:C7rfIgjP
Goは言語仕様が弱すぎて開発に向かないが並行プログラミングが上手くできるスクリプト言語と捉えると優秀なスクリプト言語
2022/07/23(土) 21:13:25.84ID:PT0x9Gwm
Googleはわざわざ開発に向かない言語を開発して社内で使ってるわけかw
Google社員ですらC++は扱えずに問題だらけだったからそれらを解決するためにGoを開発したわけだけどな

Rustは明らかにC++の代替だね。つまりOS開発やドライバ開発、OSS用途に向いてるだろうね
で、WebプログラミングをC++ってやりますかって話ですよ

ここにいる自称玄人の方々はOS開発とかドライバ開発とかしてないくせにRustという言語使ってることだけにアイデンティティを感じる可哀想なおっさんなんだよな結局
だから他言語を馬鹿にしてマウント取ることに生きがいを持った人生を送ってるわけだね

Goで作られた素晴らしいソフトでDockerやKubernetesやGoogleサービスがあるわけだけど、重要なのは何を問題解決するであって特定の言語をこだわって作るわけじゃないよ、自称玄人さんw
2022/07/23(土) 21:33:42.76ID:7qigD5jo
>>284
RustをC++の代替としてしかとらえることが出来ないのは理解不足だな
CやC++とは異なりRustは自動メモリ解放だからという理由だけではないが現実にJavaからRustへの移行も起きている
さらにスクリプト言語からの移行例もある
これらは高速さや省メモリの観点からだけではなく並行並列プログラミングにおけるデータ競合の問題までもRustは解決していることが大きい
Rustがデータ競合をコンパイル時にエラーとして見つけ出してくれることはバグの減少や実行時デバッグの激減ももたらしている
286デフォルトの名無しさん
垢版 |
2022/07/23(土) 21:34:22.09ID:yM9izZ/V
webやってる人間ならむしろrustに好意的になるよ
子供にはわからんか
2022/07/23(土) 21:36:09.58ID:u2Y0Vizw
docker,kubernetesを実装しても開発言語に向かないとか言われちゃうの意味わからんわ。
2022/07/23(土) 21:44:18.63ID:PT0x9Gwm
>>285
日本企業の採用例は?どこに移行例があるの?
メルカリはGo使いまくってるみたいだけどそういう企業ってRustあるの?
GoogleやMicrosoftもOS開発で注目してるだけだよね?

データ競合なんて多数あるバグのほんの一部でしかないしそれだけ持ち出されても何も響かないね
競合状態は防げないわけだし、データ競合ならGoでもランタイムだか検知する機能はある、テストでも検知できる、それで十分としか思わないね。
2022/07/23(土) 21:44:33.34ID:C7rfIgjP
>>287
Goは言語仕様が弱いから開発には不向きだけど
高度な仕組みは不足していても地道に書いていけばもちろん何でも作れる
成果物があることと開発に向いていないことは矛盾しない
2022/07/23(土) 21:53:20.94ID:PT0x9Gwm
>>289
〇〇の機能がある自慢ならHaskellやScalaもよくされていたけどこれらの言語って普及しましたかね?

継承を排除してるのがその代表例。
Goの割り切ったシンプルさはエンタープライズでの大規模スケールするソフトウエアの開発を促進させている

RustはOS開発やドライバ、組み込みには普及することはあるけどWebやバックエンドといった高レイヤーでは確実に普及しない。理由はScala、Haskellが普及しないのと同じ。
機能自慢だけで企業で使っていくための実用性がない。
Googleでさえ社員がC++など複雑な言語を使いこなせないからあえて機能を削ったGoを採用している。
2022/07/23(土) 21:55:03.92ID:7qigD5jo
>>288
日本企業にこだわるところが理解できないが
例えばクックパッドがRubyで遅いのをRustへ移行した例などあるだろう

Goはランタイムがデータ競合を検知するとの主張は実行時の時点でGoの敗北を意味している
データ競合を静的に実行前に検知できるようにしたRustを使うほうがよい
2022/07/23(土) 21:55:41.92ID:PT0x9Gwm
低レイヤー何も触ってないくせにマウント取るためにRust使って他言語貶めてるゴミクズが多すぎるわ

もはやマウント取ることが目的になってる
2022/07/23(土) 21:55:49.25ID:PgM2fTTz
>>288
並列絡むバグをテストで検知できれば十分というのは同意できないなぁ
Goがその辺頑張ってるのは知ってるけどそれでも
2022/07/23(土) 22:00:23.38ID:PT0x9Gwm
>>291
開発コストはなんで度外視するの?

例えば単体テストはカバレッジ100%行かなくてもリリースするわけでしょ?それは開発コストとトレードオフをかけた結果80%とか基準を下げてるって面もあるわけ

データ競合は防げても競合状態はRustでも防げないわけで並行処理プログラミングが確実に安全に書けるって保証されてるわけでもないぞ
データ競合なんで数あるバグのうちの1つしかないわけで

GoとRustだと明らかに開発コストは桁違いであって特に新規にプロジェクトに参加したメンバーがいる場合に差が出てくるね
2022/07/23(土) 22:02:31.75ID:PT0x9Gwm
>>291
てめーが移行例がたくさんあるとかほざいてるから聞いてんじゃん
日本人なんだからまず日本企業の採用例を聞いてるわけだが
海外企業でもいいよ

ごくごく一部しかないだろ
大半はOS開発用途。
2022/07/23(土) 22:03:24.19ID:PT0x9Gwm
Discordしか知らないだろう自称玄人どもはw
2022/07/23(土) 22:08:40.01ID:PT0x9Gwm
Web業界でC++よりRubyが流行ったのも開発コストの削減が目的なのであって
RustがRubyみたいにWeb業界で普及することはないだろうね。
自称玄人は実行コストのことしか考えないがそれならアセンブリが最強だろ。
結局開発コストと実行コストが優れてるGoが現時点での最適解となる。時点でNode(Deno)
RustがWeb企業で普及することはまずないね。OS開発の用途では普及していくだろう、
2022/07/23(土) 22:12:19.51ID:RQhphYGe
>>290
勉強してからRustを批判した方がいいよ

継承を排除したことをGoの利点と言われてもRustも継承がなくGoと同じだよ
Rustは従来の言語にあった不要な部分や古い部分をばっさりと切り捨てて最新の高機能なパラダイムを組み合わせてシンプルに作った言語
だからRustもGoと同じくクラスも無いし例外(try-throw-catch)も無い

一方でRustは例えば代数的データ型のようなシンプルかつ有用なものを採用
代数的データ型を採用せずに次世代言語を名乗るのはおこがましいので例に出しました
Goとの比較で言えばGoは代数的データ型を欠いているためにエラー返り値の面倒な扱いを招いています
同じように例外を無くしてもGoは記述が面倒になりRustは便利になっていますね
299デフォルトの名無しさん
垢版 |
2022/07/23(土) 22:51:05.66ID:jaxJ03Ml
だからお前ら次世代言語の話しろよ。
それ以外は別スレ建ててやれや。
2022/07/23(土) 22:53:24.42ID:IVV76sYn
Rust賛否議論に最適なスレッドがこちら!
https://mevius.5ch.net/test/read.cgi/tech/1657382429/
2022/07/23(土) 23:07:13.56ID:7L6l8ELk
実際、次世代言語でやるべきメモリ管理や並行処理の課題はRustだけが取り組んでる感じがあって、それ以外の次世代言語はなんかパンチがないよな。
このスレで次世代言語として上がってるTypeScriptやSwiftやKotlinとかも、既存資産を使いつつモダン言語に緩やかに移行できます~がウリで、言語自体の挑戦があまり感じられないというか。
2022/07/24(日) 00:59:14.24ID:POYobNlQ
Goのシングルバイナリは魅力的だけどRustはどうなの
簡単にexe作れる?
2022/07/24(日) 01:00:34.35ID:cSogl1Kz
>>302
簡単に作れるよ
2022/07/24(日) 01:01:51.95ID:POYobNlQ
素晴らしい
Rustやるわ
305デフォルトの名無しさん
垢版 |
2022/07/24(日) 01:13:50.56ID:RIVbLJGX
>>301
次スレからはtypescript, swift, go, kotlinはスレタイから外せよ。
2022/07/24(日) 01:30:40.07ID:iVL8opWs
次世代言語ってどういう意味
そこに序列されるためには既存言語にない画期的な仕組みが必要なのか
307デフォルトの名無しさん
垢版 |
2022/07/24(日) 01:45:52.41ID:RIVbLJGX
>>306
んなもんカッチリした定義なんてあるわけ無いだろ。アスペかよ。
少なくともtypescript, swift, go, kotlinは対象外だろうよ。
2022/07/24(日) 02:35:17.60ID:40vv7Sn8
>>306
画期的な仕組みでなくてもインパクトのあるものは多い
例えば>>298の代数的データ型なんて古くからある概念で特に関数型言語では昔から使われてきたものだけど
手続き型言語では導入されなかったり導入されていても有効活用できていなかったり
ようするに代数的データ型は無縁か役に立たないか相性が悪いものと思われていた

ところがRustがその代数的データ型をタグ付きunionとなる形の値付きenumとして採り入れて
さらにこれも関数型ではお馴染みのOptionやEither (RustではResult)を
そのenumで表現してRust標準ライブラリの中枢に据えることで
非常に便利で言語の中心として機能する重要なインフラとして一気に昇華させてしまった

つまり古くからある概念や仕組みであっても
有用な形で言語に採り入れることでインパクトのあるものになりうる
次世代言語と称せられる言語はそういうインパクトのある何かが多数あるのだろう
2022/07/24(日) 02:40:05.18ID:A2ivE9+A
もうワッチョイつけろ
2022/07/24(日) 03:54:31.36ID:QogZ4c3I
swiftでアプリ作るか〜って弄ってるので次世代実用言語なら外してもらっちゃ困るし
次世代にはなんとかなるんじゃないかな〜って寝言言語のスレなら外してもらっていいよー
2022/07/24(日) 07:13:10.20ID:a/nVuE5F
>>298
RustにはWebプログラミングには不要な要素が多いって言ってんだろ
文盲乙

OS開発しないのに細かいメモリ管理をプログラマにまかすのは完全に不要な負担である
これはまつもとひろゆきもいってる
2022/07/24(日) 07:18:35.77ID:a/nVuE5F
とにかくWebやバックエンドといった高レイヤー層でRustが流行ることはないのは事実である
論破してみろよ自称玄人は
具体的に移行している企業もDiscordしか知らないみたいだし、Discordでも一部の部分しか採用してない

〇〇の機能があるから優れてる自慢はHaskellやScalaでも起こってた、でも流行らなかった

流行るのはGoやPythonのように機能を削った言語

RustにはOS開発など低レイヤーには必要な要素が詰まっているが高レイヤーでは不要なものだらけである、だから普及しないんだよ自称玄人さん
2022/07/24(日) 07:25:40.56ID:POYobNlQ
確かにWebでどうなるかはよくわからないな
ひょっとしたらJavaみたいにエンタープライズが使い出すのかもしれん
Webとの関連でいうと個人的にTauriには大いに期待している
2022/07/24(日) 07:26:19.38ID:a/nVuE5F
自称玄人はOS開発やドライバ開発など低レイヤーの経験など一度もないのに、畑違いであるRustを使ってるだけにアイデンティティを感じている孤独なおっさん
だから高レイヤー層では流行らない言われても論理的に反論できず、他言語を貶めて他人にマウントを取ることしかが脳がない
Rustを使っていることが唯一のアイデンティティの哀れなおっさん
2022/07/24(日) 07:51:53.73ID:CneNKog7
俺もWeb周りで使われるのはかなり限定的になるんじゃないかと思うな。良い言語だけど採用しただけの価値が出る領域はかなり狭いよ。
2022/07/24(日) 07:59:04.44ID:bdlqmtah
Web と一括りにしてる時点で議論の対象にならんクズレスでしかない
2022/07/24(日) 08:07:30.03ID:eIrt9sO8
valeのGenerational Referencesって面白くない?
https://verdagon.dev/blog/generational-references
所有者は一つだけだけど非所有者の参照はいくつも持てる。
各ヒープメモリに世代カウントを付けて、参照はポインタ+世代カウント+オフセット値のようなデータになる。
参照先にアクセスするときはヒープの世代カウントと参照の世代カウントを比較して不一致だったら解放されたメモリにアクセスしたと見なせる。
参照をコピーするときは参照カウンタのようなカウントを増減する必要は無い。参照をそのままコピーするだけ。
318デフォルトの名無しさん
垢版 |
2022/07/24(日) 08:20:10.22ID:+L63FAhG
ときどき現れる、自分んとこにRustがやってくるのが怖くて吠えまくるおじさん
Rustが使えるだけでマウントなんてとるわけないのに、劣等感で震えすぎ
2022/07/24(日) 08:24:03.54ID:bdlqmtah
>>317
これほんとか?
This is cheaper because programs dereference less than they alias and dealias
2022/07/24(日) 08:36:32.88ID:a/nVuE5F
>>318
やってこないから(笑)
2022/07/24(日) 09:01:53.33ID:eIrt9sO8
>>319
それは確かに怪しいっぽい
322デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:25:03.61ID:Y1YiiPBC
前はRustなんてどの領域でも採用されないと主張していた
その後は大手は採用しないとか、言語オタクしか使わないとか言い出して、今はwebに来ませんようにとお祈りしてる
323デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:26:39.85ID:hnBeY/7d
いや、使われていないだろう。
324デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:35:45.64ID:hnBeY/7d
黒魔術を禁止したいRust。
それはものすごく正しい。
Javaと同じ理念なので、Javaと同じように成功するだろう。
しかし、黒魔術使いがRustを使いたいと思うこともないだろう。
325デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:36:39.31ID:hnBeY/7d
魔導士がRustを作ったが、魔導士はRustを使わない。
326デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:51:49.50ID:TkuAh24s
>>322
WebAssemblyが普通になってきたらRustが来るかもね
2022/07/24(日) 10:05:58.70ID:nz/s3YoW
>>324
黒魔術が具体的に何を指してるか分からんがunsafeではだめか?
2022/07/24(日) 10:10:15.29ID:mNErqOPr
webassemblyは
高レイヤーのC++を変えなくても低レイヤーの機械語を変えれば安全になるという
C++を高レイヤーと見抜けない人には難しい技術
329デフォルトの名無しさん
垢版 |
2022/07/24(日) 10:14:42.11ID:RIVbLJGX
>>310
swiftは個別スレあるだろう
330デフォルトの名無しさん
垢版 |
2022/07/24(日) 10:17:08.35ID:RIVbLJGX
>>317
こういうレスを待ってた
2022/07/24(日) 10:20:14.22ID:yHbyxFst
>>311
Matzなのか
ひろゆきなのかw
2022/07/24(日) 10:33:10.43ID:VggJFBUh
ここは次世代か現世代に限らず言語マウンティングしたいやつらの巣窟
2022/07/24(日) 10:40:42.93ID:mNErqOPr
メモリ管理アルゴリズムを変えるたんびに言語を変えるのをやめよう
ライブラリを変えればいいだけ
334デフォルトの名無しさん
垢版 |
2022/07/24(日) 11:15:14.23ID:ss1h8/Fs
>>267
難しいのですかね?
下みたいなアプリがあったのでできるのかと思ったのですが、、
なにか特殊な方法が必要なんでしょうか
https://play.google.com/store/apps/details?id=forinnovation.phoneaddiction&hl=ja
2022/07/24(日) 11:55:06.92ID:0MXf6lNW
不正確:ここは次世代か現世代に限らず言語マウンティングしたいやつらの巣窟
ここはRust言語マウンティングしたいやつら(ただしコーディング能力はゼロに近い低め)の巣窟、まともに話し合うことすら不可能
336デフォルトの名無しさん
垢版 |
2022/07/24(日) 12:08:17.54ID:sqWRJTqj
>>307
Kotlinは次世代から卒業したと思ったらオワコン化しちゃったか。
Javaは緩やかに衰退しているし、頼みのAndroidもFlutterに持っていかれそう。
2022/07/24(日) 12:13:46.77ID:KMd5I8Sy
RustはOSの開発でもあんま使われてないよね
でも将来JavaみたいなIT土方専用言語になりそうな気がする
2022/07/24(日) 12:59:53.34ID:nz/s3YoW
>>333
メモリ管理周りは標準ライブラリのインターフェースにも影響するけど
標準ライブラリすげ替えたらそれはもう別言語では
2022/07/24(日) 13:35:49.98ID:mNErqOPr
土方うんぬんはマウンティングではなく職業差別だよな
差別された業種はプロよりアマの方が強くなる
これ資本主義への挑戦だろ
2022/07/24(日) 16:01:06.79ID:kgHpDwre
>>317
> valeのGenerational References
> 参照先にアクセスするときはヒープの世代カウントと参照の世代カウントを比較して不一致だったら解放されたメモリにアクセスしたと見なせる。

それは重すぎる設計で実用的ではないですね
C++のshared_ptrもRustのRc/Arcも
参照先にアクセスするときは参照カウントへのアクセスがなくコストゼロです
RAIIによる自動解放時にようやく参照カウントを見てヒープも解放するか判断します
やはりC++のshared_ptrとRustのRc/Arcの方式が最も優れた方式と言えるでしょう
2022/07/24(日) 16:34:59.98ID:RaX1YBir
>>268
理解目来てないのはお前
「1000個ヒープにある」んだよ
まず文章を読め
2022/07/24(日) 16:44:13.25ID:A2ivE9+A
>>300のスレにコピペしといたで続きはそっちでお願いな
2022/07/24(日) 17:06:52.19ID:bdlqmtah
>>341
まじでプログラマに向いてないんだなw
ヒープアロケーションが1,000回かどうかなんて書いてないだろ
配列で一気にアロケーションしてるかも知れんしな
2022/07/24(日) 17:11:06.10ID:dVy5+utd
そもそもRustというかスタックベースのRAIIって結構ヒープアロケーションしてるからな
生存スコープの管理にスタックを使ってるだけ
345デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:17:44.35ID:5fSI//2c
>>336
google的にもflutterをメインにしたいんじゃないかと邪推してる。
346デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:20:42.68ID:5fSI//2c
>>337
今それを言ったらOSのカーネル開発で使われてる言語なんてC以外あるんかね?
347デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:26:44.89ID:5fSI//2c
研究でだったらhaskellでだってカーネル開発あるけどな
2022/07/24(日) 17:37:32.00ID:Tcg6NKxY
> スタックベースのRAII

ほかに何ベースのRAIIがあるの?

> 生存スコープの管理にスタックを使ってるだけ

変数のスコープを静的に解釈してデストラクタ呼び出しを追加してるだけでは?
スタックをいつどうやって使うの?
2022/07/24(日) 17:40:37.46ID:nz/s3YoW
メジャーどころのOSのカーネルだとCかC++かアセンブリだよね
かろうじてLinuxにRustが取り込まれそうだけど当面はドライバのみで使途は限定的
2022/07/24(日) 17:46:35.54ID:kgHpDwre
>>349
LinuxだけでなくAndroidもRust導入した
2022/07/24(日) 18:27:24.20ID:RaX1YBir
>>343
見苦しい言い訳をするな
1000個アロケーションされてると書いてるんだから1000個アロケーションされてるんだよ
配列がどうとかの話は言ってない
お前が読み飛ばした部分だよ
適当にしか読んでないから飛んだんだろ
人の文章を読みない上に話を変えようとしてる
お前こそがプラグラマに向いてないぞ
残念ながらお前の負け
2022/07/24(日) 18:27:44.09ID:DhgJf/Tp
>>269
たしかにRustでRc/Arcが使われるのは限定されたケースのみではあるが、
例えばスレッド間での共有では使わざるを得なかった。
しかし来月リリースのRust 1.63では、スコープ付きスレッド生成(spawn)がstableとなるため更に使用頻度が減ることになる。
これにより参照カウントを使わずとも共有(借用)できるようになり、Rustの高速化と利便性が更に進む。
2022/07/24(日) 18:30:59.25ID:bdlqmtah
>>351
1000個アロケーションされることと1000回アロケーションされることの区別もつかない馬鹿は黙ってろw
2022/07/24(日) 18:33:44.43ID:RaX1YBir
論点がズレたからもう一度まとめておく
Goでは無意識的にヒープにアロケーションされてしまう可能性がある
それはエスケープ解析をしないとわからない
つまりメモリ使用量も実行効率も落ちる
これは一般論
恣意的な特定のベンチの数字を言ってるわけではない
rustは明示的にヒープに置くように書くのでそのようなことは起きない
つまり理論的にはrustが1番速いし最高の言語
もう一度言うが特定のベンチの話をしているのではない
2022/07/24(日) 18:35:55.52ID:RaX1YBir
>>353
だからお前はメモリ使用量の話をしてたからだろ
それに配列の話はしてない
何度も言わせるな
どこに配列と書いた?
2022/07/24(日) 18:41:01.38ID:RaX1YBir
もう一度まとめておく
おれに喧嘩を売ってきたやつはメモリ使用量と実行効率をわかってないと言ったが以下のように考えている
メモリ使用量については1000個ヒープにアロケーションされる可能性があるGoが不利
そして実行効率もヒープアロケーションによってGCが動くため悪い
シンプルすぎる当たり前のことを言ってるだけなのだから単に喧嘩を売りたいだけか?
まあ論破ごっこも自爆で負けとるが
2022/07/24(日) 18:44:26.04ID:RaX1YBir
しつこいと言われるかもしれんが特定のベンチマークの話をしているのではない
もっと普遍的で一般論の話をしている
なのでこのベンチの結果は〜というのは受け付けない
同じように普遍的な理論で話してくれ
rustの普遍性は理想的な言語モデルなんだよ
2022/07/24(日) 18:47:19.90ID:RaX1YBir
メモリの安全性
メモリの自動解放
スタックヒープを意識したコードを書ける
実行効率
モダンな構文
これら全てを満たした奇跡のような言語
今のところ勝てる言語は存在しない
2022/07/24(日) 18:50:46.35ID:t1gCi00f
結局アンセーフを使ってしまうから無駄
2022/07/24(日) 18:51:09.20ID:RaX1YBir
唯一の欠点はC++とのInteropぐらいだ
なのでCarbonの存在意義は理解できるが
その代償としてメモリ安全性を失ってしまった
これでは元の木阿弥
まあInterop特化言語だろうからそれで良いのかもしれん
普通の人はrustで良いです
2022/07/24(日) 18:55:55.77ID:RaX1YBir
しつこく言ってるが特定のベンチマークの結果だけで鵜呑みにするのは間違っている
ソフトウェアに必要なのは普遍性なんだよ
そう言う観点で語ると一つ上の議論ができる
2022/07/24(日) 18:58:18.60ID:RaX1YBir
rustはゼロコスト抽象化とメモリ安全性という「普遍性」から生まれた
優れた開発者は必ずこの普遍性を設計に取り入れてる
2022/07/24(日) 18:59:20.76ID:mNErqOPr
言語と言語が対戦する異世界があればどちらか一方は必ずハッピーエンドだが
現実は違うんだよな
C++でできなかったことをRustにやらせても、できない理由の方が多い
2022/07/24(日) 19:02:10.29ID:kgHpDwre
>>352
Rustコンパイラの進化が素晴らしいね
それら安全であるとコンパイル時に静的に確定できることの範囲をどんどん広げていってる
これは他のプログラミング言語には無い思想でまさに次世代言語
そしてそれら安全となった操作がコスト最小で実行できるようになるのだからRustが安全最速を独走
2022/07/24(日) 19:28:58.17ID:bdlqmtah
>>355
メモリー使用量?
細かい実装上の差異を除けばヒープに取ろうがスタックに取ろうが同じだぞ
必死に連投する前にちょっとは勉強してこい
2022/07/24(日) 19:30:50.45ID:nz/s3YoW
>>350
AndroidのカーネルってLinuxの取り組みとは別にRust導入してるの?
それともカーネル以外の低レイヤー領域の話?

>>359
まだunsafeを一カ所でも使ってしまうと台無しになる論唱えてるの?
2022/07/24(日) 19:39:14.02ID:nz/s3YoW
プログラムが使用するメモリの総量の話をするなら
そもそもスタックにはたかだかプロセスのスタックサイズ分のデータしか載らないので
メモリ使用量の観点でスタックとヒープの差違を議論しても有用な比較にはならないのでは
メモリ使用量に占めるデータと管理領域の比率という意味ならスタックの方が良いだろうけど
2022/07/24(日) 20:03:40.53ID:PZRaLu/1
IO待ちが主体のプログラムでそのメモリ効率とやらがボトルネックになることはないといってるのでは?

>>255
でメモリ効率がいいからパフォーマンスがいいとか言ってわけだけど、そんなことよりIOがボトルネックになるからいかにブロックしないように書く方が大事ってのはまさにそうだね

そのメモリ効率云々ってのが重視されるのって組み込みとかでWebサーバーなどでそんなのどうでもいいに決まって
2022/07/24(日) 20:20:14.69ID:tGMReMFw
>>366
Androidは新しいBluetoothスタックとかDNSリゾルバなんかがRustになってるよ
2022/07/24(日) 20:39:49.97ID:KMd5I8Sy
まるでRustのネガティブキャンペーンやってるようだな
2022/07/24(日) 20:45:08.03ID:a/nVuE5F
IOバウンドなプログラムでRustを積極的に採用するメリットなんかほとんどない
Goが現在ではベストな選択、次点でNodeなわけだけどなんでかっていうと
GoはC言語+GC+並行処理ってなぐらいでものすごいシンプルだから。
普通の手続き言語触ったことがあるなら、並行処理以外は全く覚えることはないから1週間あればすぐにチーム開発に参加できるぐらいの容易さがあるわけ。
エンタープライズではまずこの容易さがないと流行らない。

それに比べRustはまず並行処理がランタイムに組み込まれておらず、tokioとかいうライブラリを使うわけだけど
そもそも並行処理以外の言語部分での学習コストが高すぎるから、C++での豊富な経験でもない限りチーム開発の戦力になることは難しい。
tokioもGoみたいに抽象化されていて簡単に扱えるわけじゃないからこれも非常に学習コストが高い。

そもそもそんなパフォーマンスが重要ならC++で非同期プログラミングでもやればいいわけだけど、こんなのやってソフトウェア作ってる企業なんてほとんど存在しない。
つまりバカでも扱えるような言語ではないと企業で流行ることはない。(OS開発などは別)
DenoはRustで作られてるけどバカではRustは使いこなせないからわざわざ労力をかけてDenoを作ってるんだよ
Rustが優れてるからDenoがいらないとはならない。

Rustはあくまでも選ばれし人間にのみ使われる言語。自称玄人が背伸びして使う言語ではない。
2022/07/24(日) 21:27:37.48ID:BBPBBue7
>>371
おまえはGoとNode以外に何が使えるの?
比較対象をきちんと列挙せずに自分だけで完結してベストとか言われても困る
373デフォルトの名無しさん
垢版 |
2022/07/24(日) 21:34:55.30ID:hnBeY/7d
RustはJavaの遺伝子を受け継ぐから組み込みやウェブでも流行するだろ。
Androidアプリの開発言語に採用されるかもしれん。
Javaではありませんよ言語とか苦しい言い訳しないで済むし。
374デフォルトの名無しさん
垢版 |
2022/07/24(日) 21:37:15.31ID:hnBeY/7d
picojavaのようにpicorustプロセッサが出来るかもしれませんよ。
と思ったらすでに在った。
375デフォルトの名無しさん
垢版 |
2022/07/24(日) 21:40:01.27ID:hnBeY/7d
5chで次世代言語と言えば、織田信長しかないんだけど。
忘れてやしませんか?
それとも意図的に無視してんの?
2022/07/24(日) 21:43:31.89ID:bneWR3CV
>>371
その用途ならばRustがオススメです
Goとの比較で言えばRustの方が高速かつ省メモリにすることができるだけでなく
Goの貧弱な言語仕様とは異なりRustは開発効率も高いです

NodeとDinoはJavaScriptなのでそれらよりも遅くメモリも多く必要とするだけでなく
Worker以外はシングルスレッドの中でしか展開できない限界もあります
2022/07/24(日) 21:45:28.55ID:POYobNlQ
Denoは言語じゃないだろ
なんでRustと比較できるの?
2022/07/24(日) 21:46:24.07ID:GNBIcaHU
マジでヤベェやつしかいないww
次世代老人スレ
379デフォルトの名無しさん
垢版 |
2022/07/24(日) 21:46:25.88ID:hnBeY/7d
パラダイムシフトです。
380デフォルトの名無しさん
垢版 |
2022/07/24(日) 21:47:28.08ID:hnBeY/7d
次世代老人とは、今は老人ではない、つまり若者のことである。
2022/07/24(日) 21:49:59.66ID:bneWR3CV
>>377
それはRust批判をしている>>371さんがRustを叩くための棍棒として持ってきているだけだからでしょう
2022/07/24(日) 22:03:49.93ID:POYobNlQ
>>381
アンカーつければ良かったな
>>377はもちろん>>371に言ってるよ
2022/07/24(日) 22:25:39.05ID:iVL8opWs
>>375
おれも大学でGHC/KL1やったことあって、5ch関係なくその辺なんとなく好きだからせめてリンクを貼ってやろう
https://www.fun.ac.jp/~hirata/Papers/spa99-on-slides.pdf
2022/07/24(日) 23:05:50.30ID:eIrt9sO8
>>340
shared_ptrとarc/rcが参照カウンタを増減するのは参照をコピーするときとそれがスコープ抜けるときだけどその前後に参照先にアクセスするとは限らないので参照カウンタにアクセスするときにキャッシュミスが発生するかもしれない。
generational referencesではdereferenceするときだけ参照先の世代カウンタを読むので、世代カウンタにアクセスしたときは必ず参照先にアクセスする。キャッシュミスが起きても世代カウンタと参照先が同じキャッシュラインに存在する可能性が高いのであまり問題にならない。
generational referencesは参照カウンタと違ってヒープを確保するとき以外はメモリに書き込みを行わない。
なので単純に遅いとは言い切れないと思う。
2022/07/24(日) 23:34:47.76ID:T/C/xh5e
>>384
実際のプログラミングを考えれば分かるように、その利用のほとんどが参照先にアクセスすること。
つまり解放の頻度が非相対的に常に低いのが特徴。
なぜなら、解放の頻度が高くてすぐに解放されるような用途ならばヒープは使われないか、ヒープわ使ってもunique_ptrやBox等で多くは済む。
つまりshared_ptrやRc/Arcが使われるのは比較的に長期に保持されて解放の頻度は相対的にも低い。
いずにしても、「解放の頻度」よりも「参照先へのアクセス」がプログラムで起きる頻度の多い主流な出来事。

「参照先へのアクセス」のコスト
【shared_ptrとRc/Arc】コストゼロ (参照カウントは全く使用されない)
【valeのGenerational References】コストが高い (ヒープの世代カウントと参照の世代カウントを比較が必要)
したがってC++/Rustの方法が有利。
386デフォルトの名無しさん
垢版 |
2022/07/24(日) 23:36:40.59ID:hnBeY/7d
いえいえ、C++はそんな魔法のようなことはできませんよ。
物理法則を超越するのはRustだけです。
2022/07/24(日) 23:59:50.37ID:DhgJf/Tp
>>386
Rustでは出来ている
2022/07/25(月) 00:06:36.72ID:e1+lLaZG
RustのRc<T>のソースコードを見てみた
参照先へのアクセス時つまりTへのアクセス時には参照カウントは全くノータッチ
つまり>>385で正しいようだ
参照カウントは解放のためだけに使うものだから普段は使わないのは当たり前か
2022/07/25(月) 00:40:50.97ID:e1+lLaZG
したがってこのRust叩きしてる人がウソをついていた

>>264
> Rc<T>で無駄なメモリアクセスが起きてることを分かってない。
> 参照カウントで、かなり無駄なカウントアップ・ダウンが現実に起きてるし非効率。

正解は解放時にようやく初めてカウントダウンつまり1を引いて0と比較するだけの小さなコスト
390デフォルトの名無しさん
垢版 |
2022/07/25(月) 01:06:45.81ID:GF1rw+EH
んなわけないでしょ。
2022/07/25(月) 01:17:32.30ID:esXLF7ue
誰も問題にしてない問題の解決をありがとう
それで参照の複製と破棄のコストは?
2022/07/25(月) 01:24:22.28ID:1U7Sp33P
>>385
shared_ptrとかRCのような参照カウンタ方式は参照がスコープ抜けるときだけじゃなく参照を増やすときに参照カウンタを+1してるでしょ。
393デフォルトの名無しさん
垢版 |
2022/07/25(月) 01:26:08.06ID:GF1rw+EH
ええええ!
そこ??
2022/07/25(月) 01:38:55.49ID:8gSNeQFu
>>391
それは完全にコストゼロ
Rustでは(Rc/Arcの参照を含めて)参照を使ってもその参照を破棄(自動的)しても付加コストはかからない
対象がRc/ArcであろうがそのRc/Arc内の参照カウントを見ることは当然ない


let x = Rc::new(123);
let xx = &x; // xの参照
foo(xx);
ここでxの参照が複製されて関数fooに渡される
当然Rcの内部の参照カウントの読み書きは発生しない
コストはゼロ
2022/07/25(月) 01:40:09.84ID:8gSNeQFu
>>392
いいえ
参照するだけならカウントを増やしません
396デフォルトの名無しさん
垢版 |
2022/07/25(月) 02:08:28.73ID:GF1rw+EH
Rustユーザーはこのレベルか。
エアユーザーと認定する。
2022/07/25(月) 02:13:24.40ID:7j5KuiPU
おまえは何もわかってない。セマンティックムーブを備える言語の複数の所有権では意味が違う...
392が言ってるのは文脈で言ってる参照は、明らかに複数の所有権のことであり、コピーされた値とは違う。
参照カウントである以上、アルゴリズム的にどんな言い訳をしてもカウンタの上げ下げでボトルネックは生じるものであり
それを認めずにこういう馬鹿がゼロコストだとか現代のコンパイラー型言語で多くがやってることを、意味不明に連呼して
言語の普及に不利益を与える。
いい加減こんなバカなことは考え直せ
2022/07/25(月) 02:20:06.89ID:XtVjY1m0
>>396
君たちRustアンチが壮大な勘違いをしていることが今回わかった
参照で参照カウンタが増えていくと思い込んでいたのか

Rustでは参照をいくつ増やしてもコストが全くかからない
Rustには所有権とライフタイムがあるため参照カウントを増加させるなどは全く不要で参照についてはコストが全くかからない
もちろん参照先へのアクセスについてもそのような付加コストはかからない
これがRustの強み
コストをかけずに安全&高速なのがRust
2022/07/25(月) 02:30:53.81ID:7j5KuiPU
ここの狂信者は389のようなことを言う。
例えば「正解は解放時にようやく初めてカウントダウンつまり1を引いて0と比較するだけの小さなコスト」のようなことを言うが
264の言うことと全く矛盾しない。たとえ参照カウントが1だとしても明らかにstrong countの上げ下げは発生しており
これが参照カウントのアルゴリズムでは常に問題になる。多くの場合大きな問題は表面化しないが良くある通例として
プログラム終了時に参照カウントの0が連鎖するため非常に時間を要するなどの場合がある

日本に良くいるタイプで1つでも否定句を入れると、発狂したように「嘘だッ!」と食って掛かる。
例えば「Cargoが不味いのでRustはコンパイルが、同様の10年以内に現れたGoやVと比べ遅いね」というと
「Rustは速い!ふざけんな!」と発狂し、最後にはCargoバンザイと礼賛まで始める...
これがgithubや海外フォーラムだと
これ遅くね?→確かに遅い→どこが遅いのか→なら遅いからどうするか
という改善すべき提案までされるのに、ここにいる気持ち悪いこのような輩はそんな事をしない。
壊れたレコードよりも高性能なCDのように永遠と同じことを繰り返す、ゼロコスト!強み!安全!
ゼロコストは多くのコンパイル型言語でほぼ同様であり、Rustの公式自体も認めているがRustはメモリーリークを認めているし
メモリリークそのものを安全として処理する。これを強弁して「メモリーリークが起こらない!」と言い張るのは明らかにおかしい
2022/07/25(月) 02:41:14.40ID:esXLF7ue
>>394
その例と説明はRcとは何も関係ないよね
例えばfooが&RcではなくRcを取り、fooを呼んだ後もxを使うとしたら?

実際にはこうしたプログラムフローじゃなくて、データ構造的要請から参照カウンタを使う選択をとるのが多いとは思うけど
401デフォルトの名無しさん
垢版 |
2022/07/25(月) 02:47:14.81ID:GF1rw+EH
魔導士はstd::shared_ptr<>を使うことになったら設計を疑えと心得ている。
2022/07/25(月) 02:48:21.55ID:SbhYwl+v
Rustに対して無知な人が、何を勘違いしてRustを叩いているのか、ようやく理解できた。
稀にしか登場することのないRcをなぜか連呼して叩く理由もわかった。
複数の参照がある場合に、Rcを使う必要があると勘違いしてるわけだ。
そして参照の数だけカウンターが増える、と勘違いしてるわけだ。
参照カウンタ方式のGC言語とは異なり、Rustではそんな無駄なことはしていないです。
403デフォルトの名無しさん
垢版 |
2022/07/25(月) 02:50:11.86ID:GF1rw+EH
> Rustでは参照をいくつ増やしてもコストが全くかからない

こういうのが反論されてるだけでは?
2022/07/25(月) 02:56:01.87ID:SbhYwl+v
>>403
それで合ってる。
Rustで参照は数値型と同様にコピー可能で、数値型のコピーと同じコストしかかからない。
いくつ参照を増やしても同じ。
参照カウンタは出てきません。
405デフォルトの名無しさん
垢版 |
2022/07/25(月) 03:02:58.57ID:GF1rw+EH
C++にもstd::unique_ptr<>とstd::shared_ptr<>があるけど、C++のスマートポインタはゼロコストでいくらでも参照を増やせると言えば反論されるでしょう。
Arcの欠点を指摘されるとまるでそれがArcの特徴であるかのようにRcの解説をし、Rcの欠点を指摘されるとまるでそれがRcの特徴であるかのようにArcの解説をする。
それがまずいのでは?
406デフォルトの名無しさん
垢版 |
2022/07/25(月) 03:07:04.80ID:GF1rw+EH
基本的にRustは余計なことが出来ないように設計されているので、PythonやJavaのように使われるようになると思います。
初心者向きに良く練られていると思います。
2022/07/25(月) 03:07:39.44ID:SbhYwl+v
>>401
それも正しい。
多くのプログラムではshared_ptrやRcを必要としないことが多い。
その『設計を疑え』に従って、本当に必要なのかを一度見直すことは必要。
408デフォルトの名無しさん
垢版 |
2022/07/25(月) 03:08:57.43ID:GF1rw+EH

しかし、知ったかぶりの初心者を量産してしまったのは、Rustの罪の部分ですね。
2022/07/25(月) 03:14:13.96ID:azxTxG7t
>>405
Rustの参照、つまりC++で言うところのunique_ptrは、Rustではコストゼロです
コンパイラによりライフタイムと借用ルールに反していないと保証されて、参照は単なるポインタ(アドレス)になります
アドレス以外の付加情報を持つファットなスマートポインタではありません
410デフォルトの名無しさん
垢版 |
2022/07/25(月) 03:16:23.43ID:GF1rw+EH
しかしそれではGC付き言語のマナーでプログラムする人には使いにくいでしょう。
Rustは次世代じゃないんですよ。
411デフォルトの名無しさん
垢版 |
2022/07/25(月) 03:19:01.13ID:GF1rw+EH
コンセプトが入った以上、C++は次世代です。
progress_displayが入れば世界最新だったのですが。
なかなか採択されませんね。
2022/07/25(月) 03:23:21.39ID:FtUkeJZV
>>409
ほとんど合ってるけど
C++に関するところだけちょっと違う
unique_ptrに相当するのはRustでは自動的に無条件でその機能を持つことになる
もちろん付加的な情報を必要としない
いずれにせよBoxでもVecでもStringでもRustで参照は複数いくつでもコスト無しで持てる
もちろん参照カウンタは必要としない
2022/07/25(月) 03:36:04.97ID:FtUkeJZV
Rustではライフタイムの概念の導入によって参照が複数いくつもあろうがコスト無く扱える
ライフタイムを超えた参照が存在しないことをコンパイルが通れば保証されるため
参照が複数あっても参照カウンタなどの付加的なコストをRustは必要としない
2022/07/25(月) 03:50:26.54ID:nik6Zqry
>>413
Rcの参照て、実装的にポインタのポインタにならんの?
まぁ、大したコストじゃないけど。
415デフォルトの名無しさん
垢版 |
2022/07/25(月) 03:54:57.80ID:7j5KuiPU
顔真っ赤になってほとんど人がいない深夜に、これをやる。マトモだと思いますか?
こんな事書いてる暇があるなら、ましなコード書けよ。おまえの汚いコードで大勢が苦労してんだよ
2022/07/25(月) 04:30:16.31ID:4yx4R0Hn
>>414
何の参照を欲しいかに依る
中身の参照を欲しいならば
let x: Rc<i32> = Rc::new(123);
let p: &i32 = x.as_ref();
これで直接ポインタ
もちろん参照カウンタが増えることもなくコストはかからない
2022/07/25(月) 04:35:50.04ID:4yx4R0Hn
Rust叩きしてる人の頭の中はこんな感じの妄想か

複数の参照を利用 → 参照カウンタが必要となるはずだ! → Rcを使う必要があるはずだ!

もちろんこれは間違いで
Rustでは複数の参照を利用しても
参照カウンタもRcも不要
2022/07/25(月) 05:58:18.25ID:1U7Sp33P
それじゃそもそもRCって何で存在しているの?
何の為に参照カウンタがあるの?
2022/07/25(月) 06:15:33.82ID:XNFIHMnD
Rustの話題はRustスレでやった方がいいんじゃね?
なんかもうRustって見るだけで吐き気がしてきた
420デフォルトの名無しさん
垢版 |
2022/07/25(月) 06:18:34.46ID:AKrlxTbS
>>419
嫌なら無視するしかない
反応する人がいるということは需要があるということ
2022/07/25(月) 06:25:52.20ID:8J+uEmne
>>418
Rcは滅多に使われない
もし使っていたら多くのケースで効率の悪い下手な設計の場合が多い
Arcはスレッド間の共有メモリなどで使う
2022/07/25(月) 06:37:19.48ID:8J+uEmne
ただし>>352の来月のRustリリース情報から
スレッド間の共有メモリをArcを使わずとも通常の借用参照で済むようになるケースが出てくると思われる
つまりArcの利用も減少する
423デフォルトの名無しさん
垢版 |
2022/07/25(月) 06:39:01.08ID:GF1rw+EH
>>418
俺に反論できなくなったので、要らないことになったのでは?
2022/07/25(月) 07:13:41.21ID:nBUvMOxq
>>376
言語仕様が豊富なら開発効率がいい(笑)なら
なんでScalaやHaskellは流行らないの?
2022/07/25(月) 07:39:05.16ID:Vq8THFea
>>424
速いとか省メモリとか何か動機がないと
2022/07/25(月) 07:55:15.70ID:nBUvMOxq
>>425
なんでC++はNodeやGoに変わって使われないの?
2022/07/25(月) 08:06:04.72ID:Vq8THFea
>>426
安全じゃないと
2022/07/25(月) 08:21:13.01ID:nBUvMOxq
>>427
それだけが理由か?
学習コストは?IOバウンドだからメモリ効率云々にかけるコストに意味がないからなのでは?

つまりRustはNodeやGoを置き換えないね

はい論破
2022/07/25(月) 08:52:04.73ID:9VZD4LMs
>>428
君は自分で言ってることがデタラメめちゃくちゃだと気付いていないのかね
論破とだけ強調する人物はキチガイが多いと聞くがそうなのかね
2022/07/25(月) 08:59:06.96ID:nBUvMOxq
>>429
キチガイではなく一般論を話しているのみ。Nodeが流行った理由知らないのか


単語をカウントするプログラムのベンチマークをした記事

Goがシンプル版、最適化版両方Rustより速いようだけどRust玄人さんはこれどう解釈するの?
メモリ効率がいいから速いんじゃねーの?
https://benhoyt.com/writings/count-words/

Goがライターが書いていて、Rustはripgrepの作者が作ってるみたいだけどw
2022/07/25(月) 09:31:41.84ID:LVt6e5K4
>>408
量産て全部同じやつだぞ
Rustスレでは誰も相手にしなくなった自演魔
2022/07/25(月) 09:33:37.20ID:X3gippUK
>>421
グラフとかどうやって実装すんの?
配列とインデックス?
2022/07/25(月) 09:39:39.23ID:6EAs3JIP
>>430
非最適化版はC++も遅いことを考えるとRAIIの性質として遅いんじゃないか?
細切れにメモリの解放が入るからな
434デフォルトの名無しさん
垢版 |
2022/07/25(月) 09:40:42.26ID:4fLf8Vq5
>>418
普通にデータなどを格納するコレクションを作るときに直接使用する、例えばVecとか
上のほうで書いてある「Rcが滅多に使われない」は大変な間違い。
多くのプログラムは間接的にほぼ間違いなく多く使用している、もちろん全く使用しないプログラムもあるがそちらのほうが例外。
当然、参照カウントはセマンティックムーブのある言語で所有権の複製時にはカウントアップされる
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=39acf5e2c625c2e5ccd8f9cca466f64c
スキル学習で分かりにくいのは、この種の言語の一般的な用語である「(ただ単に)参照」とは所有権の複製ではないという事
対して「可変参照」をとる場合、mutableな借用とされ参照カウントが0/1以外にもカウントアップされる。よって参照カウントが
実行時にボトルネックになる可能性があるという話は正しく、無意味に「コストゼロ、コストを必要としない」などを連呼する事は
とても近寄りがたい雰囲気を醸し出す

普通は中身を見るだけではなく格納している値を処理するので、可変参照を使うので、参照カウントがコストが無いなんていう
ふざけた説明は論外。この種の宗教的な勧誘は「コストゼロ、コストを必要としない」などを連呼する狂信性を発病する
2022/07/25(月) 09:47:57.99ID:pT/R/RrL
>>434
「所有権の複製」とか言っちゃうと
君もその狂信者こと複製おじさんと同じになっちゃうよw
436デフォルトの名無しさん
垢版 |
2022/07/25(月) 10:02:55.50ID:2pceaDTd
>>428-429
基本的なことを全くわかってないでなんでも独自解釈で間違った判断してると思うわ

なんでも狂っていたりそう簡単にぶっ壊れたりするもんじゃないから、
自分の予測と違った結果になったら基本的な用語とか使いかたを勉強し直さないと先に進めないと思う
437デフォルトの名無しさん
垢版 |
2022/07/25(月) 10:10:53.79ID:YiK1YmC6
>>435
Rustはプログラマーへ負担を大変に強制する言語でありながら、問題解決している分野はとても狭い....
メモリーを限界まで使用してアクセスが高負荷な環境では確かに良いかもしれないが
Pythonなどの自動学習ライブラリ(多くはC/C++で書かれる)やNodeやTypescript/JSなどが主流であるフロントエンドには非常に使いづらい。
またスマートフォンのアプリ開発も出来なくは無いが両陣営からあまり重視されていない、最近では大企業も使用をしているが
Googleなどは多くはまだメニーコアを素直に活用できるGoを使用する(社内の標準言語)
ここまで否定的なことを、ハッキリ言える狂信者は居ないとおもう
2022/07/25(月) 10:31:51.75ID:qMC/1j9+
C/C++は危険だよ問題という
狭い問題のために過大なコストを消費するのは
Rust以前の時代からあった非合理的行動なんだよな
439デフォルトの名無しさん
垢版 |
2022/07/25(月) 11:25:18.08ID:dJJE5upa
新興勢力の宣伝の常套手段の一つ
既存の勢力を貶めること
個人的には好きではないしむしろ忌み嫌うやり方
440デフォルトの名無しさん
垢版 |
2022/07/25(月) 12:45:23.61ID:PJasBk3j
>>430
Nimが良いな。
441デフォルトの名無しさん
垢版 |
2022/07/25(月) 12:55:06.04ID:NiS5Jdh/
Nim++
Nim#
2022/07/25(月) 14:26:21.66ID:qfCVZU8h
>>437
Rustはれっきとした機械学習のライブラリや言語処理系を*作るため*の言語だよ
Rustは機械語を吐くコンパイラやトランスパイラのようなものに向いてるし
それってフロントエンドが今必死になって取り組んでる分野ではないの?
簡単に書けて省メモリかつ速い言語なんてないよ
夢見すぎ
443デフォルトの名無しさん
垢版 |
2022/07/25(月) 14:42:37.10ID:PJasBk3j
>>441
Nimが十分抽象表現できてるからNim++は意味ねーだろ
2022/07/25(月) 14:47:29.52ID:MBqXfUDU
>>437
Pythonの自動学習ライブラリはフロントエンドではない
さらに多くがC++で書かれている自動学習ライブラリに対してRustが非常に使いづらいと主張するなら根拠を書くべき
C++が多いのは長年の時間の差だけであり現在はPythonからRustを呼び出すこともできるようになったので今後は色々と出て来るだろう
2022/07/25(月) 15:03:49.84ID:ZKQpDD7R
自動学習?
2022/07/25(月) 15:20:21.13ID:/ac3g8+o
>>434
デタラメな説明はよろしくないな
君はRustを叩きたい側だからだろうが根本的な理解ができていない
特に酷いのは「所有権の複製」
Rustにそんな概念も用法も無い

Rcが滅多に使われないというのは事実
様々なRustのライブラリ(クレート)を見てもRcの出現は非常に少なくArcよりも圧倒的に少ない
Arcが多い理由はマルチスレッドでデータを共有するためで別々の所有者だから
Rcはシングルスレッド用だから別々の所有者を必要とすることが非常に少ない
まれにRcを必要とすることもあるが本当に必要なのかをまずは疑うべき

さらにRc/Arcでカウントアップ/ダウンは滅多に起きない事象であるため負荷を批判するのもおかしい
例えばマルチスレッド間のデータ共有でArcを使うとしてもスレッド生成で+1されスレッド終了で−1されるのみだからスレッド生成に対して誤差である
このように新たな所有主体が現れること自体の負荷と比べて数値を+1することは誤差
2022/07/25(月) 16:01:59.92ID:N2Q3Sx/d
>>414
これはいい質問

>>416
これはダメな回答


詳しく知りたい人はRustスレでどうぞ
2022/07/25(月) 16:04:20.43ID:LpioO7nY
>>446
>特に酷いのは「所有権の複製」
>Rustにそんな概念も用法も無い
複製おじさんのオマエが言うなよwww
2022/07/25(月) 16:06:38.58ID:LxBh6KBX
>>432
例えばC言語でグラフを実装する時も生のポインタのみで実装されることはありません
なぜなら各ノードのメモリを解放するタイミングがわからなくなるためです
そこで主に三つの方法が取られます

一つは各ノード一覧を配列などで持っておくとともに定期的にルートから到達可能か到達フラグを用意します
そしてノード一覧の中で到達フラグが立っていないものをメモリ解放します
この方法の欠点は4つあり
(1) ノード一覧を管理する配列が別途必要となる
(2) 到達フラグが必要となる
(3) 定期的に到達可能かを調べる必要がある
(4) 使われなくなったノードがすぐには解放されない

もう一つの方法は定期的コピー方式です
ルートから到達可能な部分を定期的に別の場所にコピーします
コピーされなかった部分が到達できない使われていない部分なのでまとめて解放となります
この方法の欠点は
(1) この方法も定期的な実行が必要となる
(2) メモリ空間が2倍必要となる
(3) 使われてる全体が定期的にメモリコピーされる負荷
(4) 使われなくなったノードがすぐには解放されない

残りの方法は参照カウンタ方式です
おなじみなので略します

いずれの方法も様々な欠点があります
このグラフのノード解放問題は
ガベージコレクションを必要とするプログラミング言語にそのまま当てはまります
GCの負荷コストを理解していただけましたでしょうか?
450デフォルトの名無しさん
垢版 |
2022/07/25(月) 16:46:22.65ID:PkQCRHsR
>>446
このように顔真っ赤になって、怒り心頭で攻撃してきます、激おこぷんぷん...マジでRustコミュニティはこういう輩の扱い考えたほうが良い....

>特に酷いのは「所有権の複製」
頭から「君はRustを叩きたい側だからだろう」という下種な勘ぐりを持って色眼鏡で相手と話し合う事はできませんし、これ以上
狂者を相手をするつもりもありませんが、デタラメ/間違いなら、より正しい言葉で説明したら良いじゃない?
なぜ1番先に書いたことを無説明で流し、Rc/Arcなんかの長文説明でグチグチ言ってるんです?
下のコメで「メモリーを限界まで使用してアクセスが高負荷な環境では確かに良い」と認めているのがあなたの目には見えませんか?

>Rcが滅多に使われないというのは事実
RcはStringにさえ使われています。あなたから薄ら頭に付いてる目から見える「事実」は隠されたライブラリの中に存在しているようですが
そこでもArcの話なんてしていません。Rcのスレッドセーフ版がArcなだけで、グダクダと口臭いArcの説明なんて誰も求めていません。

さらに参照カウントの一般的な欠点を説明しているのに、「批判するのがおかしい」と「誤差」なんてそれだから一般的なプログラマーから
ドン引きされるんですよ。
2022/07/25(月) 16:51:48.53ID:Yk1WTUPx
>>450
> RcはStringにさえ使われています。

これマジ!?
452デフォルトの名無しさん
垢版 |
2022/07/25(月) 17:01:49.95ID:PkQCRHsR
>>451
https://doc.rust-lang.org/src/alloc/string.rs.html
pub struct String {
 vec: Vec<u8>,
}
これだと言葉足らずですが、リテラルから生成するString::fromなどはこのようになります
2022/07/25(月) 17:05:57.06ID:mpRQ8kqk
>>450
> RcはStringにさえ使われています。

嘘つき!
RcはStringで当然使われていないだけだなく
Rust標準ライブラリの中でも(Rc自体の
部分を除き)Rcは全く使われていない

一般的にもRcは使われることが少ない
もちろんRcを使うべき例外も一部あるがRcを使う前に構造の見直しを勧める
2022/07/25(月) 17:28:44.47ID:RV7OdbkD
標準ライブラリでRcが使われてないのは
オーバーヘッドを嫌ってunsafeを使った代替実装が使われてるからだぞ
2022/07/25(月) 17:32:52.00ID:JQ4EiZH/
>>430
RustよりGoのほうが速いやんけwwww
Goしゅごいwww
456デフォルトの名無しさん
垢版 |
2022/07/25(月) 17:35:20.01ID:8LuMiuhM
人を嘘つき呼ばわりするキチガイを使う前に見直しを勧める
Rustは一人でやる分には良いけど、こういう奴とは絶対組みたくない、stdしか見えないアホ、ドアホォ
std::collectionsにないコレクションを使いたければ自分で実装するかgithubなどで拾ってくる必要があるのに、お前の顔見直せよ
2022/07/25(月) 17:57:22.48ID:eESAVdRW
>>452
そのStringにもVecにもRcは使われていないね

>>454
Rust標準ライブラリでRcが使われていないのは所有者が複数存在するという特殊な状況が発生しないため

>>456
外部ライブラリにはRcを使っているものも存在するけどその少なさに驚くと思うよ
これはシングルスレッドで所有者が複数存在するという特殊な状況が滅多に発生しないため
2022/07/25(月) 18:18:18.06ID:qMC/1j9+
>>454
ライブラリ内部の実装に依存するなよ
抽象に依存しよう
2022/07/25(月) 18:57:52.01ID:xyOpOgqp
Python代替を狙いたいなら、脳死スニペットコピペで、
Excelファイルが編集できて便利ね。くらいを目指さないと無理じね?
460デフォルトの名無しさん
垢版 |
2022/07/25(月) 19:33:13.71ID:GF1rw+EH
自分で使わないならダメじゃん?
Rc。
461デフォルトの名無しさん
垢版 |
2022/07/25(月) 19:37:10.91ID:GF1rw+EH
だいたい、Haskell全然流行っていないじゃんか。
世界のすべてがHaskellに代わるんじゃなかったのかよ?
Rustが流行るとか言われてももう信じられんわ。
D言語だって全然流行らなかったし。
462デフォルトの名無しさん
垢版 |
2022/07/25(月) 19:48:55.75ID:GF1rw+EH
結局一番使える凄いやつはExcel VBAだと思うね。
一番役に立つじゃん。
2022/07/25(月) 19:54:28.52ID:8fqJaMrc
>>460
RcをRust標準ライブラリや多くの外部ライブラリが使っていない理由は、Rcがダメだからではなく、
Rcが対象とするシングルスレッド環境においては、所有者が複数となることがない、もしくは、避けられることが多いため。
使わなくてよい時は使わず、どうしてもRcを使う必要がある時のみ使う、という当たり前の行動の結果。
464デフォルトの名無しさん
垢版 |
2022/07/25(月) 19:55:45.54ID:GF1rw+EH
言い訳は要らないんだよ。
465デフォルトの名無しさん
垢版 |
2022/07/25(月) 19:56:57.83ID:GF1rw+EH
RustよりGoのほうが速いじゃん。
466デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:00:32.25ID:GF1rw+EH
こんな遅いんだったらRustなんか使うんじゃなかったってみんな言ってるわ。
2022/07/25(月) 20:06:54.34ID:AMmqdU+/
>>466
RustはC++よりも速い結果が出ることも多い中で何を言ってるんだ??
2022/07/25(月) 20:08:53.16ID:cWo2MzNn
>>449
延々と変なことを書いてるなとしか
469デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:16:00.56ID:GF1rw+EH
RustはHaskellの後継言語では?
口だけ番長みたいな。
2022/07/25(月) 20:18:22.01ID:qMC/1j9+
速い遅いは1bit的な100パーセントの保証ができないからね
逆に、変数の型を全く書かない、ゼロを保証するPythonのようなものは誠実な印象になる
2022/07/25(月) 20:29:29.58ID:n2SYQgGe
>>455
それ測定方法がおかしい
解いていないとはいえ、grepが一番速くて、次にwcが速くて、それらはC言語で書いたものより速くなっている
解いているシェルスクリプトですら1.83秒しかかかっておらず、Rubyの最適化版に至ってはシェルスクリプトより遅い結果となっている
最適化版のコードも一人が提供しただけであり、これでは意味がなかろう
その程度の課題でプログラミング言語間の時間比較に意味あるのか?
2022/07/25(月) 20:30:15.46ID:8BHj2ErZ
よく分からんけれど、CPythonに代わる速くて安全で効率の良いRustPythonを作るのが良いのではないだろうか?
473デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:32:58.49ID:GF1rw+EH
RustはPHPと変わらないじゃん。
PHP速いわー。
474デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:34:05.94ID:GF1rw+EH
Haskellおっそ。
なんなんこれ。
12.81だって。
475デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:38:25.47ID:GF1rw+EH
仮にも地球を代表するプログラマが遅い速いは時の運とか言っちゃだめだと思うわ。
2022/07/25(月) 20:44:28.71ID:nBUvMOxq
>>471
これが全てとは言わないけど参考にはなるでしょ

Rustはripgrepの作者が作ってるお墨付きなんだがGoより早くないのは事実
477デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:47:52.05ID:GF1rw+EH
こんだけ凝って、こんだけ遅いって、Rustの見事な性能の表れでしょ。
そりゃ誰も使いませんわ。
こんなの使ってたら宗教ですよ。
信徒ですよ。
478デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:52:51.88ID:GF1rw+EH
はい、エビデンス出ましたー。
2022/07/25(月) 20:56:02.00ID:aidYcMa/
>>476
ちょっとコードを見てみたけど両者でやっていることが異なるね
例えばGoのコードと異なりRustのコードはバッファ内をcopy_withinでコピーしていたりするなどGoにはないコードがあるような
480デフォルトの名無しさん
垢版 |
2022/07/25(月) 20:59:34.44ID:GF1rw+EH
また言い訳が始まった。
2022/07/25(月) 21:05:06.38ID:+hqW1c0q
まだコードをよく見ていないが、
他のベンチマークではGoがいつも負けていて、
今回だけGoが勝っているのだから、
何か裏があると推測できる。
482デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:07:28.31ID:GF1rw+EH
トイプログラムやベンチマークではRustのほうが速いけど、こういう実用的なプログラムではGoのほうが速いってことじゃないの?
2022/07/25(月) 21:08:19.44ID:X7PH+Zk7
もしデータが間違っているなら理屈と直感で判断すればいい

全ての情報源が正直者でなければ何もできないことを性善説という
484デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:09:45.71ID:GF1rw+EH
4Kb未満のデータはRustのほうが速いけど、
それ以上のデータでは、Goのほうが速いのでは?
485デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:11:43.19ID:GF1rw+EH
わし、単体テストにベンチマークも入れてるよ?
486デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:19:04.59ID:GF1rw+EH
キャッシュを上手に使えるGoと、全く考慮しないRustの違いが出てるのでは?
2022/07/25(月) 21:19:28.30ID:7b2W3YWe
>>430
まずCのコードを読んだが特にトリッキーなことをしていないので
そのままRustに書き換えればいつものC→RustのようにRustでほぼCと同じ速さが出るだろうな
一方でそこに書かれているRustのコードはCの2倍近く遅くて普通にありえない結果となってるな
488デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:21:31.99ID:GF1rw+EH
また言い訳かよ。
負けたんだよ、Rustは。
489デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:23:25.12ID:GF1rw+EH
じゃあ、Rustにprogress_displayはあるのかよ?
490デフォルトの名無しさん
垢版 |
2022/07/25(月) 21:26:07.93ID:GF1rw+EH
progress_display無かったら要らんわ。
しかも遅いし。
2022/07/25(月) 21:58:27.37ID:4KCQJPyi
>>430
なんでこのおじさんHashMapとか使ってるの?
遅いので有名だぞ
2022/07/25(月) 22:00:37.54ID:SeYpjqPN
>>430のベンチマークの方法とか見てたんだが
1. 時間はpythonのsubprocess.runで独立した試行を5回行っている。
2. 5回のうち最速のものを記録にしている。

だから、Javaみたいに起動時に重い言語は不利なのと、同じくらいの速度だと計算機の機嫌で順位が入れ替わりそう。
493デフォルトの名無しさん
垢版 |
2022/07/25(月) 22:03:54.64ID:GF1rw+EH
Rustは糞遅いから入れ替わらない。
2022/07/25(月) 22:06:10.72ID:krXhYbIy
Juliaって愛される言語5位とかに入っていたけど、あんまり流行る気配ないよね
PythonからJulia主体にならんか
2022/07/25(月) 22:06:51.57ID:FztPljLn
あとRustのCっぽいバージョンは何に対してas fastなんだろう
496デフォルトの名無しさん
垢版 |
2022/07/25(月) 22:08:02.42ID:GF1rw+EH
ちょっと検索してみたんだがGoは並行処理が得意らしいぞ。
俺の12900HX16コア24スレッドが有効に使えるのでは?
もしかして。
497デフォルトの名無しさん
垢版 |
2022/07/25(月) 22:08:47.70ID:GF1rw+EH
Cっぽくないバージョンに対してだろね。
2022/07/25(月) 22:19:58.19ID:4KCQJPyi
HashMapを高速なハッシュに変えたらRustの勝ち
解散
2022/07/25(月) 22:31:12.16ID:FztPljLn
>>498
Simpleは標準ライブラリ以外使わない縛りをしてて遅いHashMap使ってる。
Optimizeではfxhash使ってるのでまだ解散しないで。
2022/07/25(月) 22:51:30.63ID:m2kvc7p2
俺の環境だとRustの方が少しだけ速かったな
バージョンアップで多少改善されたのかも。誤差程度だけど
2022/07/25(月) 22:53:16.38ID:7b2W3YWe
>>499
(衝突攻撃安全性に優れるが遅い)Rust標準ライブラリのHashMapよりも
今回は(Rustコンパイラ等でも使われている)速いfxhashを使った方が良いとのアドバイスがあっただけで
実際に使っているコードはHashMapのままになってるような
502デフォルトの名無しさん
垢版 |
2022/07/25(月) 23:18:27.95ID:SeYpjqPN
>>501
optimizedのmain.rsは

use fxhash::{FxHashMap as HashMap};

となってるんだけど
これはfxhashを使って高速化してるわけではない?
それともベンチマークに反映してないのか?
503デフォルトの名無しさん
垢版 |
2022/07/26(火) 00:27:41.06ID:6K/UlhEh
>>472
つ Nim
504デフォルトの名無しさん
垢版 |
2022/07/26(火) 00:30:04.25ID:6K/UlhEh
>>476
そうだね何でもgrep使えば一番早いと思うよ(棒
あ、wcの併用も可だと思う
505デフォルトの名無しさん
垢版 |
2022/07/26(火) 00:33:32.10ID:7eeTS5R1
Rustがこんなに遅いとは知らんかった。
2022/07/26(火) 01:36:48.26ID:gGUkeHRo
いつものやつ貼っておくか
https://benchmarksgame-team.pages.debian.net/benchmarksgame/box-plot-summary-charts.html
ChapelとJuliaすごいじゃん
2022/07/26(火) 05:00:13.51ID:O8zJADrT
ワードカウントの結果だけで性能評価してしまうプログラマがいるんですか!?
2022/07/26(火) 08:14:27.14ID:sEULh4Zl
>>503
少し試したことあるけれど、別物だったよ。
イメージとしては、PyPyあたり。
2022/07/26(火) 08:27:06.16ID:B/e7/0Va
Rustのコードがおかしいと言うなら、改善したコード出せばいいんじゃない?
ワードカウントじゃ言語の性能はわからないとか言うんだったら、Rust有利なベンチマーク作ればいいんじゃない?

Rust簡単とか言っているやつなら余裕だろ。
2022/07/26(火) 08:44:40.79ID:/siOCA+g
批判されていることは「性能が悪い」というより「コストの割には性能が微妙」というニュアンスなので
コードを一行も書かないことがコスト最小なんだよ
コストの話をするとコードを書く奴がいなくなる
2022/07/26(火) 10:02:50.90ID:dWbaeKdQ
高級機能があってランタイム最強!っていう厨二病的なモチベーションだからほっとけばいいんだよ。
そのうち気づくし、気づかなくても知ったこっちゃない。
2022/07/26(火) 10:11:09.19ID:cX/Q+77r
>>510
その意味で重要なのはRustの非最適化版がGoより遅く、Java、C#と大差ないという事実の方だな
RAIIは遅い
2022/07/26(火) 10:29:35.69ID:NhFYQzcJ
Rust遅すぎじゃね?

https://res.cloudinary.com/practicaldev/image/fetch/s--n3XlUkmN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cqj6u280qmdwq7fgnw5h.png
2022/07/26(火) 10:43:17.89ID:/siOCA+g
RAIIだけの問題ならGoは使わない方がよさそう
C++だけで書いてexitとabortを比較とかすればいいのでは
2022/07/26(火) 11:52:47.41ID:gfJAfx82
RAIIはメモリ解放タイミングが決定的なのがスッとするんよ
ガベコレの場合に開放を保留しておいて
プログラムの終了がすぐだから個別の開放はしないってときは
そりゃかえってガベコレ方式のほうがメモリ関係の全体コスト少なくてもおかしくない
2022/07/26(火) 12:04:42.36ID:04PZVssu
CPUバウンドでも対してGoと変わらないことがあるんだから
IOバウンドの用途でRustを使うメリットなんて皆無
メモリ効率ガーGCガーとかクソどうでもいい

OS開発とか組み込みとかなら重要なんだろうけど
517デフォルトの名無しさん
垢版 |
2022/07/26(火) 12:08:48.07ID:DIb0h0GI
>>516
組み込みはC/C++の独壇場なのだから、ここにRustが入ればより良い製品が増えるだろ
2022/07/26(火) 12:14:19.45ID:m36KkBXx
CPUバウンドだったとしても実装に使ったアルゴリズムで劣ってればそりゃRustやCでも余裕で負けるだろう
519デフォルトの名無しさん
垢版 |
2022/07/26(火) 12:18:31.42ID:MxJrqhMY
そもそも非最適化版でベンチマーク比較する意味ねーだろ、デバッグ中や開発中でもねーのに。
2022/07/26(火) 12:21:17.66ID:kU0OGDST
>>519
そういう意味の非最適化じゃねーから
2022/07/26(火) 12:56:48.38ID:cX/Q+77r
>>519
Rustの "Zero Overhead Abstruction" を活用した結果遅くなったということだ
2022/07/26(火) 16:33:28.70ID:gGUkeHRo
プロファイルとって分析した上で遅い原因について語ってるの?ただの憶測?
2022/07/26(火) 16:41:00.17ID:lSrKh9WN
昔あったc++よりc#の方が速いケースがあるみたいなどうでもいい内容に思えるけど
2022/07/26(火) 16:51:02.98ID:g3j+kypL
>>523
dotnetの方がCPUに対して最適化された命令セットにできるってのはまああり得るっちゃあり得るよね
2022/07/26(火) 16:57:23.19ID:m36KkBXx
命令セット?
C++のコンパイラがクソい命令セットを使うことがあり得る、って話?
そりゃ処理系によってはそうだろうけど
526デフォルトの名無しさん
垢版 |
2022/07/26(火) 17:06:31.29ID:IrL7txwd
NTTグループで7月から3万人が原則テレワークに、遠方からの飛行機出社もOK

NTTグループは、従業員の勤務形態を原則としてテレワークとする新制度を
2022年7月1日から導入する。まず持ち株会社のNTTやNTT東日本、NTT西日本、
NTTドコモ、NTTデータなどの主要会社から導入する。当初は約3万人を対象とする。
テレワークを原則とする部署は各社で決める。
まずは人事や総務といった間接部門や企画、システム開発などテレワークに
向く部署が対象となる見込みだ。新制度では、従業員の居住地の制限もなくす。
従来は「通勤時間が2時間程度」という制限があったが、国内のどこにでも
居住して勤務できるようになる。出社が必要な場合は、出張扱いとして航空機を
利用した出社も認める。日付をまたぐ場合は、宿泊費も会社が負担する。
2022/07/26(火) 18:18:56.01ID:sEULh4Zl
>>525
AMDとIntelの違いや世代でも違うし、同じ命令でも特性が違ったりするんじゃね?
2022/07/26(火) 18:26:22.14ID:/siOCA+g
仮にそれが原因だったとして
その実験データって再現性とかあるんですか
2022/07/26(火) 18:54:20.86ID:lSrKh9WN
twiterでMSX3と言うのが流れてきた
このハードで勝負だ!とはならんなあw
2022/07/26(火) 19:09:11.50ID:gd/liWqB
countwordsを試してみたけど
optimizedで速い順にC > Rust > Go > Nim
(比率 1 : 1.69 : 2.03 : 3.42)

simpleは Nim > Go > C > Rust
(比率 1 : 1.09 : 1.22 : 1.38)

simpleでRustが遅いのはUTF-8チェックとhash関数の遅さと考えれば納得できる範囲かな
ZigやC++はコンパイルエラーになったから除いた
2022/07/26(火) 19:15:29.79ID:lSrKh9WN
Nimは毎回インストールするけどwindowsが警告が出すんだよな

防疫して一部のファイル消したりしていじわるしてくる
532デフォルトの名無しさん
垢版 |
2022/07/26(火) 20:25:55.51ID:GQvz79KS
意地悪というよりイジメじゃん。
慰謝料、億とれるよ。
533デフォルトの名無しさん
垢版 |
2022/07/26(火) 20:39:29.27ID:GQvz79KS
RustはC/C++にダブルスコアで負けてるじゃん。
2022/07/26(火) 20:45:27.29ID:m36KkBXx
イジメはイジメられるほうに原因がある
いじめられる側が悪い
2022/07/26(火) 21:21:03.08ID:ceC8PDvA
cは単語ごとに細切れで確保
item.key = strdup(word); // simple.c
char* word_copy = malloc(word_len); // optimized.c
するんじゃなくてこっちもwordコピー用の領域をおっきく取っておいて
そっちをちまちま端から使っていってみたいけど
2022/07/26(火) 21:48:16.70ID:/siOCA+g
プログラミングでは原因と結果というより命令と実行という方がわかりやすい
命令する側が生殺与奪の権を握っている事実が
2022/07/26(火) 22:00:26.74ID://WUsWcW
とりあえずこんなもん
Language | Simple | Optimized | Notes
------------- | ------ | --------- | -----
`grep` | 0.15 | 0.15 | `grep` baseline; optimized sets `LC_ALL=C`
`wc -w` | 1.20 | 0.99 | `wc` baseline; optimized sets `LC_ALL=C`
C | 3.34 | 0.93 |
Go | 3.38 | 1.30 |
Rust | 3.69 | 1.40 | by Andrew Gallant
Rust-fixhm | 3.25 | | by Andrew Gallant
Rust-buf | | 1.31 | by Andrew Gallant
Rust-unsafe | | 1.18 | by Andrew Gallant
Rust-customhm | | 0.98 | by Andrew Gallant
Python | 12.15 | 5.27 |

Rustは懸念点が多いのでいくつかやった。
-fixhmがハッシュマップを速いものに切り替えたやつ、-bufが標準出力にバッファが噛んでなかったのを直したやつ、-unsafeと-customhmが同梱されてたより高速なやつ。
こうしてみるとRustは標準ライブラリが生っぽかったりセキュリティのために性能を犠牲にしたりとちぐはぐな感じがあるな。
2022/07/26(火) 23:12:57.71ID:gsmRiHCH
>>531
Nim言語はマルウェアを作る人達に使われているらしい。
アンチウィルスソフトは単純なパターンマッチングで動いているから、
悪いことしないNimのコードでもマルウェアだと誤検出されてしまうらしい。
2022/07/27(水) 00:56:57.97ID:DVht3D3b
>>537
これgrepが一番速いけどagとかripgrepだとどうなるの?
2022/07/27(水) 01:28:29.17ID:9E9DYfCO
Cで書かれたgrepより、Goで書かれたptのほうが早いし高機能だよ
2022/07/27(水) 01:34:47.64ID:mzblDH8U
まあぶっちゃけ他の言語でもgrepと同じように
trieみたいな文字列処理用のアルゴリズム使えば速度はだいぶ変わると思うけどね
なんで泥臭い処理を書いてるのか
そりゃgrepが1番早いだろと
2022/07/27(水) 02:00:24.66ID:mzblDH8U
言語の速度を比較するというのならアルゴリズムは揃えるべき
でないと何が何やらわからない
2022/07/27(水) 02:42:12.43ID:RFLOe/ZA
grepは`grep foobar`を実行してファイルをなめてるだけだぞ
544デフォルトの名無しさん
垢版 |
2022/07/27(水) 04:04:05.75ID:ogiMaWw7
RustコンパイラはC++で書かれている。
2022/07/27(水) 04:20:50.92ID:0dTQJF2a
NimコンパイラはNimで書かれている。
けどgccだけからNimコンパイラをビルドできるようにするためにNimのコンパイラのソースコードをC言語に変換したもの(csources_v1)がある。
2022/07/27(水) 06:50:28.42ID:mzblDH8U
>>543
だからgrepのアルゴリズムのことだよ
2022/07/27(水) 06:50:42.76ID:mzblDH8U
>>544
あの、rustで書かれてます
2022/07/27(水) 08:43:02.13ID:jeHuuvJh
毎月のようにバージョンアップしろと言ってくるこの原因はメモリ解放ミス?

Chrome version 103 脆弱性
[重要]CVE-2022-2477 : Guest View解放後の使用による問題
[重要]CVE-2022-2478 : PDF解放後の使用による問題
[重要]CVE-2022-2480 : Service Worker API解放後の使用による問題
[重要]CVE-2022-2481: Views解放後の使用による問題
2022/07/27(水) 09:03:50.25ID:xJ8anoa4
>>546
アルゴリズム以前にやってる事が違うだろ...
2022/07/27(水) 10:01:21.94ID:+1BW8lNB
>>548
解放のミスというより参照のミス(エスケープ)だね
2022/07/27(水) 10:53:41.19ID:eJc+JUck
>>548
Rustへ移行すればそういうバグはコンパイル時にエラーとなるため確実に防げる
2022/07/27(水) 10:56:48.68ID:BnCx/rjI
>>541
grepはBoyer-Mooreでトライ木は使わない

Rustでハッシュベースの辞書の代わりにトライ木使ってるバージョンがあってそっちの方が多少速かったけどアルゴリズム的に優れてるというよりは対象データ依存
2022/07/27(水) 11:24:12.26ID:u+Gi34S+
複数単語マッチングとかでもないのにトライ使う必要性がそもそもない。
めちゃくちゃな理解してる奴が多すぎだな。
2022/07/27(水) 14:15:44.70ID:KqwEERri
>そりゃgrepが1番早いだろと
>そりゃgrepが1番早いだろと
>そりゃgrepが1番早いだろと
2022/07/27(水) 16:20:29.48ID:U29fl458
>>549
だから>>541は全言語で同じアルゴリズムでgrepを実装してと比較せよと言ってるんでしょ

トライだろうかボイヤームーアだろうがなんでも良いが漸近的な計算量が確定してるようなデータ構造に揃える

データ構造依存するなら尚更
全ての文字列のprefixが同じだとしたらどうなるか?
めちゃくちゃ長い文字列だとしたら?
例えばGCが発動しない状態のGoは流石に速いでしょう

全部同じアルゴリズムかつ同じような状態を実現するコードでないと言語の速度比較など意味がないというのはわかる

今回のように実装者によってゴミコード書いて遅い!とか騒いでるバカには辟易する

自分がバカなのに他人をバカ呼ばわりしてるんだからな
2022/07/27(水) 16:48:07.16ID:9E9DYfCO
全く同じアルゴリズムで比較するべきとか言い出すならそもそもこんな複雑なタスクでベンチマークするのがおかしい
もっと簡単なタスクをいろいろ用意してそれぞれでベンチマーク比較したほうがいい
557デフォルトの名無しさん
垢版 |
2022/07/27(水) 17:31:41.43ID:ABAu9/vb
言語の生産性が低いからクソ遅いゴミコードがベンチマークにかけられてる説
生産性が高かったら、速いコードをシュッと書けるよね?
2022/07/27(水) 17:32:27.80ID:DVht3D3b
>>556
>>506で貼ったサイトがまさにそれをやっている
2022/07/27(水) 18:10:30.67ID:sVsDKGUs
>だから>>541は全言語で同じアルゴリズムでgrepを実装してと比較せよと言ってるんでしょ

全言語同じアルゴリズムでgrep実装したら
「そりゃgrepが1番早いだろと」という結論になるんだww
嘘つき加減がアベノシグサだね
2022/07/27(水) 18:18:20.30ID:H9RPm4O1
そうかな

一般的で複雑な機能を持った汎用性の高い標準ライブラリを使うと遅くなり
手書きでベタのアルゴリズムを書いたら早くなるとする

それは意味のある比較なんだろうか?
2022/07/27(水) 19:00:59.22ID:xJ8anoa4
>>555
だからアルゴリズム以前にやってる事が違うからgrepやwcなんて比較しても意味ないぞ
ワード毎のカウントにBoyer-Mooreなんて使えないし>>430のリンク先にも
Note that grep and wc don’t actually solve the word counting problem, they’re just here for comparison.
って書いてある
まあそもそもなんでgrepやwcを載せてるのかはよくわからんけど
2022/07/27(水) 19:12:28.53ID:H9RPm4O1
wcが乗ってる理由がわからないなら病気だと思うわ
2022/07/27(水) 19:46:09.22ID:4voLS+/5
https://res.cloudinary.com/practicaldev/image/fetch/s--n3XlUkmN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cqj6u280qmdwq7fgnw5h.png

deno=Rust

これがすべてじゃね?
2022/07/27(水) 20:07:25.39ID:xJ8anoa4
>>562
マジで言ってるのか?w
man wc でググった方がいいぞ
2022/07/27(水) 20:29:09.02ID:mzblDH8U
>>555
そうそう
全く違うものを比較しても無意味ってことを言いたかった
俺がバカすぎてみんなに伝わらなかったようだw
まあこの比較自体にそこまで本気になるのは俺らぐらいだと思うw
しかしあなたの計算量やアルゴリズムを考慮した考え方のセンスは素晴らしい
言語間のベンチマークなんて余程のことでない限り成立しないのにやたらやりたがるよな
Rust使い以外はこんな人ばっかなのか?
2022/07/27(水) 21:01:28.44ID:FD7fUZPx
散々書かれてるけどもgrepは存在しないfoobarを探したときの速度だしwcは単語数を数えてるだけでベンチに使われてるプログラムのように出てきた単語の数を数えたりはしてないぞ。
マシンパワーの指標と考えるべきだろうな
567デフォルトの名無しさん
垢版 |
2022/07/27(水) 21:14:23.71ID:Bpp5zdZY
そんなこと言ったら嬉々としてこのベンチマーク探してきたドヤってた >430 か顔真っ赤にしてしまうだろ。
2022/07/27(水) 21:20:19.70ID:U29fl458
>>565
少なくともC/C++/Rustの比較は無意味

メモリ使用量などを除けばマシンコードとして同一のものを吐き出すことは理論的には可能だから

突き詰めればそれが最速ということになる

つまり無意味

そういうことがわかってない人が言語間のベンチをやってるんだと思うよ
2022/07/27(水) 21:32:29.18ID:H9RPm4O1
>>568
理論的に可能?
馬鹿なんじゃない?
2022/07/27(水) 21:38:26.34ID:H9RPm4O1
声のデカい馬鹿がイキってるのがこのスレとRustスレ
2022/07/27(水) 21:40:35.04ID:mzblDH8U
>>568
Optimizeを出した時点でそうなるよね
一般的な書き方で速い言語はどれか?って切り口にしとけば面白かったのに
Optimizeとかしちゃったら余計なランタイムがついてくるGoや他の言語が速いわけがない
めちゃくちゃ勉強になる
2022/07/27(水) 21:44:09.15ID:H9RPm4O1
普通に意味あるだろ

普通にカスタマイズせずにその言語で普通に書くとどうなるかとある程度意識して書いたらどうか
それの比較に意味がないと思うならその程度なんだろうけど
2022/07/27(水) 21:46:34.35ID:H9RPm4O1
意味がないと思うなら書き込みするな
わざわざでてくんな
2022/07/27(水) 21:55:07.13ID:U29fl458
俺にとっては無意味と言ってるだけで別に意見は好きに言っていいよ

それが掲示板だ

それこそ*意味*があるなら好きにすればよろしい

俺は言語間のベンチマークは少なくとも平均計算量が理論的に導出されていて

そのアルゴリズムとデータを使い

外部ライブラリも使わずに極力プリミティブに書いて初めて意味があるものと思っている
2022/07/27(水) 21:58:12.88ID:U29fl458
ちなみに文字列処理のアルゴリズムは理論的に研究され尽くしてて

ほとんどのアルゴリズムの論文にきちんと計算量を求める式がある 

まあそれがない論文は相手にされないわけだが

話が逸れたが以上となる

これ以上言いたいこともないのでしばらくROMることにする

また面白い話題があれば口を挟むかもしれない
2022/07/27(水) 22:01:49.88ID:xJ8anoa4
>>567
いや、grepとwcは別だって明記してあるんだからそれ以外の比較は意味あるだろ
577デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:31:40.93ID:ogiMaWw7
RustはPHPやPythonより遅かった。
PHPはなぜか速かった。
これが全て。
578デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:36:21.59ID:ogiMaWw7
Rustの遅さより、PHPの早さに驚くベンチだろね。
579デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:51:04.75ID:6nSf0k+r
意味の無いものでも普通に意味あると言い続ければ通るのが世の中よ。
580デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:54:42.60ID:ogiMaWw7
どゆこと?
2022/07/27(水) 23:58:36.18ID:yuH/4Ewb
>>577
なぜそんな嘘を付くの?
Rustの方がはるかに速い結果が今回出たのに
582デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:58:39.96ID:ogiMaWw7
https://news.yahoo.co.jp/articles/addb6c479375cce5a76ffeac75ef2d682f5c00aa

アワビには目や鼻、口があって、視力はもちろんあるし、海藻をかじってムシャムシャ食ってるらしいんですね。
カタツムリも巻貝で、虫ではないそうなんですよ。
カタツムリは目がありますよね。
アワビも巻貝なので目があるんだそうです。
583デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:59:40.89ID:ogiMaWw7
>>581
うちではRustのほうが速かったと言い張ってる人がいるだけでしょ。
584デフォルトの名無しさん
垢版 |
2022/07/28(木) 00:00:06.26ID:GCXKHsjZ
むしろなんでRustはそんなに遅いの??
585デフォルトの名無しさん
垢版 |
2022/07/28(木) 00:01:18.06ID:GCXKHsjZ
Rustの遅さにお前が泣いた。
2022/07/28(木) 00:27:11.63ID:Prl5fpBJ
意味のあるベンチとなっていないという批判には同意だが
とりあえずこちらでも>>430の元のコードのまま確認の実行をしてみた

素人でも誰でも確認のための実行できるように実行したコマンドは以下
$ git clone https://github.com/benhoyt/countwords.git
$ cd countwords/
$ ./test.sh
$ ./benchmark.py
Timing `grep` 0.04 0.03
Timing `wc -w` 0.23 0.16
Timing C 0.74 0.19
Timing Go 0.91 0.33
Timing Rust 0.73 0.27
Timing C++ 1.49 0.24
Timing Python 1.70 1.05
Timing Ruby 2.79 2.06
...

このアルゴリズムなど各種バラバラの比較に意味があるとは思えないが
それでもRustが遅いという結果は出ていないな
2022/07/28(木) 01:19:15.66ID:pLtk3OpM
インタプ
>>578
rustは少なくともc++11よりは速い
588デフォルトの名無しさん
垢版 |
2022/07/28(木) 06:37:56.55ID:GCXKHsjZ
だが、PHPより遅い。
589デフォルトの名無しさん
垢版 |
2022/07/28(木) 07:12:43.60ID:ENEX/nTq
PHPが早い時点でベンチの方法に疑問を持つべき
2022/07/28(木) 10:51:31.30ID:GHBXY1WS
一般的な書き方で速いべき、という結論に誘導する手法に疑問を感じる

自分で断言すればすぐ終わることを他人の口から言わせることにエネルギーを使い過ぎ
2022/07/28(木) 11:44:26.44ID:Ohcf/kqZ
>>577
JITで実質コンパイルされた形になるのは分かるけどそれに最適化でも掛かってる?
2022/07/28(木) 13:06:21.33ID:rMVZEJvU
つまりはここまで全部PHPおじさんの自作自演てこと?
2022/07/28(木) 13:08:59.76ID:4pySRXlJ
PHPはインタプリタの割にはかなり速いのは事実だけど
流石にコンパイル言語より速いは普通は無いだろうなぁ
ただキャッシュされたら大きな差は出ない可能性はあるかもね
2022/07/28(木) 14:01:07.64ID:1GWFUzAq
JITをがんばればJavaやC#のような速度は出るだろう
2022/07/28(木) 14:05:09.32ID:XX9iY77s
だが、PHPより遅い。
2022/07/28(木) 18:04:41.85ID:egvelj9j
あーあ
壊れちゃった
597デフォルトの名無しさん
垢版 |
2022/07/28(木) 18:38:51.53ID:KME/vBwm
つまり >572 はPHPレベルということだ。
598デフォルトの名無しさん
垢版 |
2022/07/28(木) 19:00:49.91ID:dt3bZFXM
PHPごときに負けて恥ずかしくないの?
2022/07/28(木) 19:07:09.44ID:Vlf00JfE
でもメモリは安全だから
600デフォルトの名無しさん
垢版 |
2022/07/28(木) 19:08:34.61ID:dt3bZFXM
四季もあるの?
601デフォルトの名無しさん
垢版 |
2022/07/28(木) 19:36:49.43ID:Hv8PyQaz
PHPはNGワードで良いわもう
2022/07/28(木) 20:46:28.42ID:Prl5fpBJ
>>586で元のコード>>430のままでもRustがGoより速いとわかったが
RustがC++に負けている原因を探ると以下と判明
・Rust版の実行時間の6割以上がHashTableに費やされてる
・C版とC++版はカウント用Tableを自作しているため速い

そこで新Rust版ではC/C++版と同じアルゴリズム同じサイズのカウント用Tableを利用
またAndrew Gallant氏のRust optimized版はloop部分のコードがごちゃごちゃしているため
新Rust版ではひと目見ただけで分かる初心者でも書けるコードに改善した

これがその今回のRustコード
https://gist.github.com/rust-play/f03d2e73ee4e76acf69c98b7a8b8d322
これでC++版よりRust版が速くなった
2022/07/28(木) 20:54:03.33ID:Prl5fpBJ
>>602のRustコードを使った>>430の測定方法による結果(抜粋)

Language | Simple | Optimized | Notes
------------- | ------ | --------- | -----
Rust(New) | 0.73 | 0.21 | Optimizedが今回のソース
Rust | 0.73 | 0.27 | by Andrew Gallant
C | 0.74 | 0.19 |
Go | 0.91 | 0.33 |
PHP | 1.08 | | by Max Semenik
C++ | 1.49 | 0.24 | optimized by Jussi P, Adev, Nathan M

これでC言語よりはやや遅いが他の言語よりはRustが速くなった
Rustは「分かりやすく」「安全で」「高速な」コードを書けることが実証された
2022/07/28(木) 21:33:34.37ID:1GWFUzAq
実証された(主観)
605デフォルトの名無しさん
垢版 |
2022/07/28(木) 21:49:48.90ID:gNJf8oDl
>>604
主観の前に PHPerから見たが 抜けてるぞ
2022/07/28(木) 22:02:46.94ID:URQEvCBs
測定方法を含めて全てのソースコードが公開されて検証可能なのだから、
客観的に実証されたとみていいんじゃないの?
覆すにはRustより速いコードを出すしかない。
>>602のRustコードは、unsafeもトリッキーなところもなく、自然な容易なコードで速度が出てるのが凄い。
607デフォルトの名無しさん
垢版 |
2022/07/28(木) 22:41:13.22ID:Zn96MNxf
Cの後継はZig、C++の後継はCarbonというのが正しい認識である
Rustは一部の技術好きが個人開発に使う言語に留まるだろう
2022/07/28(木) 22:41:22.64ID:qCSJGPl5
なんだコロコロID変えんの
2022/07/28(木) 22:54:32.88ID:H9eYfDAM
Zigはsimpleのほうでいきなりarena使ってて
それありなんって感じ
610デフォルトの名無しさん
垢版 |
2022/07/28(木) 23:28:28.60ID:gNJf8oDl
>>607
はいはい、おじいちゃんもう寝る時間よ。
2022/07/29(金) 00:17:37.16ID:EtgvtbrZ
>>607
CarbonはC++と心中する人のための言語だよ
2022/07/29(金) 00:17:44.81ID:yNgWnjZL
>>602,606
この自演に気がつかないやつが一人でもいると思ってるのかな?
2022/07/29(金) 00:29:36.08ID:uVxzbE4m
>>602
やはりアルゴリズムの問題でそれが同じならC/C++/Rustで速度ほぼ同じなんだな
それなら抽象的にプログラミングしやすくコンパイラが安全保証してくれるRust一択だな
2022/07/29(金) 00:32:24.17ID:OiKISQZh
俺の環境だとPHPはそこまで速くないな
とはいえ確かにpythonとかよりは速い
C/C++/Rustはここと同じ感じ
2022/07/29(金) 00:38:05.70ID:OiKISQZh
俺の環境だとPHPとJavaScriptがほぼ五分の勝負をしてる
スクリプト言語最速はこの2つということで良いと思う
2022/07/29(金) 01:20:07.89ID:udomRyuy
スクリプト言語の差はコード実行の差じゃなくインタプリタの起動時間の差
617デフォルトの名無しさん
垢版 |
2022/07/29(金) 03:36:57.85ID:gYD9mcR9
安倍元総理がミネクールとかいう統一教会の信者さんが取り扱う水素水で調子が良いという記事がドンドン消えてるんだけど。
調べてみると、ミネクールって、神奈川県警とか神奈川県消防局とかに納入されてて警察官も水素水で調子が良いらしいですよ。
なぜかドンドン記事が消えてるけど。
618デフォルトの名無しさん
垢版 |
2022/07/29(金) 03:41:56.40ID:gYD9mcR9
防衛庁にも納入されてる・・・
統一教会凄いな。
619デフォルトの名無しさん
垢版 |
2022/07/29(金) 03:42:36.20ID:gYD9mcR9
安倍総理も飲んでるらしいよ。
水素水。
健康に良いんだって。
2022/07/29(金) 07:53:56.53ID:pXf+MkzI
>>603
Rustを遅いと叩くために持ち出してきたベンチマークだったはず
Rustが速いと証明されてしまったのか
2022/07/29(金) 08:12:44.41ID:SkJ6g9PS
よかった、Rustは遅くなかったんだね
2022/07/29(金) 08:26:08.76ID:eDL0B0tL
Rustが速い遅い以前にこんなの本当に流行るのか?
正直気持ちが悪い言語だと個人的には思う
2022/07/29(金) 08:42:53.70ID:CY+eCpzK
>>622
Rust参考に作ったコーダー向けサブセットc++か、所有権を使いやすく整理した別言語が出てくると思う。
624デフォルトの名無しさん
垢版 |
2022/07/29(金) 08:44:13.23ID:WJPXGLlJ
>>622
Visual Studioでデフォルトで選べるようになれば流行ると思う
2022/07/29(金) 09:00:33.06ID:WG/TpH2M
Rustのムーブセマンティクスに慣れると逆にC++が気持ち悪くてしょうがないな
個人的に所有権は十分洗練されてると思うからasync周りをなんとかした新言語希望
2022/07/29(金) 09:03:23.24ID:A+PRMWKN
分かる
Rustの気持ち悪さは異常
まず文法が気持ち悪い
selfの省略記法が気持ち悪い
2022/07/29(金) 09:11:36.03ID:EU2uG2Km
Nimがシンプル版で最強だから最強言語はNim
2022/07/29(金) 09:17:48.94ID:47SIIXKm
>>624
逆だろ
流行ればVSにもデフォもしくはNuGetで準備してくれるだろう
629デフォルトの名無しさん
垢版 |
2022/07/29(金) 10:15:19.91ID:nIcw6oQb
>>627
++

simple is best
2022/07/29(金) 10:49:05.42ID:jdcEhLWs
過去日本で広まった言語を見るとアメリカで流行ってからだいたい5年遅れで日本に広まる
今のアメリカの状況見れば日本でもRustが浸透するのは時間の問題だと思うよ
2022/07/29(金) 10:49:49.43ID:SkJ6g9PS
Rustはメモリが安全だからな
632デフォルトの名無しさん
垢版 |
2022/07/29(金) 11:05:34.34ID:+Yq4rvz3
>>628
C#が流行ったのは、MSが作ったからではなくてVSでデフォになったからでしょ
Rustもそうなれば間違いなく流行るよ

Windowsで採用され始めてるから、可能性はある
2022/07/29(金) 11:31:41.86ID:ML+JlgEx
rustが気持ち悪いというより信者の選民思想がやばいわ。そういう言語は流行らん
2022/07/29(金) 11:34:13.72ID:aU8JZHtJ
今現在C/C++を使ってない人はRustを無視していいよ
勉強してもどうせ使わないよ
2022/07/29(金) 11:47:52.27ID:0tQmABQP
メモリ自動解放なプログラミング言語で高速な言語がRustしかないけど
Rustを使っていて慣れてきたら非常に便利でプログラミングしやすい言語だと分かってきた
開発効率が上がるわけだと納得
2022/07/29(金) 11:48:22.21ID:WUKGFXgB
気持ち悪さをもうすこし具体的に分析してみてよ
お気持ちだけ言われても議論にならん
2022/07/29(金) 11:50:44.03ID:7qUIzVbZ
フクオジは確かにキモチワルイ
Rust使ってる身としてはこういうやつは消えてほしい
2022/07/29(金) 11:51:43.26ID:47SIIXKm
>>632
それはMSが作って広めようとしたからね
RustはMSが作ったわけじゃないからあえて広めるメリットないし
639デフォルトの名無しさん
垢版 |
2022/07/29(金) 12:12:59.08ID:q4ocpYlW
>>638
Windowsアプリの安定性が上がることはMSにとって十分なメリットがある

今はGCを避けようとすれば、MFCしか選択肢がない
これにRust+Win32が選択肢に加われば、
開発者もユーザーもMSもみんなwin-winだと思うけどな
2022/07/29(金) 12:33:18.20ID:tOqM8gS+
MSはもう自社言語にこだわって無くない?
VSCodeのJava拡張とかMSが提供してるくらいだし
Azure使ってくれればなんでもいいのでは
2022/07/29(金) 12:34:59.20ID:SkJ6g9PS
じゃあlinuxもmacOSもandroidもiosもRustをメインに使えばwin-winじゃん
楽しみだなあ
642デフォルトの名無しさん
垢版 |
2022/07/29(金) 13:11:50.16ID:jt8KW6vh
>>638
あえて教えてやるけどC++もMSが作ったんじゃないんだぜ。
2022/07/29(金) 14:12:18.97ID:47SIIXKm
>>639
そんな簡単にはいかないよw
MFC って簡単に言うけどそれを Rust から使えるようにするだけでもめちゃめちゃ大変だし、MFC 相当のものを Rust で実装するのはもっと大変

>>642
あえて教えてやるけど MS-C/C++ は有償製品な
644デフォルトの名無しさん
垢版 |
2022/07/29(金) 16:38:45.38ID:idOVuMm7
Code::Blocks + wxWidgets
645デフォルトの名無しさん
垢版 |
2022/07/29(金) 17:53:11.03ID:pZ+qmh4r
>>643
MFC相当なのはWinUI3が妥当でしょ
新しく別に作る必要もない
まだ不具合はあるけど、バージョン1.0がリリースされてるようだよ
これがRustに対応したらいいだけじゃね?

それにRust for Windowsもある
2022/07/29(金) 17:53:19.31ID:1YBbzHzx
C#使ってるような人にもRustを押し付けるなら、GC必要だと思います。
647デフォルトの名無しさん
垢版 |
2022/07/29(金) 17:56:23.42ID:pZ+qmh4r
>>646
いや、必要ない

GCが問題ないアプリならC#を選択すればいいし、そうでなければC++かRustを選択すればいい
という環境になればRustは流行るんじゃないかな
2022/07/29(金) 18:33:58.37ID:A4eriK/j
>>646
RustはC#と同じく自動メモリ解放なので
解放とか気にすることなく安全に使えるよ
649デフォルトの名無しさん
垢版 |
2022/07/29(金) 18:54:27.51ID:gYD9mcR9
遅いから流行らないのでは?
2022/07/29(金) 19:00:13.10ID:fUMXhqEW
Rustって流行ってるの?

https://insights.stackoverflow.com/trends?tags=rust%2Cgo%2Cswift%2Ctypescript%2Ckotlin
2022/07/29(金) 19:01:18.72ID:HcmmeRJK
>>646
C#使ってるような人って一口にいっても全く異なる3つの層がある
そのうち一番技術力の低い層はRustみたいな言語を使うことにはまずならない
C#使ってるのもVS+GUIフレームワークのおまけ
652デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:04:17.53ID:gYD9mcR9
PHPより速くなれば流行るのでは?
653デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:04:55.75ID:gYD9mcR9
RustのライバルはPHPだと思います。
2022/07/29(金) 19:05:05.90ID:47SIIXKm
>>645
> これがRustに対応したらいいだけじゃね?
それが簡単だと言うなら君がやればいいじゃね?
2022/07/29(金) 19:05:27.58ID:9Ryq8AOh
C#はSaaS系とゲーム系と業務系がいて、業務系を除けばスキルは高い
2022/07/29(金) 19:06:02.67ID:A4eriK/j
>>649
結局RustがC++より速くなった>>603みたいよ
657デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:12:08.53ID:gYD9mcR9
>>656
うちの環境ではPHPより速い!と言い張ってる人が一人いるだけでしょ。
2022/07/29(金) 19:25:21.19ID:nPzGnkgm
carbonのが速いとかなったら発狂しそうだなrust信者
659デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:43:45.36ID:7fuXYmQf
<Rustアンチ死亡のお知らせ>

Meta(旧facebook)がRustをサーバーサイド言語に採用
旧来C++が使用されてきた領域にRustを用いていく模様
https://engineering.fb.com/2022/07/27/developer-tools/programming-languages-endorsed-for-server-side-use-at-meta/
660デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:45:53.55ID:gYD9mcR9
フェイスブックが採用したらオワコンでは?
661デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:46:54.87ID:gYD9mcR9
オワコンどころかディスコン。
新規設計には非推奨。
2022/07/29(金) 19:51:06.76ID:aU8JZHtJ
Facebookが採用した言語を数えてみろよ笑
2022/07/29(金) 20:00:46.59ID:47SIIXKm
>>658
そのレベルだと言語と言うより処理系の最適化度合いの差になるだろうな
664デフォルトの名無しさん
垢版 |
2022/07/29(金) 20:00:56.02ID:gYD9mcR9
>>662
あんたもしかして伝説のスーパーコリアン、朴さんかい?
665デフォルトの名無しさん
垢版 |
2022/07/29(金) 20:22:38.90ID:9nWBxo2F
>>643
有償なのにC++は広まったということだ。
2022/07/29(金) 20:59:03.95ID:6gcgNyrj
C「そんなに早くしたいんならワイを使えばいいだけやん
2022/07/29(金) 21:15:37.97ID:lSGvRf0K
>>636
C++の気持ち悪い部分を追放した結果がJavaとかC#だったでしょ

追放した奴が何か強くなって主人公面してたら気持ち悪いってことじゃないかな
2022/07/29(金) 21:18:08.60ID:Jb8ywqQ6
Mozila財団ブラウザではGoogleに負けたけど言語では勝ってるね
2022/07/29(金) 21:24:30.33ID:47SIIXKm
>>665
で、何が言いたいの?w
670デフォルトの名無しさん
垢版 |
2022/07/29(金) 21:28:14.46ID:7fuXYmQf
まじでNimがGC標準搭載したの痛恨のミスだろ
あれがなきゃ今頃Rustの位置にNimいたんじゃないの
NimのほうがシンタックスすきなんだけどRustやらざる負えないわな
2022/07/29(金) 21:37:38.73ID:6gcgNyrj
GCありのほうがラクでしょ
まかせっきりの完全自動のほうがラク
今更 shared_ptr / weak_ptr をシコシコ使い分けたい?
672デフォルトの名無しさん
垢版 |
2022/07/29(金) 22:10:14.12ID:7fuXYmQf
GCがないほうが高速だからシステムプログラミング言語はGCがないほうがいいって認識だった
でもD言語の公式ではGCのほうが全体的に高速に動作するとある
もしD言語公式が正しいならNim最強じゃねえか
673デフォルトの名無しさん
垢版 |
2022/07/29(金) 22:12:45.43ID:gYD9mcR9
JavaはC++の20倍速いってサイト無くなっちゃったね。
674デフォルトの名無しさん
垢版 |
2022/07/29(金) 22:51:36.99ID:FbazT+JV
JavaはVM上で動いているから、昔のコンピューターなら少し遅くて当然。

C++なんてオブジェクト指向プログラミングをすれば、遅くなるのも当たり前。
2022/07/29(金) 23:03:16.63ID:A4eriK/j
抽象的に記述ができる&記述することで遅くなることはないよ
676デフォルトの名無しさん
垢版 |
2022/07/29(金) 23:17:38.43ID:FbazT+JV
>>675
高水準言語と速度は完全なトレードオフの関係だよ
2022/07/29(金) 23:20:57.60ID:ML+JlgEx
>>675
こういうバカって最近多いな。
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が足元にすら近づけないほどに。
2022/07/31(日) 07:13:07.41ID:UwyiR8NW
>>778
だからなに?
使われてて色々欠点も見えてきたから新しい言語が作られてるわけで
780デフォルトの名無しさん
垢版 |
2022/07/31(日) 07:16:07.63ID:pdOIFS3A
C++で使われない機能を主役にした言語を作っても使われないのでは?
実際、使われていないし。
781デフォルトの名無しさん
垢版 |
2022/07/31(日) 07:19:03.47ID:pdOIFS3A
なんだかんだ言ってC++は強力で便利なんだよな。
自分のやりたいことが実現できる。

何でもできるのは良くないことだから機能を制限するのは理論的に正しいのかもしれない。
しかしそれが使われるようになるのは難しいと思う。
2022/07/31(日) 07:36:22.56ID:kBDjWwI8
>>781
C++が失敗したから山のように様々な言語が出来てきた
C++は何でも出来るのではなく整理されていない後付け機能が多数あるだけ
ようやくC++と同じ速度で動く諸言語が出揃ったので過去からの蓄積維持を除いて今後はC++を使うメリットは全く無い
783デフォルトの名無しさん
垢版 |
2022/07/31(日) 07:50:16.84ID:pdOIFS3A
C++はあからさまに成功した言語だと思いますが。
2022/07/31(日) 08:06:27.82ID:yP580+hE
++してないC言語は今でも組込みやらカーネル界隈では現役バリバリだけど
C++として使ってるものに関しては必ずしもC++でやらなきゃいけないわけじゃないんだよな
2022/07/31(日) 08:29:01.99ID:ytAzHhbq
みんなの共通認識
C言語は1階平屋の素朴だけど長く住めるしっかりした家
C++はそこへ2階3階とどんどん縦へ建て増し横にも増築と違法建築状態のダメな家
部屋は大量に増えたけど住みにくいので使われていない部屋が多数
2022/07/31(日) 08:29:30.15ID:UwyiR8NW
>>780
> C++で使われない機能を主役にした
なんの事を言ってるの?
それあなたが(批判するために)勝手に主役だと思ってるだけじゃないの?
2022/07/31(日) 10:36:19.32ID:MJ3nboxa
>>775
おっさんほんとに不勉強だな
そんなんじゃ新人にもバカにされるぞ
788デフォルトの名無しさん
垢版 |
2022/07/31(日) 12:12:18.58ID:pdOIFS3A
C++20のコンセプトのほうが良いのでは?
2022/07/31(日) 12:13:40.14ID:FStFDS54
C++にborrow checkerがあればC++でもいいかもな
790デフォルトの名無しさん
垢版 |
2022/07/31(日) 12:15:54.80ID:pdOIFS3A
静的解析ツール使えば良いだけでは?
2022/07/31(日) 12:20:57.48ID:rndY06V7
Null安全は次世代言語に必須だな
これを省くメリットはない

>>790
ツール不要
Null安全な言語ならコンパイラがエラーとて指摘する
792デフォルトの名無しさん
垢版 |
2022/07/31(日) 12:24:56.81ID:pdOIFS3A
静的解析ツールなら、コンパイラとは次元の違うレポートを得られる。
2022/07/31(日) 12:28:11.09ID:XG1p6vz6
静的解析ツールタダじゃないじゃん。やたら時間もかかるし。
2022/07/31(日) 12:58:08.09ID:UwyiR8NW
>>792
C++でCoverity使ってたけどそれでもメモリー安全とかヌル安全は完璧には捉えられなかったけどね
完璧に捉えられるツールがあるなら教えてくれ

>>793
Coverityは差分解析とかもできるからそんなに時間がかかるって感じはしなかったけど
2022/07/31(日) 13:06:46.97ID:QQQkQO80
なんで仕事でもないのにC++使うんだろ
何にも意味がないのに
2022/07/31(日) 13:21:03.75ID:jgEDwA8h
高抽象度なものはC++向けのインターフェースしか提供されてなくて、自前でCからのFFIラッパー書かなきゃないけないけど書きたくないからかな……
2022/07/31(日) 13:29:59.32ID:FStFDS54
既存のOSSがC++が多いからな
みんなRustに移植されてればいいのに
798デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:35:33.83ID:pdOIFS3A
>>795
何でもできるからでは?
799デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:38:21.32ID:pdOIFS3A
極端な話、高位合成によってC/C++をハードウェア記述に使うことが当たり前に行われているけども、Rustでは無理でしょう。
2022/07/31(日) 13:39:24.24ID:hztgN1yG
でもRustはメモリが安全だよ
801デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:41:40.43ID:pdOIFS3A
2021年秋にRustへの移行を発表して以来、Metaの時価総額はどんどん下がってますしね。
市場の評価は正直だと思いますよ。
2022/07/31(日) 13:44:03.00ID:QQQkQO80
>>797
いうほどC++のOSSって多くないような…
803デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:45:52.08ID:pdOIFS3A
Rustへ移行する。

お花畑系か?

企業価値が下がる。

当然の成り行き。
2022/07/31(日) 13:55:24.43ID:QQQkQO80
メタクエスト2とか1.5倍以上に値上げするのを発表したばかり
売り上げが下がってもおかしくない
805デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:56:08.98ID:pdOIFS3A
https://trends.google.co.jp/trends/explore?q=%2Fm%2F0dsbpg6,%2Fm%2F0jgqg
どうやらRustは日本でだけ突出して関心を集めてるようだけど。
2022/07/31(日) 13:59:52.84ID:QQQkQO80
メモリリークするかもしれないC++を使う理由は本当にあるのか?
pythonやjavaやC#
それか次世代言語使えばいいじゃないか?

C++使う意味は本当に薄れてる
807デフォルトの名無しさん
垢版 |
2022/07/31(日) 14:03:41.92ID:pdOIFS3A
誰か仕掛け人がいるんだろうな。
地域を日本に限定すると、6月初めに急激に検索ボリュームが増えて、その後低下し始める。
この時、何かがあったのであろう。
本の宣伝のためにQiitaで記事を書くとか、5chでスレ立てとか。

他の国では一貫してGoのようなライバルより検索ボリュームが低い。
10倍とかではなく、たとえばGoと比較すると、Rustは100倍ほど検索ボリュームが低い。

ところが日本では6月に一時的とはいえ、RustがGoを超える。
100倍の差を乗り越えて。
韓国面に落ちてそう。
2022/07/31(日) 14:06:22.51ID:uG3GBCfz
令和にもなってC++マンセーする低能クソジャップさん…w
809デフォルトの名無しさん
垢版 |
2022/07/31(日) 14:08:34.98ID:pdOIFS3A
Rust、C++、Goで比較すると、地域によって関心度がはっきりと色分けされる。
北米、中国、オーストラリアはGoの関心度が高い。
欧州、カナダ、ロシア、日本はC++の関心度が高い。
ただし、Rustの色はどこにもつかない。(百分の一のボリュームしかないから。)
2022/07/31(日) 14:33:18.26ID:3aGOnqYZ
YouTube で有名な雑食系エンジニア・KENTA は、
初心者のキャリアパスは、Ruby on Rails → Go だけと言ってる。
Laravel, Django を使わないように言ってる

Rust, Elixir は、普及のキャズムを越えなかった。
越えたのはGoだけ

でも、Stack Overflow では、Rust, Elixirの人気がトップ。
めちゃめちゃw
初心者をRust, Elixirの仕事で使うわけない

TIOBE は、Rubyは難しすぎて滅ぶから使ってはいけないと言ってる。
KENTA天敵・モローも、YouTubeで言ってた。
Rubyは滅ぶ。これからはJava・PHP の時代だと

それが今になって急に、Railsのキャリア相談までやり出したw
Java・PHPのSES・客先の仕事はどうなったの?w

YouTubeのモローの動画。
【2022年版】Ruby on Railsの将来性
2022/07/31(日) 14:37:31.33ID:qRvFCaIs
>>792
静的解析ツールは役に立たないことも多いうえに面倒
レガシーなC++をさっさと捨てるのがベスト
2022/07/31(日) 15:52:49.59ID:KfEgiHCF
Haskellいいよね
2022/07/31(日) 15:57:42.86ID:QQQkQO80
えっ
2022/07/31(日) 16:00:43.28ID:UwyiR8NW
>>799
それはそう言う処理系がまだ作られてないだけで技術的にできない理由はないと思うけど?
2022/07/31(日) 16:19:34.85ID:swJh8Av0
>>807
それゲームのほうのRustやで
816デフォルトの名無しさん
垢版 |
2022/07/31(日) 16:58:04.44ID:pdOIFS3A
>>815
プログラミング言語のRustと指定できるのですよ。
2022/07/31(日) 17:02:31.12ID:CJiuqKJm
>>816
ゲームの方のRustで6月頃にYoutuber向けのイベント?か何かがあって急激に検索が増えている
逆に言語の方は特に増える要因はない
つまり「プログラミング言語のRust」という指定でも指定しきれていないということ
2022/07/31(日) 17:08:43.44ID:g6mgJ8gi
Google Trendsの詳細データがわからないしなんともいえんね
「日本の友達に聞いたらみんなRust好きって言ってたもん」程度の信頼性
2022/07/31(日) 17:25:45.61ID:CJiuqKJm
まぁなんともいえんのはそう
とはいえGoogle検索に影響するほどバズったQiita記事やら5chスレなんていう
存在しないものを仮定するよりはゲームの影響を排除できてない
と見るほうが自然だろう
2022/07/31(日) 17:27:41.53ID:Y9nAVmbr
キミらって井戸端会議みたいなん好きよね
どっちが人気あるとかどーのとか
技術的な話してるやつ少ないね
821デフォルトの名無しさん
垢版 |
2022/07/31(日) 17:35:17.35ID:pdOIFS3A
>>817
トレンド見たならわかると思うけど、Rustなんて世界では全く注目されていなくて存在しないも同然。
しかし、5chではRust推しが異様に多くないか?
トレンドではGoが注目を浴びていて、Rustは存在しないも同然だぞ。
やはり、日本は特殊なのでは?
822デフォルトの名無しさん
垢版 |
2022/07/31(日) 17:40:54.26ID:pdOIFS3A
そもそもRustは使いたいと思うような特徴が無いんだよな。
何か理由があってRust推ししてる人が、たかだか数人いる状況では?
例えばセミナー商法始めたとか。
823デフォルトの名無しさん
垢版 |
2022/07/31(日) 17:55:36.40ID:SahQ8VsR
>>806
Javaは論外
C#は使っても良い
Pythonは適材適所
C++万歳
824デフォルトの名無しさん
垢版 |
2022/07/31(日) 17:55:42.92ID:pdOIFS3A
Rust本の著者とかが怪しいな。
825デフォルトの名無しさん
垢版 |
2022/07/31(日) 17:57:48.82ID:SahQ8VsR
>>821
5chはNim推し
昔はD推し
2022/07/31(日) 17:58:52.41ID:5HP0foYy
最近はAIだの大規模分散処理だのk8sだの、小手先のプログラミング技術よりもずっと上位のレイヤばかりが注目される風潮があったから、
久々にプログラミング言語だけでマウント取れるチャンスが来て嬉しいんだろう
小手先のコードで難しい風のことをやるのが好きな割にそんなに頭良くないからHaskellとか本質的な概念の難しさでマウント取れるほどでもない、Scalaとかあのへんの人達
827デフォルトの名無しさん
垢版 |
2022/07/31(日) 18:01:52.52ID:pdOIFS3A
もしかして統一教会がRustの取り扱い始めたのか?
日本だけなんだかおかしいぞ?
2022/07/31(日) 18:13:00.39ID:ZX6dnszB
コンパイル通れば全部オッケー、ランタイム速度最高!みたいなのが子供ウケいいんだよ。
829デフォルトの名無しさん
垢版 |
2022/07/31(日) 18:14:29.51ID:pdOIFS3A
PHPより遅いのにか。
2022/07/31(日) 19:08:26.53ID:qRvFCaIs
>>829
PHPより遅かったのはC++だぞ
>>430の表を見ろ
simple版がRust>PHP>C#>C++

そして>>602でoptimized版もRust>C++となったようだからC++は厳しい
2022/07/31(日) 20:26:31.89ID:4ur5gTNi
>>826
ダウンロードできる成果物 (コンパイラ等) が最上位のレイヤーだと思うよ

マウントしても物は増えないのに何が嬉しいんだろうか
物欲がない人なのか
あるいは物欲を捨てなければならないと信じているのか
2022/07/31(日) 20:45:35.96ID:HfV8iC7X
>>831
最上位のレイヤは成果物の運用でしょ
仮にハリボテシステムで人間が裏で手動で操作してたとしても、
それでビジネス目標が達成できていてシステム作るより早く安上がりに構築運用できるならそのほうが良い
833デフォルトの名無しさん
垢版 |
2022/07/31(日) 21:15:03.74ID:fu2FWHQK
>>825
D言語、悪くないと思うんだがなぁ、、、
10年前にスポンサーがついてればと思ったりする。
2022/07/31(日) 22:01:58.99ID:4ur5gTNi
>>832
他人の目標を変更させるのは困難だから人間は少ない方がいい
835デフォルトの名無しさん
垢版 |
2022/07/31(日) 22:53:26.31ID:BbMxlT50
もともとRubyで作られていたプロダクトで実行速度の改善が必要となった場合
代替言語としてGoではなくCrystalが採用される流れになってほしい
2022/07/31(日) 23:54:15.32ID:L4Fpf8TN
>>821
Stackoverflowは存在しなかったか
2022/08/01(月) 00:18:15.12ID:0mZ68SoW
>>835
CookpadがRubyで遅くて深刻な部分をRustにしたのは似てるからだよね
クロージャの記法とか積極的なメソッドチェーンとか
838デフォルトの名無しさん
垢版 |
2022/08/01(月) 06:22:36.34ID:Mnuo77rk
Rubyを選んでRustってセンスがなさすぎるわ。
2022/08/01(月) 08:12:25.09ID:p2tKrs72
Rubyの代替ならNimだと思うわ。
RustはRubyのコンセプト (手軽なオブジェクト指向プログラミング)から遠すぎるわな。
2022/08/01(月) 09:26:24.18ID:pETNc0gm
Rubyの代替というか高速化のため従来Cで書いていた部分の置き換えなのでは
2022/08/01(月) 09:31:38.40ID:gtXPpwlS
Rubyの代替でgoとか言ってるの見たことあるな
個人的には疑問だったが
2022/08/01(月) 09:43:29.86ID:IeJPEKz9
web関連として使うなら普通にts使えと思うわ
2022/08/01(月) 09:59:40.05ID:qGmq8aN9
Ruby屋にtsはないだろう
・優れた開発者体験で静的型陣営を勝利に導いた
・ランタイムのパフォーマンスは動的型でありながらRubyを圧倒
・Railsの公式言語でありRubyの思想を色濃く受け継いでいたCoffeeScriptを駆逐
・SPAの隆盛を支えRailsをオワコン化させた
Rubyの敗北の象徴みたいな言語なんだから
2022/08/01(月) 10:57:22.59ID:fTUFEmPR
tsはそろそろ不要だな
2022/08/01(月) 11:15:13.18ID:IUF0b1bQ
GoはランタイムにM:N threadingが統合されててシームレスに使えるってとこだけがとても良い
JavaScriptとかRubyはその辺ウンコすぎ
2022/08/01(月) 12:01:33.28ID:y096ffFE
>>845
Rustも同様にM:N threadingがシームレスに簡単に使えるようになったのでRustがおすすめ
2022/08/01(月) 12:05:37.75ID:sGNBeuA5
>>846
あらゆるライブラリ通して共通のやり方で並行プログラミングできんの?
2022/08/01(月) 12:18:20.24ID:pETNc0gm
>>847
できないよ
ランタイムに何を使うべきかの選択をしたくないならgoを使った方が良い
2022/08/01(月) 12:32:25.99ID:y096ffFE
>>847
何を意味してその質問しているのかな
一般的に基盤として共通の枠組みと共通のインタフェースになるのは当たり前だし
その中でちゃんと目的毎に適した多様なパーツを提供しているのも当たり前だし
Goで出来てることは全て出来るし
Goより粒度の細かいこともできるのでRustがおすすめ
2022/08/01(月) 12:37:14.24ID:y096ffFE
>>848
それはもっと狭くGoのランタイムを選択してることになるから同じことであり説得力がない
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を使わずにコードを書けるよ。
2022/08/02(火) 21:35:54.41ID:zaqp+NKw
NimはObjectとref Objectを区別して扱わなきゃいけない時点で既に不便。

例えばRustでもそんな区別はなく、
スタック上のデータのみで完結しているオブジェクトなのか、
ヒープ上のデータを付随するオブジェクトなのか、
プログラマーはどちらなのか意識せず区別せずとも自動的に安全にメモリ解放される。
952デフォルトの名無しさん
垢版 |
2022/08/02(火) 22:18:46.88ID:3Auutz71
CRTPでおk。
2022/08/02(火) 22:24:30.00ID:+AA3LPDF
次スレのスレタイはNim Zig Pony Carbon Gleamあたりでいいっすか?
2022/08/02(火) 22:40:59.73ID:A0k69qij
>>945
それ本気で言ってたら笑われる
Valgrind使って実行時にエラー検出と
Rustでコンパイル時にエラー検出の
現在どちらをとるべきか100%答えは出ている

RustでValgrindを使うことも稀にあるが
大半がC/C++とのFFIがらみでありC/C++が足を引っ張っている
955デフォルトの名無しさん
垢版 |
2022/08/02(火) 23:38:50.10ID:yShK5RND
>>953
ウィ
2022/08/02(火) 23:51:57.52ID:zk210DB0
>>948
だってRustってめっちゃ遅いから
2022/08/02(火) 23:58:05.26ID:zaqp+NKw
RustならCとほとんど変わらない最高速
開発効率も上がる
958デフォルトの名無しさん
垢版 |
2022/08/03(水) 07:24:58.64ID:EBW1aqTx
んなわけない。
2022/08/04(木) 06:52:08.63ID:hgV/iHpj
Rust保守できなくて他の言語に書き直す案件多すぎじゃね?
2022/08/04(木) 07:38:09.36ID:YMWE04jW
>>959
具体的には?
多すぎと言うならサクッと10件くらい上げてくれるかな
961デフォルトの名無しさん
垢版 |
2022/08/04(木) 08:27:29.63ID:czcxYRnn
貶めたいだけだから、あげられないと思う
2022/08/04(木) 09:05:31.59ID:MbWp6BMN
>>959
言語に対してアンチ活動をしているだけでも異常だが
嘘まで突き出すのは精神異常を疑う
2022/08/04(木) 09:35:45.18ID:jqJhSpad
>>960
すみません、嘘いいいました
2022/08/04(木) 09:44:49.51ID:hgV/iHpj
https://twitter.com/search?q=Rust%20%E7%A7%BB%E6%A4%8D&src=typed_query
https://twitter.com/5chan_nel (5ch newer account)
2022/08/04(木) 09:53:00.83ID:YMWE04jW
>>964
どう見てもrustからの移植よりrustへの移植の話の方が多くないか?
966デフォルトの名無しさん
垢版 |
2022/08/04(木) 10:33:52.33ID:qcYVxnZx
今まで長年色々と携わってきた一般的な話として
移植するほど価値のあるものは滅多にないのと
同じ物を長く使い続けるよりある段階で設計から作り直した方が効率が良いのと
その時は古い言語を引きずらずにRustやKotlinやSwiftなど改善された良い言語を採用した方が効率良い
2022/08/04(木) 10:54:52.94ID:GwRVgwm4
でもRustを使えばメモリは安心安全だよ
2022/08/04(木) 11:32:27.68ID:hgV/iHpj
移植と逆移植の需要が噛み合って無限の雇用を創出するわけだ
2022/08/04(木) 12:34:53.02ID:rpL8+iTc
>>965
既存コードの数が違うんだから当然だろ。
2022/08/04(木) 13:00:46.06ID:pLEfRi/j
保守できなくて書き直しで言うと JS/TypeScript 界隈が深刻なんじゃねえの?
未成熟なモジュールシステム、幅広い要件、多彩すぎる処理系、本来の目的と違う使い方をされるView層(DOM)、流行りの影響を受けやすいドメイン。初学者に人気がある。

まぁ、言語側で頑張れることも限界があるけど…。
2022/08/04(木) 13:17:32.31ID:YMWE04jW
>>969
それはそうだが
> Rust保守できなくて他の言語に書き直す案件多すぎじゃね?
って吠えてた人がいるからもっとあるのかと思ったら意外にショボくてワロタ
よくこんなものをドヤ顔で出せるもんだなw
2022/08/04(木) 20:50:36.26ID:+PIU9Mos
でもPHPの方が速いよね
2022/08/04(木) 20:54:22.20ID:9TNfUmNd
npmは反面教師としてめちゃくちゃ活躍した
後発のパッケージツールはみんな参考にしてる
2022/08/04(木) 22:46:04.19ID:RbD+Gsia
プロジェクト毎に切り替えてインストールする、

Ruby のBundler を真似て、npm/yarn が出来た
2022/08/04(木) 23:00:37.24ID:mEx9pPO3
何さらっと嘘言っているんだよw
パッケージ管理ツールなんて昔からあるのに
2022/08/05(金) 07:34:10.27ID:BZGh0CoX
Time in seconds for each data size: kjvbible.txt
x10 x100 x200 x400 Mem Comment

0.018 0.052 0.089 0.174 ***MB baseline/cat
0.036 0.089 0.147 0.260 ***MB baseline/rg foobar (ripgrep, no match)
0.032 0.091 0.159 0.290 ***MB baseline/ugrep foobar (no match)
0.058 0.457 0.889 1.789 1.1MB baseline/grep foobar (no match)
0.219 2.108 4.127 8.263 0.9MB baseline/wc -w (word count, total only)

0.154 1.271 2.551 5.079 2.0MB C (caller hash,stdin=binary-mode)
0.177 1.412 2.733 5.446 3.8MB Go (caller hash)
0.161 1.458 2.903 5.671 1.4MB C++ (caller hash,cin=binary-mode)
0.175 1.513 2.953 5.863 4.6MB Zig @github fixed
0.176 1.572 3.124 6.045 2.6MB Rust@github rust/optimized-customhashmap
0.180 1.597 3.219 6.267 3.1MB Rust@5ch res >>602
Ryzen9 5900X windows11
977976
垢版 |
2022/08/05(金) 07:37:51.09ID:BZGh0CoX
データサイズを大きくしたら結構景色が変わったよ
もともとのサイズは左端のx10ね
978976
垢版 |
2022/08/05(金) 07:44:17.90ID:BZGh0CoX
caller hashはoptimized.cと同じようにメインループでhash計算を済ませておいてhashテーブル関数に渡す用にしたもの
これ結構効果的だった
2022/08/05(金) 07:49:10.83ID:WXp5Dd4L
こちらでもGoがC++やRustよりも遅い結果しか出ないのだが
GoがC++やRustよりも速い結果になる人は何が違うのだろう?バージョン?CPU?計測方法?
GoがC++やRustより速くなるのは他でも見かけないから何らか別の理由があるはず
980976
垢版 |
2022/08/05(金) 07:50:28.70ID:BZGh0CoX
rustはよくわからないので、caller hash版は大先生にお願いしたいです

Mem:
メモリ使用量はタスクマネージャーでの表示です。cat/rg/ugrepは早すぎて見えませんでした
x10~x400で違いはなかったです
2022/08/05(金) 07:54:28.24ID:WXp5Dd4L
>>978
それは専用プログラムでない限りプログラミングでやってはいけない行為
単語を渡すだけのインタフェースになっているべきであり、その利用側はハッシュ関数が何かを知ってはいけない
さらに、そのような逸脱した最適化アルゴリズムを特定の言語にだけ適用しても、言語間の比較とならない
982デフォルトの名無しさん
垢版 |
2022/08/05(金) 07:58:44.14ID:Zs6c3yJt
次世代言語27 Nim Zig Rust Carbon
2022/08/05(金) 08:03:18.30ID:caRFuKmx
要はアルゴリズムが大事で言語の差異はスクリプト言語でもない限りどうでもいいってことだろ
もうこの話は終わりでいいよ
2022/08/05(金) 08:06:44.88ID:8m5I520h
アルゴリズムが同じならばGoが常に遅い
なので今回GoはイカサマをしたらC++/Rustより速くなったという話
2022/08/05(金) 08:12:34.92ID:caRFuKmx
Goはパラレル版もリポジトリに置いてあるけど当然そっちの方がRustより早いぞ
Rustも並列処理すれば速いんだろうけど

ということで大事なのはアルゴリズムで言語差はわりとどうでもいいね
Rustがアピールするべきなのはパフォーマンスというよりは低ランタイムコストでメモリ安全ってとこじゃないの
当然コストが高いわけでそれに見合うほどのパフォーマンスが必ずしも得られるわけではない

パフォーマンスを改善するには言語を変えて作り直すより、アルゴリズムを改善したり、並行並列処理に切り替えたりする方が効果的
2022/08/05(金) 08:15:37.58ID:brBAgkMt
その0.1秒で終わる処理ですら同じ条件ならばGoが遅いけど 
現実にはサーバーからアプリまでそれよりはるかに長い時間使われる
そしてGCが何度も起こりGoの遅さが致命的になる
2022/08/05(金) 08:17:56.43ID:m/sE4zJr
>>986
それはあなたの感想では?
GOがエスケープ解析しない根拠は?
>そしてGCが何度も起こり
2022/08/05(金) 08:18:55.11ID:caRFuKmx
次スレはワッチョイありで立ててくれ
Rust盲信者がIDころころ変えるので
2022/08/05(金) 08:25:55.99ID:H5hHfEm1
>>984
どこがイカサマ?Cと比較するために最適化しただけなのでは?
それがイカサマなら標準のハッシュが遅いからライブラリ使ってんのもイカサマだよね?
2022/08/05(金) 08:29:18.89ID:w1fJ4NWZ
元のGoブログの人を含めて全員おかしい
アルゴリズムを揃えないベンチマークは何も意味を持たない
991デフォルトの名無しさん
垢版 |
2022/08/05(金) 08:56:59.64ID:T6EdcM/7
>>982
rustはもう外せよ
2022/08/05(金) 09:25:07.37ID:caRFuKmx
そんなにRustがあらゆるプログラムでパフォーマンス、生産性が優れているなら
なんで頭のいいエンジニア達はわざわざRustを使ってDenoっていうランタイム作ってんの???

GCがあるとRust狂信者によるとWebサーバーでもクリティカルに影響が出てしまうらしいけど

なんでGCのないRustで狂信者曰くあらゆる面でゴミなGCありのDeno作ってんのよ
2022/08/05(金) 09:40:18.52ID:h+76NvX5
>>978
その通りだがその時点でこのベンチマークが現実離れした意味のないものであることを意味している
以前から指摘が出ているように、このベンチマークの実行時間のほとんどは単語カウントに費やされていて、だからこそそのハッシュ計算のオプティマイズで大きく改善される
この筋の悪いベンチマークをどうしても行なうならば、最低限アルゴリズムとテーブルサイズなど条件を揃えるべき
現状では意味のない比較となっている
2022/08/05(金) 09:43:12.76ID:/hLfNpmA
次スレ

次世代言語27 Nim Zig Pony Carbon Gleam
https://mevius.5ch.net/test/read.cgi/tech/1659660050/
2022/08/05(金) 09:45:30.76ID:oRWix6dW
>>992
CやC++を使ってなぜ様々な遅い言語のコンパイラやインタプリタを作っているのか?と同じ話ではないか
それに気付かない君の頭の悪さを嘆こう
2022/08/05(金) 09:48:57.07ID:AYAQMvzY
【次スレ】
次世代言語27 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1659655598/

【前スレ】
次世代言語25 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1650185555/
2022/08/05(金) 09:49:10.13ID:dkIhDSME
全ての証言を信じれば矛盾する
なぜかといえば自白強要や誘導尋問から生み出される証言もあるから
2022/08/05(金) 10:18:49.46ID:Zpgmgnev
>>985
>当然コストが高いわけでそれに見合うほどのパフォーマンスが必ずしも得られるわけではない
ここで言うコストとは何のこと?
2022/08/05(金) 11:53:10.74ID:GYd+Bl11
全く同じアルゴリズムで比較するべきとか言い出すならそもそもこんな複雑なタスクでベンチマークするのがおかしい
もっと簡単なタスクをいろいろ用意してそれぞれでベンチマーク比較したほうがいい
2022/08/05(金) 12:02:08.53ID:/hLfNpmA
どうすべきかなんて目的次第ですよ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 45日 2時間 34分 22秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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