Hacker News new | ask | show | jobs
by test-it 4711 days ago
Have you by any chance seen the async keyword in C# 5.0? It allows one to write event-based code without callbacks obscuring the control flow. From what I've heard Python is in the process of copying this feature. Iced Coffescrip does something similar also.
2 comments

This answer sums up my feelings best:

http://stackoverflow.com/questions/7479276/what-is-the-main-...

It's good for C#, but still a language wart that could be built-in. I like that Go only has one set of APIs for everything, not the sync way and the async way.

It's sad that C#, which started out as a fixed-up Java, is now growing its own warts.

Of course, Go's not perfect either.

> I haven't yet tried Go, but I don't see how it could match the performance of C# API with a single function. C#'s async methods offload any IO to the process IO completion port threads, thus freeing the current thread to do more work.

Go generally uses synchronous functions, but a function in Go can be the subject of a "go" statement (sharing the name of the language should give an importance of how central this feature is), which causes the function to be executed as a goroutine (that is, asynchronously using an M:N threading model.)

You meant to reply to test-it, but instead it looks like you're teaching a member of the Go team how Go works.
Very interesting.

I haven't yet tried Go, but I don't see how it could match the performance of C# API with a single function. C#'s async methods offload any IO to the process IO completion port threads, thus freeing the current thread to do more work.

Node-fibers allows a similar thing with a pretty raw syntax. At least one clever programmer has painted over it and introduced await/defer in Node without any JS pre-processing [1].

If you enjoy CoffeeScript, Iced CoffeeScript does a great job of this too.

[1] http://alexeypetrushin.github.io/synchronize/docs/index.html