An alternative is to look at the data - multiple processors should make dealing with data in the form of vectors and matrices much faster. However, you have to THINK in terms of vector and matrix data.
A language dating back to the 1960's and 1970's did just that - it was called APL (A Programming Language). Loops, while do-able (forgive the pun), were extremely wasteful of cpu time - by a factor of 80 to 100. The APL interpreter took care of that bookkeeping for you if you used vectors or matrices as whole entities rather than grinding through them element by element. The language was extremely rich in vector and matrix operators (and their combinations) which allowed a programmer to take advantage of that quirk/feature of the interpreter. The obvious step was to use parallel hardware. The word on the street was that interpreted APL ran faster on one of the few parallel cpus of the time than did compiled Fortran. Unfortunately APL did not transition well into GUI world, although at least one modern implementation is around.
APL was also the only truly interactive language I have run into, but that is another story.