timonkrebs / MemoizR

Declarative Structured Concurrency for C#
Apache License 2.0
106 stars 3 forks source link

Write Article about difference between Parallel, Async, Concurrent #20

Open timonkrebs opened 11 months ago

timonkrebs commented 11 months ago

Title Idea: The hidden reason why C# needs configureAwait and JavaScript does not.

Short answer C# uses multi threaded async model while JavaScript uses single threaded async model.

Concurrency is almost as confusing as Monads

Douglas Crockford grasped this fallacy very well:

The monadic curse is that once someone learns what monads are and how to use them, they lose the ability to explain them to other people

Monads have reputation of being something very abstract and very confusing.

The Fallacy of Monad Tutorials Numerous attempts were made to explain monads in simple definitions; and monad tutorials have become a genre of its own. And yet, times and times again, they fail to enlighten the readers.

https://mikhail.io/2018/07/monads-explained-in-csharp-again/

Wrong statements: Highlighted result on google for search: concurrent programming vs asynchronous https://stackoverflow.com/questions/4844637/what-is-the-difference-between-concurrency-parallelism-and-asynchronous-methods#:~:text=Concurrency%20is%20having%20two%20tasks,on%20the%20same%201%20thread. Concurrency is having two tasks run in parallel on separate threads. However, asynchronous methods run in parallel but on the same 1 thread

Confusing definition:

https://en.m.wikipedia.org/wiki/Concurrent_computing concept of concurrent computing is frequently confused with the related but distinct concept of parallel computing although both can be described as "multiple processes executing during the same period of time".

https://en.m.wikipedia.org/wiki/Concurrency_(computer_science) Concurrency is about structure, parallelism is about execution, concurrency provides a way to structure a solution to solve a problem that may (but not necessarily) be parallelizable.