[過去ログ] Go language part 5 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
12(3): デフォルトの名無しさん [sage] 2022/02/27(日) 17:20:40.92 ID:+yReYAPt(2/3) AAS
>>6
自己レスです。
Goは1.4からamd64だとスタック2k
https://github.com/golang/go/issues/7514
今回試した1.13.8だと当該コードがCからgoに変わったりして跡形もなかったが、_StackMin = 2048はそのままだった
https://github.com/golang/go/blob/go1.13.8/src/runtime/stack.go
つまり2Mであれば残り1.8Mということで矛盾はない
27(3): デフォルトの名無しさん [sage] 2022/02/28(月) 14:52:59.85 ID:xNWA4laA(1/2) AAS
このasyncおじさんは何も分かってないと思う・・・
nodeでasync/awaitが通るのは、シングルスレッドですべてのメモリーが一緒のためで、Goのようにgoroutineで実際に
割り当てられているCPUやスレッドが分からないようにあえてしている言語で、asyncなんて導入するわけない。
async/awaitがある言語でそれがThreadを混ぜ込める言語もあるが、それだってI/Oをブロックしている処理の終わりに
ただ同じスレッドを再割り当てするだけ。スレッド境界を越えてメモリーコピーあるいは同期なんてしてたら破綻する
async/awaitのもとになるような、多くのスクリプト言語でyield、つまりジェネレータの重要なユースケースは、I/Oブロックの
待ちで違う処理を行うことだが、それはI/Oバウンドな待ちでしか処理が切り替わらないことを意味する。
64(4): デフォルトの名無しさん [sage] 2022/03/02(水) 12:54:03.99 ID:re9dUtRi(7/9) AAS
>>63
俺はGoのパフォーマンス測定をGoスレで尋ねてその後も調査してるだけだけ(すでに終了は宣言した)
ただまだ妥当性がどうのと言ってる人がいるから、とりあえず恐らく同じくデフォルトが通常2KなOSスレッドスタックを使ったRustとC++の結果を貼っただけ
結果は1:1でthreadが動いてるRust/C++の完敗だが、ロジック同程度で標準機能だけという条件なら仕方ないねって話をしただけだぞ
まだ文句があるなら自分でやれと言って何が悪い
お前がGoを使おうと何を使おうと俺はどうでもいい
96(10): デフォルトの名無しさん [sage] 2022/03/04(金) 15:39:19.04 ID:4zB49VIz(2/4) AAS
間違ってる上にスレ違いすぎるな
言語比較がしたいなら↓へ
次世代言語23 Go Nim Rust Swift Kotlin TypeScript
2chスレ:tech
117(4): デフォルトの名無しさん [sage] 2022/03/06(日) 19:22:52.31 ID:oq6skpEb(1) AAS
>>40
そのとおり。
決定的なのは、goをRustで実装してしまえばいいw
それがすべてだろw逆にRustをgoで実装することは何万年立っても不可能なんだからw
なぜならgcのある言語でgcのない言語を実装できないから
123(5): デフォルトの名無しさん [sage] 2022/03/07(月) 00:44:33.34 ID:otYxLRpr(1/4) AAS
>>122
goでメモリ管理まで書くの?そしたら所有権とかの概念があるRustに軍配があがるだろ
151(3): デフォルトの名無しさん [sage] 2022/03/09(水) 19:37:39.05 ID:o8UVaHTv(2/2) AAS
Goのスライスはうっかりデータ競合を起こしても自己責任
別変数に代入して各々に対して値を書き換えたりappendしたり可能だがもちろん互いに競合する
そして苦肉の策の結果としてappendでキャパシティを超えた時に両者がそこから分岐
一方でRustは言語仕様でデータ競合を起さないことを保証している
164(3): デフォルトの名無しさん [sage] 2022/03/11(金) 10:28:51.56 ID:MsCX3gC/(1/2) AAS
今からGoですを勉強するのって意味ない?
rustとかいうやつのほうがいいの?
171(3): デフォルトの名無しさん [sage] 2022/03/11(金) 12:42:59.72 ID:MsCX3gC/(2/2) AAS
みなさんありがとうございます。
Javaとphpを仕事で使っていますが、Goの何でも自力で書く的なものに惹かれて将来的には仕事で使いたいと思いました。
196(3): デフォルトの名無しさん [sage] 2022/03/12(土) 01:28:54.16 ID:JgaGU6xu(2/5) AAS
>>193
> ところがC++には不可能
『今の』C++にはね。
ただ、C++の場合は少しでもその方がコード効率がよくなる、とされると採用される。(ので良い物はいつか採用される)
それが「全部入り」
> 安全性の保証
要するに補助輪でしかない。Rustのは全部これ。
> 簡潔な借用ルールとライフタイム
これは俺は筋が悪いと思ってるけど。
プログラマに生存期間をマニュアルで管理させてるだけ。(これはCと同じ)
そしてRustの場合はこれの整合性を静的に解析出来る。(これはC++にはない。が、コンパイラ側で対処出来る話。そのうち導入される)
だいたいそもそも「貸し借り」なんてやってる事自体、
一般的プログラミングにおいての生存期間と合致してないからであって、根本的に筋が悪い。
そもそもプログラマは管理したいとは思ってないから、GCの方が筋がいい。
GCだと駄目な件については、例えば以下なら、(このブログは有名なので色々言われてるようだが)
https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f?gi=bd6f6b9c5be3
そもそも大量の生存オブジェクトが存在する場合はGCには不向きなので、
Goについてなら例えば「GC非対象の変数宣言」構文が用意出来れば済んだ話。
(この思想がGCとフィットしないから一般的に導入される事はないが、
VC++ならnew/gcnewでGCなし/ありを切り替えられるし、俺はこれで十分だと思うよ)
まあ心配しなくても、所有権の貸し借りが素晴らしいってことになれば、C++にも確実に導入される。
そのときRustは死ぬよ。その猶予が9年間。
202(3): デフォルトの名無しさん [sage] 2022/03/12(土) 06:14:51.35 ID:f9B4ek7q(1) AAS
ITの9年は長いでよ、ロートルには短いかもしれんが。
そして30年という長い年月を持ってしてもC++はLinuxカーネルに入れなかったのにRustは入った。この違いよ
334(4): デフォルトの名無しさん [sage] 2022/05/15(日) 05:14:48.52 ID:0uh5p1OH(1) AAS
ʕ◔ϖ◔ʔ
388(5): デフォルトの名無しさん [] 2022/06/15(水) 01:49:19.21 ID:SBK/Y+J6(1) AAS
>>386
https://github.com/elliotchance/pie
これはチェーンが出来る。
多くの言語でコレクション操作中のエラー状態を返すという動作はあまり見ない、Rustなんかでもそう。GitHubスター数多いから挙げたが、チェーンもGoの模範的な1行の長さなどがあるし、Goはメソッドチェーンそのものをあまり勧めていない。(慣例的にエラーを2番目の戻りにするから)
エラーを扱えて、チェーンができる言語ってなーに?
397(3): デフォルトの名無しさん [sage] 2022/06/15(水) 12:52:09.46 ID:manFTcsW(1) AAS
>>392
遅延評価とは反復を使い込んで消費する関数を呼ぶまで効果がない事です。どこをどう見たら即時評価だっていってますか?
明らかにチェーン生成で遅延評価です。
func Of[T any](ss []T) OfSlice[T] {
return OfSlice[T]{ss}
}
それと上記ライブラリにはforeachなんてファンクションはありません。Rustのforeachが副作用を伴う操作が出来てしまうが過去の互換性を
維持するための現在の仕様のことを見聞きして言っていますか?通常多くの言語や高階関数操作が出来るライブラリでmapとforeachの違いは
値を返すかどうかの違いでありエラーを返せるかどうかではありません。またRustがtry_for_eachが存在するのもあくまでも利便性のための
例外であり、普通は特に高階関数操作中のエラーが起こることこそが例外でダメなコード設計です。
もしコード中でコレクションに含まれるデータにより例外エラーを伴うようなコードを乱造しているのであれば”大きく”反省してください。
それとも全く分かってないのに言葉遊びしている?印象を受けます。「foreachでエラーを考慮しないのでダメ」の理由を示してください
531(3): デフォルトの名無しさん [sage] 2022/09/02(金) 09:55:02.48 ID:zLWkNNSX(1) AAS
いや、けっこうGoに限った問題
channelのユースケースの大部分は現実にはpromise/futureで十分で、遥かにミスを引き起こしにくい
566(3): デフォルトの名無しさん [sage] 2022/09/05(月) 10:37:15.25 ID:098gBdTn(4/7) AAS
次にpromiseの利点について
並行処理の考え方としては大きく以下がある
1.処理をシーケンシャル実行して1つずつ結果を受け取る
Aが終わったらBを実行して
Bが終わったらCを実行する
2.複数の処理を同時に実行して結果をまとめて受け取る
A、B、C...の処理を同時に実行してその結果をreduceして受け取る
3.ストリーミングモデル
いわゆるproducer/consumerに代表されるようなモデル
1と2についてはpromiseで全て安全に楽に実装できる
ゴルーチンとchannelを使った実装なんか考えたくもない
100%デッドロックが起きる
3についてはゴルーチンとchannelが本来想定してるモデルなのだが
これを適切に実装するのが難しい
CでBlockingQueueの実装したことがある人は分かると思うが極めてデッドロックが起きやすい
複数のproduer/consumerを生成したい場合など考えたくもない
さらにこのモデルの場合は基本的に大規模な分散環境で実行することがほとんどである
シングルノードでproducer/consumerなどサンプルコードでしか有り得ない
こういう用途では複数ノードのソケットにリクエストを投げて結果を待つということになるので結局2に帰着される
574(4): デフォルトの名無しさん [sage] 2022/09/05(月) 21:20:50.97 ID:MMezNWAp(1) AAS
>>573
Goは見かけ同期と誤認するけど
同じOSスレッド上でもメインや複数のGoルーチンがスケジューリングされて交互に非同期で動いているよ
例えばGoで
func1()
func2()
func3()
と見かけ同期に書いているのは
async/await対応言語で
await asyncfunc1()
await asyncfunc2()
await asyncfunc3()
と書いた時と同じ状態
つまり見かけ同期のGoの実態は非同期
「Goは最初から全てがasync汚染されているためasync汚染に気付かずに済む」が正解
593(3): デフォルトの名無しさん [sage] 2022/09/06(火) 08:04:56.91 ID:g0koBBSB(1) AAS
>>566
1なんてそのまま関数並べるだけだし
2はN件goroutine立ち上げてたらN回チャネル待ち受ければいいだけだよね
タイムアウトもselectで容易に実装できる
100%デッドロックするとか言ってるけどそれはGo超初学者が使った時の話かな?
仮にデッドロックしても検知機構働いてちゃんと落ちるし何が言いたいのか
634(4): デフォルトの名無しさん [sage] 2022/09/14(水) 11:14:58.88 ID:xpCSG28g(1/7) AAS
うぬぬぬぬ、issueに送るべきだろうか?
1、「ポインタの」レシーバーでストリンガーを記述すると、fmt.Println()とかに渡してもString()メソッドは呼んでくれない…
2、そして(str{v: 1}).String()とか記述するとコンパイルエラーになる…
変数に一旦格納してからのs.String()は、仕様から(&s).String()と解釈してくれて通る
659(4): デフォルトの名無しさん [sage] 2022/09/18(日) 22:39:49.75 ID:ds+slurx(1) AAS
なんか勘違いしてるけど相互運用ではないよ
レシーバが値のメソッドはポインタと値に対して呼び出すことができるが
ポインタのメソッドはポインタに対してのみ呼び出すことができる
これは仕様書に書いてある
693(3): デフォルトの名無しさん [sage] 2022/11/07(月) 21:16:50.51 ID:CyGVtWq4(1) AAS
最小とか最大を求める関数は自分で作れって話なの?
あと、整数の絶対値とか
773(4): デフォルトの名無しさん [sage] 2024/04/27(土) 20:42:50.26 ID:PtA3qgXN(1) AAS
こんばんは
Goってネームバリューあるけどそんなに盛り上がってる感じじゃないよね
javaの後継になるかと思ってたけどそうでもないし
918(3): デフォルトの名無しさん [sage] 2025/05/18(日) 23:50:58.93 ID:eaOArS/2(11/12) AAS
>>915
帰ってきたがまだ理解できてないのか
Promiseは何か秘密な仕組みや秘密なシステムや秘密なランタイムがあるわけではなく単なるデータだ
Promiseを介することでステートマシンなんか使うことなくasync関数を通常関数に自動変換できる
例えばこんなasync関数がある時
async function delay(n) {
await new Promise((resolve, reject) => setTimeout(resolve, n * 1000));
return n;
}
async function foo() {
console.log("hello");
let a = await delay(1);
let b = await delay(2);
let c = a + b;
console.log(`${a} + ${b} = ${c}`);
return c;
}
992(3): デフォルトの名無しさん [sage] 2025/06/05(木) 21:11:14.75 ID:ZsUexMhd(1) AAS
Go言語がエラー処理構文の導入を「一旦諦める」と宣言 — 7年にわたる検討の末コンセンサス得られず
https://techfeed.io/entries/6840c4096749026b87829bb9
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.060s