4 ms·
Channels will be a better fit inside .NET? >powerful and often simpler than equivalent channel based systems, conceptually Without true experience with any of
by mamcx 10y ago
Channels will be a better fit inside .NET?
>powerful and often simpler than equivalent channel based systems, conceptually
Without true experience with any of agents/channels, what make it simpler? I read the GO and compare with Actors in F# or Erlang and for me it easier to understand channels. Mainly because are typed on the data.
- di4na 10y agoThe thing is, Types are really hard to make work in a distributed unbounded non deterministic system like... well any system that is multi threaded. You can try to hide stuff with channels, but most of the time, you will feel the abstraction leaking.
- mamcx 10y agoI maybe can see if we are talking about distributed across machines, runtimes with different versions or languages, but not with multi threaded. Any example?
- di4na 10y agoWhat is the difference between multithread and different machines? Time to get a synchronous response ? At best. But errors happens to and error situations are the same.
- mamcx 10y agoBut why are types a problem?
- di4na 10y agoBecause typing errors and infinite timeout is really hard..
- mamcx 10y agoI can't understand this. Can you give a more concrete example?
- di4na 10y agoHow do you prove something that is undecidable ?
- mamcx 10y agoLook, I honestly don't understand what you are talking about. Why suddenly we are talking about undecidable? I have not experience in this area.
- di4na 10y agoIf something have an infinite timeout, how can you know it will be the correct type that come back, because you can not know what comes back.
- mamcx 10y agoOk, but is the same problem if is untyped, or you mean that while program A is waiting for B to return [String], program B is updated to return [Int]? But is the same if untyped. Because the internal schema is changed?
- di4na 10y agowhat is the usage of your type if you can not check them through the compiler ?
- KirinDave 10y ago> Channels will be a better fit inside .NET? I suppose? > Without true experience with any of agents/channels, what make it simpler? If you are very clear about not retaining references to things you ship to another actor, Erlang is marvelously concurrent without any of the usual considerations for shared memory or functional programming we have to make. You can confidently manipulate and mutate variables in your actor scope because your actor is single threaded and OTP makes async-with-response calls trivial to mix in with this when you want function semantics. Actor based systems give you a place to put sequential mutation code and a clear, clean, scalable way to define parallel operations. Channels really... well they give you this blunt force instrument to export data but you end up implementing actor-like management every time they're invoked if you're doing any sort of fan-out anyways.
- mamcx 10y agoOk, this make it clear a true advantage, having the mutations (and I assume, stack and related) isolated is compelling. I imagine this is the reason for build a custom-made VM, and not be a good fit inside Java/.NET?