X



次世代言語26 TypeScript Swift Go Kotlin Nim
レス数が1000を超えています。これ以上書き込みはできません。
0002デフォルトの名無しさん
垢版 |
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)
0003デフォルトの名無しさん
垢版 |
2022/06/21(火) 12:56:04.76ID:/ETIo2hH
オーバーロードが無いと、

例えばライブラリ無いからシステムコール利用する便利ラッパー機能を提供しようとする。例えばソケット関係のAPIをまとめたやつとか。
で socket(2)の場合、
第3引数なんていつも0しか使わないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
0004デフォルトの名無しさん
垢版 |
2022/06/21(火) 13:12:00.12ID:vSYkmcQ8
>>3
プログラムを書いたことのないキチガイだな
socketの第3引数はgetaddrinfoで得たai_protocolを引き渡すのが常識
あるいはgetaddrinfoを使わないならばgetprotobynameの結果を引き渡すものだ
まともなコードを書けないからそんな意味不明な主張になる
0005デフォルトの名無しさん
垢版 |
2022/06/21(火) 13:15:46.21ID:wIb095hs
必要なら変えればいいじゃん
0006デフォルトの名無しさん
垢版 |
2022/06/21(火) 14:09:10.86ID:l/hCBOZ3
なんでオーバーロードが無いCでうまくやっている例を挙げてオーバーロードの必要性を主張しようと思ったんだろう
0007デフォルトの名無しさん
垢版 |
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'"  `ヽ  /,/
0008デフォルトの名無しさん
垢版 |
2022/06/21(火) 18:27:05.65ID:/ETIo2hH
>>4
あくまでも例なのに的外れな回答だな。
fcntlでもいいわ。あれは第2引数によって第3引数の型が変わる。

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

当たり前だろ
0013デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:02:06.03ID:n99R/Leg
オーバーロードできるからと、いつもオーバーロードするわけではない。
だがオーバーロードが適切な場合はオーバーロードできたほうが良い。
単にそれだけ。
原理主義者になるな。
0014デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:15:17.39ID:n99R/Leg
>>11
ライブラリ無いから薄いラッパーを作って提供するんだと思った。
知らんけど。
0015デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:19:23.26ID:zS+KQ1el
オーバーロードは関数を値として持とうとしたときに関数の実体を取得するのがくそほど面倒臭かった記憶
0019デフォルトの名無しさん
垢版 |
2022/06/21(火) 19:45:56.46ID:8AFmzPLe
オーバーロードの有無で使用する言語を選ぶ人っているのか?
いないなら些末な議論
0020デフォルトの名無しさん
垢版 |
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))?;
}
0021デフォルトの名無しさん
垢版 |
2022/06/21(火) 21:43:34.03ID:gx+wq5uQ
>>15
関数を値として持つ場合は関数シグニチャ的なものを型として使うので
その時点でどのオーバーロード用か明確になってるよ
0022デフォルトの名無しさん
垢版 |
2022/06/21(火) 21:57:39.81ID:Z7u4GR2t
>>19
>オーバーロードの有無で使用する言語を選ぶ人っているのか?
ドカタは低脳、ゆとり、基地外でも大歓迎な職業なもんだから、
へんな奴が多い。そして、5chのム板に来る奴にはそれの重度な奴が多い。
そんな奴(重度の基地系)だと些細なことでも異常ににこだわる(超粘着する)のが普通なんだよ。
で、俺的にはオーバーロード必死な人が使っている言語(メイン言語)が何なのか興味あるが
0023デフォルトの名無しさん
垢版 |
2022/06/21(火) 22:00:18.48ID:Z0vonPWK
>>20
wrapper APIとして公開するならそれぞれ別のメソッドにすべきでしょ
メソッドという概念がなかった頃の遺物をそのまま使う必要ない
0024デフォルトの名無しさん
垢版 |
2022/06/21(火) 22:24:10.62ID:PKuk2WhK
>>13
オーバーロードの使い道は型違いのサポートとオプション引数のサポートの2つ
前者はジェネリック後者はオプション引数が言語機能にあればオーバーロードがなくても困らない
0025デフォルトの名無しさん
垢版 |
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()一つで済むことを示した
そしてこれは汎用的な手法である
0027デフォルトの名無しさん
垢版 |
2022/06/21(火) 23:20:14.77ID:Z7u4GR2t
オーバーロードが無いと嫌だ嫌だな人はオーバーロードを変態にした
C++の可変引数テンプレート(可変長ジェネリクス引数)のようなものが実は欲しいってことなんじゃないのか
0028デフォルトの名無しさん
垢版 |
2022/06/21(火) 23:42:15.69ID:aTTVmXQa
新しく作る前提ならfcntlみたいに責務の異なる複数の処理は
1つの関数ではなく1つのクラスやモジュールにまとめたほうがいいのは間違いない

ただ既存APIのラッパーなら使いやすい形にAPIを変更した方がいいケースもあれば
既存と同じ感覚で使える形に留めたほうがいいケースもあるから
分割がいいかどうかはケースバイケース
0029デフォルトの名無しさん
垢版 |
2022/06/22(水) 00:47:54.76ID:OgTLLOot
結局>>2の例も>>20の例も
元は「オーバーロードのないRustは一つの関数名にできずに多数の関数名を必要とする!」攻撃から始まったのに
結果はRustの方が一つの関数で対応できちゃっていて不思議
0032デフォルトの名無しさん
垢版 |
2022/06/22(水) 07:15:40.26ID:KrJiTw7R
>>29
Rustはtraitを用いたジェネリクスやenumなど便利で強力な機構を備えているため
具体的な現実の問題のほとんどはオーバーロードを使わずともそれらを用いてもっと良い解決を取ることが出来てしまう
0034デフォルトの名無しさん
垢版 |
2022/06/22(水) 08:59:15.48ID:s09CCxIL
nim ってどうよ?
0036デフォルトの名無しさん
垢版 |
2022/06/22(水) 10:53:23.20ID:tHEXzaPe
flutter で dart だろ。Swift UIとか覚える気ない、というかApple終わってるし
0040デフォルトの名無しさん
垢版 |
2022/06/22(水) 23:42:43.21ID:DzsA87OB
ノートンなどアンチウイルスソフトが必ず隔離や削除する、インストールの際はインストール先を例外にする必要があります
全部誤判定なんだがアンチウイルスソフトの会社は殿様商売だな
0043デフォルトの名無しさん
垢版 |
2022/06/24(金) 20:12:58.51ID:UJITbcs3
ClojureもElixirもいいけど次世代かって聞かれるとう~ん
なんだろうね次世代って
0044デフォルトの名無しさん
垢版 |
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件。
0045デフォルトの名無しさん
垢版 |
2022/06/25(土) 12:36:15.24ID:ul9cRZkF
>>44
なんかもうネタみたいになってるけどこれってアメリカンジョークなのか?

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

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

いつも思うけど、Stack Overflow にいる香具師は、プロじゃないと思う。
転職に適さない
005453
垢版 |
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 の本を書いている、黒田努の本も出たし
0055デフォルトの名無しさん
垢版 |
2022/06/27(月) 17:13:12.52ID:rnJb8tm1
GoはLambdaの新しいAL2環境においては単なるカスタムランタイム扱いに格下げされており、Rustとの違いは無くなっている
キチガイに触るつもりはないが他の人への情報提供として
0056デフォルトの名無しさん
垢版 |
2022/06/27(月) 17:20:17.54ID:gf8cGZwe
Erlang系の話題も少ないけどGleamとかどうよ
程々にホットだけどフレームワークはまだできてない、現状はそんな感じ
BEAMで動いて型が付いてて開発が動いてるってだけで機能として珍しい所はあんまり無いんだけどさ
そんな関数型関数型しい仕様でもないしギークが喜ぶリッチな型があるわけでもない
あとはjsがこないだ吐けるようになった
006353
垢版 |
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、エンジニアリング・マネージャー
006453
垢版 |
2022/06/29(水) 18:08:23.13ID:zCehF1Jn
今までのモローの主張は、

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

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

しかし
Cで書かれたものを置き換えることはしない
APIを変えることはしない
0067デフォルトの名無しさん
垢版 |
2022/07/01(金) 21:34:11.78ID:12jEq8hC
>>65
どこでも同じシンプルな結論が出てるな
・既存のものを書き換えるのは無意味
・新たに作るものはRust一択
0068デフォルトの名無しさん
垢版 |
2022/07/01(金) 21:52:53.35ID:JFBfOGuK
あまりにも既存コードが膨大だからね
長らくあらゆる環境で機能してたコードをリプレイスするほどまでのメリットはないだろう

もし仮にそこまでメリットあるんだったら、即刻世界中からC/C++のコードを絶滅させてほしいわ
0069デフォルトの名無しさん
垢版 |
2022/07/02(土) 07:56:01.10ID:lUSnA9b+
誰もリプレイスするべき、なんて言ってないよ
0071デフォルトの名無しさん
垢版 |
2022/07/14(木) 20:22:39.85ID:ZkG98XYT
COBOLを舐めてはいけない
そもそも基本的に動的アロケーションをしないから、メモリ管理に関してはRustなんかに比べても信頼性が無茶苦茶高い
0072デフォルトの名無しさん
垢版 |
2022/07/15(金) 08:41:12.46ID:LdUI0ldE
>>71
でDATA DIVISIONが半分を占める悪夢のようなコードが蔓延するんですね
0079デフォルトの名無しさん
垢版 |
2022/07/17(日) 01:25:06.31ID:0s/4JmSD
Rustは安全性と高速性と書きやすさの両立を実現した
ZigはC++と同じで安全性は保証しない
Rustに対しては相対的にZigのメリットは無い
C/C++で書くよりはZigの方がおすすめではある
0081デフォルトの名無しさん
垢版 |
2022/07/17(日) 02:05:03.30ID:vN6ol9NM
Zig軽く見たけどメモリ管理自前なのがキツいな
ここまでむき出しにするかー
0082デフォルトの名無しさん
垢版 |
2022/07/17(日) 02:45:01.72ID:Zp8ItUSG
zigはそのままCのコンパイラになってかつクロスコンパイルが簡単ってのが良いね
既存のCプロジェクトのコンパイラをzigに置き換えるだけでもメリットがあるし、そうなると徐々にソースもzigに置き換えたくなってきそう
0085デフォルトの名無しさん
垢版 |
2022/07/17(日) 11:37:18.91ID:bCNgPTt6
流行るかどうかは別にしてZigはスレタイに相応しい言語だな

今のスレタイはNimを除いて全て現世代の言語になっちゃったから
0086デフォルトの名無しさん
垢版 |
2022/07/17(日) 11:47:40.57ID:vKjp9uxK
TypeScript、Swift、Go、Kotlinはとっくに普通の言語で、
これから新規プロジェクトやるならその辺の言語しか触らなくてもおかしくないね、ってレベルでもう一般的
0087デフォルトの名無しさん
垢版 |
2022/07/17(日) 11:50:14.03ID:+NC/ggVn
>>1
typescript swift go kotlin は十分メジャーだから次スレからは外すように
0089デフォルトの名無しさん
垢版 |
2022/07/17(日) 14:14:11.96ID:vN6ol9NM
Zig触ってるとRustの所有権ってめちゃくちゃ優れた概念だったんだなと実感できるね
0090デフォルトの名無しさん
垢版 |
2022/07/17(日) 15:07:20.14ID:SLeX0Vy/
従来のプログラミング言語と違って革命的に新たな概念をもたらした次世代言語はRustだと思うのですが
どうしてスレタイに入れないのですか?
0091デフォルトの名無しさん
垢版 |
2022/07/17(日) 15:35:25.31ID:AlxrTtXq
次世代言語ではなくすでに現世代の覇権言語だから
0092デフォルトの名無しさん
垢版 |
2022/07/17(日) 16:35:29.89ID:WgvrEhxC
C++0xのパクリだからでは?
0094デフォルトの名無しさん
垢版 |
2022/07/17(日) 17:42:03.18ID:3i/TeYSj
もし今までC/C++でシステム開発をしてきた会社で
モダンなシステムプログラミング言語が試用されるとしたら
それはRustではなくZigもしくはNimだろう
0095デフォルトの名無しさん
垢版 |
2022/07/17(日) 18:00:29.39ID:SLeX0Vy/
>>94
それらは本質的にはC/C++と変わらないから採用するところはほとんど無いと思われます
もしその分野で新たな言語を採用するとしたら採用に意味のあるRustとなるでしょう
0098デフォルトの名無しさん
垢版 |
2022/07/17(日) 18:56:55.96ID:+DL/3zgJ
NimはともかくZigはまだ1.0でもないから会社で使える感じはしないけどな
将来的にCの代替としては期待している
0099デフォルトの名無しさん
垢版 |
2022/07/17(日) 19:06:00.51ID:WgvrEhxC
そもそもRustの利点と宣伝されてるものって、C++20のコンセプトを簡易的に実装したものでは?
0101デフォルトの名無しさん
垢版 |
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!()だしモヤる
0102デフォルトの名無しさん
垢版 |
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();
}
0103デフォルトの名無しさん
垢版 |
2022/07/17(日) 21:44:39.47ID:PMMdo41Y
>>101
(1) Cのprintfと同じ機能がRustのprint!であり分かりやすく使いやすい
(2) Rustでも色々な指定は可能
(3) プログラミング言語毎に様々な書き方がなされている中では些細な話
0106デフォルトの名無しさん
垢版 |
2022/07/17(日) 22:26:33.06ID:SZhCYswt
Zigだけどやっぱスコープ抜けた時に一斉に不要なメモリ解放する機構ぐらいは欲しいなあ
そういうのないよね?

