- 951 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 01:11:35.81 ID:kpnhrKVl.net]
- >>915
> だから「Rustが1番、Goが2番、でも書きやすいからGoを使う」という発想がおかしい。 この発想は俺は別におかしいとは思ってない。 例えばアメリカでは「Pythonで書け」と言われるらしいが、これは、 「Pythonは糞だが誰でも読める。前任者がいなくなっても後任者がすぐ見つかる」からであり、 自分個人で完結する物以外は言語特性や好みだけで選べるものでもない。 だからWeb系なら「とりあえずJS/TSで書け」となるのが妥当、という話はすでに788でした通り。 が、まあ、これはさておき、 > 「この案件にはGoが1番良い」という発想でGoを選定するんよ。 だからこれは何なんだよ?という話だろ。Web系ではない、というか、 TS/Node/Rustが出てきた時点でWeb系に最適な解ではなくなったというのは792,857で言ったとおり。 > プログラミングのパラダイムとしてのasyncであれば、 > goは同期関数のように書いてもほぼ全ての行に対してasync/awaitだよ。それがgoroutineなんよ。 これは言いすぎだが、goroutineでasyncの代替になるのは事実だ。 ただ、そういう書き方って基本的にしてないでしょ。 多くの人はマルチスレッドだと思って書いてるし、Goの公式ドキュメントもそうだったと思ったが。 (goroutineは非同期を実現するための物です!!!なんて謳ってたっけ?) マルチスレッド:同期関数を実行するスレッドが沢山。 単に高火力を必要とするならスレッドを複数起動して既にあるコードをぶち込めばOK。 非同期:非同期ジョブは『どの順で完了しても』問題なく動くように書く必要があり、 また、非同期ジョブの実行順/完了順の指定も出来ない。 (だから数珠繋ぎにするしかなく、コールバック地獄だPromiseだ、という話になる) だから非同期の場合は根本的にマルチスレッドとはプログラミングを変える必要があって、 具体的にはイベントドリブンで書く事になる。だからJSにはmainがない。 ところがGUIもイベントドリブンで書くので、元々GUI担当のJSとは相性がいい。 (というか、だから当時は異端でしかない「非同期」を採用したのかもしれないが)
|

|