[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/22 10:01 / Filesize : 319 KB / Number-of Response : 1020
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Go language part 4



1 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 04:14:40.64 ID:fB5+0hxC.net]
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。

公式
https://golang.org

公式ドキュメント
https://golang.org/doc/

公式外パッケージドキュメント
https://godoc.org

ブラウザ上で試し書き
https://play.golang.org


※前スレ
Go language part 3
https://mevius.5ch.net/test/read.cgi/tech/1571315884/

616 名前:デフォルトの名無しさん mailto:sage [2021/09/27(月) 15:19:55.68 ID:tsIS/8pJ.net]
検索ワードで回避できる問題なんかどうでもいい
一般人が検索するような物でも無いし
コマンドが短く入力しやすい方が重要
squirrelみたいな名前にしたら腱鞘炎になるぞ

617 名前:デフォルトの名無しさん mailto:sage [2021/09/27(月) 17:54:21.16 ID:Ac+aBfL/.net]
>>601
C言語

618 名前:デフォルトの名無しさん mailto:sage [2021/09/28(火) 08:06:03.36 ID:zmriYPIE.net]
極主夫道の二巻の福引きGo等の商品がどうみてもGopher君のパチモノ

619 名前:デフォルトの名無しさん [2021/09/29(水) 15:30:15.59 ID:W9rNFdvq.net]
見上げてGolang、夜の星を

620 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 13:29:08.84 ID:tOAzdfyW.net]
Go簡単って言うからやってみたらローカルファイルimportするのに相対パス使えないとか
go mod するんだとかGOPATHはもう使わないとかゴチャゴチャゴチャゴチャ・・なんじゃこれ?全然シンプルじゃない
ツール周りがゴチャりすぎやろ、やっぱPythonが神だわ

621 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 13:40:38.36 ID:+iNX7XVA.net]
そうですね。Python使った方が良いと思いますよ。さようなら

622 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 19:24:50.47 ID:vvHfCZ9q.net]
まあ相対パス使えないのはやり過ぎな気もする
htmlですらbaseを指定できるのに、何を恐れているのか
パーサーを作る際に楽だからなのかな?

623 名前:デフォルトの名無しさん mailto:sage [2021/10/18(月) 21:26:33.48 ID:w/yRHxqY.net]
え? go.mod で replace しておけばいいんじゃない?

624 名前:デフォルトの名無しさん [2021/10/27(水) 21:55:02.42 ID:HQ60ALa2.net]
Sum Type、Union elementあと4か月か…2月/8月



625 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 22:05:51.76 ID:HL6HkAZF.net]
Genericsは1.18に載らないの?

626 名前:デフォルトの名無しさん mailto:sage [2021/10/27(水) 22:49:21.67 ID:Dm8DTcKu.net]
既に WIP ブランチでは使える様になっているから 1.18 で
正式採用になると思う(gopls も対応済み)

627 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 15:45:47.64 ID:Qz/5KmYR.net]
ついにGenerics載るんだね、楽しみやなー。

ところで、ユーザ定義演算子は計画されてない?
AddとかMulみたいなメソッドじゃなくて+とか*みたいな演算子使いたいこともあるんよね

628 名前:デフォルトの名無しさん mailto:sage [2021/10/31(日) 18:46:09.19 ID:OY4TDGUi.net]
>>616
>>594みたいな書き方しか無理みたい
トホホ

629 名前:デフォルトの名無しさん mailto:sage [2021/11/01(月) 23:46:42.69 ID:jfjYB5Nx.net]
GOおもろない
なんとかしてや

630 名前:デフォルトの名無しさん [2021/11/02(火) 14:39:41.99 ID:vRCKOPQ3.net]
>>618
どこがどうおもろないんや?

631 名前:デフォルトの名無しさん mailto:sage [2021/11/02(火) 21:14:20.28 ID:c4MpaWiz.net]
仕事だから仕方なく使ってるのはあるな

