6 ms·
This is so important. Too many asynchronous solution simply don't support cancellation, and instead just keep chugging along, doing undesirable things while was
by continuational 5y ago
This is so important. Too many asynchronous solution simply don't support cancellation, and instead just keep chugging along, doing undesirable things while wasting cpu & ram.
- bullen 5y agoRAM yes, CPU should not waste while waiting for an async. non-blocking request. Apache web server also crashes safely when some PHP script leaks memory, but if you have a proper VM with GC this is something of the past. Fortunately most web systems use Java or it's copy C# at this point and that is not going to change since Erlang has a simple memory model that cannot do joint parallel tasks. Go has no VM, WASM has no GC, rust is too slow to compile... that leaves plain C with a C++ compiler but you don't want to have that on a server because assembly seg. faults. So on the server you have to use Java. Not EE but SE.
- hnedeotes 5y ago> Erlang has a simple memory model that cannot do joint parallel tasks. What do you mean?
- bullen 5y agoYou have to copy memory before sharing it between threads. You cannot do atomic memory sharing between threads = threads cannot work on the same task at the "same" time efficiently.
- hnedeotes 5y agoThat's actually much a feature. Many problems can still be done quite efficiently, for instance stream parsing a file you can have each N newlines being sent to different processes, and the same with many other problems that can be sliced, traversing nested collections, fetching batches of records from stores, etc. Sometimes you can also reformulate the problem, but yes not all problems fit. I would add though that whenever you want to write orchestration around that parallel work it's much easier in erlang than the alternatives.
- bullen 5y agoMaybe, but some problems, like making a MMO server cannot be solved with Erlang. So everyone that uses this inferior tech is wasting their and humanitys time. Erlang was designed to make many 1-on-1 phonecalls, it's terrible for almost everything else and today 1-on-1 does not exist just like obsolete TV is unidirectional. In the future everything is many 1-to-many (requires joint parallelism) and that is the final protocol just like the final medium is 3D! We need to sharpen up and make the best tools. C (client) and JavaSE (server) are unsuperceded for decades. it's time to stop fragmenting the programmers workspace and co-operate instead. If you use any other languages you are in the wrong and history will prove you to be a wasteful person.
- AllegedAlec 5y ago> If you use any other language you are in the wrong and history will prove you to be a wasteful person. You're an idiot. Not because of your choice of tools, but because of your dogmatic shittalking of others for preferring other tools.
- bullen 5y agoI will shittalk waste until my last breath. Freedom of choosing the wrong things costs energy and we're running out of energy. If you are making/playing a 2D game f.ex you are in the wrong, we have two eyes to see depth because the world is 3D!
- AllegedAlec 5y agoTake your meds.
- hnedeotes 5y agoYeah, just look at the amazing tech and tools. The fragmentation is by design and doesn't come through languages. And boy, that's some investment on technology you have there going.
- dnautics 5y agoThere are enough escape hatches in erlang to efficiently do "joint parallel tasks" when you need them.