Concurrent programming

Published:

Concurrent programming is a form of modular programming, namely factoring an overall computation into subcomputations that may be executed concurrently (not sequentially, overlapping time periods. So a concurrent programming is the paradigm of programming that allows you to use concurrent computation.

As a computation paradigm, concurrent computing is a form of computing in which several computations are executed during overlapping time periods (concurrently) instead of sequentially. Pioneers in the field of concurrent computing include Edsger Dijkstra, Per Brinch Hansen, and C.A.R. Hoare. Concurrent computation is usually confused with parallel programming. Parallel programming allows the user to run code computations at the same physical time, but concurrent is that there are computing two distinct processes at the same time alternately (but probably swapping between one to other). So, concurrent computations can be computed in parallel but it is not needed.

Concurrent challenges are usually about managing shared resources and coordination between tasks.

There are language programming oriented to apply concurrency as:

  • Join Java: concurrent, based on Java language
  • JoCaml: concurrent and distributed channel based, extension of OCaml
  • Alef: concurrent, with threads and message passing, for system programming
  • Joyce: concurrent, teaching, built on Concurrent Pascal

Or other general purpose languages that they include this paradigm:

  • Java
  • JavaScript
  • Python
  • Fortran (co-arrays)
  • Go
  • Ada
  • C++ (std::thread)
  • Scala

See also

Programming paradigm

Material

Papers

Books