632 名前:デフォルトの名無しさん [2021/11/03(水) 08:59:07.96 ID:owwwLqi1.net]
なんも知らん新人でも、できるベテラン・新人でも、仕事に使うにはソースコードに均一性のある良い言語だわいな

633 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 09:11:16.68 ID:hIbM46+W.net]
最近Goの現場入ったけど
dep?とかいうモジュール使っててGOPATHにも気を使わないと駄目で
結構混乱する
初期で大分失敗してると思うわGo

634 名前:デフォルトの名無しさん [2021/11/03(水) 10:49:56.25 ID:I/oot80l.net]
depは3年ぐらい前から正式な公式ツールじゃもう無いし、ツールの煩雑性や使い勝手は言語に関係ないよ
PATH変数に気を使うのはC,C++でも一緒、そもそも環境構築すら出来ない失敗をしてんのはあんたか
現場の手順書が無いか



635 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 11:46:43.90 ID:XfZZ+0lv.net]
「改訂2版 みんなのGo言語」という本を読めば?

学生時代に、Ruby 製のVagrant を作って、
Terraform で有名なHashiCorp を作った、今世紀最大の起業家、
Ruby/Go の神、Mitchell Hashimoto のソースコードも解説している

636 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 12:11:59.17 ID:508Y0Igq.net]
go.mod に書いとくだけで github やらから直接にライブラリを導入できる点で、環境面では目一杯助かってるわ
Mavenやらpipが組み込まれてる感じだけど、基本機能であることは大きい
Mavenとかpipは別途入れないとならんし、それぞれ本体と別の環境整備しないとならないから

637 名前:デフォルトの名無しさん mailto:sage [2021/11/03(水) 19:24:54.92 ID:ywwxM/TS.net]
>>622
今更?

638 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 16:01:17.99 ID:eo9m+3ij.net]
趣味で使って面白い?

639 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 16:13:12.12 ID:5gkz3BSt.net]
面白い
GCP無料枠でそこそこ実用性のあるサイト建てたりできるし

640 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 16:27:08.12 ID:eo9m+3ij.net]
なるほど
googleの犬になるか

641 名前:デフォルトの名無しさん mailto:sage [2021/11/04(木) 19:21:19.80 ID:5gkz3BSt.net]
だってアマとか無料枠ないんだもん
一年目だけってのは、単に初回サービスって言うんだよ

642 名前:デフォルトの名無しさん [2021/11/05(金) 14:20:53.38 ID:0z+NMKpK.net]
Herokuとか

643 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 15:35:29.83 ID:mQ9A5wfK.net]
社会人なら別にEC2使ってもマイナーサービスのサーバ台ぐらい余裕やで。
一ヶ月分の料金なんて、スタバ2回分くらいだろ。

そら安いほうがいいけど。

644 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 22:23:20.41 ID:aZyVG3bY.net]
micro使えば安いけど明らかにメモリが足りないんだよな
おまけに調子に乗ってぶん回すと詰まるし
最低でもmedium程度は欲しいがそうなると結構高くなる



645 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 22:38:38.82 ID:VzSbYdr/.net]
Oracle Cloudは?
コンソールが重くて独自性強いけど起動してしまえばいっしょ

646 名前:デフォルトの名無しさん mailto:sage [2021/11/07(日) 23:41:21.11 ID:KgxySftM.net]
サイト立ててもアクセスが日に数件なんでほとんどマシン回ってないやww

647 名前:デフォルトの名無しさん [2021/11/08(月) 16:12:42.92 ID:KvpLYeV7.net]
microといえば思い出す、大手のNでスワップしまくりなんも考えてないSEが手配したmicro
しかもWindowsの時の絶望感・・・

648 名前:デフォルトの名無しさん mailto:sage [2021/11/08(月) 16:32:31.04 ID:Qfm8QX8G.net]
んなもん動くか!

とググったら
https://qiita.com/zakky/items/68c4749889717c3cd849
おぅい!!

