In response to Michael Wolfe’s “Compilers and More: Parallel Programming Made Easy?” column, Clay Breshears, ten days ago wrote a blog titled, “Why not teach ONLY parallel programming?“. In that same spirit, Clay writes another article. Here are some excerpts.
One more claim that “Parallel programming is hard” and then the claimant launching into some complex and convoluted solution to make parallel programming easier. (Matt Wolfe has some interesting observations in this regard.) How hard is it to do/learn parallel programming?
My thoughts about the proponents of the “Parallel Programming is Hard” line is that they are probably thinking about the totality of all the things one needs to have mastered to be an expert and effective parallel programmer in all situations. That is a lot of stuff and could be thought of as “hard.” But do we really need to teach it all at once, in one sitting as it were? Couldn’t we start by hitting the highlights and give some previews about what the future issues are that will give students enough information to be practical parallel programmers?
I think that learning parallel programming is no harder than learning a second programming language. C++ and Fortran and Java have syntax rules and methods of coding that must be mastered in order to write programs, as do Perl, Lisp, COBOL, Python, Ruby, Scheme, APL, C#, and a thousand other languages. Any given parallel or multithreaded programming model/method/API also has syntax rules and methods of coding that must be mastered in order to write programs.