Obj-Cにおけるautoreleasepoolとかv8におけるHandleScopeみたいなやつ
0107デフォルトの名無しさん
垢版 |
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まわりはすこ
0108デフォルトの名無しさん
垢版 |
2022/07/18(月) 00:06:45.58ID:KMiFC5Pb
>>87
俺的には最初のリリースから10年経っているのはもう次世代とは言えない
って感じなんだよな。

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

>>99
逆じゃないのか
Rustの制約をC++でも簡易で良いから欲しいって感じでC++20でようやくコンセプトとして導入じゃないのか
ジェネリクスには制約は必須なのにC++では長い間導入されていなかったからな
0109デフォルトの名無しさん
垢版 |
2022/07/18(月) 00:50:41.17ID:u6hhGzsh
Zigの特徴はCよりも未定義動作を増やすことでコンパイラによる最適化を過激にできて場合によってはCよりも高速になることを狙う点
つまり未定義動作を無くすことで安全と高速を両立させるRustとは真逆の戦略を採っていること
0114デフォルトの名無しさん
垢版 |
2022/07/18(月) 08:19:25.09ID:mVdITidT
Rust信者ってこんなに低脳なん?w
ヤバっ...
0116デフォルトの名無しさん
垢版 |
2022/07/18(月) 11:21:45.49ID:1omE+gQa
そもそもC/C++がまともに使えない低能のための言語がRustですし
0117デフォルトの名無しさん
垢版 |
2022/07/18(月) 11:36:06.98ID:biPIwclR
>>95
zigはそう言えなくもないがnimはちゃうやろ。少しはググれよ。
ただまぁ、c/c++からの移行ではrust一強な感はある。
0118デフォルトの名無しさん
垢版 |
2022/07/18(月) 11:40:31.18ID:biPIwclR
>>115
決定したの?
0119デフォルトの名無しさん
垢版 |
2022/07/18(月) 15:04:52.06ID:n//xSWhh
僕は職業プログラマーじゃないんで
新しいBASICたるswiftとswift playgroundでいいです。
ちょっと数学的解析するのに使ったらすげぇ楽だこれ
ちにゃ〜
0121デフォルトの名無しさん
垢版 |
2022/07/18(月) 23:29:01.81ID:V4/YV6GP
>>108
ジェネリクスとRustのトレイトによる制約の相性の良さは感動した
Rustはよく考えられて設計されていると
0122デフォルトの名無しさん
垢版 |
2022/07/19(火) 00:44:59.22ID:gapBBEtz
よく考えて設計したがためにtraitにasync fnを定義するためにGATsが必要で
コンパイラにSATソルバーを入れる必要が出てきてたりして大変そう
0123デフォルトの名無しさん
垢版 |
2022/07/19(火) 09:36:36.78ID:wQVGctip
タイトルにRustが無いのに、こいつらは文字も読めなければ知性すらない。そりゃ嫌われるわな
0124デフォルトの名無しさん
垢版 |
2022/07/19(火) 22:42:59.43ID:MhwTnkaY
比較としてrustが出るならいいが、単独で出されると何だかなぁ感があるよな。
0126デフォルトの名無しさん
垢版 |
2022/07/20(水) 01:33:59.92ID:xi/WqfXE
>>125
C++から移行しやすい後継言語ということか
Rustを参考にライフタイムも検討中みたい

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

>>125
画期的なものを期待して見たら単なるAltC++でズッコケた
0128デフォルトの名無しさん
垢版 |
2022/07/20(水) 10:38:59.85ID:+8MBpHfA
>>125
なんでCarbonとかにするかなぁ
Macのやつと間違えるやん
0132デフォルトの名無しさん
垢版 |
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++と簡単に連帯できる。
0133デフォルトの名無しさん
垢版 |
2022/07/20(水) 15:42:59.72ID:qJwz0nM8
Nimはもっと評価されて良いと思う
0137デフォルトの名無しさん
垢版 |
2022/07/20(水) 18:42:51.78ID:5UvTR+16
GC言語 GCによる自動メモリ解放
Rust 即時の自動メモリ解放
C/C++/Carbon(現在0.1) 自動メモリ解放ではない
0138デフォルトの名無しさん
垢版 |
2022/07/20(水) 19:19:34.59ID:XnEgORKH
>>137
Rustはスタックに積んでいる&生ポインタが無いから自動回収されるだけ。c/c++と一緒。
そんなことよりもスタック重視で基本は何でもスタックということを強調したほうがRustらしさの説明になるだろ。
0139デフォルトの名無しさん
垢版 |
2022/07/20(水) 20:40:05.79ID:xdIX6xM1
Rustはあらゆる面で安全と高速を両立する抽象化を実現した言語
Carbonのドキュメントを見ると目標はそこでなくRustの領分に入って来ていないでしょう
0140デフォルトの名無しさん
垢版 |
2022/07/20(水) 20:43:23.04ID:CC/ADkRB
ほとんどのシステムプログラミング言語と呼ばれるものは変数がスタックに確保されるかヒープに確保するかはコントロールできるはず。
ただし可変長な配列や文字列型はヒープにデータを格納される。
違いはヒープに変数を確保したときに手動で解放する手法、スコープ抜けたら解放する手法、参照カウンタが0になったら解放する手法、GCを使う手法などがあるところ。(valeのgenerational referencesというのもあるけど)
Nim言語でもrefがついてないobjectはスタックに置かれるしRustでもBoxやRc使えばヒープに確保されるしC++でもscoped_ptr使えば参照カウンタでヒープが管理される。
基本的に変数はスタックに確保して、どうしても必要であれば(一つのオブジェクトを複数の変数から参照したい、OOPしたいなど)ヒープを確保するという感じの書き方になると思うけど。
0141デフォルトの名無しさん
垢版 |
2022/07/20(水) 20:52:32.44ID:5UvTR+16
Rustでは自動的に安全に即座にメモリ解放される
ここが重要なポイント
だからRustは高速と安全を両立させることができている
それに加えてRustではメモリ競合なども完全に防止する
0142デフォルトの名無しさん
垢版 |
2022/07/20(水) 21:03:41.80ID:5UvTR+16
そしてCarbonの目標文書を読んでもその目標は書かれていない
つまりRustの本質と競合する言語ではない
0144デフォルトの名無しさん
垢版 |
2022/07/21(木) 00:34:40.13ID:MOkaWH3B
結局CarbonはC++の変種に過ぎないのか
新たなプロジェクトではRustを利用する流れは変わりそうにないな
Carbon採用の動機や利点が全くない
0148デフォルトの名無しさん
垢版 |
2022/07/21(木) 01:25:08.23ID:qcok3Xr6
人によりけりだけど、一つのプログラミング言語を学習してそれをずっと使いつづけたい、他の言語の勉強したくないという人は多い。
Rustは比較的学習コストが高め。
もし他のプログラミング言語がメジャーになったりもっと優れたプログラミング言語が現れると苦労してRustを勉強した努力が無駄になってしまう。
だから新しい言語の話題がでるとRustを苦労して勉強した努力が無駄になってしまうという恐怖感が生まれて必死に否定するんじゃないかと。

異なるプログラミング言語間でも似た所はあるし、新しい言語を学ぶときにRust言語を学んだ経験が全く無駄になることはないだろうと思うけど。
0149デフォルトの名無しさん
垢版 |
2022/07/21(木) 01:25:42.94ID:nOpNTAAx
Carbonでオブジェクトをヒープに確保するのどうやるの?
なんかよーわからん
ドキュメントがなさすぎる
流石にまだこれを使うのは難しいな
0150デフォルトの名無しさん
垢版 |
2022/07/21(木) 01:34:26.10ID:nOpNTAAx
Rustの欠点として可変参照の扱いがC/C++互換をかなり難しくしてるんだよな
既存プロジェクトとのinteropにおいては無視できないケースが多い
特にGoogleなどの大企業は
その結果生まれたのがCarbon
0152デフォルトの名無しさん
垢版 |
2022/07/21(木) 02:05:12.80ID:hbmQrHo+
>>148
Rustが出現して以来これだけ時間が経過しても
Rustが実現した『高速と安全の両立』を満たす他の言語が出てこなかった
その結果が大手IT各社による共同でのRustへの支援表明とRust Foundation設立
そしてC++を拒否していたLinux開発陣営までもがRust採用発表
つまり既にこの業界では雌雄が決している
0153デフォルトの名無しさん
垢版 |
2022/07/21(木) 02:06:50.27ID:hbmQrHo+
>>148
次に学習コストが高いといっても
他との大きな違いは所有権とライフタイムだけでありその概念は一日あれば誰でも理解できる
そして後は具体的にコードを書いて身につけてくのも他の概念と同じ
さらにRustが実現した『高速と安全の両立』のためには所有権とライフタイムによるのが最も適切とわかってきた
つまりRust以外に両立を満たす言語が出てきても学習必須の概念となる
同時にそれは画期的な発明がなされない限りRustの二番煎じの言語しか出現しないことを意味する
0154デフォルトの名無しさん
垢版 |
2022/07/21(木) 02:13:15.45ID:hbmQrHo+
>>150
データ競合安全性に関しては誰が考えても可変参照の不可変参照との区別が必要となる
むしろその区別をはっきりさせてこなかったために従来の言語はデータ競合の入りうる隙きを許してきた
過渡的には既存の安全でないものと組み合わせる時に扱いが大変だとしても
最終的には可能な限り全て安全なもので組み立てていくことになろう
0155デフォルトの名無しさん
垢版 |
2022/07/21(木) 02:17:23.88ID:F7Gtvv1S
>>148
現状Rustが初めての言語って人は少ないから
最初に学んだ言語を使い続ける人はrustユーザーの中ではかなり少数派なのでは
0158デフォルトの名無しさん
垢版 |
2022/07/21(木) 05:28:59.67ID:aDWah/z9
>>156
Rustが実現してる安全と高速性の両立をCarbonが提供するわけではないみたいだから競合しないね
CarbonのFAQ >>151 にもRustが使えるならばRustを使った方が良いと書かれているね
だから雌雄は決していると言っても過言ではないかも
0159デフォルトの名無しさん
垢版 |
2022/07/21(木) 06:11:50.65ID:EDO+eFgH
恐らくCarbonはRustのいいところだけを抽出した感じだな
CarbonのほうがC++やTypeScriptに近いのでRustよりも馴染むだろう
Carbon派とRust派で分かれそうだ
0160デフォルトの名無しさん
垢版 |
2022/07/21(木) 06:23:11.04ID:aDWah/z9
>>159
嘘ついたらダメよ
Carbonはあくまでも既存C++遺産のため限定のもの
そしてRustのいいところは何もサポートしていない
だからCarbonの公式FAQ >>151 でもRustが使えるならばRustを使った方が良いと明記されてるね
0163デフォルトの名無しさん
垢版 |
2022/07/21(木) 11:18:14.67ID:BsoCJ7d4
所有権どころかシャローコピーとディープコピーの違いも知らずにRust通を気取ってるアタオカさんだからRustスレでは鼻つまみもの
0166デフォルトの名無しさん
垢版 |
2022/07/21(木) 13:04:30.75ID:nOpNTAAx
ここ以外でもツイッターとかでやたらRust難しいと印象操作しようとしてるやついるよな
C/C++をまともに書いたこと有ればたいして難しくもないのに
0167デフォルトの名無しさん
垢版 |
2022/07/21(木) 13:47:25.39ID:LMMByu3R
>C/C++をまともに書いたこと有ればたいして難しくもない

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

私の場合は、Pythonでほとんど困らなくて、偶に.net系くらいなもんだから、Rustの話が続いても別世界の話過ぎて、付いていない…
0177デフォルトの名無しさん
垢版 |
2022/07/21(木) 16:28:02.22ID:mCQN4Yoj
こういう奴が一番危険なんだよな。。実際仕事すると洒落にならんことし始める。
0178デフォルトの名無しさん
垢版 |
2022/07/21(木) 17:45:24.11ID:aer6+S9Z
メモリやらリソース管理、分散処理の課題をRust以上まともに解決してない言語だと、次世代って感じしないなぁ。

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

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