649 名前:デフォルトの名無しさん mailto:sage [2021/11/08(月) 16:42:16.76 ID:NUVpgUuA.net]
microでも小さいサービスならメモリ足りるやろ? goだったら100MBメモリ食うこともありえないくらいやろ
メモリリークでもしてるんじゃないの?
Windowsとか動かしたらそらきついだろうけど。

650 名前:デフォルトの名無しさん mailto:sage [2021/11/08(月) 17:40:06.67 ID:Qfm8QX8G.net]
動くか、と言ったのはWindowsの話
400MB確保できるみたいだから意外と使えるかも?

651 名前:デフォルトの名無しさん mailto:sage [2021/11/08(月) 18:00:09.69 ID:NUVpgUuA.net]
なんでそんなにWindowsを動かしたいんだ・・・。

652 名前:デフォルトの名無しさん mailto:sage [2021/11/09(火) 13:54:21.34 ID:dGlVH92+.net]
>>640
pインスタンスでwindowsを動かすのは普通に多いよ

653 名前:デフォルトの名無しさん mailto:sage [2021/11/09(火) 17:10:56.19 ID:8qmTEk8+.net]
いや、なんで?という疑問への答えじゃないよな
ぶっちゃけLinuxでSSH接続専用にすれば済むから

654 名前:デフォルトの名無しさん mailto:sage [2021/11/09(火) 19:48:05.88 ID:+FOj3uk2.net]
GUI系のアプリを動かすんだよ
CAD系のシミュレータとか
windowsにしか存在してないアプリが多い



655 名前:デフォルトの名無しさん [2021/11/09(火) 23:41:06.97 ID:5nP8kmAz.net]
github.com/fogleman/gg が遅くてちょっと困った。
Webassemblyで普通にcanvasの関数をcallした方が速いなんて。
ebitenはdraw系の関数少ないからなぁ。

656 名前:デフォルトの名無しさん [2021/11/11(木) 09:52:59.41 ID:zPNWYi1t.net]
Twelve Years of Go
Russ Cox, for the Go team
10 November 2021

657 名前:デフォルトの名無しさん [2021/11/17(水) 23:16:51.89 ID:a+84vLf4.net]
gotoの使用は許可されてる?

658 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 06:41:13.91 ID:eOo002y1.net]
>>646
普通は使わないが何故か仕様にあるんだから許可されてるんだろ

659 名前:デフォルトの名無しさん [2021/11/18(木) 17:38:26.56 ID:kJKbHvZv.net]
深いループを抜けるときはgotoを使う

660 名前:デフォルトの名無しさん mailto:sage [2021/11/18(木) 21:15:03.90 ID:iWaFftPG.net]
ラベルgotoは、gotoではあっても古い言語で禁忌されているgotoではありません。

ダイクストラのgoto文論争はBASICはもちろんですが、1968年に“Go To Statement Considered Harmful”
(Go To 文は有害とみなされる)において行番号へ飛ぶような言語が多かったために起こった論争です。
C言語も古くからありましたが、こちらもあまり使われなくなりました。なによりもgoto以前に
setjmp, longjmpという、関数の間でのジャンプ出来るようなC標準ライブラリが存在したために
より強く禁忌されたといえるでしょう。のちにStructured ProgrammingからO-OProgrammingへ移り変わる
につれて行番号は何もなく、文の構造の厳格性や動的ディスパッチなどが整備されたため、必要性が薄れました。

現在あるラベルgotoとは、ループの中に飛び込むgotoなどではなく、二重のループ中のbreakなどで
脱出経路を明確化するなど、例えばコンピュータサイエンスの分野ではHaskellにおいてはモナドを利用して
例外や非決定性計算行うなど、引数付きgotoとも呼ばれる。

661 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 09:01:28.58 ID:Fh4InTPD.net]
Inline指定出来ないので関数呼び出しのコスト低減くらいしか用途が思いつかない
そこまでシビアな実装滅多に無いから基本的に使わない

