Prof David West wrote:
If you are trying to emulate a "machine" - i.e. solve a problem with a
known, formal, solution - use C or C++.  That is what the language was
created to do, and nothing will be as 'machinelike' as a well-crafted
C++ program.
It's limiting that C is the primary language for high performance computing, because of its literal nature. For example, with C, even just mapping matrix manipulation to vector hardware is often impossible for compilers to do. Without careful qualification, pointers make it difficult to deduce that a memory location is used in only one way. And data alignment and relative structure ordering is implied and not open for reinterpretation (to better map to execution units). The result is we now have decades of code written for inherently scalar, serial hardware architectures. And, unfortunately, performance can only now come from using parallel, vectorized hardware. Efforts to improve the situation have been made over the years (the POOMA C++ library comes to mind), but it seems to me the problem is in large part a social one: If a problem is hard to solve with current technology its easier to hire someone else to futz with it (e.g. one of a billion `Java programmers') than it is to change the technology or the techniques. The incompetence is self-reinforcing. Much easier to feel good about the lines of code that are written, than the lines of code spent.

Marcus

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org

Reply via email to