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