Static single assignment (SSA) is probably the open secret recipe for unifying imperative and functional programming [1].
In addition, there are also ongoing research effort utilizing SSA for parallel computation as found in GPU, FPGA and TPU.
For GPU we have a promising proprietary array based language Static Assignment C (SAC) as the the modern version of APL that can be used for GPU with a familiar Algol based syntax [2].
For parallel programming of hardware (e.g. FPGA, TPU) we have the independent but related work by ETH Zurich's LLHD [3] and Chris Lattner's MLIR (from LLVM team) [4].
Just wait and watch for the progress on modern compiler design based on SSA, it will most probably solve one of the most difficult problems in modern computing landscape (i.e. effortless parallel processing and computation).
In addition, there are also ongoing research effort utilizing SSA for parallel computation as found in GPU, FPGA and TPU.
For GPU we have a promising proprietary array based language Static Assignment C (SAC) as the the modern version of APL that can be used for GPU with a familiar Algol based syntax [2].
For parallel programming of hardware (e.g. FPGA, TPU) we have the independent but related work by ETH Zurich's LLHD [3] and Chris Lattner's MLIR (from LLVM team) [4].
Just wait and watch for the progress on modern compiler design based on SSA, it will most probably solve one of the most difficult problems in modern computing landscape (i.e. effortless parallel processing and computation).
[1]https://www.cs.princeton.edu/~appel/papers/ssafun.pdf
[2]http://www.sac-home.org/doku.php
[3] https://dl.acm.org/doi/abs/10.1145/3385412.3386024
[4] https://llvm.org/devmtg/2019-04/slides/Keynote-ShpeismanLatt...