662 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 12:21:28.19 ID:WNpWqDaH.net]
確かに関数化すりゃブロック脱出もシンプルにreturnさせりゃいい
となるとgotoは関数呼び出しによるオーバーヘッドの削減だけなのかな?
ナノ秒単位でも削減したいという余程のシビアな要件で使うって話になるけど、関数呼び出しごとにスタックのチェックが入るGoでそんな要件に意味ってあるの?とも思う

663 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 12:34:26.60 ID:kQNnUQCo.net]
というよりもアホ意識高いgoto異端審問官が、文句つけてくるので使わない。

664 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 15:43:47.01 ID:oZVaazpx.net]
おれにとっては、Golangでgoto使うのは、構文解析器みたいなのを書くときにたまにあるんだけど、共通の処理までジャンプしたいときとか、
for文とかをネストしたときに、いくつか上のブロックまでジャンプしたいときかなあ。これも構文解析したあとの評価器で使うこともある気がする

ようするに最適化とかじゃなくて、ちょっとした大域脱出みたいなノリで使ってる

Go本体のソースコードでもこんな感じgoto使ってるんじゃなかったっけ



665 名前:デフォルトの名無しさん mailto:sage [2021/11/20(土) 11:05:39.09 ID:GriTsYN5.net]
俺たちのGO!

666 名前:デフォルトの名無しさん [2021/11/21(日) 07:26:46.41 ID:8Zd5Z9wI.net]
IDEはどれがおすすめ?

667 名前:デフォルトの名無しさん mailto:sage [2021/11/21(日) 07:39:21.64 ID:AMP8EKz2.net]
自分はVSCode

668 名前:デフォルトの名無しさん mailto:sage [2021/11/21(日) 23:14:16.37 ID:1+FhODzH.net]
私はEmacs

669 名前:デフォルトの名無しさん [2021/11/22(月) 06:12:39.00 ID:I9kdAR+e.net]
VSCodeもemacsもIDEではないけどね

670 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 07:05:20.26 ID:rahxNjIR.net]
バージョン管理からテストまで環境内で完結してるのに仲間外れなのか

671 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 19:08:36.54 ID:uiCHuC7N.net]
emacsは"環境"だから、
emacs > IDE
だよな


ところでIDEの定義って何よ?
高機能エディタと垣根がなくなってきたからそれらを区別する意味があるのかどうか

672 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 19:28:29.86 ID:rahxNjIR.net]
統合開発環境だから、コンパイルからデバッグ、バージョン管理にデプロイまで揃ってるemacsとかVScodeを入れないとなると、いよいようろんな定義になる
RADとかグラフィカルな開発環境とごっちゃになってるのでは?

673 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 19:36:29.51 ID:rahxNjIR.net]
エディタ内でデバッガと密接に連携(ブレークポイント設置して値を参照とか)できれば統合してると言ってもいいと思うんだが

674 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 10:50:24.50 ID:YlZvZbei.net]
mapをrangeステートメントで処理すると毎回順番変わるのな
将来mapの実装を変えた時に要素の順番が変わっても大丈夫なようにあえてランダムにしてるらしい
最初知らなくて嵌った

しかもランダムに返す仕様の方がパフォーマンスをよくしやすいらしい
ensure better balancingって
なるべく偏らないように要素を配置するみたいな意味か

https://stackoverflow.com/questions/55925822/why-are-iterations-over-maps-random/55925880#55925880



675 名前:デフォルトの名無しさん mailto:sage [2021/11/23(火) 11:47:46.83 ID:RPYITf6H.net]
> ランダムに返す仕様の方がパフォーマンスをよくしやすい
いや流石にそんなことはないぞ
処理系の実装変更だけでなくマシン毎に結果が違うことも許容することで、パフォーマンス最適化の余地が広がるという意味だ

676 名前:デフォルトの名無しさん [2021/11/25(木) 20:43:12.75 ID:0woLMmPf.net]
11月TIOBEプログラミング言語人気ランキング、PHPの下落続く
https://news.mynavi.jp/article/20211109-2181586/

