X



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

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

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

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

移植なんてしたことないしあくまでも想像だけど
0441デフォルトの名無しさん
垢版 |
2022/05/03(火) 00:46:48.18ID:Hze7UEQ+
>>437
”Rustはヒープ無しでも動作する”、不正確でダウトといっても良い。”Box<T>を使わない場合、Rustは最小のメモリで動作する”
一般的に最小のメモリとはプログラムをメインメモリにロードした領域であり、それ以外にも、ヒープ解析すればRustの場合は、
Config structなどが多数メモリにロードされていることが分かります。後半の文は意味不明。
0443デフォルトの名無しさん
垢版 |
2022/05/03(火) 01:10:00.15ID:Fo6zlgca
>>441
知識が浅すぎる
Rustはヒープ無しでも動作する、で正しい
そのためRustの標準コアライブラリcore::はヒープ無しで動作するように作られている
std::のうちcore::以外の部分はヒープを用いており明確に両者は区別されている

>> ”Box<T>を使わない場合、Rustは最小のメモリで動作する”

意味不明
Box<T>はヒープを使う型の一つに過ぎない
それ以降の記述は全く意味不明
0446デフォルトの名無しさん
垢版 |
2022/05/03(火) 02:51:30.24ID:K+UwgLRo
ベアメタル等OSなしでも動作しないといけないため
Rustはヒープを前提とせずに動くよう設計されている
0449デフォルトの名無しさん
垢版 |
2022/05/03(火) 06:33:11.84ID:fvC5V6zC
>>448
そのどれかのブラウザがインストールされてない端末って何がある?
Linuxと組み込みくらい?
0453デフォルトの名無しさん
垢版 |
2022/05/03(火) 11:37:27.15ID:+GUXg/j9
>>448
もし本当に視聴不可となったら技術力が無さすぎる
昔ならともかく今の時代にブラウザ依存なコードを書くのはダメなプログラマーの典型
視聴不可ではなく動作確認するブラウザの数を絞るなら理解できる
0454デフォルトの名無しさん
垢版 |
2022/05/03(火) 11:57:44.21ID:TRGOwhZ/
> 「Firefox」など、上記3ブラウザ以外での動作はもともと確認しておらず、推奨ブラウザには加えていなかったという。
> 「5月23日以降に予定している設備更新に伴い、Firefoxでは動画が完全に再生できなくなる

どういう設備更新なんだろうな・・・
WebKit系じゃないと使えない仕組みがあるのか
0455デフォルトの名無しさん
垢版 |
2022/05/03(火) 12:01:19.67ID:WbhGI2Ja
今どきはブラウザ依存な書き方する方が面倒だろう。普通にテストしてないだけでは。
0457デフォルトの名無しさん
垢版 |
2022/05/03(火) 12:10:09.97ID:DDJgB2x8
chromiumにしか実装されていない独自拡張機能に依存したAPIに手を出したとか??
でもSafariで動くなら違うか
Firefoxでだけ動かないコードなんて可能なのか??
0462デフォルトの名無しさん
垢版 |
2022/05/03(火) 19:33:27.34ID:5FiUhjhg
>>461
君は何らかの大きなシステム開発に関わったことがないのかね?
どんな言語と言語の場合でも一気にやることは不可能かつムダ
新規部分や改修部分に絞って手を付けていく
0464デフォルトの名無しさん
垢版 |
2022/05/03(火) 20:22:09.94ID:jGM9XRro
Chromeの方がセキュリティバグ多いよな
頻繁にバージョンアップしろと言ってくる
0465デフォルトの名無しさん
垢版 |
2022/05/04(水) 19:26:52.80ID:mmwxiGlB
>>464
JVN iPedia - 脆弱性対策情報データベース。https://jvndb.jvn.jp/
期間指定なし
・safari 884件
・edge 1054件
・firefox 1989件
・chrome 3464件
期間指定2018/01から
・safari 48件
・edge 391件
・firefox 492件
・chrome 937件