Cでクソでかい構造体をスタックに置いてしまって
スタックオーバーフロー起こしてシステム停止したり
C++でコピーコンストラクタの実装ミスって
ダングリングポインタ作ってシステム停止したり
デストラクタでdelete忘れてメモリリーク起こして
システム停止したり
それなりの地獄を味わってる俺が言うんだ間違いない
0189デフォルトの名無しさん
垢版 |
2022/07/21(木) 19:44:43.35ID:F7Gtvv1S
趣味プログラミングならどんどん変なことしてクラッシュさせれば良いけど
業務ならもっと安全を期したいなぁ
0193デフォルトの名無しさん
垢版 |
2022/07/21(木) 20:54:05.56ID:rGFlKcYB
>>175
Pythonは約10倍くらい遅い
メモリも喰う
ガベージコレクションもある
まともな並行並列プログラミングが大変
Pythonは小さなバッチ的スクリプトの範囲でのみ使うのが正解
0195デフォルトの名無しさん
垢版 |
2022/07/21(木) 22:23:39.66ID:EhpLe0Nv
PythonやJavaScript書くときはでかいアロケーションの有無くらいしか意識しないけど
C#やSwift書くときはvalue typeとreference typeの使い分けがあるからスタックとヒープもそれなりに意識する
Goの場合は気になるところでescape analysis
0196デフォルトの名無しさん
垢版 |
2022/07/21(木) 23:33:08.48ID:n+UC1473
三角関数や薬剤師の存在を意識してる人は大体が
「コスト」を強く意識した方がメリットが大きいと思い込んで意識している
0197デフォルトの名無しさん
垢版 |
2022/07/21(木) 23:43:19.63ID:U3FKAWyk
自分でも何を書いてるのか理解できてなさそう
思い込んで意識するというのも意味不明
0198デフォルトの名無しさん
垢版 |
2022/07/21(木) 23:53:17.15ID:vrEITS91
>>195
PythonやRubyやJavaScriptなどのオモチャ言語しか使ったことのない人だけがスタックとヒープを意識しないわけか
0199デフォルトの名無しさん
垢版 |
2022/07/22(金) 06:54:41.09ID:WiEbw06Y
コンピューターの動作を隠蔽すればオモチャに近づくのなら究極的にはアセンブラ以外は全てオモチャなのではないだろうか
0200デフォルトの名無しさん
垢版 |
2022/07/22(金) 07:02:16.68ID:FhKnOINS
アセンブラはスタックやメモリーにアクセスするプログラムを書かされる。
Cはメモリーにアクセスするプリグラムを書かされる。

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

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

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

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

システムプログラミング向け次世代と、もっと緩いおもちゃ向け次世代みたいな感じに分けないと、話が噛み合わない気がする。
0205デフォルトの名無しさん
垢版 |
2022/07/22(金) 09:15:01.41ID:50nE7LhG
>>202
ダメな部分を使わなきゃいいだけじゃね?
間違って使うというならチェックツール作ればいい
0206デフォルトの名無しさん
垢版 |
2022/07/22(金) 09:57:43.45ID:q3/dBWm5
だからOS、ドライバとかの低レイヤーとWebみたいなのを分けて考えるべきだろ

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

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

そう、COBOLならね
0215デフォルトの名無しさん
垢版 |
2022/07/22(金) 12:46:18.43ID:65NBtvCk
>>167
>その通り
>で結局C/C++でええやんという話に戻る

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

Rust推しの人はなんで実行コストのばかり話をして開発効率を軽視するのか?OS開発以外で企業で使われることはほとんどないだろうね。
0243デフォルトの名無しさん
垢版 |
2022/07/23(土) 11:50:03.97ID:gjUW5TY/
>>240
実行コストは情報隠蔽ができない高水準のスペック
だが開発コストは隠蔽できるので
低レイヤーの事情をいちいち考慮して右往左往したくないんじゃないかな
0246デフォルトの名無しさん
垢版 |
2022/07/23(土) 12:54:16.63ID:KTZwFAzP
>>245
それ見ると指標はFPかSLOCだけ
しかも両方とも主開発言語による有意な差はないという結論

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

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

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

スクリプト言語みたいなGCコテコテの言語が速いことは絶対にない
現代のメモリアーキテクチャを知ってればあんなに参照を作りまくって
オブジェクトに触りまくって速いわけない
それはGoも同じ
現にGoは遅い
現代の言語での要件はスタックとヒープをプログラマが明確に意識でき
かつメモリ管理を安全にできる
これができているのは今のところRustのみ
0256デフォルトの名無しさん
垢版 |
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待ち主体のプログラムはいかにブロックせずに処理するかが大事なのであってメモリ効率がボトルネックになることはないわ
0257デフォルトの名無しさん
垢版 |
2022/07/23(土) 15:31:18.71ID:Bnag5ryf
>>255
そういう特定のユースケースの話をしてるわけじゃないよ
そりゃベンチマークによって速かったり遅かったり
特定のエッジケースで速かったり遅かったりはあるでしょう

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

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

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

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

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

ということだな
0279デフォルトの名無しさん
垢版 |
2022/07/23(土) 20:37:54.47ID:1dNQWzE2
>>278
使っているとGoは性能面だけでなく開発面での限界も感じてくる
Goはあくまでも簡素なスクリプト言語+αの位置付け
0282デフォルトの名無しさん
垢版 |
2022/07/23(土) 21:00:05.36ID:uphZtYPd
Goの出自からしてpythonの置き換えみたいなとこあるし。
0283デフォルトの名無しさん
垢版 |
2022/07/23(土) 21:02:59.95ID:C7rfIgjP
Goは言語仕様が弱すぎて開発に向かないが並行プログラミングが上手くできるスクリプト言語と捉えると優秀なスクリプト言語
0284デフォルトの名無しさん
垢版 |
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
0285デフォルトの名無しさん
垢版 |
2022/07/23(土) 21:33:42.76ID:7qigD5jo
>>284
RustをC++の代替としてしかとらえることが出来ないのは理解不足だな
CやC++とは異なりRustは自動メモリ解放だからという理由だけではないが現実にJavaからRustへの移行も起きている
さらにスクリプト言語からの移行例もある
これらは高速さや省メモリの観点からだけではなく並行並列プログラミングにおけるデータ競合の問題までもRustは解決していることが大きい
Rustがデータ競合をコンパイル時にエラーとして見つけ出してくれることはバグの減少や実行時デバッグの激減ももたらしている
0286デフォルトの名無しさん
垢版 |
2022/07/23(土) 21:34:22.09ID:yM9izZ/V
webやってる人間ならむしろrustに好意的になるよ
子供にはわからんか
0287デフォルトの名無しさん
垢版 |
2022/07/23(土) 21:36:09.58ID:u2Y0Vizw
docker,kubernetesを実装しても開発言語に向かないとか言われちゃうの意味わからんわ。
0288デフォルトの名無しさん
垢版 |
2022/07/23(土) 21:44:18.63ID:PT0x9Gwm
>>285
日本企業の採用例は?どこに移行例があるの?
メルカリはGo使いまくってるみたいだけどそういう企業ってRustあるの?
GoogleやMicrosoftもOS開発で注目してるだけだよね?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RustにはOS開発など低レイヤーには必要な要素が詰まっているが高レイヤーでは不要なものだらけである、だから普及しないんだよ自称玄人さん
0313デフォルトの名無しさん
垢版 |
2022/07/24(日) 07:25:40.56ID:POYobNlQ
確かにWebでどうなるかはよくわからないな
ひょっとしたらJavaみたいにエンタープライズが使い出すのかもしれん
Webとの関連でいうと個人的にTauriには大いに期待している
0314デフォルトの名無しさん
垢版 |
2022/07/24(日) 07:26:19.38ID:a/nVuE5F
自称玄人はOS開発やドライバ開発など低レイヤーの経験など一度もないのに、畑違いであるRustを使ってるだけにアイデンティティを感じている孤独なおっさん
だから高レイヤー層では流行らない言われても論理的に反論できず、他言語を貶めて他人にマウントを取ることしかが脳がない
Rustを使っていることが唯一のアイデンティティの哀れなおっさん
0315デフォルトの名無しさん
垢版 |
2022/07/24(日) 07:51:53.73ID:CneNKog7
俺もWeb周りで使われるのはかなり限定的になるんじゃないかと思うな。良い言語だけど採用しただけの価値が出る領域はかなり狭いよ。
0317デフォルトの名無しさん
垢版 |
2022/07/24(日) 08:07:30.03ID:eIrt9sO8
valeのGenerational Referencesって面白くない?
https://verdagon.dev/blog/generational-references
所有者は一つだけだけど非所有者の参照はいくつも持てる。
各ヒープメモリに世代カウントを付けて、参照はポインタ+世代カウント+オフセット値のようなデータになる。
参照先にアクセスするときはヒープの世代カウントと参照の世代カウントを比較して不一致だったら解放されたメモリにアクセスしたと見なせる。
参照をコピーするときは参照カウンタのようなカウントを増減する必要は無い。参照をそのままコピーするだけ。
0318デフォルトの名無しさん
垢版 |
2022/07/24(日) 08:20:10.22ID:+L63FAhG
ときどき現れる、自分んとこにRustがやってくるのが怖くて吠えまくるおじさん
Rustが使えるだけでマウントなんてとるわけないのに、劣等感で震えすぎ
0322デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:25:03.61ID:Y1YiiPBC
前はRustなんてどの領域でも採用されないと主張していた
その後は大手は採用しないとか、言語オタクしか使わないとか言い出して、今はwebに来ませんようにとお祈りしてる
0323デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:26:39.85ID:hnBeY/7d
いや、使われていないだろう。
0324デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:35:45.64ID:hnBeY/7d
黒魔術を禁止したいRust。
それはものすごく正しい。
Javaと同じ理念なので、Javaと同じように成功するだろう。
しかし、黒魔術使いがRustを使いたいと思うこともないだろう。
0325デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:36:39.31ID:hnBeY/7d
魔導士がRustを作ったが、魔導士はRustを使わない。
0326デフォルトの名無しさん
垢版 |
2022/07/24(日) 09:51:49.50ID:TkuAh24s
>>322
WebAssemblyが普通になってきたらRustが来るかもね
0328デフォルトの名無しさん
垢版 |
2022/07/24(日) 10:10:15.29ID:mNErqOPr
webassemblyは
高レイヤーのC++を変えなくても低レイヤーの機械語を変えれば安全になるという
C++を高レイヤーと見抜けない人には難しい技術
0329デフォルトの名無しさん
垢版 |
2022/07/24(日) 10:14:42.11ID:RIVbLJGX
>>310
swiftは個別スレあるだろう
0330デフォルトの名無しさん
垢版 |
2022/07/24(日) 10:17:08.35ID:RIVbLJGX
>>317
こういうレスを待ってた
0333デフォルトの名無しさん
垢版 |
2022/07/24(日) 10:40:42.93ID:mNErqOPr
メモリ管理アルゴリズムを変えるたんびに言語を変えるのをやめよう
ライブラリを変えればいいだけ
0335デフォルトの名無しさん
垢版 |
2022/07/24(日) 11:55:06.92ID:0MXf6lNW
不正確:ここは次世代か現世代に限らず言語マウンティングしたいやつらの巣窟
ここはRust言語マウンティングしたいやつら(ただしコーディング能力はゼロに近い低め)の巣窟、まともに話し合うことすら不可能
0336デフォルトの名無しさん
垢版 |
2022/07/24(日) 12:08:17.54ID:sqWRJTqj
>>307
Kotlinは次世代から卒業したと思ったらオワコン化しちゃったか。
Javaは緩やかに衰退しているし、頼みのAndroidもFlutterに持っていかれそう。
0337デフォルトの名無しさん
垢版 |
2022/07/24(日) 12:13:46.77ID:KMd5I8Sy
RustはOSの開発でもあんま使われてないよね
でも将来JavaみたいなIT土方専用言語になりそうな気がする
0338デフォルトの名無しさん
垢版 |
2022/07/24(日) 12:59:53.34ID:nz/s3YoW
>>333
メモリ管理周りは標準ライブラリのインターフェースにも影響するけど
標準ライブラリすげ替えたらそれはもう別言語では
0339デフォルトの名無しさん
垢版 |
2022/07/24(日) 13:35:49.98ID:mNErqOPr
土方うんぬんはマウンティングではなく職業差別だよな
差別された業種はプロよりアマの方が強くなる
これ資本主義への挑戦だろ
0340デフォルトの名無しさん
垢版 |
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の方式が最も優れた方式と言えるでしょう
0343デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:06:52.19ID:bdlqmtah
>>341
まじでプログラマに向いてないんだなw
ヒープアロケーションが1,000回かどうかなんて書いてないだろ
配列で一気にアロケーションしてるかも知れんしな
0344デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:11:06.10ID:dVy5+utd
そもそもRustというかスタックベースのRAIIって結構ヒープアロケーションしてるからな
生存スコープの管理にスタックを使ってるだけ
0345デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:17:44.35ID:5fSI//2c
>>336
google的にもflutterをメインにしたいんじゃないかと邪推してる。
0346デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:20:42.68ID:5fSI//2c
>>337
今それを言ったらOSのカーネル開発で使われてる言語なんてC以外あるんかね?
0347デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:26:44.89ID:5fSI//2c
研究でだったらhaskellでだってカーネル開発あるけどな
0348デフォルトの名無しさん
垢版 |
2022/07/24(日) 17:37:32.00ID:Tcg6NKxY
> スタックベースのRAII

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

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

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

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

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

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

