22/06/21 09:44:18.82 GTnizZ2U.net
文字列の変数sが与えられた時に
変数a(符号付き32bit整数)、
変数b(符号なし64bit整数)、
変数c(64bit浮動小数点数)へそれぞれ変換するコード
【Rust】
let s: &str = "12345";
let a: i32 = s.parse()?;
let b: u64 = s.parse()?;
let c: f64 = s.parse()?;
【Kotlin】
val s: String = "12345"
val a: Int = s.toInt()
val b: ULong = s.toULong()
val c: Double = s.toDouble()
【Swift】
let s: String = "12345"
let a: Int32 = Int32(s)!
let b: Uint64 = Uint64(s)!
let c: Double = Double(s)!
【Go】
var s string = "12345"
var err error
var a int32
a, err = strconv.ParseInt(s, 10, 32)
var b uint64
b, err = strconv.ParseUint(s, 10, 64)
var c float64
c, err = strconv.ParseFloat(s, 64)
3:デフォルトの名無しさん
22/06/21 12:56:04.76 /ETIo2hH.net
オーバーロードが無いと、
例えばライブラリ無いからシステムコール利用する便利ラッパー機能を提供しようとする。例えばソケット関係のAPIをまとめたやつとか。
で socket(2)の場合、
第3引数なんていつも0しか使わないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
4:デフォルトの名無しさん
22/06/21 13:12:00.12 vSYkmcQ8.net
>>3
プログラムを書いたことのないキチガイだな
socketの第3引数はgetaddrinfoで得たai_protocolを引き渡すのが常識
あるいはgetaddrinfoを使わないならばgetprotobynameの結果を引き渡すものだ
まともなコードを書けないからそんな意味不明な主張になる
5:デフォルトの名無しさん
22/06/21 13:15:46.21 wIb095hs.net
必要なら変えればいいじゃん
6:デフォルトの名無しさん
22/06/21 14:09:10.86 l/hCBOZ3.net
なんでオーバーロードが無いCでうまくやっている例を挙げてオーバーロードの必要性を主張しようと思ったんだろう
7:デフォルトの名無しさん
22/06/21 17:22:04 AK5VMxpO.net
/ ,.----―‐、ヽ. \
/ / ヽ ヽヽ、_ヽ
/ _,.-‐''" ヽ ヽ `ヽ
/ _,,.-‐'" ヽ ヽ ヽ
/ _,.-'" ヽ ヽ ヽ
/ _,.-‐'" i! i! .._ i
人_,.-‐" _,,... _;;.::='' \ i! i!/ >'
/ _,,..-''_,.-‐''" 入 /_____/ ,.イ'
| ,.-ヽ、 _,.-'"_,.- ‐┬:.:ァ‐─┬: :ァ= ┬─―-|ヾ r i!
|/ ヽ.. ,.-'" r |/ ,L:厶\_, |: / _/二│ / | .| |
i ヽ | |; 〃  ̄`ヾ |/ 〃 ̄`∨ i | |ヽ
i! ヽ | .| {{ }} {{ }} { | | | また新スレだ!いつもいつも!
| i | | ゞ' ==彡 ゞ ==彡 l | | | 1000にも届かないで!!わたしを弄んで!!
ヽ | | |! ヽヽ ヽヽ l | | i!
ヽ、 | | | /⌒¨¨¨¨¨¨¨¨¨⌒ヽ / | i/
ヽ、 / ヽ ヽ、 { 丿 / /,! ,i!
ヾ`ヽー' `ヽ、 `ヽ、 ェ-―‐-く / ./ /
``―、_ ` ‐、_ ` ー--/ __ `ヽ/ ./ /
`゙゙‐-、 ゙`ー、.._/ i'" `ヽ /,/
8:デフォルトの名無しさん
22/06/21 18:27:05.65 /ETIo2hH.net
>>4
あくまでも例なのに的外れな回答だな。
fcntlでもいいわ。あれは第2引数によって第3引数の型が変わる。
>>6
うまくいってねーから。
だから閉じる時はcloseなのに開く時はopenじゃなくてsocketって別の名前になってんじゃん。
思考力無さすぎ。
9:デフォルトの名無しさん
22/06/21 18:45:23.25 cgA+HP5m.net
例がアカンわそれ
オーバーロードがある言語でもオーバーロードすべき時とメソッドを分けるべき時が当然ある
fcntlなんかはオーバーロードを考えるより先に分割を検討すべきものだから議論がとっちらかる
10:デフォルトの名無しさん
22/06/21 18:55:56.41 n99R/Leg.net
>>9
>例がアカンわそれ
>オーバーロードがある言語でもオーバーロードすべき時とメソッドを分けるべき時が当然ある
当たり前だろ
11:デフォルトの名無しさん
22/06/21 18:56:25.10 l/hCBOZ3.net
>>8
いまさらで申し訳ないんですが
s/ライブラリ無いから/ライブラリ内から/
ですか?
12:デフォルトの名無しさん
22/06/21 19:00:59.44 XqbO80NY.net
求めてるのはオーバーロードじゃなくてデフォルト引数だね
13:デフォルトの名無しさん
22/06/21 19:02:06.03 n99R/Leg.net
オーバーロードできるからと、いつもオーバーロードするわけではない。
だがオーバーロードが適切な場合はオーバーロードできたほうが良い。
単にそれだけ。
原理主義者になるな。
14:デフォルトの名無しさん
22/06/21 19:15:17.39 n99R/Leg.net
>>11
ライブラリ無いから薄いラッパーを作って提供するんだと思った。
知らんけど。
15:デフォルトの名無しさん
22/06/21 19:19:23.26 zS+KQ1el.net
オーバーロードは関数を値として持とうとしたときに関数の実体を取得するのがくそほど面倒臭かった記憶
16:デフォルトの名無しさん
22/06/21 19:34:47.92 bYqCGEc9.net
オーバーロードの追加はAPIの変更に含まれますか?
17:デフォルトの名無しさん
22/06/21 19:36:24.38 l8WwdmAr.net
ジェネリクス以外でわざわざ同じ関数名使う必然性がないわな。
18:デフォルトの名無しさん
22/06/21 19:39:33.13 hzkld3Bb.net
Objective-Cの関数名って長かったよなあ(遠い目)
19:デフォルトの名無しさん
22/06/21 19:45:56.46 8AFmzPLe.net
オーバーロードの有無で使用する言語を選ぶ人っているのか?
いないなら些末な議論
20:デフォルトの名無しさん
22/06/21 20:30:16.16 vSYkmcQ8.net
>>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))?;
}
21:デフォルトの名無しさん
22/06/21 21:43:34 gx+wq5uQ.net
>>15
関数を値として持つ場合は関数シグニチャ的なものを型として使うので
その時点でどのオーバーロード用か明確になってるよ
22:デフォルトの名無しさん
22/06/21 21:57:39 Z7u4GR2t.net
>>19
>オーバーロードの有無で使用する言語を選ぶ人っているのか?
ドカタは低脳、ゆとり、基地外でも大歓迎な職業なもんだから、
へんな奴が多い。そして、5chのム板に来る奴にはそれの重度な奴が多い。
そんな奴(重度の基地系)だと些細なことでも異常ににこだわる(超粘着する)のが普通なんだよ。
で、俺的にはオーバーロード必死な人が使っている言語(メイン言語)が何なのか興味あるが
23:デフォルトの名無しさん
22/06/21 22:00:18 Z0vonPWK.net
>>20
wrapper APIとして公開するならそれぞれ別のメソッドにすべきでしょ
メソッドという概念がなかった頃の遺物をそのまま使う必要ない
24:デフォルトの名無しさん
22/06/21 22:24:10.62 PKuk2WhK.net
>>13
オーバーロードの使い道は型違いのサポートとオプション引数のサポートの2つ
前者はジェネリック後者はオプション引数が言語機能にあればオーバーロードがなくても困らない
25:デフォルトの名無しさん
22/06/21 22:33:00.05 vSYkmcQ8.net
>>23
別のメソッドにしなくても
もし使用ミスがあればコンパイル時エラーとなるため>>20の仕様でも全く問題ない
そしてこの手法はRustでは常套
例えばHTTPのメソッドはGETやPOSTやDELETEなど39種類が定められているが
Rustでは39種類のメソッド関数を用意せず今回の例のようにenumに39種類を並べて用いている
今回のfcntlでも大量のメソッド関数を作るのは好ましくないと考える
さらに今回は>>8がオーバーロードがない場合は関数を分けてfcntl_getfl()やfcntl_setfl()などと大量に作らざるを得なくなる例として持ち出してきた流れ
だからオーバーロードなんか無くてもfcntl()一つで済むことを示した
そしてこれは汎用的な手法である
26:デフォルトの名無しさん
22/06/21 22:52:38.19 NotgbbUa.net
相手にしたら負け
学習しましょう
27:デフォルトの名無しさん
22/06/21 23:20:14.77 Z7u4GR2t.net
オーバーロードが無いと嫌だ嫌だな人はオーバーロードを変態にした
C++の可変引数テンプレート(可変長ジェネリクス引数)のようなものが実は欲しいってことなんじゃないのか
28:デフォルトの名無しさん
22/06/21 23:42:15.69 aTTVmXQa.net
新しく作る前提ならfcntlみたいに責務の異なる複数の処理は
1つの関数ではなく1つのクラスやモジュールにまとめたほうがいいのは間違いない
ただ既存APIのラッパーなら使いやすい形にAPIを変更した方がいいケースもあれば
既存と同じ感覚で使える形に留めたほうがいいケースもあるから
分割がいいかどうかはケースバイケース
29:デフォルトの名無しさん
22/06/22 00:47:54.76 OgTLLOot.net
結局>>2の例も>>20の例も
元は「オーバーロードのないRustは一つの関数名にできずに多数の関数名を必要とする!」攻撃から始まったのに
結果はRustの方が一つの関数で対応できちゃっていて不思議
30:デフォルトの名無しさん
22/06/22 01:52:24.75 li50soYi.net
ここまですべてスレタイにない言語の話題
31:デフォルトの名無しさん
22/06/22 03:03:24.75 SASaungr.net
>>27
なるほどこういうことか
template <class ... Ts, class U> U do_anything(Ts ...);
32:デフォルトの名無しさん
22/06/22 07:15:40.26 KrJiTw7R.net
>>29
Rustはtraitを用いたジェネリクスやenumなど便利で強力な機構を備えているため
具体的な現実の問題のほとんどはオーバーロードを使わずともそれらを用いてもっと良い解決を取ることが出来てしまう
33:デフォルトの名無しさん
22/06/22 08:41:50.14 lobyXiUO.net
幼稚園児の発想だね
34:デフォルトの名無しさん
22/06/22 08:59:15.48 s09CCxIL.net
nim ってどうよ?
35:デフォルトの名無しさん
22/06/22 10:00:29.78 V1lHcDUa.net
>>34
かなりいいよ
36:デフォルトの名無しさん
22/06/22 10:53:23.20 tHEXzaPe.net
flutter で dart だろ。Swift UIとか覚える気ない、というかApple終わってるし
37:デフォルトの名無しさん
22/06/22 11:56:08.73 4fUU5ZCa.net
nimダウンロードできない。
なぜか、消える。ノートンが削除してるの?
38:デフォルトの名無しさん
22/06/22 12:27:18.00 dG1UKNjk.net
>>37
この文面からして明らかにプログラミング向いてなさそう
39:デフォルトの名無しさん
22/06/22 17:58:01.91 jR4emiFb.net
GUIフレームワークがついてる言語が少
40:ないので嫌だな
41:デフォルトの名無しさん
22/06/22 23:42:43.21 DzsA87OB.net
ノートンなどアンチウイルスソフトが必ず隔離や削除する、インストールの際はインストール先を例外にする必要があります
全部誤判定なんだがアンチウイルスソフトの会社は殿様商売だな
42:デフォルトの名無しさん
22/06/24 13:42:32.48 Z+V4WXYl.net
>>40
ここまで日本語不自由だと生きるのつらそう
43:デフォルトの名無しさん
22/06/24 19:59:44.23 AZl692OH.net
【IT】世界中のIT技術者から愛されているプログラミング言語 3位は「Clojure」、2位は「Elixir」 1位は? [田杉山脈★]
スレリンク(bizplus板)
スレタイはこの上位といれかえたら?
44:デフォルトの名無しさん
22/06/24 20:12:58.51 UJITbcs3.net
ClojureもElixirもいいけど次世代かって聞かれるとう~ん
なんだろうね次世代って
45:デフォルトの名無しさん
22/06/25 09:52:11.80 +nqB0HMQ.net
>>42
毎年恒例の1位となってるな
>世界中のIT技術者から愛されているプログラミング言語はなにか。
>プログラミング関連のQ&Aサイト「Stack Overflow」を運営する米Stack Exchangeが
>そのような調査結果を発表した。
>各言語の「Loved」(愛している)と「Dreaded」(恐れている)の比率で
>Lovedが最も高かったのは「Rust」(86.73%)で7年連続で1位になった。
>回答数は7万1467件。
46:デフォルトの名無しさん
22/06/25 12:36:15.24 ul9cRZkF.net
>>44
なんかもうネタみたいになってるけどこれってアメリカンジョークなのか?
Rustは自分では使いたくないかな
仕事でコーディングしてる人が使ってくれたらいい
47:デフォルトの名無しさん
22/06/25 15:33:06.41 KZ/E7BkI.net
食わず嫌いだったけど
使うようになってRustが最もコーティングしやすいプログラミング言語だとわかった
48:デフォルトの名無しさん
22/06/25 17:07:59 XFOsSqRc.net
どのへんがとは全く言わない、糞言語Rustアゲおじさん
49:デフォルトの名無しさん
22/06/25 17:31:49 Ubwsp+uM.net
どういうレベルの人か察してやれ
50:デフォルトの名無しさん
22/06/25 20:40:59 /UVjDglo.net
次世代って響きは良いけど従来の言語の穴を塞いだ発展型の方が好まれそうと感じる
でもその結果C++とかObjective-Cが生まれたと思うとその考えも合ってるんだか自信がない
51:デフォルトの名無しさん
22/06/27 14:02:27.16 kVADuAyl.net
その意味合いでいうなら
v言語が宣伝してる内容を全部まともに実装できたら次世代と言っていいんじゃないすかね
52:デフォルトの名無しさん
22/06/27 14:24:04.88 6DiYUBn7.net
もっといい言語ないかな~
53:デフォルトの名無しさん
22/06/27 14:25:31.64 BV1DTZv2.net
過去にない新たなパラダイムを開く言語こそ次世代言語
それが何かは知らんが
54:デフォルトの名無しさん
22/06/27 16:35:25 2zgfe4St.net
YouTube で有名な雑食系エンジニア・KENTA が、既に結論を言ってる。
文系のキャリアパスは、Ruby on Rails → Go のみ
Rust, Elixir は普及のキャズムを越えなかった。
越えたのはGo だけ
いつも思うけど、Stack Overflow にいる香具師は、プロじゃないと思う。
転職に適さない
55:53
22/06/27 16:50:49.51 2zgfe4St.net
AWS Lambda のデフォルト言語は、
Node.js, Python, Ruby,
Java, Go,
PowerShell, C#
Rust, Elixir, PHP は入っていない。
カスタムコンテナを作るしかない
でも、Elixirは5千万プロセスが、130GB ぐらいのメモリ使用量らしいから、
32GBでも、1千万プロセスぐらい動くかも
IoT で、Nerves には期待している。
Ruby on Rails の本を書いている、黒田努の本も出たし
56:デフォルトの名無しさん
22/06/27 17:13:12.52 rnJb8tm1.net
GoはLambdaの新しいAL2環境においては単なるカスタムランタイム扱いに格下げされており、Rustとの違いは無くなっている
キチガイに触るつもりはないが他の人への情報提供として
57:デフォルトの名無しさん
22/06/27 17:20:17.54 gf8cGZwe.net
Erlang系の話題も少ないけどGleamとかどうよ
程々にホットだけどフレームワークはまだできてない、現状はそんな感じ
BEAMで動いて型が付いてて開発が動いてるってだけで機能として珍しい所はあんまり無いんだけどさ
そんな関数型関数型しい仕様でもないしギークが喜ぶリッチな型があるわけでもない
あとはjsがこないだ吐けるようになった
58:デフォルトの名無しさん
22/06/27 17:41:40.73 hsXMzH39.net
未だにKENTAのゴミ動画を当てにしてるやつが湧くのか
59:デフォルトの名無しさん
22/06/27 20:09:14.72 7Bf+48fI.net
本人でしょw
60:デフォルトの名無しさん
22/06/27 21:32:09.95 BV1DTZv2.net
>>55
rustとの違いがないってことはRAIIパターン使えるようになるの?
61:デフォルトの名無しさん
22/06/27 22:04:16.27 6JaS2WC8.net
>>59
全然関係ない
AWS Lambdaでの実行環境の話
62:デフォルトの名無しさん
22/06/28 14:36:14.98 1wirEm3f.net
Rust is coming to Linux, says Torvalds
URLリンク(cloud7.news)
Torvalds also announced some changes he plans to implement into Linux soon.
Most significantly, the open-source programming language, Rust might be included in the next release. Torvalds stated that Rust will be introduced in a limited way.
63:デフォルトの名無しさん
22/06/28 15:53:32.16 L5XiZwek.net
>>61
きたーーーーーーーーーーー
64:53
22/06/29 18:00:11.30 zCehF1Jn.net
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、エンジニアリング・マネージャー
65:53
22/06/29 18:08:23.13 zCehF1Jn.net
今までのモローの主張は、
KENTA がRuby on Rails サロンをやる目的は、
ポートフォリオを作るための学習期間が長いので、
サロンに長期間入ってもらって、KENTAがもうかるので、Railsを勧めている
Railsはオワコンなので、サロンに入っても、仕事は減っていく一方と言ってたのに、
今じゃ、KENTAと全く同じ事を言ってるw
66:デフォルトの名無しさん
22/06/29 18:15:54.85 5n1aZHdk.net
Linux開発にRustで掛かれたコードが解禁された
しかし
Cで書かれたものを置き換えることはしない
APIを変えることはしない
67:デフォルトの名無しさん
22/06/29 22:16:42.10 a+duSEZX.net
相変わらず三流ユーチューバーを引き合いに出すやついるのな
68:デフォルトの名無しさん
22/07/01 21:34:11.78 12jEq8hC.net
>>65
どこでも同じシンプルな結論が出てるな
・既存のものを書き換えるのは無意味
・新たに作るものはRust一択
69:デフォルトの名無しさん
22/07/01 21:52:53.35 JFBfOGuK.net
あまりにも既存コードが膨大だからね
長らくあらゆる環境で機能してたコードをリプレイスするほどまでのメリットはないだろう
もし仮にそこまでメリットあるんだったら、即刻世界中からC/C++のコードを絶滅させてほしいわ
70:デフォルトの名無しさん
22/07/02 07:56:01.10 lUSnA9b+.net
誰もリプレイスするべき、なんて言ってないよ
71:デフォルトの名無しさん
22/07/02 09:01:16.19 hTSqv50e.net
そうやってCOBOLのコードが維持それ続けてるんだよなぁ
72:デフォルトの名無しさん
22/07/14 20:22:39.85 ZkG98XYT.net
COBOLを舐めてはいけない
そもそも基本的に動的アロケーションをしないから、メモリ管理に関してはRustなんかに比べても信頼性が無茶苦茶高い
73:デフォルトの名無しさん
22/07/15 08:41:12 LdUI0ldE.net
>>71
でDATA DIVISIONが半分を占める悪夢のようなコードが蔓延するんですね
74:デフォルトの名無しさん
22/07/16 02:22:35.47 wu6dkzng.net
BunはZigで実装してるのか
なかなか尖ってていいじゃないの
URLリンク(zenn.dev)
75:デフォルトの名無しさん
22/07/16 07:08:19 vxjrsiXW.net
rustじゃ駄目だったのかなあ
76:デフォルトの名無しさん
22/07/16 07:25:23 6ZY7uA4U.net
多様性があった方が良いんじゃないの?
77:デフォルトの名無しさん
22/07/16 12:38:54.49 730D9OZt.net
Zigなかなかおもしろいね
エラーハンドリングがSwift風で好感が持てた
78:デフォルトの名無しさん
22/07/17 00:52:05.19 vN6ol9NM.net
Zigやるわ
79:デフォルトの名無しさん
22/07/17 01:03:33.43 KV4hrNVX.net
Rustの終わりの始まり
80:デフォルトの名無しさん
22/07/17 01:25:06.31 0s/4JmSD.net
Rustは安全性と高速性と書きやすさの両立を実現した
ZigはC++と同じで安全性は保証しない
Rustに対しては相対的にZigのメリットは無い
C/C++で書くよりはZigの方がおすすめではある
81:デフォルトの名無しさん
22/07/17 02:03:08.49 vKjp9uxK.net
Zenはどう?
82:デフォルトの名無しさん
22/07/17 02:05:03.30 vN6ol9NM.net
Zig軽く見たけどメモリ管理自前なのがキツいな
ここまでむき出しにするかー
83:デフォルトの名無しさん
22/07/17 02:45:01.72 Zp8ItUSG.net
zigはそのままCのコンパイラになってかつクロスコンパイルが簡単ってのが良いね
既存のCプロジェクトのコンパイラをzigに置き換えるだけでもメリットがあるし、そうなると徐々にソースもzigに置き換えたくなってきそう
84:デフォルトの名無しさん
22/07/17 03:42:19.20 Ur3sSwLC.net
>>80
だいぶ前にZigのパクリって言われてたな
今はどうなんだろ
85:デフォルトの名無しさん
22/07/17 09:19:07.01 dwElkP1X.net
>>74
rust実装ならdenoがあるし
nodejs代替ならdenoが本命だし
86:デフォルトの名無しさん
22/07/17 11:37:18.91 bCNgPTt6.net
流行るかどうかは別にしてZigはスレタイに相応しい言語だな
今のスレタイはNimを除いて全て現世代の言語になっちゃったから
87:デフォルトの名無しさん
22/07/17 11:47:40.57 vKjp9uxK.net
TypeScript、Swift、Go、Kotlinはとっくに普通の言語で、
これから新規プロジェクトやるならその辺の言語しか触らなくてもおかしくないね、ってレベルでもう一般的
88:デフォルトの名無しさん
22/07/17 11:50:14.03 +NC/ggVn.net
>>1
typescript swift go kotlin は十分メジャーだから次スレからは外すように
89:デフォルトの名無しさん
22/07/17 14:04:28.95 AoTZ8TcP.net
まだ普及してなくて気になっているのはZig, Nim, V, Valeくらいかな
90:デフォルトの名無しさん
22/07/17 14:14:11.96 vN6ol9NM.net
Zig触ってるとRustの所有権ってめちゃくちゃ優れた概念だったんだなと実感できるね
91:デフォルトの名無しさん
22/07/17 15:07:20.14 SLeX0Vy/.net
従来のプログラミング言語と違って革命的に新たな概念をもたらした次世代言語はRustだと思うのですが
どうしてスレタイに入れないのですか?
92:デフォルトの名無しさん
22/07/17 15:35:25.31 AlxrTtXq.net
次世代言語ではなくすでに現世代の覇権言語だから
93:デフォルトの名無しさん
22/07/17 16:35:29.89 WgvrEhxC.net
C++0xのパクリだからでは?
94:デフォルトの名無しさん
22/07/17 17:26:25.41 0s/4JmSD.net
安全性の保証を実現したC並みの高速な言語はRustしかない
95:デフォルトの名無しさん
22/07/17 17:42:03.18 3i/TeYSj.net
もし今までC/C++でシステム開発をしてきた会社で
モダンなシステムプログラミング言語が試用されるとしたら
それはRustではなくZigもしくはNimだろう
96:デフォルトの名無しさん
22/07/17 18:00:29.39 SLeX0Vy/.net
>>94
それらは本質的にはC/C++と変わらないから採用するところはほとんど無いと思われます
もしその分野で新たな言語を採用するとしたら採用に意味のあるRustとなるでしょう
97:デフォルトの名無しさん
22/07/17 18:36:18.24 occ/cz9x.net
数名のプロジェクトで、納期も緩ければあるかもね。
98:デフォルトの名無しさん
22/07/17 18:51:09.61 Zp8ItUSG.net
>>95
CとC++の欠点は安全性だけだと思ってる?
99:デフォルトの名無しさん
22/07/17 18:56:55.96 +DL/3zgJ.net
NimはともかくZigはまだ1.0でもないから会社で使える感じはしないけどな
将来的にCの代替としては期待している
100:デフォルトの名無しさん
22/07/17 19:06:00.51 WgvrEhxC.net
そもそもRustの利点と宣伝されてるものって、C++20のコンセプトを簡易的に実装したものでは?
101:デフォルトの名無しさん
22/07/17 19:13:13.63 Ur3sSwLC.net
Rustの話しかしねーなお前ら
102:デフォルトの名無しさん
22/07/17 19:48:29.77 CH5pcs5m.net
const std = @import("std");
pub fn main() !void {
const stdout = std.io.getStdOut().writer(); ←ここすこ
try stdout.print("Hello, {s}!\n", .{"world"});
}
writerを変数に取れるとなんか安心する
Rustとかだといきなりマクロでprint!()だしモヤる
103:デフォルトの名無しさん
22/07/17 21:24:39.01 D6jSpq7E.net
Rustでもこんな感じで書いてもいいのよ
use std::io::{self, Write};
fn main() {
let mut stdout = io::stdout().lock();
stdout.write_all(b"hello world").unwrap();
}
104:デフォルトの名無しさん
22/07/17 21:44:39.47 PMMdo41Y.net
>>101
(1) Cのprintfと同じ機能がRustのprint!であり分かりやすく使いやすい
(2) Rustでも色々な指定は可能
(3) プログラミング言語毎に様々な書き方がなされている中では些細な話
105:デフォルトの名無しさん
22/07/17 22:16:39.96 PMMdo41Y.net
>>102
そこは>>101の例に合わせてformat指定
let mut stdout = std::io::stdout().lock();
write!(stdout, "Hello, {}!\n", "world")?;
106:デフォルトの名無しさん
22/07/17 22:23:33.10 Zp8ItUSG.net
>>101
これってフォーマット指示と引数があっているかのチェックはいつ行われるの?
107:デフォルトの名無しさん
22/07/17 22:26:33.06 SZhCYswt.net
Zigだけどやっぱスコープ抜けた時に一斉に不要なメモリ解放する機構ぐらいは欲しいなあ
そういうのないよね?
Obj-Cにおけるautoreleasepoolとかv8におけるHandleScopeみたいなやつ
108:デフォルトの名無しさん
22/07/17 22:33:23.76 CH5pcs5m.net
>>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まわりはすこ
109:デフォルトの名無しさん
22/07/18 00:06:45.58 KMiFC5Pb.net
>>87
俺的には最初のリリースから10年経っているのはもう次世代とは言えない
って感じなんだよな。
>>96
数名でも初心者に毛が生えた程度のレベルの奴(どかた)でも良いプロジェクトじゃないと駄目だろ
メジャーなC++ですら日本ではスキルのある奴がそろわないんだからな
>>99
逆じゃないのか
Rustの制約をC++でも簡易で良いから欲しいって感じでC++20でようやくコンセプトとして導入じゃないのか
ジェネリクスには制約は必須なのにC++では長い間導入されていなかったからな
110:デフォルトの名無しさん
22/07/18 00:50:41 u6hhGzsh.net
Zigの特徴はCよりも未定義動作を増やすことでコンパイラによる最適化を過激にできて場合によってはCよりも高速になることを狙う点
つまり未定義動作を無くすことで安全と高速を両立させるRustとは真逆の戦略を採っていること
111:デフォルトの名無しさん
22/07/18 01:42:15.77 S/imfak8.net
>>109
UBの種類はさすがにCより少ないよ
112:デフォルトの名無しさん
22/07/18 06:06:03 4eOAm5LE.net
>>109
お前、未定義動作の意味わかってないだろ...
113:デフォルトの名無しさん
22/07/18 06:17:28 u6hhGzsh.net
未定義動作によりコンパイラが最適化を進められる話
URLリンク(cpplover.blogspot.com)
114:デフォルトの名無しさん
22/07/18 07:01:28.61 ssl6Co9E.net
マジキチかよw
115:デフォルトの名無しさん
22/07/18 08:19:25.09 mVdITidT.net
Rust信者ってこんなに低脳なん?w
ヤバっ...
116:デフォルトの名無しさん
22/07/18 11:04:54.36 5guVnF2o.net
てかcにもdefer入るしそれで良くね?
117:デフォルトの名無しさん
22/07/18 11:21:45.49 1omE+gQa.net
そもそもC/C++がまともに使えない低能のための言語がRustですし
118:デフォルトの名無しさん
22/07/18 11:36:06.98 biPIwclR.net
>>95
zigはそう言えなくもないがnimはちゃうやろ。少しはググれよ。
ただまぁ、c/c++からの移行ではrust一強な感はある。
119:デフォルトの名無しさん
22/07/18 11:40:31.18 biPIwclR.net
>>115
決定したの?
120:デフォルトの名無しさん
22/07/18 15:04:52.06 n//xSWhh.net
僕は職業プログラマーじゃないんで
新しいBASICたるswiftとswift playgroundでいいです。
ちょっと数学的解析するのに使ったらすげぇ楽だこれ
ちにゃ〜
121:デフォルトの名無しさん
22/07/18 16:31:30.05 o05Sk4F2.net
>>119
Mathematicaとかmaxmaとか使ったほうがいいんじゃない
122:デフォルトの名無しさん
22/07/18 23:29:01.81 V4/YV6GP.net
>>108
ジェネリクスとRustのトレイトによる制約の相性の良さは感動した
Rustはよく考えられて設計されていると
123:デフォルトの名無しさん
22/07/19 00:44:59.22 gapBBEtz.net
よく考えて設計したがためにtraitにasync fnを定義するためにGATsが必要で
コンパイラにSATソルバーを入れる必要が出てきてたりして大変そう
124:デフォルトの名無しさん
22/07/19 09:36:36.78 wQVGctip.net
タイトルにRustが無いのに、こいつらは文字も読めなければ知性すらない。そりゃ嫌われるわな
125:デフォルトの名無しさん
22/07/19 22:42:59.43 MhwTnkaY.net
比較としてrustが出るならいいが、単独で出されると何だかなぁ感があるよな。
126:デフォルトの名無しさん
22/07/20 01:23:22.22 x6yfnsIC.net
Google?の新言語
URLリンク(github.com)
127:デフォルトの名無しさん
22/07/20 01:33:59.92 xi/WqfXE.net
>>125
C++から移行しやすい後継言語ということか
Rustを参考にライフタイムも検討中みたい
C++の既存コードって膨大だし、本当にシームレスにC++から移行できるなら有用そう
128:デフォルトの名無しさん
22/07/20 01:40:05.72 nOwUi7j2.net
>>122
GATsがnightlyで使えるようなので試してみたが非常に強力だな
Rustに欠けていた土台部分の穴を埋めて様々な機能の大きな基盤となる感じだ
>>125
画期的なものを期待して見たら単なるAltC++でズッコケた
129:デフォルトの名無しさん
22/07/20 10:38:59.85 +8MBpHfA.net
>>125
なんでCarbonとかにするかなぁ
Macのやつと間違えるやん
130:デフォルトの名無しさん
22/07/20 13:53:08.57 QduY8YNs.net
名前は置いておいてついに決定版の言語が出たか
Rustの次の言語だなこれは
131:デフォルトの名無しさん
22/07/20 14:18:06.41 ThH+Z+BW.net
見たところZigのC++版ってとこかな
132:デフォルトの名無しさん
22/07/20 14:18:06.52 GOFKDz27.net
Rsutは死産だったな
133:デフォルトの名無しさん
22/07/20 14:36:18.32 CC/ADkRB.net
Nim言語ならC++の関数だけでなくテンレート関数/クラスを呼び出せる機能があり、std::vectorやstd::stringを使うことも可能。
compileプラグマを使えばC++のコードをコンパイルしてリンクできる。
emitプラグマ使えばNimのコードの中にC++コードを入れることができる。
Nim言語はC++言語を生成してからgcc/clang/vcc等のC++コンパイラを呼び出して実行ファイルを生成するからC++と簡単に連帯できる。
134:デフォルトの名無しさん
22/07/20 15:42:59 qJwz0nM8.net
Nimはもっと評価されて良いと思う
135:デフォルトの名無しさん
22/07/20 16:04:11 QduY8YNs.net
Goはオワコンということでよろしいか?
136:デフォルトの名無しさん
22/07/20 16:15:14.40 LSK66KxM.net
なんでセミコロンありなの?
137:デフォルトの名無しさん
22/07/20 17:02:44.97 ThH+Z+BW.net
開発者の趣味
138:デフォルトの名無しさん
22/07/20 18:42:51 5UvTR+16.net
GC言語 GCによる自動メモリ解放
Rust 即時の自動メモリ解放
C/C++/Carbon(現在0.1) 自動メモリ解放ではない
139:デフォルトの名無しさん
22/07/20 19:19:34 XnEgORKH.net
>>137
Rustはスタックに積んでいる&生ポインタが無いから自動回収されるだけ。c/c++と一緒。
そんなことよりもスタック重視で基本は何でもスタックということを強調したほうがRustらしさの説明になるだろ。
140:デフォルトの名無しさん
2022/07/
141:20(水) 20:40:05.79 ID:xdIX6xM1.net
142:デフォルトの名無しさん
22/07/20 20:43:23.04 CC/ADkRB.net
ほとんどのシステムプログラミング言語と呼ばれるものは変数がスタックに確保されるかヒープに確保するかはコントロールできるはず。
ただし可変長な配列や文字列型はヒープにデータを格納される。
違いはヒープに変数を確保したときに手動で解放する手法、スコープ抜けたら解放する手法、参照カウンタが0になったら解放する手法、GCを使う手法などがあるところ。(valeのgenerational referencesというのもあるけど)
Nim言語でもrefがついてないobjectはスタックに置かれるしRustでもBoxやRc使えばヒープに確保されるしC++でもscoped_ptr使えば参照カウンタでヒープが管理される。
基本的に変数はスタックに確保して、どうしても必要であれば(一つのオブジェクトを複数の変数から参照したい、OOPしたいなど)ヒープを確保するという感じの書き方になると思うけど。
143:デフォルトの名無しさん
22/07/20 20:52:32.44 5UvTR+16.net
Rustでは自動的に安全に即座にメモリ解放される
ここが重要なポイント
だからRustは高速と安全を両立させることができている
それに加えてRustではメモリ競合なども完全に防止する
144:デフォルトの名無しさん
22/07/20 21:03:41.80 5UvTR+16.net
そしてCarbonの目標文書を読んでもその目標は書かれていない
つまりRustの本質と競合する言語ではない
145:デフォルトの名無しさん
22/07/21 00:23:47.84 F7Gtvv1S.net
変数をヒープに確保するという言い方はなんか気持ち悪いな
146:デフォルトの名無しさん
22/07/21 00:34:40.13 MOkaWH3B.net
結局CarbonはC++の変種に過ぎないのか
新たなプロジェクトではRustを利用する流れは変わりそうにないな
Carbon採用の動機や利点が全くない
147:デフォルトの名無しさん
22/07/21 00:49:33.21 JPxznSjw.net
Googleが推してるのではなくGoogle社員のプロジェクトやからね
148:デフォルトの名無しさん
22/07/21 00:50:32.86 mCQN4Yoj.net
なんでそんな必死なん?
149:デフォルトの名無しさん
22/07/21 01:20:47.87 F7Gtvv1S.net
将来的にはcarbon freeにしたいという自虐ネタを込めた命名
150:デフォルトの名無しさん
22/07/21 01:25:08.23 qcok3Xr6.net
人によりけりだけど、一つのプログラミング言語を学習してそれをずっと使いつづけたい、他の言語の勉強したくないという人は多い。
Rustは比較的学習コストが高め。
もし他のプログラミング言語がメジャーになったりもっと優れたプログラミング言語が現れると苦労してRustを勉強した努力が無駄になってしまう。
だから新しい言語の話題がでるとRustを苦労して勉強した努力が無駄になってしまうという恐怖感が生まれて必死に否定するんじゃないかと。
異なるプログラミング言語間でも似た所はあるし、新しい言語を学ぶときにRust言語を学んだ経験が全く無駄になることはないだろうと思うけど。
151:デフォルトの名無しさん
22/07/21 01:25:42.94 nOpNTAAx.net
Carbonでオブジェクトをヒープに確保するのどうやるの?
なんかよーわからん
ドキュメントがなさすぎる
流石にまだこれを使うのは難しいな
152:デフォルトの名無しさん
22/07/21 01:34:26.10 nOpNTAAx.net
Rustの欠点として可変参照の扱いがC/C++互換をかなり難しくしてるんだよな
既存プロジェクトとのinteropにおいては無視できないケースが多い
特にGoogleなどの大企業は
その結果生まれたのがCarbon
153:デフォルトの名無しさん
22/07/21 01:56:23.59 F7Gtvv1S.net
Carbon本家もRustが使えるならRustを使えと言っている
でかいC++プロジェクト抱えてる人が使うものだよね
URLリンク(github.com)
154:デフォルトの名無しさん
22/07/21 02:05:12.80 hbmQrHo+.net
>>148
Rustが出現して以来これだけ時間が経過しても
Rustが実現した『高速と安全の両立』を満たす他の言語が出てこなかった
その結果が大手IT各社による共同でのRustへの支援表明とRust Foundation設立
そしてC++を拒否していたLinux開発陣営までもがRust採用発表
つまり既にこの業界では雌雄が決している
155:デフォルトの名無しさん
22/07/21 02:06:50.27 hbmQrHo+.net
>>148
次に学習コストが高いといっても
他との大きな違いは所有権とライフタイムだけでありその概念は一日あれば誰でも理解できる
そして後は具体的にコードを書いて身につけてくのも他の概念と同じ
さらにRustが実現した『高速と安全の両立』のためには所有権とライフタイムによるのが最も適切とわかってきた
つまりRust以外に両立を満たす言語が出てきても学習必須の概念となる
同時にそれは画期的な発明がなされない限りRustの二番煎じの言語しか出現しないことを意味する
156:デフォルトの名無しさん
22/07/21 02:13:15.45 hbmQrHo+.net
>>150
データ競合安全性に関しては誰が考えても可変参照の不可変参照との区別が必要となる
むしろその区別をはっきりさせてこなかったために従来の言語はデータ競合の入りうる隙きを許してきた
過渡的には既存の安全でないものと組み合わせる時に扱いが大変だとしても
最終的には可能な限り全て安全なもので組み立てていくことになろう
157:デフォルトの名無しさん
22/07/21 02:17:23.88 F7Gtvv1S.net
>>148
現状Rustが初めての言語って人は少ないから
最初に学んだ言語を使い続ける人はrustユーザーの中ではかなり少数派なのでは
158:デフォルトの名無しさん
22/07/21 02:41:33.10 SY914jbi.net
>>142
> Rustの本質と競合する言語ではない
>>152
> この業界ではすでに雌雄が決している
どっちやねん
159:デフォルトの名無しさん
22/07/21 04:57:34.89 tF9h1cCP.net
ifの条件のとこ括弧必要なのかよ!
160:デフォルトの名無しさん
22/07/21 05:28:59 aDWah/z9.net
>>156
Rustが実現してる安全と高速性の両立をCarbonが提供するわけではないみたいだから競合しないね
CarbonのFAQ >>151 にもRustが使えるならばRustを使った方が良いと書かれているね
だから雌雄は決していると言っても過言ではないかも
161:デフォルトの名無しさん
22/07/21 06:11:50.65 EDO+eFgH.net
恐らくCarbonはRustのいいところだけを抽出した感じだな
CarbonのほうがC++やTypeScriptに近いのでRustよりも馴染むだろう
Carbon派とRust派で分かれそうだ
162:デフォルトの名無しさん
22/07/21 06:23:11.04 aDWah/z9.net
>>159
嘘ついたらダメよ
Carbonはあくまでも既存C++遺産のため限定のもの
そしてRustのいいところは何もサポートしていない
だからCarbonの公式FAQ >>151 でもRustが使えるならばRustを使った方が良いと明記されてるね
163:デフォルトの名無しさん
22/07/21 08:20:01.30 WJJWa/BR.net
C++の後継目指すプログラミング言語「Carbon Language」、Googleの技術者が実験的公開。C++は技術的負債で改良が困難と
URLリンク(www.publickey1.jp)
164:デフォルトの名無しさん
22/07/21 09:57:08 6/eI+t+6.net
>>153
おまえ所有権理解できてなくて恥かいてたやんww
誰でも一日で理解できる概念やのにwww
165:デフォルトの名無しさん
22/07/21 11:18:14.67 BsoCJ7d4.net
所有権どころかシャローコピーとディープコピーの違いも知らずにRust通を気取ってるアタオカさんだからRustスレでは鼻つまみもの
166:デフォルトの名無しさん
22/07/21 11:19:06.12 9tbOXQd/.net
キモキモRustマン、ワッショイワッショイはRustスレでやれ。二度と来んな
167:デフォルトの名無しさん
22/07/21 12:02:23.44 nj8XyhCb.net
Rustスレ民が学習して構ってもらえなくなっちゃったから来てるんでしょ
168:デフォルトの名無しさん
22/07/21 13:04:30.75 nOpNTAAx.net
ここ以外でもツイッターとかでやたらRust難しいと印象操作しようとしてるやついるよな
C/C++をまともに書いたこと有ればたいして難しくもないのに
169:デフォルトの名無しさん
22/07/21 13:47:25.39 LMMByu3R.net
>C/C++をまともに書いたこと有ればたいして難しくもない
その通り
で結局C/C++でええやんという話に戻る
170:デフォルトの名無しさん
22/07/21 13:47:41.33 dTNn2Vwx.net
色んな言語をやってきてRustが特に難しいとは思わなかった
むしろ便利さと書きやすさで気に入った
他の言語より抽象化されてる感じが良いね
そこが頭の弱い人には逆に難しく感じるのかも
171:デフォルトの名無しさん
22/07/21 13:53:10.37 dTNn2Vwx.net
>>167
C/C++はごく最近は抽象的な扱いのものの導入も増えつつあるけど
元がダメだからボロ屋の上に建て増し違法建築みたいになっちゃってる
基礎がしっかりしているRustはその点でも良いね
172:デフォルトの名無しさん
22/07/21 14:00:17.21 MFhv3qMI.net
C++はmove semanticsの建て増し感が特に厳しいな
後付するならあれしかなかったのは分かるけど
そこがちゃんとしてるというだけでもRustの方が楽に感じる
173:デフォルトの名無しさん
22/07/21 14:02:26.54 cxEc0/aI.net
RustのC++との相互運用性を改善する方向性で頑張ってくれたらよかったのにな
C++の保守専用言語なんか普及するわけないじゃん
174:デフォルトの名無しさん
22/07/21 14:11:46.30 dTNn2Vwx.net
>>171
Carbonを新たな開発で使うことはないだろうからC++の保守専用言語という表現いいね
175:デフォルトの名無しさん
22/07/21 14:57:52.79 j9ULkGXf.net
>>168
>色んな言語をやってきてRustが特に難しいとは思わなかった
参考までにやってきた色んな言語を列挙してもらえるかな?
176:デフォルトの名無しさん
22/07/21 15:55:40.07 Q1uK5/Rv.net
>>166
「CとC++」な。
両方それなりに使えないとRustきついだろ。
177:デフォルトの名無しさん
22/07/21 16:06:53 iRk5Je6N.net
そんなにシステムプログラミング言語が必要な事をやってるの?
私の場合は、Pythonでほとんど困らなくて、偶に.net系くらいなもんだから、Rustの話が続いても別世界の話過ぎて、付いていない…
178:デフォルトの名無しさん
22/07/21 16:25:46 PcF3TGn3.net
>>174
ぶっちゃけ全然きつくないよ
どの辺がきついと思うのか逆に知りたい
179:デフォルトの名無しさん
22/07/21 16:28:02 mCQN4Yoj.net
こういう奴が一番危険なんだよな。。実際仕事すると洒落にならんことし始める。
180:デフォルトの名無しさん
22/07/21 17:45:24.11 aer6+S9Z.net
メモリやらリソース管理、分散処理の課題をRust以上まともに解決してない言語だと、次世代って感じしないなぁ。
柔軟さ動的さに極振りだったRubyや、関数型のパラダイムを持ち込んだHaskellとかもなんか新しさがあったわけで。
181:デフォルトの名無しさん
22/07/21 18:05:35 lCXJwEni.net
rubyは目新しさというよりは
perlよりマシっていう感じだったよね実際は
perlよりマシだしOOPLを自称してるし
イテレータがあるしで
(当初は内部イテレータがあるのをウリにしてた記憶)
「ザ・ちょうどそういうの欲しかってん言語」って感じ
182:デフォルトの名無しさん
22/07/21 18:09:56 nOpNTAAx.net
Rustわからんって言ってる人ってスタックとヒープを理解してない
せめてメモリのレイアウトぐらい理解しとこうよ
183:デフォルトの名無しさん
22/07/21 18:22:38.41 iRk5Je6N.net
>>180
スタックとヒープの違いやメモリ解放とOSへ返却が違う位は分かるけれど、私にはRustは過剰で難しい。
184:デフォルトの名無しさん
22/07/21 18:37:11.06 nOpNTAAx.net
>>181
わからんならとりあえずヒープは忘れて全部スタックに乗せるというのが良いと思うよ
スタックをつかって所有権を移動させていくプログラミングすれば不要なコピーは起きないし
効率も良い
185:デフォルトの名無しさん
22/07/21 18:50:15.74 ppiq2d/L.net
>元がダメだからボロ屋の上に建て増し違法建築みたいになっちゃってる
まあ同意は出来るが
「C/C++を*まとも*に使える」
という意味の捉え方によるな
違法建築になってるのは「*まとも*に使えてない」人のコード
186:デフォルトの名無しさん
22/07/21 18:52:26.12 HGs+QJMA.net
>>183
やっぱりc++のダメな部分を削ったsmart c++欲しいな。
187:デフォルトの名無しさん
22/07/21 18:54:02.97 ppiq2d/L.net
>>180-181
結局そいういうのC/C++で勉強する訳で
Rust理解するためにC/C++の勉強が必須なら
C/C++でええやんって話に戻る
188:デフォルトの名無しさん
22/07/21 19:14:35.47 F7Gtvv1S.net
C/C++をやればスタックとヒープの概念が身につくのであればRustをやってそれらが身につかない理由もないと思うが
189:デフォルトの名無しさん
22/07/21 19:18:49.81 vhEYvTLl.net
>>184
それがRustの狙いでは?
190:デフォルトの名無しさん
22/07/21 19:19:07.93 ipycKOwR.net
>>185
遠回りになるがそこから始めるのもありかもな
メモリ関連はそれなりの失敗経験がないと体で理解できないから
Cでクソでかい構造体をスタックに置いてしまって
スタックオーバーフロー起こしてシステム停止したり
C++でコピーコンストラクタの実装ミスって
ダングリングポインタ作ってシステム停止したり
デストラクタでdelete忘れてメモリリーク起こして
システム停止したり
それなりの地獄を味わってる俺が言うんだ間違いない
191:デフォルトの名無しさん
22/07/21 19:44:43 F7Gtvv1S.net
趣味プログラミングならどんどん変なことしてクラッシュさせれば良いけど
業務ならもっと安全を期したいなぁ
192:デフォルトの名無しさん
22/07/21 19:52:05 lCXJwEni.net
> それなりの地獄
かわいい地獄でつねw
193:デフォルトの名無しさん
22/07/21 19:54:55 qQS6uOSz.net
C/C++のよくある業務ってやっぱり組み込み?
それかゲーム開発?
194:デフォルトの名無しさん
22/07/21 20:25:53.32 n+UC1473.net
無料で答える業務はない
195:デフォルトの名無しさん
22/07/21 20:54:05.56 rGFlKcYB.net
>>175
Pythonは約10倍くらい遅い
メモリも喰う
ガベージコレクションもある
まともな並行並列プログラミングが大変
Pythonは小さなバッチ的スクリプトの範囲でのみ使うのが正解
196:デフォルトの名無しさん
22/07/21 21:04:39.89 v1bwr09c.net
>>191
スマホの課金ゲームのバックグランド鯖の開発とかもあるよ
197:デフォルトの名無しさん
22/07/21 22:23:39 EhpLe0Nv.net
PythonやJavaScript書くときはでかいアロケーションの有無くらいしか意識しないけど
C#やSwift書くときはvalue typeとreference typeの使い分けがあるからスタックとヒープもそれなりに意識する
Goの場合は気になるところでescape analysis
198:デフォルトの名無しさん
22/07/21 23:33:08.48 n+UC1473.net
三角関数や薬剤師の存在を意識してる人は大体が
「コスト」を強く意識した方がメリットが大きいと思い込んで意識している
199:デフォルトの名無しさん
22/07/21 23:43:19.63 U3FKAWyk.net
自分でも何を書いてるのか理解できてなさそう
思い込んで意識するというのも意味不明
200:デフォルトの名無しさん
22/07/21 23:53:17.15 vrEITS91.net
>>195
PythonやRubyやJavaScriptなどのオモチャ言語しか使ったことのない人だけがスタックとヒープを意識しないわけか
201:デフォルトの名無しさん
22/07/22 06:54:41.09 WiEbw06Y.net
コンピューターの動作を隠蔽すればオモチャに近づくのなら究極的にはアセンブラ以外は全てオモチャなのではないだろうか
202:デフォルトの名無しさん
22/07/22 07:02:16.68 FhKnOINS.net
アセンブラはスタックやメモリーにアクセスするプログラムを書かされる。
Cはメモリーにアクセスするプリグラムを書かされる。
Javaはスタックもメモリーも意識する必要がない。
すなわちJavaが最も優れている。
203:デフォルトの名無しさん
22/07/22 07:23:24.99 oyZ2TNIq.net
>>199
メモリについてもそれ以外についても
抽象度が高い方がプログラミングしやすい
アセンブラよりもスタックとヒープというメモリについての抽象化をした言語の方が扱いやすい
一方で過度の抽象化は実用性を失う
例えばメモリとローカルディスクとネット上のディスクを全て統合して一つの巨大なメモリ空間に抽象化すると
巨大なメモリ空間を扱う極一部の用途を除いて過度の抽象化となってしまい速度差があるものは別々のままの方が好ましい
スタックとヒープを意識せずに済むPythonやRubyやJavaScriptなどの言語も同様な面がある
スタックとヒープには速度差があるため速さを重視する用途から見ると過渡の抽象化といえる
速さを重視せず意識しない用途をオモチャ用途と呼ぶならばPythonやRubyやJavaScriptはオモチャ用途すなわちオモチャ言語とも言えないことはない
204:デフォルトの名無しさん
22/07/22 08:16:15.80 FDKNW5k7.net
>>187
サブセットが欲しいのであって、併用できないのは要らん。
205:デフォルトの名無しさん
22/07/22 08:17:52.69 8hejYpL6.net
おもちゃ程度の事しかしないので、おもちゃ言語で困ってないんだよね。
Rustが、安全で効率良い速いって言われても、書き捨てのPythonでも10秒程度で処理が終わってしまうようなものだと、わざわざRustでってならないさ。
システムプログラミング向け次世代と、もっと緩いおもちゃ向け次世代みたいな感じに分けないと、話が噛み合わない気がする。
206:デフォルトの名無しさん
22/07/22 09:02:33.80 bANXE+J8.net
>>198
動的言語コンプレックス恥ずかしい
207:デフォルトの名無しさん
22/07/22 09:15:01.41 50nE7LhG.net
>>202
ダメな部分を使わなきゃいいだけじゃね?
間違って使うというならチェックツール作ればいい
208:デフォルトの名無しさん
22/07/22 09:57:43.45 q3/dBWm5.net
だからOS、ドライバとかの低レイヤーとWebみたいなのを分けて考えるべきだろ
何でもかんでもRustとはならない
適材適所
209:デフォルトの名無しさん
22/07/22 10:34:06.65 YNBeKdpL.net
コンパイル時のメタプログラミングを駆使すると実行時の電気代が安いんよ
ランニングコストを情報隠蔽とはならない
210:デフォルトの名無しさん
22/07/22 11:20:36.22 emgmw9dd.net
>>202,205
どちらも一理ある
>>203
>システムプログラミング向け次世代と、もっと緩いおもちゃ向け次世代みたいな感じに分けないと、話が噛み合わない気がする。
一種と二種みたいなもんだな
211:デフォルトの名無しさん
22/07/22 11:22:08.43 emgmw9dd.net
>>207
SDGsという言葉は胡散臭くて嫌いだが
SDGsの観点から言っても良質のコードを描くことは絶対地球に優しいよな
212:デフォルトの名無しさん
22/07/22 11:39:15.65 YNBeKdpL.net
Cのプリプロセッサの存在自体が納得できない人のために
マクロ言語ではなく型システムなら納得できるだろうとなったのがC++
コンパイラではなくインタプリタに近い方式なら前処理が無くなるだろうとなったのがPython
213:デフォルトの名無しさん
22/07/22 11:45:23.20 LVIZaCij.net
>>205
それを他人に強制できる、標準orデファクトとして確立したものが欲しい、ということだよ。
コーティングスタンダードでもいいんだけど、独自に作るのは重たいし、教育するのも大変だから、出来合いのものが欲しいところ。
214:デフォルトの名無しさん
22/07/22 11:59:28.82 ZDp8+ZKO.net
>>211
>それを他人に強制できる、標準orデファクトとして確立したものが欲しい、ということだよ。
くだらない理由だな。お前の人集めが酷いだけだろ。
215:デフォルトの名無しさん
22/07/22 12:21:12.21 G8DPlZOX.net
>>207
メタプログラミング駆使しなくても静的に書けば実行時の電気代が安くなる
そう、COBOLならね
216:デフォルトの名無しさん
22/07/22 12:23:13.63 LVIZaCij.net
>>212
コストとか単価を気にしない富豪はうらやましいですなぁ。
217:デフォルトの名無しさん
22/07/22 12:46:18.43 65NBtvCk.net
>>167
>その通り
>で結局C/C++でええやんという話に戻る
お前の後輩の中のダメな奴にコード書かせてもそう言えるのか?
218:デフォルトの名無しさん
22/07/22 12:47:04.23 efNbKFVE.net
>>211
適当なリポジトリからclang-tidy等の静的検証ツールのルール設定をパクってくるとかはどうですか
219:デフォルトの名無しさん
22/07/22 1
220:3:32:14.29 ID:YNBeKdpL.net
221:デフォルトの名無しさん
22/07/22 14:03:33.19 50nE7LhG.net
>>211
だからチェックツール作れよ
CIでチェック通らなきゃビルド不可にしときゃいいだけだろ
222:デフォルトの名無しさん
22/07/22 14:30:36.22 ZDp8+ZKO.net
いやケチるなら余計に人は選べよ。
223:デフォルトの名無しさん
22/07/22 15:07:10.50 hnGDX2CP.net
>>207
サーバーコスト(クラウドコスト)を考えると使う言語を変えることで速さと省メモリにより数倍~十数倍差が出るのは大きいもんな
あとは避けられる実行時エラー(例外含む)をできる限りコンパイル時に静的に解決したいわけだろ
ならばRustがベストチョイス
224:デフォルトの名無しさん
22/07/22 15:17:47.41 dO8Qo8Lr.net
>>206
むしろWebはRustむけ
225:デフォルトの名無しさん
22/07/22 17:13:14.54 efNbKFVE.net
Webという括り方が雑すぎる
226:デフォルトの名無しさん
22/07/22 17:45:58.45 iaUAG8EO.net
どうせあれとあれを区別出来てないんだろうな
227:デフォルトの名無しさん
22/07/22 18:08:11.96 8hejYpL6.net
そのうち、HTMLやCSSのコーダーが、Rustで書き始めるわけか。
テスト工数は減らなさそうだし、制作費上がりそうで嫌だなぁ。
228:デフォルトの名無しさん
22/07/22 18:24:55.78 hnGDX2CP.net
>>221
こちらもWeb関係でRustを使っている
229:デフォルトの名無しさん
22/07/22 18:31:07.28 YNBeKdpL.net
アルゴリズムとデータ(構造)を区別するのやめようって言い始めた人も悪いのだよ
230:デフォルトの名無しさん
22/07/22 19:46:38.86 56UVShba.net
型推論がモダンなら、動作推論でスタックヒープ最適化ぐらいあって良いのではないか
231:デフォルトの名無しさん
22/07/22 21:07:06.38 Fn4mSUKv.net
>>227
そう、Goならね
232:デフォルトの名無しさん
22/07/23 00:56:36.98 xoLMiefm.net
>>228
コンパイル時になるべく静的に解決して実行時の負荷をゼロもしくは可能な限り少なくしたいのに
Goはその真逆で実行時の負荷が大きい(ランタイムがデカい)から好ましくない
233:デフォルトの名無しさん
22/07/23 07:49:46.21 i/T78yqA.net
もしかして、Rust製のWordpressみたいなCMSあったりします?
234:デフォルトの名無しさん
22/07/23 08:34:42.30 +NLDKrMc.net
こういう奴に限ってロクなアルゴリズム書いてない、遅いうえに負荷だらけなのはお前のせい
235:デフォルトの名無しさん
22/07/23 08:45:37.01 YgKX3LKM.net
>>229
で、それをWebに適用したがる理由は?
なんのメリットがあんの?
236:デフォルトの名無しさん
22/07/23 09:08:24.13 z+0uNfVv.net
なくはないが、1要素に過ぎない
そういうやつに限って実行環境について無頓着で、クソ巨大なコンテナイメージ作ったりするし
237:デフォルトの名無しさん
22/07/23 09:12:35.67 YgKX3LKM.net
IOバウンドが主体の現代プログラムで積極的にRustを採用したがる理由がわからない
OSやドライバみたいな低レイヤーならわかる
238:デフォルトの名無しさん
22/07/23 09:30:42.73 h0kR6t/A.net
>>234
単一のリクエストの処理についてはその通りだけど、
1ノードで同時に処理するリクエストが増えていけばCPUまたはメモリが上限に達してスケールアウトが必要になる
つまりCPUやメモリの消費を削減することでノード数を少なくでき、コストを抑えられる
まあ現実にはDBや人件費の方が金かかるから大した効果はないんだからね
239:デフォルトの名無しさん
22/07/23 10:35:13.77 PgM2fTTz.net
>>234
IOバウンドが現代プログラムの主体というのはさすがに特定分野しか見てなさ過ぎ
240:デフォルトの名無しさん
22/07/23 11:04:56 zqWGCIwO.net
最近覚えたIOバウンドって言葉を使ってみたかったんだろうな
って感想しかない
241:デフォルトの名無しさん
22/07/23 11:22:01.68 YgKX3LKM.net
>>235
NodeやGoに比べて何%効率がいいの?なんかデータある?
242:デフォルトの名無しさん
22/07/23 11:24:44.12 YgKX3LKM.net
このスレにいるなんでもかんでもRustにしろおじさんはRust使ってる日本の企業是非あげてほしい
243:デフォルトの名無しさん
22/07/23 11:37:34.85 Oc+8bztj.net
MirakurunとMirakcとか見ればわかるけどメモリ効率が劇的にRustは優れてるけどCPUは大して変わらない
そこにコストをかけるモチベーションがどこまであるかって話じゃないの、録画サーバーはラズパイとか低スペPCで動かすっていうモチベーションがある
Rust推しの人はなんで実行コストのばかり話をして開発効率を軽視するのか?OS開発以外で企業で使われることはほとんどないだろうね。
244:デフォルトの名無しさん
22/07/23 11:37:55.41 XVn4RLKh.net
>>238
その2つを同列に並べるなよ
RustとGoの差よりNodeとGoの差のほうがはるかに大きいぞ
245:デフォルトの名無しさん
22/07/23 11:39:54.42 lSlSJyR5.net
>>239
ボッチの自宅開発者にそういうの求めるのは酷
246:デフォルトの名無しさん
22/07/23 11:50:03.97 gjUW5TY/.net
>>240
実行コストは情報隠蔽ができない高水準のスペック
だが開発コストは隠蔽できるので
低レイヤーの事情をいちいち考慮して右往左往したくないんじゃないかな
247:デフォルトの名無しさん
22/07/23 11:56:58.24 PgM2fTTz.net
>>240
開発効率の話は客観的な比較難しいのでは
なんか良い指標ある?
248:デフォルトの名無しさん
22/07/23 12:26:01 zqWGCIwO.net
>>244
普通にIPAが白書出してるよ
残念ながらRustは主要開発言語には入ってないけど
URLリンク(www.ipa.go.jp)
249:デフォルトの名無しさん
22/07/23 12:54:16.63 KTZwFAzP.net
>>245
それ見ると指標はFPかSLOCだけ
しかも両方とも主開発言語による有意な差はないという結論
調査方法を考えれば当たり前の結論だけどね
250:デフォルトの名無しさん
22/07/23 12:56:45.10 KTZwFAzP.net
そもそもIPAが土方のやり方を推奨してるのが問題
251:デフォルトの名無しさん
22/07/23 13:05:43 xNUThAwD.net
主観的にはRustはかなり開発効率高い
言語そのものもいいし周辺のエコシステムもいい
学習コストなんて二束三文だし
252:デフォルトの名無しさん
22/07/23 13:09:35 bizn9oDX.net
ScalaやHaskellでも同じこと言ってた
253:デフォルトの名無しさん
22/07/23 13:14:10 gjUW5TY/.net
他の言語で、初期化と代入の違いを学習したコスト
初期化時には参照カウントが2以上にならないという事実を認識するコスト
こういうのはRustの学習コストにはあたらない
254:デフォルトの名無しさん
22/07/23 14:13:31.48 vuZXWhrA.net
今更な話じゃなく次世代言語の話してくれ。
255:デフォルトの名無しさん
22/07/23 14:30:45.45 7X2pFb00.net
現状Rustはライブラリの選択と学習と継続的な監査のコストが著しく高い
速度やリソース面でそれを補って余りあるメリットがあるようなシステムにしか採用されない
言語だけでみればライフタイム周りの煩雑さがある分だけC#よりもやや面倒という程度
256:デフォルトの名無しさん
22/07/23 14:41:37.43 tu3rIwC3.net
rustが向いてるのは明らかにミドルウェア層だわな。
アプリ層で使おうとするとかまともに仕事で使ったことない奴の戯言でしかないわ。
257:デフォルトの名無しさん
22/07/23 14:51:11.37 zqWGCIwO.net
>>246
> しかも両方とも主開発言語による有意な差はないという結論
どこをどう読んだらそんなアホな結論に達するんだ?
URLリンク(i.imgur.com)
258:デフォルトの名無しさん
22/07/23 15:00:55.50 Bnag5ryf.net
むしろメモリ効率こそ現代の言語で重要なんだぞ?
CPUの性能は頭打ちというのを知らず?
259:機械学習みたいな行列演算するなら別だが普通のシステムプログラミングやWebアプリ、組み込みみたいな要件ではコアのパフォーマンスなど無意味 スクリプト言語みたいなGCコテコテの言語が速いことは絶対にない 現代のメモリアーキテクチャを知ってればあんなに参照を作りまくって オブジェクトに触りまくって速いわけない それはGoも同じ 現にGoは遅い 現代の言語での要件はスタックとヒープをプログラマが明確に意識でき かつメモリ管理を安全にできる これができているのは今のところRustのみ
260:デフォルトの名無しさん
22/07/23 15:14:50.07 QXN0FRoF.net
>>255
DockerとかKubernetesとかコンテナ技術を活用してマシンのリソースを有効活用するって流れになってるのはそうだけど
Rustで置き換えるってのは聞いたことがないな
> スクリプト言語みたいなGCコテコテの言語が速いことは絶対にない
それはIO待ちがほとんどないCPU処理が主体なプログラムでの話じゃない?
Goは適当に並行処理書いても極力処理がブロックしないように動作するけど
Rustは中断ポイントを自分で記述する必要があるから注意して書かないとGoより遅いなんてことはザラにある
このスレッドにあるベンチマークとか見ればいかにGoが優秀であるかがわかる
URLリンク(www.reddit.com)
IO待ち主体のプログラムはいかにブロックせずに処理するかが大事なのであってメモリ効率がボトルネックになることはないわ
261:デフォルトの名無しさん
22/07/23 15:31:18.71 Bnag5ryf.net
>>255
そういう特定のユースケースの話をしてるわけじゃないよ
そりゃベンチマークによって速かったり遅かったり
特定のエッジケースで速かったり遅かったりはあるでしょう
もっと数学的かつ抽象的に考えよう
ヒープにオブジェクトが1000個あります
しかしそのうち本当にヒープに乗せる必要があるオブジェクトが100個しかありませんでした
本来ヒープに100個しか必要のないオブジェクトなのに無駄な
ヒープアクセスが900個も起きてしまう
これをメモリ効率が悪いという
Goでもこれは起きうる
もちろんそれが*起きないように*書くこともできなくはないが
エスケープ解析などをしないとわからないし非常に難しいでしょう
しかしrustではこのようなことは起きない
262:デフォルトの名無しさん
22/07/23 15:31:55.55 Bnag5ryf.net
レス番間違えた
263:デフォルトの名無しさん
22/07/23 15:40:38.68 FAO+OpS7.net
自演失敗お
264:デフォルトの名無しさん
22/07/23 16:04:31.85 zqWGCIwO.net
>>257
> 無駄なヒープアクセスが900個も起きてしまう
> これをメモリ効率が悪いという
お前はまず用語をちゃんと使えるようになってから出直してこい
265:デフォルトの名無しさん
22/07/23 16:08:37.49 Bnag5ryf.net
>>260
よくわからない
何が間違ってるの?
266:デフォルトの名無しさん
22/07/23 16:14:43.93 PgM2fTTz.net
>>252
ライブラリの選択コストが低い言語ってのは標準ライブラリがでかい言語のこと?
267:デフォルトの名無しさん
22/07/23 16:22:30.56 zqWGCIwO.net
>>261
アクセス回数の話なら実行効率
メモリー効率は必要とされるメモリーの量
268:デフォルトの名無しさん
22/07/23 16:33:12.53 L+Wx1/B2.net
自演rust狂信者の圧倒的な敗北.....
Rc<T>で無駄なメモリアクセスが起きてることを分かってない。参照カウントで、かなり無駄なカウントアップ・ダウンが現実に起きてるし非効率。
エスケープ解析なんぞでわかるのはほんの一部、goでメモリアクセスが遅めに見えるのは、goroutine間の変数への排他制御が無いからだしG
269:Cのせいでもない 古典的なメニーコアを素直に活用できない言語では起きない事を同じ土俵で無理に比べようとしている 確かにgoやrustがstructを使って、javaのようにobjectではないのはメモリー効率を考えているけど、ピープなんちゃらの説明はホントに 分かってないアホの説明。GCで掃除される対象の変数へのアクセスのことを言いたいのだと思うけど、そんなのアクセスするかはGCアルゴリズム次第だ 1回でいいから参照カウントの欠点を調べてこい
270:デフォルトの名無しさん
22/07/23 16:47:16.76 GCyS0Uey.net
AndroidアプリをKotlinベースで作っているんですが、
一定時間スマホ操作ができなくなるような機能を作りたいのですが、どうやればできますかね?
いわゆるデジタルデトックスアプリみたいに、一定時間画面を覆って操作できなくなるアプリ
(バックグラウンド写ったりしないやつ)を想定してます
271:デフォルトの名無しさん
22/07/23 17:07:56.92 ObegvUfD.net
>>263
無駄なヒープアロケーションが900あるって書いてあるやん
>>257の文章は気持ち悪いけど
そういうことは起きうるよねとは思うよ
272:デフォルトの名無しさん
22/07/23 17:11:14.32 4etWwAtX.net
>>265
セキュリティ的に問題があるから無理
何もできないホームアプリを作って設定するくらいじゃないかな
それでも抜け道を完全に防ぐことはできないと思う
奥の手としては、バックグラウンドサービスでマルチスレッドで無駄な計算をぶん回して使用に耐えないくらい重くすればいい
273:デフォルトの名無しさん
22/07/23 17:30:04.86 zqWGCIwO.net
>>266
> 無駄なヒープアロケーションが900あるって書いてあるやん
お前プログラマに向いてないだろ...
書いてあるのは
> 無駄なヒープアクセスが900個も起きてしまう
な
274:デフォルトの名無しさん
22/07/23 18:08:33.07 jqS/WIc6.net
>>264
プログラミング経験が少なく勘違いしてるのだと思うけど
C++のshared_ptrやRustのRc/Arcはほとんどのプログラムではその出現が0個~数えられる程度
別の者が同時に同じ物を指し誰が使い終わるかわからないという特殊な状況でしか使われないため出現がレア
実際にプログラミングをするとそのようなケースは多くを避けることができるため極一部でのみ使用となっている
ガベージコレクション言語が全てをガベージとして捨てて回収するコストと比較してC++とRustのこの極一部のみを参照カウントで管理する方式は圧倒的に速くて有利となっている
275:デフォルトの名無しさん
22/07/23 18:17:12.38 IVV76sYn.net
> C++のshared_ptrやRustのRc/Arcはほとんどのプログラムではその出現が0個~数えられる程度
🤭
276:デフォルトの名無しさん
22/07/23 18:23:45.94 1dNQWzE2.net
>>256
それは無意味な比較
いくつもリプライコメントが付いて指摘されているように
まずまもともな並行処理コードの比較となっていない
次にそのコードのことをしたいならば別の適用をすることでGoとRustでほぼ同じ時間となることもリプライで示されている
きちんと読まずにそんなことでRust叩きをするアンチは愚か
277:デフォルトの名無しさん
22/07/23 18:28:20.30 PgM2fTTz.net
>>264
何と何を比較していて何が優れていると言っているのかがまったくわからん...
主張を明らかにするかID変えないで発言追えるようにしてくれ
278:デフォルトの名無しさん
22/07/23 18:43:45.96 QXN0FRoF.net
>>271
リプライ読んだ上で言ってるけど?文盲か?
Goはランタイムが賢いから適当に書いても極力ブロックしない様に高速に動作する
Rustは中断ポイントを自分で指定する必要があるから無駄にブロックしないように注意しないといけないって書いたよね?
つまり適当に書いたGo>>>適当に書いたRust
となるわけ。
279:デフォルトの名無しさん
22/07/23 18:45:49.99 1dNQWzE2.net
>>269
Rcが極一部にしか出てこないのもそうだが
>>264はもっと大きな勘違いをしていて「Rc<T>で無駄なメモリアクセスが起きてる」と書いて参照カウントを批判している
実際にはRc<T>にアクセスしても付加コストはゼロでRc�
280:ナないポインタとコストは同じ つまり無駄なメモリアクセスは発生しない 参照カウントにアクセスされるのは生成clone時や解放drop時などのみ
281:デフォルトの名無しさん
22/07/23 18:50:33.61 1dNQWzE2.net
>>273
中断ポイントを自分で指定するとは意味がよくわからないので解説してほしい
もう一つ、適当に書いたコード同士の比較をしていることも現実離れしていて何をしたいのかわからない
282:デフォルトの名無しさん
22/07/23 19:26:59.84 zqWGCIwO.net
>>273
> つまり適当に書いたGo>>>適当に書いたRust
そういう主張ならGoのほうが楽に書けると言うべき
283:デフォルトの名無しさん
22/07/23 20:04:44 C7rfIgjP.net
>>276
ちよっと違う
その部分の話に限定すると
Goは他に選択肢なく書けてそこそこの性能が出る素人向け
C++/Rustはもっと多様な選択肢を取れてGoより高い性能を出せる玄人向け
そのことに加えてGoはランタイムコストが高くメモリについてもGCコストがかかる
あとGoは使用が適している分野が狭い
284:デフォルトの名無しさん
22/07/23 20:24:12.66 z/1+plFJ.net
つまりエンタープライズに適してるのはGoで
選ばれた人が作る出来のいいOSSに適してるのはRustだな
玄人によるRust>>>>>>素人によるGo>>>ここにいる自称玄人によるRust
ということだな
285:デフォルトの名無しさん
22/07/23 20:37:54.47 1dNQWzE2.net
>>278
使っているとGoは性能面だけでなく開発面での限界も感じてくる
Goはあくまでも簡素なスクリプト言語+αの位置付け
286:デフォルトの名無しさん
22/07/23 20:43:18.42 z/1+plFJ.net
とか自称玄人がほざいておりますわw
287:デフォルトの名無しさん
22/07/23 20:59:08.03 wfVoITZZ.net
>>279
さすがにお前が言うと説得力ゼロ
288:デフォルトの名無しさん
22/07/23 21:00:05 uphZtYPd.net
Goの出自からしてpythonの置き換えみたいなとこあるし。
289:デフォルトの名無しさん
22/07/23 21:02:59 C7rfIgjP.net
Goは言語仕様が弱すぎて開発に向かないが並行プログラミングが上手くできるスクリプト言語と捉えると優秀なスクリプト言語
290:デフォルトの名無しさん
22/07/23 21:13:25.84 PT0x9Gwm.net
Googleはわざわざ開発に向かない言語を開発して社内で使ってるわけかw
Google社員ですらC++は扱えずに問題だらけだったからそれらを解決するためにGoを開発したわけだけどな
Rustは明らかにC++の代替だね。つまりOS開発やドライバ開発、OSS用途に向いてるだろうね
で、WebプログラミングをC++ってやりますかって話ですよ
ここにいる自称玄人の方々はOS開発とかドライバ開発とかしてないくせにRustという言語使ってることだけにアイデンティティを感じる可哀想なおっさんなんだよな結局
だから他言語を馬鹿にしてマウント取ることに生きがいを持った人生を送ってるわけだね
Goで作られた素晴らしいソフトでDockerやKubernetesやGoogleサービスがあるわけだけど、重要なのは何を問題解決するであって特定の言語をこだわって作るわけじゃないよ、自称玄人さんw
291:デフォルトの名無しさん
22/07/23 21:33:42.76 7qigD5jo.net
>>284
RustをC++の代替としてしかとらえることが出来ないのは理解不足だな
CやC++とは異なりRustは自動メモリ解放だからという理由だけではないが現実にJavaからRustへの移行も起きている
さらにスクリプト言語からの移行例もある
これらは高速さや省メモリの観点からだけではなく並行並列プログラミングにおけるデータ競合の問題までもRustは解決していることが大きい
Rustがデータ競合をコンパイル時にエラーとして見つけ出してくれることはバグの減少や実行時デバッグの激減ももたらしている
292:デフォルトの名無しさん
22/07/23 21:34:22.09 yM9izZ/V.net
webやってる人間ならむしろrustに好意的になるよ
子供にはわからんか
293:デフォルトの名無しさん
22/07/23 21:36:09.58 u2Y0Vizw.net
docker,kubernetesを実装しても開発言語に向かないとか言われちゃうの意味わからんわ。
294:デフォルトの名無しさん
22/07/23 21:44:18.63 PT0x9Gwm.net
>>285
295:日本企業の採用例は?どこに移行例があるの? メルカリはGo使いまくってるみたいだけどそういう企業ってRustあるの? GoogleやMicrosoftもOS開発で注目してるだけだよね? データ競合なんて多数あるバグのほんの一部でしかないしそれだけ持ち出されても何も響かないね 競合状態は防げないわけだし、データ競合ならGoでもランタイムだか検知する機能はある、テストでも検知できる、それで十分としか思わないね。
296:デフォルトの名無しさん
22/07/23 21:44:33.34 C7rfIgjP.net
>>287
Goは言語仕様が弱いから開発には不向きだけど
高度な仕組みは不足していても地道に書いていけばもちろん何でも作れる
成果物があることと開発に向いていないことは矛盾しない
297:デフォルトの名無しさん
22/07/23 21:53:20.94 PT0x9Gwm.net
>>289
〇〇の機能がある自慢ならHaskellやScalaもよくされていたけどこれらの言語って普及しましたかね?
継承を排除してるのがその代表例。
Goの割り切ったシンプルさはエンタープライズでの大規模スケールするソフトウエアの開発を促進させている
RustはOS開発やドライバ、組み込みには普及することはあるけどWebやバックエンドといった高レイヤーでは確実に普及しない。理由はScala、Haskellが普及しないのと同じ。
機能自慢だけで企業で使っていくための実用性がない。
Googleでさえ社員がC++など複雑な言語を使いこなせないからあえて機能を削ったGoを採用している。
298:デフォルトの名無しさん
22/07/23 21:55:03.92 7qigD5jo.net
>>288
日本企業にこだわるところが理解できないが
例えばクックパッドがRubyで遅いのをRustへ移行した例などあるだろう
Goはランタイムがデータ競合を検知するとの主張は実行時の時点でGoの敗北を意味している
データ競合を静的に実行前に検知できるようにしたRustを使うほうがよい
299:デフォルトの名無しさん
22/07/23 21:55:41.92 PT0x9Gwm.net
低レイヤー何も触ってないくせにマウント取るためにRust使って他言語貶めてるゴミクズが多すぎるわ
もはやマウント取ることが目的になってる
300:デフォルトの名無しさん
22/07/23 21:55:49.25 PgM2fTTz.net
>>288
並列絡むバグをテストで検知できれば十分というのは同意できないなぁ
Goがその辺頑張ってるのは知ってるけどそれでも
301:デフォルトの名無しさん
22/07/23 22:00:23.38 PT0x9Gwm.net
>>291
開発コストはなんで度外視するの?
例えば単体テストはカバレッジ100%行かなくてもリリースするわけでしょ?それは開発コストとトレードオフをかけた結果80%とか基準を下げてるって面もあるわけ
データ競合は防げても競合状態はRustでも防げないわけで並行処理プログラミングが確実に安全に書けるって保証されてるわけでもないぞ
データ競合なんで数あるバグのうちの1つしかないわけで
GoとRustだと明らかに開発コストは桁違いであって特に新規にプロジェクトに参加したメンバーがいる場合に差が出てくるね
302:デフォルトの名無しさん
22/07/23 22:02:31.75 PT0x9Gwm.net
>>291
てめーが移行例がたくさんあるとかほざいてるから聞いてんじゃん
日本人なんだからまず日本企業の採用例を聞いてるわけだが
海外企業でもいいよ
ごくごく一部しかないだろ
大半はOS開発用途。
303:デフォルトの名無しさん
22/07/23 22:03:24.19 PT0x9Gwm.net
Discordしか知らないだろう自称玄人どもはw
304:デフォルトの名無しさん
22/07/23 22:08:40.01 PT0x9Gwm.net
Web業界でC++よりRubyが流行ったのも開発コストの削減が目的なのであって
RustがRubyみたいにWeb業界で普及することはないだろうね。
自称玄人は実行コストのことしか考えないがそれならアセンブリが最強だろ。
結局開発コストと実行コストが優れてるGoが現時点での最適解となる。時点でNode(Deno)
RustがWeb企業で普及することはまずないね。OS開発の用途では普及していくだろう、
305:デフォルトの名無しさん
22/07/23 22:12:19.51 RQhphYGe.net
>>290
勉強してからRustを批判した方がいいよ
継承を排除したことをGoの利点と言われてもRustも継承がなくGoと同じだよ
Rustは従来の言語にあった不要な部分や古い部分をばっさりと切り捨てて最新の高機能なパラダイムを組み合わせてシンプルに作った言語
だからRustもGoと同じくクラスも無いし例外(try-throw-catch)も無い
一方でRustは例えば代数的データ型のようなシンプルかつ有用なものを採用
代数的データ型を採用せずに次世代言語を名乗るのはおこがましいので例に出しました
Goとの比較で言えばGoは代数的データ型を欠いているためにエラー返り値の面倒な扱いを招いています
同じように例外を無くしてもGoは記述が面倒になりRustは便利になっていますね
306:デフォルトの名無しさん
22/07/23 22:51:05.66 jaxJ03Ml.net
だからお前ら次世代言語の話しろよ。
それ以外は別スレ建ててやれや。
307:デフォルトの名無しさん
22/07/23 22:53:24.42 IVV76sYn.net
Rust賛否議論に最適なスレッドがこちら!
スレリンク(tech板)
308:デフォルトの名無しさん
22/07/23 23:07:13.56 7L6l8ELk.net
実際、次世代言語でやるべきメモリ管理や並行処理の課題はRustだけが取り組んでる感じがあって、それ以外の次世代言語はなんかパンチがないよな。
このスレで次世代言語として上がってるTypeScriptやSwiftやKotlinとかも、既存資産を使いつつモダン言語に緩やかに移行できます~がウリで、言語自体の挑戦があまり感じられないというか。
309:デフォルトの名無しさん
22/07/24 00:59:14 POYobNlQ.net
Goのシングルバイナリは魅力的だけどRustはどうなの
簡単にexe作れる?
310:デフォルトの名無しさん
22/07/24 01:00:34 cSogl1Kz.net
>>302
簡単に作れるよ
311:デフォルトの名無しさん
22/07/24 01:01:51 POYobNlQ.net
素晴らしい
Rustやるわ
312:デフォルトの名無しさん
22/07/24 01:13:50.56 RIVbLJGX.net
>>301
次スレからはtypescript, swift, go, kotlinはスレタイから外せよ。
313:デフォルトの名無しさん
22/07/24 01:30:40.07 iVL8opWs.net
次世代言語ってどういう意味
そこに序列されるためには既存言語にない画期的な仕組みが必要なのか
314:デフォルトの名無しさん
22/07/24 01:45:52 RIVbLJGX.net
>>306
んなもんカッチリした定義なんてあるわけ無いだろ。アスペかよ。
少なくともtypescript, swift, go, kotlinは対象外だろうよ。
315:デフォルトの名無しさん
22/07/24 02:35:17.60 40vv7Sn8.net
>>306
画期的な仕組みでなくてもインパクトのあるものは多い
例えば>>298の代数的データ型なんて古くからある概念で特に関数型言語では昔から使われてきたものだけど
手続き型言語では導入されなかったり導入されていても有効活用できていなかったり
ようするに代数的データ型は無縁か役に立たないか相性が悪いものと思われていた
ところがRustがその代数的データ型をタグ付きunionとなる形の値付きenumとして採り入れて
さらにこれも関数型ではお馴染みのOptionやEither (RustではResult)を
そのenumで表現してRust標準ライブラリの中枢に据えることで
非常に便利で言語の中心として機能する重要なインフラとして一気に昇華させてしまった
つまり古くからある概念や仕組みであっても
有用な形で言語に採り入れることでインパクトのあるものになりうる
次世代言語と称せられる言語はそういうインパクトのある何かが多数あるのだろう
316:デフォルトの名無しさん
22/07/24 02:40:05.18 A2ivE9+A.net
もうワッチョイつけろ
317:デフォルトの名無しさん
22/07/24 03:54:31.36 QogZ4c3I.net
swiftでアプリ作るか〜って弄ってるので次世代実用言語なら外してもらっちゃ困るし
次世代にはなんとかなるんじゃないかな〜って寝言言語のスレなら外してもらっていいよー
318:デフォルトの名無しさん
22/07/24 07:13:10.2
319:0 ID:a/nVuE5F.net
320:デフォルトの名無しさん
22/07/24 07:18:35.77 a/nVuE5F.net
とにかくWebやバックエンドといった高レイヤー層でRustが流行ることはないのは事実である
論破してみろよ自称玄人は
具体的に移行している企業もDiscordしか知らないみたいだし、Discordでも一部の部分しか採用してない
〇〇の機能があるから優れてる自慢はHaskellやScalaでも起こってた、でも流行らなかった
流行るのはGoやPythonのように機能を削った言語
RustにはOS開発など低レイヤーには必要な要素が詰まっているが高レイヤーでは不要なものだらけである、だから普及しないんだよ自称玄人さん
321:デフォルトの名無しさん
22/07/24 07:25:40.56 POYobNlQ.net
確かにWebでどうなるかはよくわからないな
ひょっとしたらJavaみたいにエンタープライズが使い出すのかもしれん
Webとの関連でいうと個人的にTauriには大いに期待している
322:デフォルトの名無しさん
22/07/24 07:26:19.38 a/nVuE5F.net
自称玄人はOS開発やドライバ開発など低レイヤーの経験など一度もないのに、畑違いであるRustを使ってるだけにアイデンティティを感じている孤独なおっさん
だから高レイヤー層では流行らない言われても論理的に反論できず、他言語を貶めて他人にマウントを取ることしかが脳がない
Rustを使っていることが唯一のアイデンティティの哀れなおっさん
323:デフォルトの名無しさん
22/07/24 07:51:53.73 CneNKog7.net
俺もWeb周りで使われるのはかなり限定的になるんじゃないかと思うな。良い言語だけど採用しただけの価値が出る領域はかなり狭いよ。
324:デフォルトの名無しさん
22/07/24 07:59:04.44 bdlqmtah.net
Web と一括りにしてる時点で議論の対象にならんクズレスでしかない
325:デフォルトの名無しさん
22/07/24 08:07:30.03 eIrt9sO8.net
valeのGenerational Referencesって面白くない?
URLリンク(verdagon.dev)
所有者は一つだけだけど非所有者の参照はいくつも持てる。
各ヒープメモリに世代カウントを付けて、参照はポインタ+世代カウント+オフセット値のようなデータになる。
参照先にアクセスするときはヒープの世代カウントと参照の世代カウントを比較して不一致だったら解放されたメモリにアクセスしたと見なせる。
参照をコピーするときは参照カウンタのようなカウントを増減する必要は無い。参照をそのままコピーするだけ。
326:デフォルトの名無しさん
22/07/24 08:20:10.22 +L63FAhG.net
ときどき現れる、自分んとこにRustがやってくるのが怖くて吠えまくるおじさん
Rustが使えるだけでマウントなんてとるわけないのに、劣等感で震えすぎ
327:デフォルトの名無しさん
22/07/24 08:24:03.54 bdlqmtah.net
>>317
これほんとか?
This is cheaper because programs dereference less than they alias and dealias
328:デフォルトの名無しさん
22/07/24 08:36:32.88 a/nVuE5F.net
>>318
やってこないから(笑)
329:デフォルトの名無しさん
22/07/24 09:01:53 eIrt9sO8.net
>>319
それは確かに怪しいっぽい
330:デフォルトの名無しさん
22/07/24 09:25:03.61 Y1YiiPBC.net
前はRustなんてどの領域でも採用されないと主張していた
その後は大手は採用しないとか、言語オタクしか使わないとか言い出して、今はwebに来ませんようにとお祈りしてる
331:デフォルトの名無しさん
22/07/24 09:26:39.85 hnBeY/7d.net
いや、使われていないだろう。
332:デフォルトの名無しさん
22/07/24 09:35:45.64 hnBeY/7d.net
黒魔術を禁止したいRust。
それはものすごく正しい。
Javaと同じ理念なので、Javaと同じように成功するだろう。
しかし、黒魔術使いがRustを使いたいと思うこともないだろう。