For decades, computing speeds seemingly doubled
every 24 months by increasing the clock speed and giving
software a ”free ride” to better performance. This free ride,
however, effectively ended by the mid-to-late 2000s. With clock
speeds having plateaued and computational horsepower instead
increasing due to increasing the number of cores per processor,
the vision for parallel computing, which started more than 40
years ago, is a revolution that has now (ubiquitously) arrived.
In addition to traditional supercomputing clusters, parallel computing
with multiple cores can be found in desktops, laptops,
and even mobile smartphones. This ubiquitous parallelism in
hardware presents at least two major challenges: (1) difficulty
in easily extracting parallel performance via current software
abstractions and (2) difficulty in delivering correctness — as
even without parallelism, software defects already account for
up to 40 percent of system failures. Consequently, this paper
presents preliminary research that reduces the learning curve
to parallel programming by introducing such concepts into a
visual (but currently serial) programming language called Snap!.
Furthermore, the proposed visual abstractions automatically
generate parallel code for the end user so as to better ensure
that the resulting (text-based) code is correct.
For more details : Creative Product Video. Programmer FAQs