dayangrah.am

concurrency : the art of doing many things at once

In the realm of software development, my daily work primarily revolves around high-level scripting languages such as JavaScript and Python. These languages abstract away many of the complexities of system-level programming, allowing for rapid development and ease of use. However, this convenience comes at a cost: a limited exposure to the intricacies of low-level programming concepts, particularly in areas like concurrency.

Concurrency, the art of executing multiple tasks simultaneously, often appears as a mysterious and complex topic to those of us primarily versed in high-level languages. It’s a fundamental concept in computer science that becomes increasingly important as we push the boundaries of performance and efficiency in our applications.

My lack of formal computer science education has left a gap in my understanding of these crucial low-level concepts. This realization has sparked a strong desire to delve deeper into the world of concurrency, to demystify what often seems like a “dark art” in programming.

To address this knowledge gap, I plan to:

  1. Study the fundamentals of concurrent programming models and paradigms.
  2. Explore how concurrency is implemented in different programming languages and systems.
  3. Experiment with writing concurrent programs to gain hands-on experience.
  4. Investigate common concurrency issues like race conditions and deadlocks.
  5. Learn about synchronization mechanisms and how they’re used to manage shared resources.

Resources I plan to check out

Computer Systems: A Programmer’s Perspective Operating Systems: Three Easy Pieces

---