SIMULA 67 is an extension of ALGOL 60, taking both block structure and the
control statements from that language. The primary deficiency of ALGOL 60
(and other languages at that time) for simulation applications was the design of
its subprograms. Simulation requires subprograms that are allowed to restart
at the position where they previously stopped. Subprograms with this kind of
control are known as coroutines because the caller and called subprograms
have a somewhat equal relationship with each other, rather than the rigid
master/slave relationship they have in most imperative languages.