NodeとDinoはJavaScriptなのでそれらよりも遅くメモリも多く必要とするだけでなく
Worker以外はシングルスレッドの中でしか展開できない限界もあります
0379デフォルトの名無しさん
垢版 |
2022/07/24(日) 21:46:25.88ID:hnBeY/7d
パラダイムシフトです。
0380デフォルトの名無しさん
垢版 |
2022/07/24(日) 21:47:28.08ID:hnBeY/7d
次世代老人とは、今は老人ではない、つまり若者のことである。
0384デフォルトの名無しさん
垢版 |
2022/07/24(日) 23:05:50.30ID:eIrt9sO8
>>340
shared_ptrとarc/rcが参照カウンタを増減するのは参照をコピーするときとそれがスコープ抜けるときだけどその前後に参照先にアクセスするとは限らないので参照カウンタにアクセスするときにキャッシュミスが発生するかもしれない。
generational referencesではdereferenceするときだけ参照先の世代カウンタを読むので、世代カウンタにアクセスしたときは必ず参照先にアクセスする。キャッシュミスが起きても世代カウンタと参照先が同じキャッシュラインに存在する可能性が高いのであまり問題にならない。
generational referencesは参照カウンタと違ってヒープを確保するとき以外はメモリに書き込みを行わない。
なので単純に遅いとは言い切れないと思う。
0385デフォルトの名無しさん
垢版 |
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の方法が有利。
0386デフォルトの名無しさん
垢版 |
2022/07/24(日) 23:36:40.59ID:hnBeY/7d
いえいえ、C++はそんな魔法のようなことはできませんよ。
物理法則を超越するのはRustだけです。
0388デフォルトの名無しさん
垢版 |
2022/07/25(月) 00:06:36.72ID:e1+lLaZG
RustのRc<T>のソースコードを見てみた
参照先へのアクセス時つまりTへのアクセス時には参照カウントは全くノータッチ
つまり>>385で正しいようだ
参照カウントは解放のためだけに使うものだから普段は使わないのは当たり前か
0389デフォルトの名無しさん
垢版 |
2022/07/25(月) 00:40:50.97ID:e1+lLaZG
したがってこのRust叩きしてる人がウソをついていた

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

正解は解放時にようやく初めてカウントダウンつまり1を引いて0と比較するだけの小さなコスト
0390デフォルトの名無しさん
垢版 |
2022/07/25(月) 01:06:45.81ID:GF1rw+EH
んなわけないでしょ。
0391デフォルトの名無しさん
垢版 |
2022/07/25(月) 01:17:32.30ID:esXLF7ue
誰も問題にしてない問題の解決をありがとう
それで参照の複製と破棄のコストは?
0392デフォルトの名無しさん
垢版 |
2022/07/25(月) 01:24:22.28ID:1U7Sp33P
>>385
shared_ptrとかRCのような参照カウンタ方式は参照がスコープ抜けるときだけじゃなく参照を増やすときに参照カウンタを+1してるでしょ。
0393デフォルトの名無しさん
垢版 |
2022/07/25(月) 01:26:08.06ID:GF1rw+EH
ええええ!
そこ??
0394デフォルトの名無しさん
垢版 |
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の内部の参照カウントの読み書きは発生しない
コストはゼロ
0396デフォルトの名無しさん
垢版 |
2022/07/25(月) 02:08:28.73ID:GF1rw+EH
Rustユーザーはこのレベルか。
エアユーザーと認定する。
0397デフォルトの名無しさん
垢版 |
2022/07/25(月) 02:13:24.40ID:7j5KuiPU
おまえは何もわかってない。セマンティックムーブを備える言語の複数の所有権では意味が違う...
392が言ってるのは文脈で言ってる参照は、明らかに複数の所有権のことであり、コピーされた値とは違う。
参照カウントである以上、アルゴリズム的にどんな言い訳をしてもカウンタの上げ下げでボトルネックは生じるものであり
それを認めずにこういう馬鹿がゼロコストだとか現代のコンパイラー型言語で多くがやってることを、意味不明に連呼して
言語の普及に不利益を与える。
いい加減こんなバカなことは考え直せ
0398デフォルトの名無しさん
垢版 |
2022/07/25(月) 02:20:06.89ID:XtVjY1m0
>>396
君たちRustアンチが壮大な勘違いをしていることが今回わかった
参照で参照カウンタが増えていくと思い込んでいたのか

Rustでは参照をいくつ増やしてもコストが全くかからない
Rustには所有権とライフタイムがあるため参照カウントを増加させるなどは全く不要で参照についてはコストが全くかからない
もちろん参照先へのアクセスについてもそのような付加コストはかからない
これがRustの強み
コストをかけずに安全&高速なのがRust
0399デフォルトの名無しさん
垢版 |
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はメモリーリークを認めているし
メモリリークそのものを安全として処理する。これを強弁して「メモリーリークが起こらない!」と言い張るのは明らかにおかしい
0400デフォルトの名無しさん
垢版 |
2022/07/25(月) 02:41:14.40ID:esXLF7ue
>>394
その例と説明はRcとは何も関係ないよね
例えばfooが&RcではなくRcを取り、fooを呼んだ後もxを使うとしたら?

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

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

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

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

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

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

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


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

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

Goがライターが書いていて、Rustはripgrepの作者が作ってるみたいだけどw
0433デフォルトの名無しさん
垢版 |
2022/07/25(月) 09:39:39.23ID:6EAs3JIP
>>430
非最適化版はC++も遅いことを考えるとRAIIの性質として遅いんじゃないか?
細切れにメモリの解放が入るからな
0434デフォルトの名無しさん
垢版 |
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以外にもカウントアップされる。よって参照カウントが
実行時にボトルネックになる可能性があるという話は正しく、無意味に「コストゼロ、コストを必要としない」などを連呼する事は
とても近寄りがたい雰囲気を醸し出す

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

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

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

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

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

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

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

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

さらに参照カウントの一般的な欠点を説明しているのに、「批判するのがおかしい」と「誤差」なんてそれだから一般的なプログラマーから
ドン引きされるんですよ。
0452デフォルトの名無しさん
垢版 |
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などはこのようになります
0453デフォルトの名無しさん
垢版 |
2022/07/25(月) 17:05:57.06ID:mpRQ8kqk
>>450
> RcはStringにさえ使われています。

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

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

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

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

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

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

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

use fxhash::{FxHashMap as HashMap};

