[過去ログ] Go language part 5 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
877(1): デフォルトの名無しさん [] 2025/05/18(日) 00:19:36.18 ID:/UZONODy(1/18) AAS
GoogleがC++とJava使ってるっぽいからそれの代替用途でしょ
Cの代替ではない、あくまでも高級言語
881: デフォルトの名無しさん [] 2025/05/18(日) 02:04:06.55 ID:/UZONODy(2/18) AAS
ネイティブスレッドを扱えずにグリーンスレッドモデルの時点でCの代替を想定してなさそうだけども
887(2): デフォルトの名無しさん [] 2025/05/18(日) 12:49:49.95 ID:/UZONODy(3/18) AAS
Javascriptでフロントエンドプログラム初心者が簡単に使えるから流行っただけ
async/awaitの発祥はC# (F#)だけどGoと同じくマルチスレッド非同期だわ、async awaitがシングルスレッドと勘違いしているようだが元々JSがその仕様だったのをそれにあわせて実装しただけ
JSはC#のasync/awaitをパクった劣化版に過ぎない、標準ライブラリはコールバックでawait使えなかったりキャンセル処理もサポートしてないゴミ
888: デフォルトの名無しさん [] 2025/05/18(日) 13:06:33.55 ID:/UZONODy(4/18) AAS
シングルスレッドで十分w
じゃあなんでRedisに対してDragonflyやGarnetが出てきてるんだ?
891(1): デフォルトの名無しさん [] 2025/05/18(日) 13:38:16.33 ID:/UZONODy(5/18) AAS
>>890
だからいちいちコールバック形式の関数をプロミス化するのが面倒だって言ってるんだろ
キャンセル処理すら最近になるまで対応してなかったゴミ、今もまともに扱えない
.NETだったら全部xxxAsyncとxxxの2つが用意されててAsyncには必ずキャンセル用のCancellationTokenを渡せる
Goはcontextを全て渡せる
JSはabortcontrollerはほぼ対応してない、あまりにも終わってるゴミクズ
Node.jsやらDenoとかいうのは最悪の発明だわ、JSをブラウザ以外の環境で流行らした愚行、そんなゴミ言語とか使いたくないんでね
なんでブラウザ以外でjsだのtsだのゴミ言語ランタイム使わないといけねーのw
作者は死んだ方がいいわ
892(1): デフォルトの名無しさん [] 2025/05/18(日) 13:44:45.47 ID:/UZONODy(6/18) AAS
>>890
お前が言ってることはC#でTaskCompletionSourceやTaskFactory.FromAsyncで旧来の非同期処理をTask化してasync awaitで使えるから標準ライブラリは前の型式のままでいいって言ってるようなもん
.NETはちゃんと全ての非同期処理をTask化してるからそのままasync awaitが使えてスムーズ
Node.jsは一度コールバック形式を全てpromiseした後何を血迷ったかまだコールバック形式に戻してその後async/awaitを実装したっていう経緯があるめちゃくちゃランタイムなの知らないんだろうなお前は
結果的に標準ライブラリをそのままスムーズにasync awaitで使えないゴミ環境が出来上がったw
895(1): デフォルトの名無しさん [] 2025/05/18(日) 14:27:42.23 ID:/UZONODy(7/18) AAS
>>893
async awaitで使うためにPromiseラップするのもpromify使うのもめんどくさーよ
その例でTaskCompletuonSourceとTaskFactory.FromAsyncを挙げた
ちゃんと読め文盲
仮に面倒じゃないならなぜfsにpromise版があったりhttpリクエストするだけのくせにnode-fetchやらgotやらaxiosやら使ってるんだ?
標準ライブラリでそのままasync awaitが使えないから使ってんだろ、これが完全にお前が間違ってることを証明してるだろ
>>894
だからC#のasync awaitを完全に理解してるから劣化版のJSだって理解してるよ、なんでその程度のこと理解してないと思った?
C#が発祥なんだからどのようにコンパイラがステートマシンに変換しTaskを利用し実装してるか深く理解してるよ
お前はJSがどう内部で変換して利用してるか理解してないんだろ?
promiseに変換する程度の浅い知識じゃなくて深く理解してないだろ
896(1): デフォルトの名無しさん [] 2025/05/18(日) 14:39:10.49 ID:/UZONODy(8/18) AAS
お前みたいに jsだのゴミ言語だけ触って async/await を分かった気になってる知ったかクソ野郎がマウント取るから マジで終わってる
node.js だとのdeno だのゴミは地球上に生まれるべきじゃなかった お前みたいなマウントクソ野郎が現れるからだ。何がGoより シングルスレッドモデルのJS async/await が優れてるだw
async/await が C# 発祥ってことも知らない。シングルスレッド前提だの荒唐無稽なデマを広げやがる
Node.jsがもともとイベントループでシングルスレッドモデルを採用してたから、それに合わせてasync/awaitをC#から逆輸入しシングルスレッドで実装したのが事実だわ無知野郎
ただ非同期処理に必須な統一されたキャンセル処理を実装しなかったから意味不明なことになってるけどなw 普通パクる時ってのはパクリ元よりいいものに改善するのが普通だけどNode.js はただの劣化版だからなw
898: デフォルトの名無しさん [] 2025/05/18(日) 14:50:23.49 ID:/UZONODy(9/18) AAS
例えばNode.jsの代表的なゴミ例として挙げられるのがスリープ処理な
C# だったら await Task.Delay(1000) で待てる、キャンセルしたかったらTask.Delay(1000, token)だ。実にシンプル
Go だったら グリーンスレッドだから time.Sleep(time.Second * 1) で よい
JS(笑) だと await new Promise(resolve => setTimeout(resolve, 1000)); だw
キャンセル処理を入れると ChatGPT実装でこうだw
await Promise.race([
new Promise(r => setTimeout(r, 1000)),
new Promise((_, rej) =>
ctrl.signal.aborted
? rej(new Error('canceled'))
: ctrl.signal.addEventListener('abort', () => rej(new Error('canceled')), { once: true })
)
]);
何が Promiseでラップするのは簡単だよw、じゃあなんでこれをsleep関数にしてる奴が大量にいるんだ?
この程度標準ライブラリで最初から用意しとけゴミ言語ランタイム
(最近にようやくpromise版が追加したようだが、今更無意味だ。遅すぎゴミ)
901(1): デフォルトの名無しさん [] 2025/05/18(日) 15:03:12.65 ID:/UZONODy(10/18) AAS
>>897
JSでもasync await は generator を使ったステートマシンに変換されるよ
無知乙。ただPromiseに変換するだけじゃないからw
じゃあなんての呼び出しメソッドを async にしないといけないんだ?そんな簡単な変換じゃないからw
>>899
お前と同一人物だなんて仮定してないぞ、さっきからお前勝手に妄想しすぎ、ただJS信者という点ではお前と共通
お前みたいなのがいるからNode.jsは生まれるべきじゃなかった
903(1): デフォルトの名無しさん [] 2025/05/18(日) 15:31:42.85 ID:/UZONODy(11/18) AAS
>>902
その awaitってやった関数は必ずasyncにする必要がありコンパイラはこれをgeneratorベースのステートマシンに変換するからw
C# だって Task をそのまま返す関数を そのまま await できるだろ?一体何が違うんだ?
ほんとお前みたいな無知って困るわ
そもそも俺が話していたのはJSで標準ライブラリをいちいち promise でラップするのは面倒だって話だよね?
それは sleepの例だったり fs/promises の存在だったり、httpクライアントで誰も標準ライブラリを使わない点の3つで完全論破したはずだけど
ちなみに俺はC#でgithub star 2000ぐらいのOSS作ってるけどお前はそれぐらいの実績はあるんか?プログラミングしたことないエアプだの煽ってきてるけど
904: デフォルトの名無しさん [] 2025/05/18(日) 15:39:51.60 ID:/UZONODy(12/18) AAS
何が違うの?そもそもお前が何を言いたいのかわからん
JS
```
async function main() {
console.log(await HelloAsync())
}
function HelloAsync() {
return Promise.resolve("hello");
}
main()
```
C#
```
public class HelloWorld
{
public static async Task Main(string[] args)
{
Console.WriteLine (await HelloAsync());
}
public static Task<string> HelloAsync()
{
return Task.FromResult("Hello");
}
}
```
906(1): デフォルトの名無しさん [] 2025/05/18(日) 15:55:47.79 ID:/UZONODy(13/18) AAS
>>905
だから このJSの例だと main() 関数で await使うためにコンパイラが main関数を generatorベースの ステートマシンに変換してるからw
そのまま行けるってのが意味わからんのだけど説明できないだろお前w
別にこれはC#だろうだRustだろうが何も変わらないからw
C# も この例だとMain関数がステートマシンに変換されていて、HelloAsyncはTaskを返すだけで何もしてない
一体JSと何が違うんだ???説明できないだろasync/awaitをそもそも理解できていないみたいだから
> asyncもPromiseもないコールバックだけの時代からなぜコールバック待ちの間に無関係な他の関数が実行できるのかを理解できなかったのか?
何言ってるのかわからん、コールバックだのTaskだのPromiseだのそれはコードの書き方の違いであって最終的にepoll や IOCPで非同期で処理されていることは何も変わらない
無知はお前だ、お前が勉強しろ
OSSスターで2000ぐらい獲得してから勉強しろだのマウントとってこいゴミ
909(1): デフォルトの名無しさん [] 2025/05/18(日) 16:33:35.47 ID:/UZONODy(14/18) AAS
JSはC# みたいにILから逆コンパイルできないから内部でどうなってるかは簡単にわからないけどJSだってステートマシン相当のものに変換してるからw
async/await をコンパイラレベルで Promise, Task に変換し実装されていること自体はC#もJSも何も変わらない
お前そもそもステートマシンの理解何もしてないだろ
これを見ろ無知野郎 これがC#のステートマシンの実装だ、単なるシンタックスシュガーにすぎないことがわかる
https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA+B6DACA8gOwBsBLfGbAYQGJsBRAE2IBdpsAzVt2GAWACgs2AOpRmMADR1GTbAEN89bACUArvmwBPCCqiUakeuQACABj14ipchQgBbAA7FCMKP35GATAEZ3Zo14BWAG53AGZsT2wACRhCQgghaEJ6fgBvMIivJAiADgjsgFlZUgAKfxMAbQBdOSgAcwBnAEo09y8ATmwyzpi4iABBBo18MBKmppC+AF83PiNw/2yjJAAecoA+aNj4weHRlr50uYB2fIA6ADEoOyUYBpVCJhKAIl7454n+GensIA=
> そのためC#などより早く非同期タスクが実現されてきた
また嘘ついてるよこいつ
そもそもJSの Promiseも 他言語からパクってるにすぎない
C# の Task は2010年実装 (.NET Framework 4.0) だ、JavaScriptはES2015 だから 2015 年だ
Node.js は コールバック地獄 に2015まで悩まされてたけど C# はそんな問題とっくに解決してたんだわ
だからpromiseもasync/awaitと同様C#のパクリといってもいいな
Promise/Task以外の非同期実装なら C# だって前からあるわ
ブラウザ側の言語だけ触ってるのが技術マウントとってくるのは滑稽だからやめたほうがいいよ
> つまりasync/awaitなんか関係なく初めからイベントループを内蔵している
C# はシングルスレッドのイベントループなどのゴミじゃなくてTaskはスレッドプールで実行されるからそのままマルチコア使えるんだわw
メインスレッドに戻す機能(SynchronizationContext, TaskScheduler) もあるからJSシングルスレッドにしたかったらそれもできてロックフリーにできるんだわ
(マルチスレッド使った方が良いので普通やらないが)
911(1): デフォルトの名無しさん [] 2025/05/18(日) 16:46:23.38 ID:/UZONODy(15/18) AAS
>>910
まともに会話できないアスペ死ねよ
お前と同一視してないって言ってんだろ
JSを持ち上げる馬鹿としては同一だから言ってるだけ
話題そらしてないでこれの意味について論理的に説明してみろよ
> そのためC#などようなステートマシン変換なんか必要とせずに単なるシンタックスシュガーだけでasync/awaitも導入できている
上でC#コンパイラがどう async await を Taskベースのステートマシンに変換したかを教えたが
JSも別に何も変わらないから。結局お前が何が言いたいのかを説明しろ無知のくせにマウントとってくる無能
913(1): デフォルトの名無しさん [] 2025/05/18(日) 17:36:48.91 ID:/UZONODy(16/18) AAS
>>912
C# は Taskベースのスレッドプール実装が先にあり、その後async/awaitが導入され、コンパイラがTaskベースのステートマシンに変換する
JS は callback, Promiseベースのイベントループ実装が先にあり、その後async/awaitが導入され、(JIT)コンパイラがPromiseベースのステートマシンに変換する
この2つの一体何が違うのか説明しろ
ChatGPTの回答
質問: JavaScript の async/await は内部でPromiseを使ったステートマシンに変換されますか?
回答
```
はい。JavaScript の async/await は構文糖衣であり、内部的には Promise を使ったステートマシンに変換されます。
AsyncFunction は常に Promise を返す
ECMAScript2017 の仕様では、async function を呼び出すと新しい Promise が即座に返されます。本体は zero 個以上の await 式で分割され、各 await ごとに実行を一時停止・再開する必要があるため、概念的にはステートマシンとして動作します
モダン JavaScript エンジンでの最適化
V8(Chrome)、SpiderMonkey(Firefox)、JavaScriptCore(Safari)などのエンジンでも同様のステートマシン原理を内部に持ちつつ、ネイティブの AsyncFunction オブジェクトとして最適化して実装しています
en.wikipedia.org
```
そしてお前は最初の話題であった標準ライブラリでasync/awaitがそのまま使えない問題について何も反論できてない
以下の3つについて反論しろ
- なぜ promiseラップのsleep関数を実装するユーザが多いのか
- なぜ標準ライブラリのhttpクライアントではなく axios等を使うのか
- なぜ fs/promises は導入されたのか
914: デフォルトの名無しさん [] 2025/05/18(日) 17:40:07.52 ID:/UZONODy(17/18) AAS
理解してないなどと煽ってきたのはお前が先
Claude
```
質問: JavaScript の async/await は内部でPromiseを使ったステートマシンに変換されますか?
はい、JavaScript の async/await は内部でPromiseを使ったステートマシンに変換されます。
async/await は構文的な糖衣(シンタックスシュガー)であり、基本的にはPromiseベースのコードを書きやすくするための機能です。JavaScriptエンジンがコードを実行する際、async関数は内部的に以下のような変換が行われます:
async関数は常にPromiseを返すように変換されます
await式は、Promiseの解決を待つためのステートマシンの一部となります
関数内の各await式の前後でコードが分割され、Promiseのチェーンとして再構築されます
```
915(2): デフォルトの名無しさん [] 2025/05/18(日) 17:50:18.44 ID:/UZONODy(18/18) AAS
>> 893デフォルトの名無しさんsage2025/05/18(日) 14:00:53.82ID:eaOArS/2(2/10) 返信 (1)
>> Promise作るのにどこに面倒があるんだ?
>> プログラミングしたことがないエアプかよ
>> 自作できないならお子様向けのpromisifyもあるだろ
標準ライブラリをasync/awaitで扱うためにpromise作るのが面倒じゃないなら
なんで setTimeoutをPromiseでラップしたsleep関数を多くの人が作っているの?
なんで 標準ライブラリのhttpクライアントじゃなくて axios 等を使うの?
なんで fs/promises など一部はpromiseベースのAPIが導入されてるの?
そして何でNode.jsは他の言語では当たり前に可能な非同期のキャンセル処理をまともにサポートしてないの?
ステートマシンとか async/awaitの内部実装はどうでもいいからこれについて反論してみろ、無知のくせにマウントとってくる無能屑
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s