677 名前:デフォルトの名無しさん [2021/11/26(金) 17:11:22.22 ID:xw//vI58.net]
Golangが一番書きやすい

678 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 19:19:32.54 ID:TC631CUh.net]
go と defer とチャネルが便利すぎるね
チャネルのキャパシティは未だに悩む

679 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 19:31:07.75 ID:jCnjnABk.net]
チャネルはクソだろ
Cでいうポインタ関連のミスによる死と同程度くらいにはデッドロックを起こしやすい極めて危険な仕組み

680 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 19:33:40.57 ID:klqHYhKv.net]
勉強中でよくわかってないんだけど
メインルーチンが死んだらゴルーチンもチャンネルも死ぬんじゃないの?

681 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 19:53:34.58 ID:TC631CUh.net]
デッドロックは一番の可能性としてキャパシティを疑う

682 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 21:43:15.55 ID:vur9wleR.net]
どんな言語でもスレッドやルーチェンの1つが落ちて無事平穏な言語は少ない。Erlangぐらいかな落ちる前提なのは

683 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 22:02:31.09 ID:v7cZYF1p.net]
もう新しいデータ来ないのに
私待つわ…いつまでも待つわ…と待ち続けるコードを書けば
当然ながら詰まる

684 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 22:32:30.29 ID:gRCMakca.net]
アミン…大統領



685 名前:デフォルトの名無しさん mailto:sage [2021/11/26(金) 22:54:09.91 ID:b/zo5EjW.net]
未使用の変数がコンパイルエラーになるのは地味に良い

686 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 15:33:06.29 ID:DHp3ezKZ.net]
俺もチャネルはどうかと思う
ある意味スレッドより危険

687 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 15:56:47.57 ID:wymfOW3B.net]
設計間違えたらデッドロックするのはどんな通信でも一緒じゃね?
チャネルを殊更に危険視するの?

688 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 16:07:17.64 ID:z8jcIZfA.net]
>>676
デッドロックしやすい仕様なのは事実だし、危険だからといってその使用を回避できる標準的な代替手段が存在しない
他の言語ではだいたいpromise/future、fork-join、actorがあるからよほど変なことしなきゃデッドロックなんか滅多に起きないよ

689 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 16:10:29.89 ID:EtwFQg7M.net]
そうなんだ? イケてないの?
Googleさんはなんでそんな方式を採用してしまったのやら

690 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 16:43:12.87 ID:z8jcIZfA.net]
>>678
デザインパターンみたいなものを極力廃して、小さな標準的なツールセットだけでモノ作れるようにするという思想は一貫している
しかしスレッド関連のデザインパターンというのは基本的に死なないためにあえて制約を設けているのであって、
Goの思想が逆に敷居を高くする方向に作用してしまったということだ

691 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 16:49:44.44 ID:kX7QbhiL.net]
CSPモデルに沿った実装がしやすいとは聞く。
CSPモデルができていればそれがデッドロックを起こすかどうか静的に検証できるはず。

692 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 16:50:07.92 ID:Xzfp/9Y9.net]
ほえー、そうなんだ
実際のところ、他の人がgoroutineとか使ったやつを -race 付きで実行すると警告出まくるやつばっかだったよ

Goの強みは並行処理だと思ってたのに、他の言語のことはよく知らんけどもそんな有様じゃ強みだなんて言えないなあ

693 名前:681 mailto:sage [2021/11/27(土) 16:53:59.99 ID:Xzfp/9Y9.net]
なんかID変わっちゃってたけど、おれは >>678
>>679 に向けて返信した

694 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 17:22:55.75 ID:1Qfj4fkw.net]
CSPモデル
ttp://www.usingcsp.com/cspbook.pdf



695 名前:681 mailto:sage [2021/11/27(土) 18:04:43.03 ID:Xzfp/9Y9.net]
すまん、せっかくCSPを紹介してくれるなら、もっと初心者向けのやつない?
興味はある