となってるんだけど
これはfxhashを使って高速化してるわけではない?
それともベンチマークに反映してないのか?
0503デフォルトの名無しさん
垢版 |
2022/07/26(火) 00:27:41.06ID:6K/UlhEh
>>472
つ Nim
0504デフォルトの名無しさん
垢版 |
2022/07/26(火) 00:30:04.25ID:6K/UlhEh
>>476
そうだね何でもgrep使えば一番早いと思うよ(棒
あ、wcの併用も可だと思う
0505デフォルトの名無しさん
垢版 |
2022/07/26(火) 00:33:32.10ID:7eeTS5R1
Rustがこんなに遅いとは知らんかった。
0507デフォルトの名無しさん
垢版 |
2022/07/26(火) 05:00:13.51ID:O8zJADrT
ワードカウントの結果だけで性能評価してしまうプログラマがいるんですか!?
0509デフォルトの名無しさん
垢版 |
2022/07/26(火) 08:27:06.16ID:B/e7/0Va
Rustのコードがおかしいと言うなら、改善したコード出せばいいんじゃない?
ワードカウントじゃ言語の性能はわからないとか言うんだったら、Rust有利なベンチマーク作ればいいんじゃない?

Rust簡単とか言っているやつなら余裕だろ。
0510デフォルトの名無しさん
垢版 |
2022/07/26(火) 08:44:40.79ID:/siOCA+g
批判されていることは「性能が悪い」というより「コストの割には性能が微妙」というニュアンスなので
コードを一行も書かないことがコスト最小なんだよ
コストの話をするとコードを書く奴がいなくなる
0511デフォルトの名無しさん
垢版 |
2022/07/26(火) 10:02:50.90ID:dWbaeKdQ
高級機能があってランタイム最強!っていう厨二病的なモチベーションだからほっとけばいいんだよ。
そのうち気づくし、気づかなくても知ったこっちゃない。
0512デフォルトの名無しさん
垢版 |
2022/07/26(火) 10:11:09.19ID:cX/Q+77r
>>510
その意味で重要なのはRustの非最適化版がGoより遅く、Java、C#と大差ないという事実の方だな
RAIIは遅い
0514デフォルトの名無しさん
垢版 |
2022/07/26(火) 10:43:17.89ID:/siOCA+g
RAIIだけの問題ならGoは使わない方がよさそう
C++だけで書いてexitとabortを比較とかすればいいのでは
0515デフォルトの名無しさん
垢版 |
2022/07/26(火) 11:52:47.41ID:gfJAfx82
RAIIはメモリ解放タイミングが決定的なのがスッとするんよ
ガベコレの場合に開放を保留しておいて
プログラムの終了がすぐだから個別の開放はしないってときは
そりゃかえってガベコレ方式のほうがメモリ関係の全体コスト少なくてもおかしくない
0516デフォルトの名無しさん
垢版 |
2022/07/26(火) 12:04:42.36ID:04PZVssu
CPUバウンドでも対してGoと変わらないことがあるんだから
IOバウンドの用途でRustを使うメリットなんて皆無
メモリ効率ガーGCガーとかクソどうでもいい

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

NTTグループは、従業員の勤務形態を原則としてテレワークとする新制度を
2022年7月1日から導入する。まず持ち株会社のNTTやNTT東日本、NTT西日本、
NTTドコモ、NTTデータなどの主要会社から導入する。当初は約3万人を対象とする。
テレワークを原則とする部署は各社で決める。
まずは人事や総務といった間接部門や企画、システム開発などテレワークに
向く部署が対象となる見込みだ。新制度では、従業員の居住地の制限もなくす。
従来は「通勤時間が2時間程度」という制限があったが、国内のどこにでも
居住して勤務できるようになる。出社が必要な場合は、出張扱いとして航空機を
利用した出社も認める。日付をまたぐ場合は、宿泊費も会社が負担する。
0530デフォルトの名無しさん
垢版 |
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++はコンパイルエラーになったから除いた
0531デフォルトの名無しさん
垢版 |
2022/07/26(火) 19:15:29.79ID:lSrKh9WN
Nimは毎回インストールするけどwindowsが警告が出すんだよな

防疫して一部のファイル消したりしていじわるしてくる
0532デフォルトの名無しさん
垢版 |
2022/07/26(火) 20:25:55.51ID:GQvz79KS
意地悪というよりイジメじゃん。
慰謝料、億とれるよ。
0533デフォルトの名無しさん
垢版 |
2022/07/26(火) 20:39:29.27ID:GQvz79KS
RustはC/C++にダブルスコアで負けてるじゃん。
0535デフォルトの名無しさん
垢版 |
2022/07/26(火) 21:21:03.08ID:ceC8PDvA
cは単語ごとに細切れで確保
item.key = strdup(word); // simple.c
char* word_copy = malloc(word_len); // optimized.c
するんじゃなくてこっちもwordコピー用の領域をおっきく取っておいて
そっちをちまちま端から使っていってみたいけど
0536デフォルトの名無しさん
垢版 |
2022/07/26(火) 21:48:16.70ID:/siOCA+g
プログラミングでは原因と結果というより命令と実行という方がわかりやすい
命令する側が生殺与奪の権を握っている事実が
0537デフォルトの名無しさん
垢版 |
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は標準ライブラリが生っぽかったりセキュリティのために性能を犠牲にしたりとちぐはぐな感じがあるな。
0538デフォルトの名無しさん
垢版 |
2022/07/26(火) 23:12:57.71ID:gsmRiHCH
>>531
Nim言語はマルウェアを作る人達に使われているらしい。
アンチウィルスソフトは単純なパターンマッチングで動いているから、
悪いことしないNimのコードでもマルウェアだと誤検出されてしまうらしい。
0541デフォルトの名無しさん
垢版 |
2022/07/27(水) 01:34:47.64ID:mzblDH8U
まあぶっちゃけ他の言語でもgrepと同じように
trieみたいな文字列処理用のアルゴリズム使えば速度はだいぶ変わると思うけどね
なんで泥臭い処理を書いてるのか
そりゃgrepが1番早いだろと
0542デフォルトの名無しさん
垢版 |
2022/07/27(水) 02:00:24.66ID:mzblDH8U
言語の速度を比較するというのならアルゴリズムは揃えるべき
でないと何が何やらわからない
0544デフォルトの名無しさん
垢版 |
2022/07/27(水) 04:04:05.75ID:ogiMaWw7
RustコンパイラはC++で書かれている。
0545デフォルトの名無しさん
垢版 |
2022/07/27(水) 04:20:50.92ID:0dTQJF2a
NimコンパイラはNimで書かれている。
けどgccだけからNimコンパイラをビルドできるようにするためにNimのコンパイラのソースコードをC言語に変換したもの(csources_v1)がある。
0548デフォルトの名無しさん
垢版 |
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解放後の使用による問題
0552デフォルトの名無しさん
垢版 |
2022/07/27(水) 10:56:48.68ID:BnCx/rjI
>>541
grepはBoyer-Mooreでトライ木は使わない

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

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

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

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

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

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

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

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

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

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

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

つまり無意味

そういうことがわかってない人が言語間のベンチをやってるんだと思うよ
0571デフォルトの名無しさん
垢版 |
2022/07/27(水) 21:40:35.04ID:mzblDH8U
>>568
Optimizeを出した時点でそうなるよね
一般的な書き方で速い言語はどれか?って切り口にしとけば面白かったのに
Optimizeとかしちゃったら余計なランタイムがついてくるGoや他の言語が速いわけがない
めちゃくちゃ勉強になる
0572デフォルトの名無しさん
垢版 |
2022/07/27(水) 21:44:09.15ID:H9RPm4O1
普通に意味あるだろ

普通にカスタマイズせずにその言語で普通に書くとどうなるかとある程度意識して書いたらどうか
それの比較に意味がないと思うならその程度なんだろうけど
0574デフォルトの名無しさん
垢版 |
2022/07/27(水) 21:55:07.13ID:U29fl458
俺にとっては無意味と言ってるだけで別に意見は好きに言っていいよ

それが掲示板だ

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

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

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

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

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

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

話が逸れたが以上となる

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

また面白い話題があれば口を挟むかもしれない
0577デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:31:40.93ID:ogiMaWw7
RustはPHPやPythonより遅かった。
PHPはなぜか速かった。
これが全て。
0578デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:36:21.59ID:ogiMaWw7
Rustの遅さより、PHPの早さに驚くベンチだろね。
0579デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:51:04.75ID:6nSf0k+r
意味の無いものでも普通に意味あると言い続ければ通るのが世の中よ。
0580デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:54:42.60ID:ogiMaWw7
どゆこと?
0582デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:58:39.96ID:ogiMaWw7
https://news.yahoo.co.jp/articles/addb6c479375cce5a76ffeac75ef2d682f5c00aa

アワビには目や鼻、口があって、視力はもちろんあるし、海藻をかじってムシャムシャ食ってるらしいんですね。
カタツムリも巻貝で、虫ではないそうなんですよ。
カタツムリは目がありますよね。
アワビも巻貝なので目があるんだそうです。
0583デフォルトの名無しさん
垢版 |
2022/07/27(水) 23:59:40.89ID:ogiMaWw7
>>581
うちではRustのほうが速かったと言い張ってる人がいるだけでしょ。
0584デフォルトの名無しさん
垢版 |
2022/07/28(木) 00:00:06.26ID:GCXKHsjZ
むしろなんでRustはそんなに遅いの??
0585デフォルトの名無しさん
垢版 |
2022/07/28(木) 00:01:18.06ID:GCXKHsjZ
Rustの遅さにお前が泣いた。
0586デフォルトの名無しさん
垢版 |
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が遅いという結果は出ていないな
0588デフォルトの名無しさん
垢版 |
2022/07/28(木) 06:37:56.55ID:GCXKHsjZ
だが、PHPより遅い。
0589デフォルトの名無しさん
垢版 |
2022/07/28(木) 07:12:43.60ID:ENEX/nTq
PHPが早い時点でベンチの方法に疑問を持つべき
0590デフォルトの名無しさん
垢版 |
2022/07/28(木) 10:51:31.30ID:GHBXY1WS
一般的な書き方で速いべき、という結論に誘導する手法に疑問を感じる

自分で断言すればすぐ終わることを他人の口から言わせることにエネルギーを使い過ぎ
0593デフォルトの名無しさん
垢版 |
2022/07/28(木) 13:08:59.76ID:4pySRXlJ
PHPはインタプリタの割にはかなり速いのは事実だけど
流石にコンパイル言語より速いは普通は無いだろうなぁ
ただキャッシュされたら大きな差は出ない可能性はあるかもね
0597デフォルトの名無しさん
垢版 |
2022/07/28(木) 18:38:51.53ID:KME/vBwm
つまり >572 はPHPレベルということだ。
0598デフォルトの名無しさん
垢版 |
2022/07/28(木) 19:00:49.91ID:dt3bZFXM
PHPごときに負けて恥ずかしくないの?
0600デフォルトの名無しさん
垢版 |
2022/07/28(木) 19:08:34.61ID:dt3bZFXM
四季もあるの?
0601デフォルトの名無しさん
垢版 |
2022/07/28(木) 19:36:49.43ID:Hv8PyQaz
PHPはNGワードで良いわもう
0602デフォルトの名無しさん
垢版 |
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版が速くなった
0603デフォルトの名無しさん
垢版 |
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は「分かりやすく」「安全で」「高速な」コードを書けることが実証された
0605デフォルトの名無しさん
垢版 |
2022/07/28(木) 21:49:48.90ID:gNJf8oDl
>>604
主観の前に PHPerから見たが 抜けてるぞ
0606デフォルトの名無しさん
垢版 |
2022/07/28(木) 22:02:46.94ID:URQEvCBs
測定方法を含めて全てのソースコードが公開されて検証可能なのだから、
客観的に実証されたとみていいんじゃないの?
覆すにはRustより速いコードを出すしかない。
>>602のRustコードは、unsafeもトリッキーなところもなく、自然な容易なコードで速度が出てるのが凄い。
0607デフォルトの名無しさん
垢版 |
2022/07/28(木) 22:41:13.22ID:Zn96MNxf
Cの後継はZig、C++の後継はCarbonというのが正しい認識である
Rustは一部の技術好きが個人開発に使う言語に留まるだろう
0610デフォルトの名無しさん
垢版 |
2022/07/28(木) 23:28:28.60ID:gNJf8oDl
>>607
はいはい、おじいちゃんもう寝る時間よ。
0613デフォルトの名無しさん
垢版 |
2022/07/29(金) 00:29:36.08ID:uVxzbE4m
>>602
やはりアルゴリズムの問題でそれが同じならC/C++/Rustで速度ほぼ同じなんだな
それなら抽象的にプログラミングしやすくコンパイラが安全保証してくれるRust一択だな
0614デフォルトの名無しさん
垢版 |
2022/07/29(金) 00:32:24.17ID:OiKISQZh
俺の環境だとPHPはそこまで速くないな
とはいえ確かにpythonとかよりは速い
C/C++/Rustはここと同じ感じ
0615デフォルトの名無しさん
垢版 |
2022/07/29(金) 00:38:05.70ID:OiKISQZh
俺の環境だとPHPとJavaScriptがほぼ五分の勝負をしてる
スクリプト言語最速はこの2つということで良いと思う
0617デフォルトの名無しさん
垢版 |
2022/07/29(金) 03:36:57.85ID:gYD9mcR9
安倍元総理がミネクールとかいう統一教会の信者さんが取り扱う水素水で調子が良いという記事がドンドン消えてるんだけど。
調べてみると、ミネクールって、神奈川県警とか神奈川県消防局とかに納入されてて警察官も水素水で調子が良いらしいですよ。
なぜかドンドン記事が消えてるけど。
0618デフォルトの名無しさん
垢版 |
2022/07/29(金) 03:41:56.40ID:gYD9mcR9
防衛庁にも納入されてる・・・
統一教会凄いな。
0619デフォルトの名無しさん
垢版 |
2022/07/29(金) 03:42:36.20ID:gYD9mcR9
安倍総理も飲んでるらしいよ。
水素水。
健康に良いんだって。
0620デフォルトの名無しさん
垢版 |
2022/07/29(金) 07:53:56.53ID:pXf+MkzI
>>603
Rustを遅いと叩くために持ち出してきたベンチマークだったはず
Rustが速いと証明されてしまったのか
0622デフォルトの名無しさん
垢版 |
2022/07/29(金) 08:26:08.76ID:eDL0B0tL
Rustが速い遅い以前にこんなの本当に流行るのか?
正直気持ちが悪い言語だと個人的には思う
0623デフォルトの名無しさん
垢版 |
2022/07/29(金) 08:42:53.70ID:CY+eCpzK
>>622
Rust参考に作ったコーダー向けサブセットc++か、所有権を使いやすく整理した別言語が出てくると思う。
0624デフォルトの名無しさん
垢版 |
2022/07/29(金) 08:44:13.23ID:WJPXGLlJ
>>622
Visual Studioでデフォルトで選べるようになれば流行ると思う
0625デフォルトの名無しさん
垢版 |
2022/07/29(金) 09:00:33.06ID:WG/TpH2M
Rustのムーブセマンティクスに慣れると逆にC++が気持ち悪くてしょうがないな
個人的に所有権は十分洗練されてると思うからasync周りをなんとかした新言語希望
0626デフォルトの名無しさん
垢版 |
2022/07/29(金) 09:03:23.24ID:A+PRMWKN
分かる
Rustの気持ち悪さは異常
まず文法が気持ち悪い
selfの省略記法が気持ち悪い
0629デフォルトの名無しさん
垢版 |
2022/07/29(金) 10:15:19.91ID:nIcw6oQb
>>627
++

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

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

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

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

それにRust for Windowsもある
0647デフォルトの名無しさん
垢版 |
2022/07/29(金) 17:56:23.42ID:pZ+qmh4r
>>646
いや、必要ない

GCが問題ないアプリならC#を選択すればいいし、そうでなければC++かRustを選択すればいい
という環境になればRustは流行るんじゃないかな
0649デフォルトの名無しさん
垢版 |
2022/07/29(金) 18:54:27.51ID:gYD9mcR9
遅いから流行らないのでは?
0651デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:01:18.72ID:HcmmeRJK
>>646
C#使ってるような人って一口にいっても全く異なる3つの層がある
そのうち一番技術力の低い層はRustみたいな言語を使うことにはまずならない
C#使ってるのもVS+GUIフレームワークのおまけ
0652デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:04:17.53ID:gYD9mcR9
PHPより速くなれば流行るのでは?
0653デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:04:55.75ID:gYD9mcR9
RustのライバルはPHPだと思います。
0654デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:05:05.90ID:47SIIXKm
>>645
> これがRustに対応したらいいだけじゃね?
それが簡単だと言うなら君がやればいいじゃね?
0657デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:12:08.53ID:gYD9mcR9
>>656
うちの環境ではPHPより速い!と言い張ってる人が一人いるだけでしょ。
0660デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:45:53.55ID:gYD9mcR9
フェイスブックが採用したらオワコンでは?
0661デフォルトの名無しさん
垢版 |
2022/07/29(金) 19:46:54.87ID:gYD9mcR9
オワコンどころかディスコン。
新規設計には非推奨。
0664デフォルトの名無しさん
垢版 |
2022/07/29(金) 20:00:56.02ID:gYD9mcR9
>>662
あんたもしかして伝説のスーパーコリアン、朴さんかい?
0665デフォルトの名無しさん
垢版 |
2022/07/29(金) 20:22:38.90ID:9nWBxo2F
>>643
有償なのにC++は広まったということだ。
0667デフォルトの名無しさん
垢版 |
2022/07/29(金) 21:15:37.97ID:lSGvRf0K
>>636
C++の気持ち悪い部分を追放した結果がJavaとかC#だったでしょ

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

C++なんてオブジェクト指向プログラミングをすれば、遅くなるのも当たり前。
0676デフォルトの名無しさん
垢版 |
2022/07/29(金) 23:17:38.43ID:FbazT+JV
>>675
高水準言語と速度は完全なトレードオフの関係だよ
0678デフォルトの名無しさん
垢版 |
2022/07/30(土) 00:21:22.07ID:ubkbv7J1
>>659
アンチ死亡でも何でも無くて、順当な採用じゃないの?
これが、全てRust採用だったら、アンチ死亡で良かったかも。
0679デフォルトの名無しさん
垢版 |
2022/07/30(土) 00:39:25.79ID:jLcNrHr1
>>678
RustアンチってRustの有用性をほんの少しも認めない印象あったから、
大手の採用事例一つ挙げれば逝くと思ったが、
それならそもそもGoogleが採用した段階で死んでたな
0681デフォルトの名無しさん
垢版 |
2022/07/30(土) 00:49:11.37ID:7D+RM/xA
>>672
領域をこまめに解放するより、あとになってからまとめて解放する方が全体的な性能は良いでしょうよ。
0682デフォルトの名無しさん
垢版 |
2022/07/30(土) 00:56:14.93ID:vZ7IHR0I
どうせRustなんて流行らずに消えるよ
サーバーサイドで使う理由が無い
Goもそうだけど何かこういう変な独自性がある自己満足言語は消える
0683デフォルトの名無しさん
垢版 |
2022/07/30(土) 01:06:34.71ID:7D+RM/xA
大企業がバックについて広めようとしたら広まるよ。
C++なんてあんなヘンテコな言語が広まったのもMSが広めたようなもんだし。
当初はSTLも無かったからな。
0684デフォルトの名無しさん
垢版 |
2022/07/30(土) 01:13:21.06ID:vZ7IHR0I
C++は言うほどヘンテコでも無くね?
Cを使っていれば構造体にメソッドが追加出来るだけぐらいなもんだし
クラスの継承やら仮想関数みたいなC++の要素はあるけど別に使わなくてもいいし
今まで使わずに書いてて何の問題も無かった訳で
むしろSTLやらそういう余計な要素がヘンテコみたいに思える原因では?
後はMSの独自拡張とかな
0685デフォルトの名無しさん
垢版 |
2022/07/30(土) 01:30:32.56ID:GJbGwXKe
>>684
構造体にメソッドを追加というのはC言語そのものだぞ。

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

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

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

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

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

あくまでもOS開発のための言語だね
0703デフォルトの名無しさん
垢版 |
2022/07/30(土) 07:59:49.65ID:aLG5Mg1K
>>695
Rustは非GC言語の中で最も初心者向けでしょ
メモリ解放は自動だし完全なnull安全やデータ競合安全などRustは初心者でも困らないようになっているよ
あとプログラミングをしやすいことも大きいね
0706デフォルトの名無しさん
垢版 |
2022/07/30(土) 08:30:05.00ID:PTbJKKoA
PHPで大きくなったのにな。
Rustで小さくなるのかな。
0707デフォルトの名無しさん
垢版 |
2022/07/30(土) 08:55:54.39ID:1qBADAB3
レトロゲーは永久保存され
クラウドはサービス終了する
クラウドとはそういうもの
0712デフォルトの名無しさん
垢版 |
2022/07/30(土) 10:03:14.41ID:BLhd9RDX
生産性はGoが最強
ソースはKubernetesやGoogleなど大規模なソフトウェアで使われててコンテナ周りのツールはほぼGo製であること

生産性を考えたらGC言語であることは必須である
0713デフォルトの名無しさん
垢版 |
2022/07/30(土) 10:13:42.65ID:5YkC3TrK
>>712
それはRustが今のように安定&普及する前に作られただけやろ
今から新たなものはGoではなくRustとなりつつある
0714デフォルトの名無しさん
垢版 |
2022/07/30(土) 10:35:49.96ID:ubkbv7J1
facebookなら、大規模だから効率性にコスト割いても効果があるし、維持する為の人も確保できるだろうし、いいじゃん。
0718デフォルトの名無しさん
垢版 |
2022/07/30(土) 11:16:50.46ID:YI8isAMR
え?
Rustは学びにくく書きにくく保守しにくいんだけど
もしかしてc++なんかと比較してる?
0719デフォルトの名無しさん
垢版 |
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を置き換えるとか吹聴しているの見ると笑ってしまうわ
0720デフォルトの名無しさん
垢版 |
2022/07/30(土) 11:30:44.56ID:oF6V4sWv
クラウド周りと相性いいのはgoroutineが便利だから

Goはエラーハンドリングどうにかしてくれないと仕方なく使うことはあっても積極的に使う気にはなれない
0721デフォルトの名無しさん
垢版 |
2022/07/30(土) 11:54:45.44ID:m0SGpnW3
Rust作った人(Graydon Hoare)より
Go作った人(ケン・トンプソン)のほうが賢くて偉大だよね
0724デフォルトの名無しさん
垢版 |
2022/07/30(土) 12:10:40.26ID:YI8isAMR
そんなことを言いだしたら
結局人類はjavascriptかcの二択になってしまう
この二つは今のところ替えが効かない

そんなの嫌だ
0726デフォルトの名無しさん
垢版 |
2022/07/30(土) 12:33:28.27ID:s2073y24
>>700
オブジェクト生成が多くなると、GC実行コストよりメモリ領域確保・解放コストの方が高くなるという話があったかと思うけど、どこだか忘れた。
スタックの話をするなら、Javaとかでもエスケープ解析してスタック利用していると思うけど。どうなのかね?
0727デフォルトの名無しさん
垢版 |
2022/07/30(土) 12:50:07.02ID:zwdjEDGk
>>726
alloc/deallocをゴリゴリ呼ぶような処理は普通に書くとGC言語がはやくなることは多々ある
低レイヤーの言語でそれやるときはまとめて確保/解放するように書く
0728デフォルトの名無しさん
垢版 |
2022/07/30(土) 12:51:57.77ID:s2073y24
そういや、c/c++みたいにスタックに置くインスタンスとヒープに置くインスタンスを区別する言語てどれくらいあるのかしらん?
0733デフォルトの名無しさん
垢版 |
2022/07/30(土) 13:11:20.56ID:YI8isAMR
もうHaskellでしかコード書かないとかいう記事がいっぱいあったけど
あの人たちどうしたん?

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

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

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

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

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

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

シンプルな言語が求められてるからでは?
0766デフォルトの名無しさん
垢版 |
2022/07/30(土) 22:09:21.95ID:MuK8+gHd
言うほどGo流行ってないけどな

それに使われてる理由は言語がシンプルだからじゃないんだよな
0767デフォルトの名無しさん
垢版 |
2022/07/30(土) 22:15:12.45ID:PnFWbFUc
>>762
Rustを叩くならRustをもう少しちゃんと学ぼうよ
RustのNoneはOption<T>型
つまりT型の変数にNoneは絶対に代入できない
コンパイル時点で静的にNull安全が保証される
もちろん最近の言語は当然備えている必須の性質(退化しているGoを除く)
0768デフォルトの名無しさん
垢版 |
2022/07/30(土) 23:25:28.07ID:zHogqexf
> 本当のNull安全の意味は、それはNoneでもNilでもなく、関数型言語のように変数の宣言と初期化が同時一体になっている言語のことです。
とかアホなこと言ってる自称熟練プログラマの相手すんなよ...
0769デフォルトの名無しさん
垢版 |
2022/07/31(日) 00:03:18.44ID:yCe0hy+/
>>767
Noneが代入できる・できないなんて話はしていない。Noneを正確に処理しているかという話をしている、「コンパイル時点で静的に」なんて話もしていない。
Nullを表すことが出来ないという話をしている
0772デフォルトの名無しさん
垢版 |
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安全でない言語
0773デフォルトの名無しさん
垢版 |
2022/07/31(日) 04:44:43.27ID:pdOIFS3A
C++20のコンセプトのほうが色々使えて良いのでは?
0774デフォルトの名無しさん
垢版 |
2022/07/31(日) 05:29:20.33ID:21uzlcdA
>>772
>具体的にはRustならぱ元の普通の型Tに対してNullableな型はOption<T>となりNullはNoneと表記するNull安全な言語
なんだよこの説明w
おっさんもNull安全の意味わかってねーじゃん
長文書く度に墓穴掘るな
0775デフォルトの名無しさん
垢版 |
2022/07/31(日) 06:15:29.02ID:j7G9Xjcb
>>774
KotlinやSwiftといったNull安全な言語は全て同じその方式だぜ
T型にNullは許容されず、Nullable<T>型にのみNullを許容
両者の型を厳格に区別することでNull安全を保証
Nullable<T>型は言語毎に記述が異なり「T?」型だったりOption<T>型だったり様々
0776デフォルトの名無しさん
垢版 |
2022/07/31(日) 06:33:53.74ID:pdOIFS3A
その程度ならtype_traitsで十分では?
0777デフォルトの名無しさん
垢版 |
2022/07/31(日) 06:53:26.13ID:j7G9Xjcb
C++は何でもあるとともに、ほとんどの機能は皆に使われない、失敗した言語
言語の機能は有効に洗練して採り入れてこそ、初めて意味を持つことを示した反面教師
Null安全に関しては、言語としてNull許容を制限できなければ意味を持たず、C++はもちろんNull安全ではない
0778デフォルトの名無しさん
垢版 |
2022/07/31(日) 07:06:06.96ID:pdOIFS3A
でも、C++そのものは、みんなに使われてるよね?
Rustが足元にすら近づけないほどに。
0780デフォルトの名無しさん
垢版 |
2022/07/31(日) 07:16:07.63ID:pdOIFS3A
C++で使われない機能を主役にした言語を作っても使われないのでは?
実際、使われていないし。
0781デフォルトの名無しさん
垢版 |
2022/07/31(日) 07:19:03.47ID:pdOIFS3A
なんだかんだ言ってC++は強力で便利なんだよな。
自分のやりたいことが実現できる。

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

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

>>793
Coverityは差分解析とかもできるからそんなに時間がかかるって感じはしなかったけど
0796デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:21:03.75ID:jgEDwA8h
高抽象度なものはC++向けのインターフェースしか提供されてなくて、自前でCからのFFIラッパー書かなきゃないけないけど書きたくないからかな……
0798デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:35:33.83ID:pdOIFS3A
>>795
何でもできるからでは?
0799デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:38:21.32ID:pdOIFS3A
極端な話、高位合成によってC/C++をハードウェア記述に使うことが当たり前に行われているけども、Rustでは無理でしょう。
0801デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:41:40.43ID:pdOIFS3A
2021年秋にRustへの移行を発表して以来、Metaの時価総額はどんどん下がってますしね。
市場の評価は正直だと思いますよ。
0803デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:45:52.08ID:pdOIFS3A
Rustへ移行する。

お花畑系か?

企業価値が下がる。

当然の成り行き。
0804デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:55:24.43ID:QQQkQO80
メタクエスト2とか1.5倍以上に値上げするのを発表したばかり
売り上げが下がってもおかしくない
0806デフォルトの名無しさん
垢版 |
2022/07/31(日) 13:59:52.84ID:QQQkQO80
メモリリークするかもしれないC++を使う理由は本当にあるのか?
pythonやjavaやC#
それか次世代言語使えばいいじゃないか?

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

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

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

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

マウントしても物は増えないのに何が嬉しいんだろうか
物欲がない人なのか
あるいは物欲を捨てなければならないと信じているのか
0832デフォルトの名無しさん
垢版 |
2022/07/31(日) 20:45:35.96ID:HfV8iC7X
>>831
最上位のレイヤは成果物の運用でしょ
仮にハリボテシステムで人間が裏で手動で操作してたとしても、
それでビジネス目標が達成できていてシステム作るより早く安上がりに構築運用できるならそのほうが良い
0833デフォルトの名無しさん
垢版 |
2022/07/31(日) 21:15:03.74ID:fu2FWHQK
>>825
D言語、悪くないと思うんだがなぁ、、、
10年前にスポンサーがついてればと思ったりする。
0835デフォルトの名無しさん
垢版 |
2022/07/31(日) 22:53:26.31ID:BbMxlT50
もともとRubyで作られていたプロダクトで実行速度の改善が必要となった場合
代替言語としてGoではなくCrystalが採用される流れになってほしい
0837デフォルトの名無しさん
垢版 |
2022/08/01(月) 00:18:15.12ID:0mZ68SoW
>>835
CookpadがRubyで遅くて深刻な部分をRustにしたのは似てるからだよね
クロージャの記法とか積極的なメソッドチェーンとか
0838デフォルトの名無しさん
垢版 |
2022/08/01(月) 06:22:36.34ID:Mnuo77rk
Rubyを選んでRustってセンスがなさすぎるわ。
0839デフォルトの名無しさん
垢版 |
2022/08/01(月) 08:12:25.09ID:p2tKrs72
Rubyの代替ならNimだと思うわ。
RustはRubyのコンセプト (手軽なオブジェクト指向プログラミング)から遠すぎるわな。
0843デフォルトの名無しさん
垢版 |
2022/08/01(月) 09:59:40.05ID:qGmq8aN9
Ruby屋にtsはないだろう
・優れた開発者体験で静的型陣営を勝利に導いた
・ランタイムのパフォーマンスは動的型でありながらRubyを圧倒
・Railsの公式言語でありRubyの思想を色濃く受け継いでいたCoffeeScriptを駆逐
・SPAの隆盛を支えRailsをオワコン化させた
Rubyの敗北の象徴みたいな言語なんだから
0845デフォルトの名無しさん
垢版 |
2022/08/01(月) 11:15:13.18ID:IUF0b1bQ
GoはランタイムにM:N threadingが統合されててシームレスに使えるってとこだけがとても良い
JavaScriptとかRubyはその辺ウンコすぎ
0849デフォルトの名無しさん
垢版 |
2022/08/01(月) 12:32:25.99ID:y096ffFE
>>847
何を意味してその質問しているのかな
一般的に基盤として共通の枠組みと共通のインタフェースになるのは当たり前だし
その中でちゃんと目的毎に適した多様なパーツを提供しているのも当たり前だし
Goで出来てることは全て出来るし
Goより粒度の細かいこともできるのでRustがおすすめ
0850デフォルトの名無しさん
垢版 |
2022/08/01(月) 12:37:14.24ID:y096ffFE
>>848
それはもっと狭くGoのランタイムを選択してることになるから同じことであり説得力がない
0852デフォルトの名無しさん
垢版 |
2022/08/01(月) 12:52:39.69ID:XdiV44rb
>>851
Goの並行プログラミングではチャネルによるデータの所有権の受け渡しが基本なことすら知らないのか?
所有権を意識しないバカは口を挟まない方がいいぞ
0853デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:01:13.40ID:tnFadW7s
>>851
C++などでメモリ共有方式でやるときも所有権の共有は意識せざるを得ない
並行並列プログラミングで所有権を意識するなと言われても無理な話
0854デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:14:38.08ID:/SNhoAxJ
>>846
大嘘くそ太郎
0855デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:16:08.61ID:XSveJ/JR
その分野ならRustが一番いいかな
所有権の取り扱いにミスがあればコンパイラが詳しく指摘してくれる
データ競合してるところがあればコンパイラが詳しく指摘してくれる
実行時エラー発生まで待たずに済み開発効率も高い
0857デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:24:02.26ID:/SNhoAxJ
>>852
”チャネルによるデータの所有権の受け渡し”GoにもRustにもそんな概念はありませんが?おまえが考えたの?
0858デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:41:40.37ID:wpl6Jivu
>>856
Rustの標準ライブラリは、1:1スレッドの実装のみを提供しています。
さらに外部ライブラリでも、有名なものはかなり煩雑に書いてI/Oバウンドのものしか作れません、Rustの(多くのライブラリの)ポリシーとして勝手にタイマーなど時系列で特定の処理を実行しているCPUコアが切り替わったりしません。
これは大きいランタイムを嫌うからですが、kernelなどやハードウェアに近いものを書く分には良いですが、I/Oが詰まったら、他は実行できないでプログラム全体がフリーズします
これを”M:Nが簡単”というにはあまりに、お粗末であり、記述の煩雑さを見ても、”簡単に使える〇〇カラおすすめ”なんて人を騙すための背信行為です。
言語をススメたい、シェアを伸ばしたいと思うなら真摯で誠実になりなさい。
あんたに言ってもしょうがないけど、あと開発効率は全然高くない、コンパイル遅い、mut mutめんどくさい、いい加減改良しろや!ボケカスMozila!
0859デフォルトの名無しさん
垢版 |
2022/08/01(月) 13:45:13.17ID:/T7zJm8q
>>857
並列プログラミングでは常識
データの所有権を共有するか、共有を避けて所有権の受け渡しのみにするかなど、意識せざるを得ない
そのうちGoではデータの所有権を受け渡しをするチャネルの利用を推奨していて公式にも明記

Go公式ページ
https://github.com/golang/go/wiki/MutexOrChannel
Channel = passing ownership of data
0860デフォルトの名無しさん
垢版 |
2022/08/01(月) 14:06:14.34ID:dhRVNKzB
>>857
言い方はオカシイ奴だけど、明確に所有権の概念のある言語から見たらそう見えるということは正しいだろう?
859の上に書いてある、channelがある言語によく聞くスレッドにまつわる話に
"Share memory by communicating, don't communicate by sharing memory."
「通信によってメモリを共有し、メモリを共有(して通信)しないで」というのが、golang的には正しいかもしれんが
golangだって実通信しているわけじゃなく、スレッド間のブロッキングの入るFIFOバッファへのデータのコピーに過ぎない
0861デフォルトの名無しさん
垢版 |
2022/08/01(月) 14:27:50.20ID:U9D47cKc
>>858
本質を捉えらてないからそんな無駄な間違えた話になる
言語に関係なくGoでもRustでも、M:NのM部分つまりカーネルスレッドの標準起動数はCPUコアスレッド数と同じ最適化
これら全てを計算のみ実行し続けて強制奪取なくば塞ぐ使い方をM:Nですることは実際になく、仮にあったとしても容易に定期自主返納も可能だからフリーズを現実に起こすことはない
現実に影響する大きな違いは、Goroutineが個別にスタックを必要としてスタック切り替えコストもメモリコストもかかるのに対して、Rustタスクはスタックレスだから切り替えコストやメモリコストが生じない点
Rustではシンプルな状態マシンとしてそれを実現していて上手く機能している
0862デフォルトの名無しさん
垢版 |
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スケジューラーの実装標準搭載要望が多いのか?
0863デフォルトの名無しさん
垢版 |
2022/08/01(月) 16:52:48.39ID:IUF0b1bQ
なんか盛り上がってるな
おれはアクターモデルを安全に使いやすい言語が登場してほしい
0864デフォルトの名無しさん
垢版 |
2022/08/01(月) 16:56:36.04ID:lJab6YiY
ステートマシンの生成をゼロオーバーヘッドと言い張るのは流石に無理筋じゃないかね
ステートマシン手書きと同じというだけの言葉遊びやね
0865デフォルトの名無しさん
垢版 |
2022/08/01(月) 17:04:06.77ID:pETNc0gm
>>864
rustが標榜してるのはzero cost abstractionで言わんとしてるのはまさにそういうことだよ
抽象化されたコード書いても手書きでステートマシン書くのと同じ性能特性になる
他の典型的な言語だとオーバーヘッドあるよね?という主張

長文レスは目が滑るから読んでないから的外れだったらスマン
0866デフォルトの名無しさん
垢版 |
2022/08/01(月) 17:15:17.99ID:a+lwQcR6
グリーンスレッドは初期rubyのウリだったよね
マッツも誇らしげやったで
ワイもユーザとして誇らしかったのを覚えてる
0868デフォルトの名無しさん
垢版 |
2022/08/01(月) 17:45:58.72ID:zlIOq9vz
オブジェクト一つにつきスレッド一つ作れるようになったら
オブジェクト指向はただのマルチスレッド手続き型になってしまう
0869デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:38:15.71ID:xcPFI+XD
Rustで実用的なソフトウェアを書くには、Java、C#、C/C++の5〜8倍ほどの労力が必要と言われてる。
0870デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:39:52.35ID:xcPFI+XD
>>866
Linuxにスレッドがなかったからでは?
0871デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:42:48.07ID:Qe0j28fb
ものりしっくですね
0872デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:44:36.03ID:xcPFI+XD
グーグルトレンドによると、世界では存在感ゼロのRustが、日本では6月初めの一時期、Goを抜いたからね。
世界ではGoのほうが100倍ほど検索ボリュームがあるので、逆転はあり得ない。
なんか工作くせえ。
0873デフォルトの名無しさん
垢版 |
2022/08/01(月) 18:46:31.09ID:xcPFI+XD
スレッドがなかったころ、Linuxユーザーはスレッドの邪悪さを主張してて、Windowsはスレッドがあるからダメなんだとか言ってたのにな。
0874デフォルトの名無しさん
垢版 |
2022/08/01(月) 19:15:06.90ID:gURUUmzn
こいつKENTAおじさんと同じ病気だな
0875デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:02:40.94ID:xcPFI+XD
ぶっちゃけ、C++が常に次世代言語では?
3年に一度改定され続けるんだし。
C++20は、C++11以来のメジャーバージョンアップと言えるのでは?
0876デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:06:43.75ID:zlIOq9vz
完全なコピーができるデータには
参照も参照カウントもGCも所有権もロックもスレッドも必要ない
プロセス間通信だけでいい

コピーを回避することが邪悪かどうかは知らんけど全ての元凶ではある
0877デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:18:48.94ID:xcPFI+XD
ちょうどLinuxでスレッドが使えるようになったころ、世の中はC10K問題全盛期に入った。
しかし、Linuxユーザーはスレッドマンセーに宗旨替えしてしまい、C10Kには目もくれなくなってしまった。
そのころC++では、boostと黒魔術が広まりつつあり、5chではWTLなんかが流行ってた。
当然ながらC++では非同期が一つのキーワードであり、IOCPが関心を集めていた。
それがBoost.Asioへと繋がっていく。
0878デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:20:33.99ID:xcPFI+XD
>>876
ヒープレスプログラミングとか考えて提唱してみれば?
21世紀を代表するアーキテクトとして歴史の本に載るかもよ?
0879デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:27:15.17ID:XxSklYrz
Tauriでデスクトップアプリ作りたくてRust始めようと思ったけど
なんかPythonやらNimやらもサポートされるらしい
じゃあRustやらなくていっか
0881デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:36:12.25ID:xcPFI+XD
C++11以前から見たら、C++20はやりたかったことが全てできるフルセットの言語になった。
もう使うしかないでしょコレ。
0882デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:36:36.15ID:xcPFI+XD
>>880
普通のFORTHです。
0883デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:38:40.87ID:OHxYp4mJ
>>864
Rustプログラマーは抽象的に開発効率よく非同期プログラミングをすることができる
そこからステートマシンの生成は静的にコンパイラが自動的に行なう
手書きでステートマシンを最速化のために書いたのと同じ結果を得られる
プログラマーはそのステートマシンの存在を知る必要がない
実行時の付加コストもない
0884デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:40:36.23ID:xcPFI+XD
その手のメタプログラミングするなら・・・
C++しかないでしょう!
0885デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:46:52.01ID:xcPFI+XD
状態機械を作るときには、状態の圧縮が肝要なので、結局、外部のプログラムが必要になります。
必要にならないというのなら、せいぜい手書きと同レベルのものなんですよ。
0886デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:54:41.00ID:KVizZk4Y
>>869
Rustでは抽象的に効率よくプログラミングしてもほぼ最速の結果を得られるようになり
コンパイル時の様々な静的なエラー化により実行時デバッグも激減して開発効率が上昇したよ
0887デフォルトの名無しさん
垢版 |
2022/08/01(月) 20:56:30.57ID:xcPFI+XD
>>886
よくわかんないので英語でお願いします。
0888デフォルトの名無しさん
垢版 |
2022/08/01(月) 21:01:50.59ID:KVizZk4Y
>>884
C++はメモリ解放の自動化ができていないから
プログラミングでもデバッグでも無駄に労力を要して馬鹿らしいよ
0889デフォルトの名無しさん
垢版 |
2022/08/01(月) 21:06:27.96ID:xcPFI+XD
std::unique_ptr<>使えば良いのでは?
0891デフォルトの名無しさん
垢版 |
2022/08/01(月) 21:48:32.95ID:DjsRD2G7
>>889
C++がダメな点はそれ
1. その面倒な指定が必要
2. それを使い忘れると実行時にアウト
3. 使い間違えると実行時にアウト
4. ムーブの指定なども記述が煩雑
5. それら全て正しく頑張っても所有権の問題を解決してるだけで参照の問題は解決できていない
C++は安全なメモリ自動解放がなされない欠陥言語
0894デフォルトの名無しさん
垢版 |
2022/08/01(月) 21:53:44.40ID:xcPFI+XD
>>891
ダメなら自分で差し替えれば良いのでは?
C++は、それこそメモリー管理をGCに変えることだってできるのだから。
0896デフォルトの名無しさん
垢版 |
2022/08/01(月) 22:13:45.19ID:xcPFI+XD
>>892

> ただし、このプログラム言語によって実用的なプログラムを作成するためには、
> C/C++/C#と比較して5〜10倍、Javaと比較して2〜3倍の労力を要する事は事実である。

と説明書に書いてあるよ?
0897デフォルトの名無しさん
垢版 |
2022/08/01(月) 22:40:21.87ID:67qbuqx0
Rust と言うゲームがあるみたい。
それで、Rustは言語ランキングが1位になるのかも

並行プログラミングでは、Elixir。
100GB ぐらいのメモリで、5,000万個の小プロセスが稼働する

Ruby on Rails と似ている
0898デフォルトの名無しさん
垢版 |
2022/08/01(月) 22:46:46.79ID:Ctxi9Kcc
Elixirは大元のErlangの実行が中々愉快なことになってるんだけどもそれを継承してるんだっけ?
0899デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:02:32.84ID:6UjeNpN/
>>896
それらのプログラミング言語で労力が10倍も変わるなんてありえない
変わるとしてもそのなぜか一緒にしているC/C++とC#の差が大きい程度
自動的にメモリ解放してくれないC/C++ではその分だけ労力がかかる
もちろんC#は多少労力が楽な分だけ遅くなるため優れていることを意味するわけではない
0900デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:10:21.89ID:xcPFI+XD
>>897
320GBのメモリーがあれば、国民一人一人にプロセスを与えられるね。
0901デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:11:24.47ID:xcPFI+XD
>>899
いや、Rustなら10倍かかってもおかしくないでしょう。
0902デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:14:57.62ID:XSveJ/JR
安全にメモリ自動解放してくれて楽なのにC並に高速なRustがおすすめ

>>901
Rustなら楽に効率よくプログラミングができて高速な実行も得られます
0903デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:16:39.89ID:xcPFI+XD
キミは何でIDが変わるの?
0904デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:25:18.49ID:0OfTpNey
労力って使える人材探し始めてから完成するまでの時間でしょ?
Rust使える人を見つける時間考えたら、他の言語選んだ方が圧倒的に早くて安いよ
0905デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:39:41.39ID:XSveJ/JR
>>904
次世代言語スレでそれは意味のない話ですね
Rustも他の言語も使える普通の人にとって開発効率もその実行生産性も最も高い言語がRust
そしてRustコンパイラの親切さにより誰でもRustを使えるようになるところも大きなポイント
古き概念のみに固執して学習に失敗した人を除きみんなが学習に成功しています
0907デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:43:41.81ID:QBiSvFw1
>>905
> 開発効率もその実行生産性も最も高い言語がRust

ソースは?そんなに最強なのになんで流行っていのか説明できる?
0908デフォルトの名無しさん
垢版 |
2022/08/01(月) 23:45:10.83ID:6UjeNpN/
>>904
それで遅くメモリを喰うものが出来上がってもリソース運用コストが嵩むだけだ
さらにそういう連中は保守性の低いプログラムしか書けないだろうから今後のコストも膨らむ
0909デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:00:32.68ID:4QK2QLWC
あとメモリ効率ってそんなに大事なことなの?
OSや組み込みなど低レイヤーならわかるけど

高いコストを払ってまで得られる価値はないことが多いのでは?今までGC言語が流行ってきたわけだが?
むしろIOやCPUがボトルネックになる方が大半でメモリ効率がいいことによって恩恵が得られるケースってほとんどないのでは?
0910デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:03:12.51ID:mFGD+3ik
>>907
マジで知らんのか?
それはRustが新しい言語だから

Rustの大きな強みの並行プログラミングがまともに使えるようになったのが2019年から2020年にかけて
そしてその効率と実用性が幅広く確認されたためIT大手各社が共同でRust Foundationを設立したのが2021年
プログラム言語史上でも初めてIT大手各社が揃って共同で支持するほどの革命的な言語
0911デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:05:28.81ID:mFGD+3ik
>>909
その高いコストもGCコストも両方を無くした画期的な言語がRust
これで誰もが楽に安全で速いプログラムを書けるようになった
0912デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:13:54.99ID:4QK2QLWC
GC言語の方が生産性高いのでは?
GC言語より生産性が高い根拠は?
異常に速いとか言っておきながら単語カウントとかその辺にあるベンチマークでGoやNimに普通に負けることがあるのはなんで?

大手が採用しているのはあくまでもOS開発など低レイヤー用途でグーグルとかはサーバーサイドがGoで書かれているようだけどそれをRustにするという話はどこにも出ていないね

低レイヤー以外だとMetaとDiscordぐらいで日本でRust採用してる企業は特に存在しないね
グーグルトレンド見ればわかるようにRustは全然流行っていないな
0913デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:19:52.75ID:4QK2QLWC
GoogleやMicrosoftはOSやカーネル開発でRustを採用することにしたらしいが
OSやカーネルやコンパイラだとかを開発しているエンジニアって全体の何%ぐらいだと思ってんの?

Rustは一部の数%程度の少数向けに向いているってのが事実だけど
ここにいるRust信者は他のあらゆるプログラミング用途でRustが最強で既存言語を置き換えていくとかほざいているわけだが
何の根拠もない妄想でしかないわ
適材適所って言葉を知らない無能

MetaとDiscord以外で採用している有名企業あげてみろや
0914デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:25:19.06ID:/i6BuvyD
ネットに嘘が多いのは、検査が足りないからじゃないかな

Rustコンパイラはある種の嘘を検査している
それが非効率だと思うなら嘘に寛容な効率化をやってみせろ
0915デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:28:37.12ID:mFGD+3ik
>>912
その嘘を繰り返すのはいい加減やめよう
バッファリングしない入出力を使わされたsimple版ですらRustはGoより速い>>603
そして両者の改善版でもRustはGoの1.5倍速い結果となった
この一瞬で実行が終わりGCも起きないほどの規模でもGC言語が大きく負けた
0916デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:28:42.85ID:4QK2QLWC
RustはGCがないからあらゆる面で最強で他のあらゆる言語を置き換える←妄言

RustはGCや手厚いランタイム環境が使えない、もしくは適さないようなシビアな要件で安全なプログラムを作成できるためC++を置き換えることがある←正しい


正しい理解をした上でRustを広めような
0917デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:33:51.61ID:4QK2QLWC
>>915
記事を見て言ってるわけだけど。記事の段階でGoに負けたのは事実でしょう
あとこれはベンチマークの一例ね。他にもネットで探せばRustが微妙な位置にいるのはよくあることだね。

そもそもハッシュが遅いだとかで最適化したバージョンが記事で使われてないのは何故だか考えてみようね

あとRustはNimにも負けているね。GC言語だけど。。
0918デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:38:10.10ID:4QK2QLWC
CPU処理だけのプログラムでもGoに負けることがあるのだから
低レイヤー以外の用途でRustを採用する必要なんか皆無であることがよくわかるね
0919デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:40:03.84ID:4QK2QLWC
ちなみに俺はRustアンチじゃないからね
何でもかんでもRustが最強!GC言語はゴミで駆逐されるとかほざいてて
Rust使ってる自分に酔ってて他人にマウント取るだけが生きがいのゴミが嫌いなだけだね
0920デフォルトの名無しさん
垢版 |
2022/08/02(火) 00:40:19.24ID:A0k69qij
全言語の中でCに次いでRustが最速となったプログラムのコード>>602を見てみよう
どの言語のプログラマーであってもすぐに理解できるほど抽象度が高く平易で分かりやすいコードとなっている
つまりRustを学習すれば誰もが分かりやすくてコード&C並みに高速を両立するプログラムを書けるようになることを意味している
0922デフォルトの名無しさん
垢版 |
2022/08/02(火) 02:07:05.35ID:cWws5nRf
俺はRustでStringをcloneしまくるコード書いちゃうからなぁ
あんま速くないかも
0923デフォルトの名無しさん
垢版 |
2022/08/02(火) 02:24:14.36ID:u5Pbv834
クソコードがそもそも詠唱できない時点で
クソコードのおもりをさせられるエンジニアがいなくなる

このことは重要
0924デフォルトの名無しさん
垢版 |
2022/08/02(火) 05:52:39.70ID:LaxCL9ek
RustはDropbox、Cloudflare、IBM、トヨタなども使っているね。
コストってなんのコストを指しているかわからないけど、個人的にはシステムの生涯でかかるコストは他言語より安く済むと思うよ。
0925デフォルトの名無しさん
垢版 |
2022/08/02(火) 06:21:12.68ID:9HUaTRvZ
基本的にRustは遅いよね。
実用的なソフトウェアを作るには10倍の労力がいるし。
ベンチマーク特化型言語なのに、ベンチマークも遅いし。
0926デフォルトの名無しさん
垢版 |
2022/08/02(火) 08:10:44.50ID:boBO3Fux
>>915の認識は微妙に間違っていて、simpleは標準ライブラリにこだわって遅いhashmapを使ってて、バッファが噛んでないのはoptimizeの方。
0927デフォルトの名無しさん
垢版 |
2022/08/02(火) 09:29:37.95ID:PkkC7YEU
はいはいRust最強最強
とりあえず現時点で最強ってことらしいから、スレタイから外していいし、どっかいってくれ
次世代言語のスレだから既に最強のRustを語る必要はない
0928デフォルトの名無しさん
垢版 |
2022/08/02(火) 10:16:23.49ID:QkVXmXpB
>>926
コードを見てみたが>>430のベンチマークは恣意的過ぎて酷い比較になってたんだな
optimizeの方だけ取り上げてもCとC++では最適化した専用のカウント用テーブルを用いているのにRustだけ放置
結局Rustでも同様の実装をしたらC++よりもRustが速くなった>>602を見て唖然
0930デフォルトの名無しさん
垢版 |
2022/08/02(火) 11:02:56.88ID:MHrspXIN
狭義のGC あり言語の欠点はGC走って処理が引っ掛かるところかと。
0931デフォルトの名無しさん
垢版 |
2022/08/02(火) 11:04:01.76ID:SwmbA253
>>929
Rustは確かに高速でも安全でもあるが
同じアルゴリズムとなった元記事のoptimuzed.cとoptimized.cppと>>602のRustコードを見比べると
Rustは抽象度が高く記述できていてコードが読みやすいな
それでいて高速および安全と三者が揃っているのは驚いた
0932デフォルトの名無しさん
垢版 |
2022/08/02(火) 12:08:32.96ID:Xz99VLOB
GC有りでPythonくらい所有権とか気にせず雑に扱えて、且つRustの効率性を実現できれば、次世代と呼べるのではないかな?
0933デフォルトの名無しさん
垢版 |
2022/08/02(火) 12:21:54.19ID:Z7Qybw/O
Nimのoptimize版のコードかなり頑張ってるのにC/C++/Rustより倍くらい遅いのはGC言語の限界なのかな
0936デフォルトの名無しさん
垢版 |
2022/08/02(火) 14:25:29.92ID:T6r67EvT
スレタイにRustはないのにここで暴れる理由がわからん
Rustスレで啓蒙活動してればよろしい
0937デフォルトの名無しさん
垢版 |
2022/08/02(火) 15:13:23.73ID:EoK+AbMq
>>936
>>1によるとRustは現世代最強言語だから比較として出てくるのは当たり前だろ
0939デフォルトの名無しさん
垢版 |
2022/08/02(火) 17:38:35.92ID:AUryLawh
> スレタイ(順番はRedMonk準拠)以外の言語もok
>
> ※ Rustは現世代最強言語なので除外します

※ Rustは現世代最強言語なので(話題にして良い言語から)除外します
※ Rustは現世代最強言語なので(スレタイから)除外します

どっち?
0940デフォルトの名無しさん
垢版 |
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
0941デフォルトの名無しさん
垢版 |
2022/08/02(火) 18:25:25.25ID:VFwTK1q5
>>940
スタックに置けるのは当たり前だからそこはおいといて
[1] 継承を使うだけでヒープになるのは厳しい
[2] ヒープになるだけでGCとなるのは厳しい
[3] C++とRustで参照カウンタが使われる状況になるのはもっとレアケースのみ
中途半端な立ち位置だからNimは厳しい
0943デフォルトの名無しさん
垢版 |
2022/08/02(火) 18:42:42.88ID:3Auutz71
Rustで実用的なソフトウェアを書くのは大変骨が折れる。
0944デフォルトの名無しさん
垢版 |
2022/08/02(火) 18:45:25.03ID:3Auutz71
厨がウザいからRustは除外します(本音)。
0945デフォルトの名無しさん
垢版 |
2022/08/02(火) 19:45:31.74ID:Ibj6PLNd
valgrindもまともに使ったことなさげなバカが偉そうにしてるの見ると腹が立つってのはあるわな。
0946デフォルトの名無しさん
垢版 |
2022/08/02(火) 19:49:07.82ID:3Auutz71
C/C++で書かれたOSの上で動作してるのに、大言壮語も甚だしいという意見もある。
0947デフォルトの名無しさん
垢版 |
2022/08/02(火) 19:56:24.89ID:KsV0Heuv
システムプログラミング(笑)に特化してるってんならとっととRust製のOS作れよな
0948デフォルトの名無しさん
垢版 |
2022/08/02(火) 20:22:23.89ID:49BZsXJW
RustでOSか。
一応 Linux は Rust で書いたソースも受け付けるようになったらしいな。ベースがCなのは変えないそうだが。
0949デフォルトの名無しさん
垢版 |
2022/08/02(火) 20:56:39.03ID:VFwTK1q5
>>945
今となってはコンパイル時に静的解決できることがほとんどだから需要ないな
実行時にMemcheckなんかやってる時点で時代遅れの敗者
0950デフォルトの名無しさん
垢版 |
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を使わずにコードを書けるよ。
0951デフォルトの名無しさん
垢版 |
2022/08/02(火) 21:35:54.41ID:zaqp+NKw
NimはObjectとref Objectを区別して扱わなきゃいけない時点で既に不便。

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

RustでValgrindを使うことも稀にあるが
大半がC/C++とのFFIがらみでありC/C++が足を引っ張っている
0955デフォルトの名無しさん
垢版 |
2022/08/02(火) 23:38:50.10ID:yShK5RND
>>953
ウィ
0958デフォルトの名無しさん
垢版 |
2022/08/03(水) 07:24:58.64ID:EBW1aqTx
んなわけない。
0961デフォルトの名無しさん
垢版 |
2022/08/04(木) 08:27:29.63ID:czcxYRnn
貶めたいだけだから、あげられないと思う
0966デフォルトの名無しさん
垢版 |
2022/08/04(木) 10:33:52.33ID:qcYVxnZx
今まで長年色々と携わってきた一般的な話として
移植するほど価値のあるものは滅多にないのと
同じ物を長く使い続けるよりある段階で設計から作り直した方が効率が良いのと
その時は古い言語を引きずらずにRustやKotlinやSwiftなど改善された良い言語を採用した方が効率良い
0970デフォルトの名無しさん
垢版 |
2022/08/04(木) 13:00:46.06ID:pLEfRi/j
保守できなくて書き直しで言うと JS/TypeScript 界隈が深刻なんじゃねえの?
未成熟なモジュールシステム、幅広い要件、多彩すぎる処理系、本来の目的と違う使い方をされるView層(DOM)、流行りの影響を受けやすいドメイン。初学者に人気がある。

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

Ruby のBundler を真似て、npm/yarn が出来た
0975デフォルトの名無しさん
垢版 |
2022/08/04(木) 23:00:37.24ID:mEx9pPO3
何さらっと嘘言っているんだよw
パッケージ管理ツールなんて昔からあるのに
0976デフォルトの名無しさん
垢版 |
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
0977976
垢版 |
2022/08/05(金) 07:37:51.09ID:BZGh0CoX
データサイズを大きくしたら結構景色が変わったよ
もともとのサイズは左端のx10ね
0978976
垢版 |
2022/08/05(金) 07:44:17.90ID:BZGh0CoX
caller hashはoptimized.cと同じようにメインループでhash計算を済ませておいてhashテーブル関数に渡す用にしたもの
これ結構効果的だった
0979デフォルトの名無しさん
垢版 |
2022/08/05(金) 07:49:10.83ID:WXp5Dd4L
こちらでもGoがC++やRustよりも遅い結果しか出ないのだが
GoがC++やRustよりも速い結果になる人は何が違うのだろう?バージョン?CPU?計測方法?
GoがC++やRustより速くなるのは他でも見かけないから何らか別の理由があるはず
0980976
垢版 |
2022/08/05(金) 07:50:28.70ID:BZGh0CoX
rustはよくわからないので、caller hash版は大先生にお願いしたいです

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

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

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

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

なんでGCのないRustで狂信者曰くあらゆる面でゴミなGCありのDeno作ってんのよ
0993デフォルトの名無しさん
垢版 |
2022/08/05(金) 09:40:18.52ID:h+76NvX5
>>978
その通りだがその時点でこのベンチマークが現実離れした意味のないものであることを意味している
以前から指摘が出ているように、このベンチマークの実行時間のほとんどは単語カウントに費やされていて、だからこそそのハッシュ計算のオプティマイズで大きく改善される
この筋の悪いベンチマークをどうしても行なうならば、最低限アルゴリズムとテーブルサイズなど条件を揃えるべき
現状では意味のない比較となっている
0995デフォルトの名無しさん
垢版 |
2022/08/05(金) 09:45:30.76ID:oRWix6dW
>>992
CやC++を使ってなぜ様々な遅い言語のコンパイラやインタプリタを作っているのか?と同じ話ではないか
それに気付かない君の頭の悪さを嘆こう
0997デフォルトの名無しさん
垢版 |
2022/08/05(金) 09:49:10.13ID:dkIhDSME
全ての証言を信じれば矛盾する
なぜかといえば自白強要や誘導尋問から生み出される証言もあるから
0998デフォルトの名無しさん
垢版 |
2022/08/05(金) 10:18:49.46ID:Zpgmgnev
>>985
>当然コストが高いわけでそれに見合うほどのパフォーマンスが必ずしも得られるわけではない
ここで言うコストとは何のこと?
0999デフォルトの名無しさん
垢版 |
2022/08/05(金) 11:53:10.74ID:GYd+Bl11
全く同じアルゴリズムで比較するべきとか言い出すならそもそもこんな複雑なタスクでベンチマークするのがおかしい
もっと簡単なタスクをいろいろ用意してそれぞれでベンチマーク比較したほうがいい
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を超えています。これ以上書き込みはできません。

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