とはいえ、Chromeのほうがローリングリリース・ローリングアップデートの期間が短い(現在は4週間)2021/3頃から6週間から変更された。
以前はFirefoxはローリングリリースを採用していないかった。またChormeの使用者がFirefoxより10倍なので脆弱性も発見されやすい。
何かと問題なSafariの脆弱性がこれだけのはずが無く、脆弱性報告数=危険なブラウザとははっきり言えない
0471デフォルトの名無しさん
垢版 |
2022/05/05(木) 17:00:01.71ID:SGcHNlDo
>>448
そもそもNHKは見ないのでどうでも良い。
0473デフォルトの名無しさん
垢版 |
2022/05/05(木) 19:26:31.90ID:kRCOTufr
>>472
ウィグル弾圧に使われてる可能性が高い。
0474デフォルトの名無しさん
垢版 |
2022/05/05(木) 19:30:55.61ID:kRCOTufr
Rust厨がウザいからだろ。
0475デフォルトの名無しさん
垢版 |
2022/05/05(木) 19:32:25.99ID:kRCOTufr
いまどきウェブ見てて落ちるブラウザなんてファイアフォックスくらいだし、そこらへんは忠実にネスケ以来の伝統を受け継いでて驚く。
0476デフォルトの名無しさん
垢版 |
2022/05/05(木) 19:35:07.40ID:Z9g54GsT
トリビア:Firefoxユーザーはレベルが高いの致命的なバグがあっても自分で治して使っている
0477デフォルトの名無しさん
垢版 |
2022/05/05(木) 20:13:12.39ID:3l2hzI76
>>475
ここ数年間の常用者だがFirefoxが落ちたことがない
もしデマカセを言っているのでないのならばどういう状況で落ちたのか語ってほしい
0482デフォルトの名無しさん
垢版 |
2022/05/05(木) 21:55:22.29ID:V626dp+O
>>481
それメモリが少なすぎたとか
メモリを超える巨大なデータを読み込んだとか
無数にタブを開いたとかそういうオチだろ
0483デフォルトの名無しさん
垢版 |
2022/05/05(木) 22:30:44.53ID:VIM8YOLC
逆に100兆個のタブを開いて落ちないブラウザってどれ?
0485デフォルトの名無しさん
垢版 |
2022/05/06(金) 04:53:59.90ID:qTXbaZrR
メモリ不足を、クラッシュせずに通知くらい【余裕】にできないと。

当たり前のこともできない。所詮現世人類の我々の技術力はそこまでということだ――
0486デフォルトの名無しさん
垢版 |
2022/05/06(金) 06:06:43.53ID:dyg36AcX
>>477
Windowsでタブレットモードにしてると頻繁に落ちるな。
0487デフォルトの名無しさん
垢版 |
2022/05/06(金) 06:07:47.49ID:dyg36AcX
落ちるというか、無限ループしてるっぽいんだよな。
入力を受け付けず、タスクマネージャで見るとCPUをぶん回してる。
0489デフォルトの名無しさん
垢版 |
2022/05/06(金) 06:56:47.40ID:dyg36AcX
頻繁に落ちるのに、落ちないとか信者が言い張るのも、ネスケ以来の伝統だよな。
0490デフォルトの名無しさん
垢版 |
2022/05/06(金) 07:00:58.40ID:eCfsRziE
英語設定のLinuxだけど落ちないよ?
バグってるのはサイトかホストなのでは?
0491デフォルトの名無しさん
垢版 |
2022/05/06(金) 09:07:58.30ID:PZ471HHG
Windowsでここ何年か使ってるけれど、
特に気になる動作は無いけれどな。

Edgeの印刷で返ってこない方が辛い。
0492デフォルトの名無しさん
垢版 |
2022/05/06(金) 09:58:30.45ID:+sslkA2r
FireFoxで微妙に表示が崩れるとChromeだとちゃんと表示されるのか気になる
表示させてみて同じだとホッとして違ってたらがっかり
0494デフォルトの名無しさん
垢版 |
2022/05/09(月) 20:38:44.58ID:X0x/BBIp
Rustが、Goの最大の競合相手であることが明らかになったってよw

プログラミング言語「Go」、開発者の満足度やニーズは?
https://japan.zdnet.com/article/35187065/
また調査では、Goの主なライバル言語が「Rust」「Python」「Java」「TypeScript」であることも明らかになった。RustとGoは、どちらもシステムプログラミング言語であり、開発者には広く評価されているが、「JavaScript」や「Python」ほどの人気はないようだ。

 しかしこの調査では、Amazon Web Services(AWS)、Google、Microsoftの支持を受けているRustが、Goの最大の競合相手であることが明らかになった。Goの代わりに選ぶとしたらどの言語を選ぶかという設問では、回答者の25%がRustを選ぶと述べており、17%がPython、12%がJava、8%がTypeScript、8%がC#と回答していた。

 「最もよく選ばれているのは、Rust、Python、Javaだ。RustとGoの機能セットは補完的な関係にあるため、あるプロジェクトに必要とされる機能がGoにない場合、Rustは優れた選択肢になるかもしれない」とMerrick氏は述べている。
