One of the Answers to the Question "Who Needs All that Parallelism at All?"
One can often find discussions on the net that multicore processors, as well as parallelism, are needless, and all this is tricks of one (two or three) companies, which need to sell new processors.
I will not appeal to everyone "loving" parallelism, I will just tell about parallel applications helping software developers.
When multicore processors started to appear, software development tools generally did not support the new possibilities in paralleling. The question is not about paralleling programs done by a developer but about development tools themselves.
The compiler worked as a consecutive application, compiling the user program file by file. The code analyzer processed the source code file by file, trying to find errors in it. The build system (make) executed one task after another.
Luckily for ordinary developers, the creators of development systems realized quite soon how parallelism can help the users of their systems.
In the build system make, a command "-j" (or "-jobs") was added; it allows to execute commands in a parallel way.
Our code analyzer PVS-Studio fully supports work on multicore machines. This means that during work on an eight core machine, the analysis will run on all the cores. Parallelism in the analyzer is implemented due to parallel processing of several files. With this, the developer can always set the used number of cores in the analyzer settings. E.g., on an eight core machine, one can use only six cores for the analysis, and continue work with the two remaining cores without waiting for the tool to finish.
The possibility of first compiling the projects in a parallel way was added to the development environment Microsoft Visual Studio 2005, and later, in 2008 version, the possibility of compiling files separately was added (option /MP). Well, Microsoft Visual C++ 2005 users remember the number of broken copies when IntelliSense module appeared in this version. The topic about disabling IntelliSence has 120 000 views in MSDN forum. That is all because on a single core machine, this technology worked not at its best, and slowed down the work quite seriously. However, with the appearance of multicore machines, all these discussions died away. IntelliSence works on one core and does not disturb anyone.
If, to speed up the compilation, earlier one had to use various outside tools such as MPCL or Incredibuild, now all this is integrated into development tools.
E.g., this figure of an overloaded machine with eight cores was done right during PVS-Studio analyzer running.
Thus, most developers welcomed the forthcoming of parallelism support in development tools. But why - most, and not all? Just because with the forthcoming of parallel compilation of a large project, one has to drink tea much faster than previously :-) .