696 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 18:14:49.72 ID:kX7QbhiL.net]
これとか。
https://staff.aist.go.jp/y-isobe/topse/vic/slides/csp-isobe-2012-03.pdf

697 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 18:28:08.91 ID:NTle55ol.net]
>>678
ここに玉にディスりにくるRust坊、ほんと性格悪いな

698 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 19:03:33.53 ID:NTle55ol.net]
設計が間違えてチャネルで無限ブロックするならタイムアウトをつけるべきだし、Rustもチャネルで
無限ブロックするしほかの多くの言語も(スレッド)チャネルの受信でブロックする
チャネルとは違うがErlangメッセージパッシングだって似たようなもの

699 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 19:14:15.48 ID:z8jcIZfA.net]
>>687
そういうことを言ってるんじゃないのよ
>>677にも書いたけど標準的な安全な代替手段が存在しないことが問題

700 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 19:53:13.18 ID:wymfOW3B.net]
Rustなんてスレッド実装が固まってから五年も経ってないお子ちゃま

701 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 19:53:53.46 ID:DHp3ezKZ.net]
スレッドとかだとバッドパーツが一通り手間揃ってて
こういうのはやめましょうってのがほぼデザインパターン化されてるから
コードレビューでつぶせたり
処理を追うとわかったりする

702 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 19:54:52.94 ID:LVgG7qhW.net]
>>683,685
CSPモデルのasync/awaitに対する優位性って何?
見た目何もない気がするが。
(ちなJSではなくC#のスレッドプールに対するasync/await想定でよろしく)

703 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 20:00:12.03 ID:kX7QbhiL.net]
もともと危険なthread/mutexには安全なwrapperがあるのにgoのchannelにはそれが無いから、ってことかな?

704 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 20:12:14.69 ID:K1RL10E4.net]
>>688
平行性のある現代的なプログラミング言語ではデットロックは言語仕様の問題ではなく、食事する哲学者の問題と
同じく制限された個数のチャネルで送られたデータが受け取られていないのに、送信できるようにはなりません。

これがレース競合を起こさないための標準的で安全な手段であり、グローバル変数や変数共有をgoroutine介して
同期ミューテックスもない操作すれば当然警告が出るでしょう。

そもそもgoroutineでのチャネルブロックはデットロックではなく、待機ブロックです。その証拠にSIGINTなどの
シグナルでは待機ブロックでも抜けるはずです。本来のデットロックなら応答しないかゾンビになります
もちろんスレッド(あるいは軽量スレッド)間でチャネルを介してのみデータを共有できるプログラミング言語も
存在しますが、goは親スコープにある変数などを操作できるように利便性のトレードオフ設計であり、より現実



705 名前:Iで
効率的だとも言えるでしょう
また制限された個数でないチャネルの場合は送信に受信側処理速度が追い付かない場合、キューイングされて
無限にメモリーが圧迫される危険性があります。

非同期系の言語で使用されるpromiseや、未来値のプレスホルダーを参照するfutureでデットロックが起きないのは
当たり前です。前者は非同期であり並列/並行ではありません、後者は終了時まで待って値を受け渡すだけです。
fork-joinは何が言いたいのかわかりません、actorプログラミングモデルや純関数言語ならその通りですが
共有したいデータが多くの言語でチャネルやパッシングを介してのみなので競合は起こらないでしょうが
いつまで待っても到着しない受信側は、永遠に待ち続けるのは変わりません。

「そういう事をいってるんじゃない」
ま、こういう問題を一切合切、無難に解決してくれる標準的な手段を手続き言語に求めるのは分からなくも
ないですが、最終的にデットロック(あるいは待機ブロックで無限待ち)したらどうするか記述するような
フォールトトレラント処理が欲しいわけでもないのでしょうが、個数が限られている場合のレース競合対策の
ルールなので言語的ではなく、哲学的にどうにもならないと思いますが
[]
[ここ壊れてます]

