Simulating complexity with asynchronous programming
Simulations are a powerful, but underrated, tool for making informed decisions. A simulation is a controlled scenario in which you model a system that is difficult to frame completely, mentally or analytically. Simulations try to replicate as much as possible the original system, adding some restrictions or conditions to let you explore model outcomes or validate hypotheses in a systematic, controlled and simplified way.
Systems can be classified based on their complexity, although the concept of complexity itself is rather difficult to define. You can associate the idea of complexity with quantitative measurements of some kind, for example information (following Claude Shannon’s information theory), with bifurcations and chaos (the number of possible ways in which a system can behave given a set of conditions), or with a definition closer to the theoretical model of computation introduced by A. M. Turing, from which point...