0495デフォルトの名無しさん
垢版 |
2022/05/09(月) 20:53:04.96ID:S0Cki9Rv
>>494
競合なのは事実だろうけどGoやってるような人はRustも必要になれば普通に使えるでしょ
エンジニア目線では特に対立関係にないから煽っても無意味だぞ
0496デフォルトの名無しさん
垢版 |
2022/05/09(月) 21:00:58.52ID:DoAIqFb7
競合ではなく両方利用
Goで不十分なところはRustで書いている
どこでもそうだよ
0498デフォルトの名無しさん
垢版 |
2022/05/10(火) 03:38:38.78ID:I4A9nNIt
理想の家族

父 40歳 海外へ単身赴任(死ぬまで)
母 35歳 息子に甘い
姉 17歳 弟に甘い
俺 44歳
妹 15歳 多感な時期 俺に反発しながらも。。?
猫 ウンチしない 抜け毛ない 俺の声かけに無視しない
0499デフォルトの名無しさん
垢版 |
2022/05/10(火) 08:39:54.21ID:Hhyd/l4r
>>495
そうだぞ。
競合なのは事実だろうけどGoやってるような人はRustも必要になれば普通に使える、という体で話さないと嫌われるぞ。
それに、裁量権のない作業者の間では対立関係にないから煽っても無意味だぞ。
0500デフォルトの名無しさん
垢版 |
2022/05/10(火) 20:07:58.34ID:8UHmp6CE
低レイヤーはRust
高レイヤーはGo

この使い分けじゃいかんの?同じシステムプログラミング言語でも毛色が違うだろ

GoogleとMicrosoftがRustに注目しているのもOS開発の目的であってGoでOS開発作ろうとはならんでしょ
0501デフォルトの名無しさん
垢版 |
2022/05/10(火) 21:01:49.31ID:mOdSHL41
主張はわかるが、これはもしや片思いみたいなものではと見ている。

仮にGoユーザーの多くが低レイヤーにRustを使いたい結論だったとしても、
Rustユーザーの多くが高レイヤーにGoに使いたいという結論にはならない。
よってカップル不成立。
0504デフォルトの名無しさん
垢版 |
2022/05/10(火) 22:34:17.72ID:M/BIyD/S
Goは良くも悪くもCっぽくって人間が気をつけて書かないといけない部分が多いんだよな
一度Rustに慣れてしまうと、Goで隅々まで気を使うのが面倒くさくなってしまう
もちろん既存のGoプロジェクトはGoのまま書くけど、新規ならなるべくRustにしたくはなるな
0505デフォルトの名無しさん
垢版 |
2022/05/10(火) 22:37:05.44ID:1A7PmF6X
LinusはgitをC+シェルスクリプトで書いてた
書こうと思えば書ける

でも普通に記述に時間がかかるので今は他の言語も役割分担してる
0506デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:04:46.44ID:7R870FiC
Rustはデータ競合らへんは起きないけど、Box、Rc、Arenaを気をつけて使い分けないといけないのとか面倒だと思うけどな
0507デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:36:04.65ID:M/BIyD/S
Goの一番の面倒さはnilとエラーハンドリングかな
Option/Result型だけでも特別に用意されてれば、もっとGo使ってたかもしれん
0508デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:49:42.04ID:Lq7F/6H2
>>506
Rcは出てこないプログラムも多い
Arenaはほぼ完全に出てこない
つまりそれらレアケースを元に語るのは現実的ではない
0509デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:52:42.15ID:1A7PmF6X
Rustで引っかからずコードを書き上げるのはかなりの猛者だと思うよ
本当の意味での言語仕様部分は何とかなるかもしれないけどそこから先がつらい

入門4冊目の「コンセプトから理解するRus」tを読んで途中で投げ捨てた
本自体は良書なんだけどtrait境界がもう人間の理解を超えてる

Cだと時間をかければ書き終えれるけどバグが入ってる可能性がある
0510デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:56:51.45ID:1A7PmF6X
Rustはある程度から人間の理解を超えて来るので一定程度以上勉強しても無駄かなと
0513デフォルトの名無しさん
垢版 |
2022/05/11(水) 00:06:17.66ID:0PGn8I2M
プログラミングはは知的生産だと思ってたけどこれはもう違う別の何か
他人の書いたコードは意味が分からないというけどそれ以前に自分で書いてもわけがわからない