706 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 20:52:19.87 ID:DHp3ezKZ.net]
>>693
何も分かってないなら書き込むなよ

707 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 21:01:18.61 ID:LVgG7qhW.net]
>>693
それお前が今書いたん?
ググってもヒットしないが、そうとも思えないから原典があるのならそっちのURLくれ。

横だが「そういうことを言ってるんじゃないのよ」ってのは、単に、
生でスレッド処理を弄らせてデッドロックの危険を避ける色々な仕掛けを正しく準備しろ、というのなら、
フレームワーク等でその辺の仕掛けを全部用意してしまって、その上でジョブをキューイング出来るようにするだけの方が
処理性能も同じで手間がかからない分だけ合理的だろ、という話だよ。

Web系でSessionや認証周りは全部フレームワークに丸投げするべき、と言われているのと同じ。
スレッド周りでどうせ色々やらないといけないなら、最初からフレームワークに丸投げした方が合理的なんだよ。
だから、レイヤーが低い記述が出来るのなら、その手間に見合うだけの価値がないと意味無いんだけど、それがないでしょ、って話。
平行並列周りの研究をしてていじくり回したいだけの人=そのプログラムがその時動けばいいだけの人
にとっては言語が直接サポートしてるのは便利だけど、
製品としてガッツリ動かす為には結局色々全部必要なら、職業プログラマにとってはまるで意味無いよね、という話。

708 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 21:15:45.01 ID:w2+KtZN6.net]
>>691
静的に検証ができるっとことだろうな

709 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 21:26:58.69 ID:LVgG7qhW.net]
>>696
何の検証?デッドロック?
async/awaitはデッドロックはしないぞ。
(永遠にジョブが終わらずに待たされてるように見えるだけ。メインスレッドは動き続けるし、GUIも動く)

710 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 21:42:40.45 ID:bJFd+1Ko.net]
一生懸命にRust坊が荒らしてるww

711 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 22:37:45.64 ID:Cem9Q3+A.net]
いやこれはMSのC#おじさんだね、チャネルの話ならまだ良いがGolangの設計にありえないasync/awaitとフレームワークを交えながら意味不明なことを呟き続ける。
普通にデッドロックするしフレームワークってなんやねん(笑)Web系なんて共有すべきデータが無いんだからシコシコ糞コード書いてろよ?
おまえの競争相手はJavaとかPHPとかRailsだから、そっちに噛みついてこい、C#なのかRustなのかどうでも良いけど頭おかしいことは確か

712 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 22:51:09.81 ID:w2+KtZN6.net]
>>697
そういう意味ではモデルの記述力か。
async/awaitは動作モデルを単純化することで安全性を保証できるようになったけど
食事する哲学者問題みたいなものを記述することができない。

713 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 22:58:09.67 ID:AWnsIzD4.net]
async/awaitみたいな使い方ができないのはヤダヤダってことなんだろうな

714 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 23:25:17.01 ID:Oiaj8YVV.net]
>>688
どの手段も場合毎に安全では無いし、それ故に画一的な標準的手段にはなり得ないから、それだけバリエーションがあるんよ。
Goはそのあたり多様性をネグって「こういう場合はこういう事に気をつけようねぇ!!」という脳筋的解決を図ってるの。
愚直だけどシンプルよ。



715 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 23:26:48.32 ID:Oiaj8YVV.net]
Taskをスレッドプール使ってやりくりするより、はるかに早いんよな…goroutine。

716 名前:デフォルトの名無しさん mailto:sage [2021/11/27(土) 23:31:12.50 ID:B7MvCGlK.net]
若い人にC#じゃなくてGoにしましょう言われたんかな?可哀想だから代替えとしてこういうのもありますよ
https://hackernoon.com/asyncawait-in-golang-an-introductory-guide-ol1e34sg
https://github.com/Joker666/AsyncGoDemo
https://github.com/StudioSol/async






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<319KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef