[過去ログ] Go language part 3 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
26: デフォルトの名無しさん [] 2019/10/20(日) 11:10:32.44 ID:LrxuqhUZ(1) AAS
var hoge uintptr = 123 動く(1)
hoge := uintptr(123) 動く(2)
hoge uintptr = 123 動かない(3)
hoge uintptr := 123 動かない(4)
やっぱり面倒なんだよね
良い方法ないですか
あと(2)があまり使われないのはなぜ?
92(1): デフォルトの名無しさん [sage] 2019/11/23(土) 14:07:25.44 ID:5HHeTBXj(2/10) AAS
>>9191(1): デフォルトの名無しさん [sage] 2019/11/23(土) 12:27:33.32 ID:1tA3t0n1(1/2) AAS
>>90
俺もvscodeの再起動で治ったけど、module周りはちょいちょい不具合でるなあ。
importの警告がいきなりでてきたり
また modules か
modules ってどうなるのかな?
godoc が動かない issue も目処が立っていないらしいし
143(1): デフォルトの名無しさん [sage] 2019/12/16(月) 02:11:32.44 ID:tdYdVSGI(2/4) AAS
>>142なるほど。
ただ実際は配列の大きさは100個くらいあって取り出す配列は5つなんですよね...
156: デフォルトの名無しさん [] 2019/12/19(木) 18:04:48.44 ID:E0rD8pHx(2/2) AAS
>>155リンクミス
こっち
外部リンク:go.googlesource.com
267: デフォルトの名無しさん [sage] 2020/02/03(月) 22:08:48.44 ID:XimuQ1Xy(2/2) AAS
>>264264(1): デフォルトの名無しさん [sage] 2020/02/03(月) 21:09:34.89 ID:gvFxJnFo(2/2) AAS
>>259
もちろんライブラリやフレームワークの学習は前提だけど、
仮にプログラミング初学者がGo勉強して基本的なCRUDアプリを作れるようになったとして仕事あるか?
極端な話、初学者がSpringとかASP.NETとかRailsとか覚えたら、
サーバーを起動する方法もその上でアプリを動かす方法も知らなくても仕事はいくらでもあるわけだよ
一方Go名指しの求人って、ほぼ例外なく、複数言語が使えてAWSもわかるフルスタックな人が期待されてると思うんだよな
もちろんGoが使えたらプログラミングの素質はあるだろうってことでの採用はありうけど、
そうやって入った環境では多分Goを書かせてはもらえないだろう
同意するかは別にして言いたいことは理解した
そういう内容なら「Goは言語だけできても全く何の役にも立たないぞ」じゃなくて
「初学者がGoだけ習得しても仕事はないぞ」って書けばいいんじゃないかな
327: デフォルトの名無しさん [sage] 2020/03/07(土) 22:21:25.44 ID:NtlWTdSr(1) AAS
今の現場、DBが完全にDynamoDB(KvS)に移行したぞ
リレーショナルデータベース使わなくなった
328: デフォルトの名無しさん [sage] 2020/03/08(日) 02:34:50.44 ID:4UY9QB9Z(1) AAS
いくらサービスのOLTP系のDBがDynamoDBオンリーでも、会社なら業務系のDBとかデータ分析用のDWHとかあるしWebエンジニアでもたまにはそういうところ触ることもあるだろ?
お前の狭い業務では使わなくなった、の間違いだ
545(1): デフォルトの名無しさん [sage] 2020/05/17(日) 08:38:10.44 ID:Y3GCZn29(6/9) AAS
>>542542(1): デフォルトの名無しさん [sage] 2020/05/17(日) 08:26:21.18 ID:8deP89zB(5/10) AAS
スレチになるのでちょっとだけ。
ブラウザが送るって言う解釈とはちょっと違うけどjavascriptで
fetch(url, {
method: 'POST',
headers:{"Content-Type": "application/json"},
body: JSON.stringify(data)
}).then(res => res.json()).then(function(resp) {
// ...
})
みたいにapplication/jsonでリクエストできます。
うん、でもそこはAPIの仕様だから
汎用的なForm解析ならば必要だけど、自分のAPIだと割愛してよいってだけの話
655(1): デフォルトの名無しさん [] 2020/06/21(日) 11:24:25.44 ID:vfiIwLIM(1/4) AAS
外部リンク:play.golang.org
の
if s=="a" {
return a()
} else {
return b()
}
の else 文で
if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary)
と go-lint が吐き出すんだけど、どう書けばいい?
758(1): デフォルトの名無しさん [sage] 2020/10/28(水) 11:46:44.44 ID:HlOHZvAz(1) AAS
>>757757(2): デフォルトの名無しさん [] 2020/10/28(水) 11:33:48.41 ID:Mf8tEr2f(1/2) AAS
C / C++ のプリプロセッサのマクロって
#define A(X, ...) X A(__VA_ARGS__)
みたいな再帰的な処理出来ないけど
この問題昔から指摘されてるのに
40年経っても1000年経っても解決されないよね
解決しようと思えば出来るのに C++ の拡張とかばっかりやってる
そしてあなたも解決しようと思わないのでしょう?
786: デフォルトの名無しさん [sage] 2020/11/01(日) 11:09:39.44 ID:MfA1nG9+(2/13) AAS
ホントにあんまり知らんのだろ。
恥かく前にやめとけ。
789: デフォルトの名無しさん [sage] 2020/11/01(日) 11:12:40.44 ID:MfA1nG9+(4/13) AAS
スレッドプールとかが効いてくるネイティブスレッドではなくて、あくまでグリーンスレッドだからな。
790(1): デフォルトの名無しさん [sage] 2020/11/01(日) 11:13:16.44 ID:Gkt9gY6r(2/2) AAS
>>784784(2): デフォルトの名無しさん [sage] 2020/11/01(日) 10:42:25.33 ID:0aiHjqpe(2/12) AAS
>>782
逆に言えばそれ以外の環境では他言語に劣るわけだろ。
元々は多分、命名からして、コルーチンをgoroutineで、ということなのだと思う。
コルーチンは通常は本体側と交代で間欠的に動作する前提で書かれているから、スレッドで切り離すことはしない。
ただ、もしそれが本体と並行に動作可能なら、スレッドとして切り離せば、
本体側が動いている間に次のyieldまで動作させられ、コルーチン部分の処理時間を見た目ゼロに出来る。
実際、大半のコルーチンはこれが可能なはずで、これまでは単に面倒/スレッド生成消滅のコストの為にそこまでやらなかっただけ。
だから、スレッドよりもっとお手軽で軽いgoroutineを用意すれば、という訳だ。
OSでの並行はprocessだが、multi processは重すぎるのでアプリ内processとしてthreadが出来た。
それと同様に、thread内の並行として、goroutineという、もう一段軽い物を用意した。
だからここまでのストーリーは辻褄が合っているとして、それがどこに適用出来るかだよ。
CPUが精々数個しかないそこら辺のPCだと、threadだけで埋めきれるので、普通にそれが最適解になる。
threadだけでは埋めきれないほどのCPUがあり、積極的に並行goroutineとして切り出してくれないといけない、
という、いわゆるメニーコアならGoの方が有利になる可能性があるけど、実際この場合はキャッシュコヒーレンシの問題が発生してくる。
勿論チャネルだし、後はオブジェクトの中身も含めてインミュータブル、
つまりErlangの世界まで行けたらこの辺の問題も無くなるけど、Goはそういう感じじゃないでしょ。
そもそもメニーコアの筆頭のXeonPiも死に体だし。(これはGoのせいではないけど)
ここで言ってるメニーコア環境がXeon PhiなどではなくXeonやEPYCのようなパッケージのコア数の向上とそれを積んだ大規模分散環境の話だって伝わってないって事は分かった
どこまで適用できるかって話に関してはG社が自分とこに使えればそれでひとまずOKというラインがあるのでそっから先は知った事ではなくて良いのでは?
↑は >>785785(1): デフォルトの名無しさん [sage] 2020/11/01(日) 10:42:50.15 ID:0aiHjqpe(3/12) AAS
だから、>>782の観点だけなら、
Goは素晴らしい実験用言語だったけど、現実的ではなかったね、で終わると思うよ。
実際、Goって使用者は増えてるのか?
Rustは前年度「Rust新規に始めた人数よりCを新規に始めた人数の方が多くなっちまったよオイオイ」とか話題になっていたが。
JSはプログラマに、I/Oを明示的に切り離して高速化することを求め、(実際あの非同期は壮絶にウザイが)現実的にはものすごく機能してる。
Goはプログラマに、並行可能な部分を積極的に切り離すことにより超並行によって高速化を目指している、と捕らえることは出来るが、
実際これは全く上手く行ってないし、今後とも上手く行く気配もないでしょ。
一時期、CUDAよりもXeonPiだ、という時期もあったはずだけど、なんか話題はCUDAに戻ってるしさ。
にも続く話だけど現実的でないとか上手く行ってないとか結局それが現実的でなく上手くいかないタイプの分野・会社に君がいるだけじゃないの?と思ってしまうよ
793(1): デフォルトの名無しさん [sage] 2020/11/01(日) 11:52:11.44 ID:0aiHjqpe(4/12) AAS
>>788788(1): デフォルトの名無しさん [sage] 2020/11/01(日) 11:11:59.03 ID:MfA1nG9+(3/13) AAS
yieldが必要なコルーチンとは全く関係なく、昔で言うグリーンスレッドを超低コストで実現してるという方が正しい。
エアプしてる時間があったらスケジューラの動きとか調べてみたらいいよ。
> グリーンスレッド
この言葉は初めて聞いたが、確かにJavaやRubyでは普通に使われてる言葉らしい。意味は確認した。
なるほど、スレッドだと論理CPUを跨げるので、その部分がOS管轄になるから重いのか。
goroutineがグリーンスレッドなら、マルチコアだと全く性能が出ないな。
まあそれはいいとして。
なら、そもそもネーミングが悪いよ。
gogreenthreadとか、まんまの名前の方が良かったよ。
(ただしGoは意図的に他言語に合わせてない部分があるからここもかもしれんが)
確かにthreadではないのは理解した。
>>790
> Xeon PhiなどではなくXeonやEPYCのようなパッケージのコア数の向上とそれを積んだ大規模分散環境の話だ
いやそれは同じだぞ。少なくともプログラミングモデルは変わらないだろ。
実は俺は785投稿した後に、「あ、もしかしてNiagara等(有名なのは京)のCPU内メニースレッドの話か?」と思ってしまったが、
そうじゃないのならそっちも間違ってるぞ。
上記の通り、それだとgoroutineでの性能向上は不可能だ。
そしてグリーンスレッドだというのなら、CPU内メニースレッドには非常にマッチする。
実際Niagaraとか64スレッドだが、正直64スレッドなんて普通のthreadでは埋めきれないし、
それ向けにプログラマが積極的に切り出せ、というのは技術的にはかなり納得する。
だからグリーンスレッドの多用での性能向上を目指した、というのが合ってるんだと思うよ。
その後の話はその通り。
確かに俺にとって有用ではないから俺は使わない、で終わりだ。
やってる連中はそれが役に立つと思ってるからやってるだけ、というのは確かにそりゃそうだ。
796(1): デフォルトの名無しさん [sage] 2020/11/01(日) 13:36:21.44 ID:0aiHjqpe(6/12) AAS
>>791791(2): デフォルトの名無しさん [sage] 2020/11/01(日) 11:35:22.25 ID:MfA1nG9+(5/13) AAS
メインスレッドすらグリーンスレッドで、数本立ってるネイティブスレッド上でタスクを持ち回りで実行してるから、await asyncは自動的にされてると思って良いぐらい。
ちなみにgreenスレッドスイッチは何で起動してるか分かるか?
なおgreenthreadについてはありがとう。これだと色々辻褄が合う。
781のブログも、「そもそもgoroutineってそんなに使いたいか?」という疑問があったのだが、
greenthreadでchannel同期なら、実装は単なるFIFO=リングバッファだから原理的に最速だ。
だから何でもかんでも「goroutineに出来る物はgoroutineにする」という方向性で悪ノリしたくなるのは分かる。
ただ、2KBはオーバースペック過ぎるから、それで頓死するのも分かる。
さてスレッドスイッチ、理想的にはキャッシュミスでgreenthreadスイッチが行われればいいのだが、
現状のx86ではこれは出来ないよな?
そもそも例外はOSに行ってしまうし、キャッシュミス時はそのCPUスレッドはそこでストールしてしまう。
一番近いのはTLBミス例外だが、それもOS行きだ。
ページフォールトしていたらプロセススイッチで終わり、
していなければそのまま処理が返ってきてキャッシュが充足されるまでストールしたまま待たされるはずだが、
そこでCPUが遊んでいる時間を他greenthreadで埋めてしまえ、というのは思想としては分かる。
ランタイム側で「TLBミスからの復帰」だと分かればgreenthreadスイッチ可能だが、
一般的には例外からの復帰はユーザープロセスからは見えないだろうから、おそらくカーネルに手を入れないと無理だ。
それでもやってしまえば面白い。ただ、この場合にgreenthread間でスラッシングした場合は悲惨なことになるが。
というわけで、スレッドスイッチ起動のネタは分かるか?
従来通りタイマなら、面白くもないがまあ、というところ。
greenthreadで最小構成ならスレッドスイッチのコストはPC/SP/Flags復帰分=関数1回呼び出し分でしかないから、スイッチし放題ではある。
だから豆にスイッチしまくりというのも面白いが、それでもキャッシュミスでのストールは避けられない。
そこでハードウェアサポートがあってキャッシュミス時にgreethreadスイッチが出来れば圧倒的に面白くなるが、
現状のx86だと出来ないよな?
984: デフォルトの名無しさん [sage] 2020/11/15(日) 03:57:17.44 ID:oqZpf0kM(1/2) AAS
また発作が始まったか
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.053s