理解の外にあっても動くからあっている
コンパイルエラーが出ないからあっている

それは本当に正しいことなのか
バグが入ってないのかはもちろん期待した動作なのかすらわからない

人間が揺さぶられてきている
0516デフォルトの名無しさん
垢版 |
2022/05/11(水) 00:13:46.50ID:q+AJMQiL
>>509
そのtrait境界は意外に理解が簡単だった
ジェネリックにプログラムを書く時にそのジェネリックな型には何が来てもいいわけではなくて
書くプログラムの中で使っている機能(というかインタフェースというかメソッド)を持つ保証する(というか限定するというか制約条件を並べる)こと

例えば本スレからコピペだけど以下のフィボナッチ数列イテレータ
型へのtrait境界がwhereのところにあるClone(複製できること)とTryFrom<usize>(数値から変換できること)とnum::CheckedAdd(オーバーフロー検知付き足し算ができること)の3つを満たしてればどんな型でも適用可能

fn fibonacci<T>() -> impl Iterator<Item=T>
where T: Clone + TryFrom<usize> + num::CheckedAdd,
{
let [zero, one] = [0, 1].map(|n| T::try_from(n).ok().unwrap());
itertools::unfold((zero, one), |(m, n)|
m.checked_add(&*n).map(|f| {
*m = n.clone();
*n = f.clone();
f
})
)
}

pub fn main() {
for f in fibonacci::<i8>() {
print!("{f} ");
}
println!();
}
0517デフォルトの名無しさん
垢版 |
2022/05/11(水) 00:18:22.19ID:xUytDrfJ
実際にトレイト境界の条件の実装部分を読んでみた

シンプルなマクロで書かれてる部分もあれば複雑な部分もある
そこで書いてある実装が本当に確実の条件を満たしうるのかは分からないし
ドキュメントを読んでも厳格な意味が書いてあるわけでもない

どこかで漏れがあってもわからない
0518デフォルトの名無しさん
垢版 |
2022/05/11(水) 00:37:16.75ID:xUytDrfJ
例えば条件の一つがよくよく考えてみればさらに二つに分離して考えないといけないものだと
後で判明するともう既存のコードがみんな死んでしまう
使用してる所を全部さかのぼって修正しないといけない

それかRust自体の仕様変更で死んでしまったりいろいろ死にそうな要因がたくさんある
マクロでやりすぎてる
0520デフォルトの名無しさん
垢版 |
2022/05/11(水) 11:02:33.31ID:ut6S4c2T
Rustの標準ライブラリの設計がそもそも間違ってて、その修正のために破壊的な変更がいきなりきたら大変だ、って話?
そんな馬鹿な、と笑っちゃうね
0521デフォルトの名無しさん
垢版 |
2022/05/11(水) 12:27:47.37ID:0Stn7tVM
サプライチェーン問題は批判理由が見つからない人が持ち出しがち。

マクロがない言語だと、同じ機能をコンパイラやらランタイムが持ったりするわけだが、不思議に誰もそれらの機構を疑わなかったりする。

中身が可視化されたのに逆に疑わしく感じた場合は、まずは自分の知識が足りなかったことに気づきましょう。
0522デフォルトの名無しさん
垢版 |
2022/05/12(木) 17:29:32.27ID:LSv3zttQ
実装の問題は重要だろ。
そもそも実装と独立に仕様だけ語れるような作りにrustはなってない。
0523デフォルトの名無しさん
垢版 |
2022/05/12(木) 18:12:00.76ID:cxVwbP/0
何を問題視してるのかもうちょっとわかりやすく書いてくれないと議論にならん
0525デフォルトの名無しさん
垢版 |
2022/05/12(木) 18:20:37.20ID:q5adbU17
コーダー風情にはどこら辺に問題があるかすらわからないんだ
ほっとけばいい
0527デフォルトの名無しさん
垢版 |
2022/05/12(木) 19:03:55.20ID:KS5+XyCs
依存型ってrustは入れてないやろ
0529デフォルトの名無しさん
垢版 |
2022/05/13(金) 10:40:27.81ID:fhDjEdn1
>>521
ランタイムが持ってる言語ならランタイムをアップデートしたら終わり
マクロの言語は該当箇所を探し出して修正して丸ごと再コンパイルが必要

工数考えたらどちらが有利なのかすぐ分かる
知識が足りないのはどちらなんだろうか?
■ このスレッドは過去ログ倉庫に格納されています

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