Idealism vs Realism In Programming

We are hybrid programmers. We like to apply programming paradigms and consequently that fit to the problem type. Especially its decomposition paradigm. Data-oriented, function-oriented, object-oriented, logical,  rule based, ....
But there is more: idealism vs realism?
Idealism strives for abstraction, expressiveness, productivity, portability, ....
Realism is driven by implementation, efficiency, performance, system programming.
The idealists love Mathematica, the realists C++?

There is a lot of pragmatism in Mathematica 8!

C/C++ interfaces:
  • CCompilerDriver - invoke C compilers from within Mathematica
  • SymbolicC - write and manipulate C syntax in Mathematica language, allows for programmable C code generation 
  • LibraryLink - load C functions as native Matematica functions that become part of Mathematica kernel, share data between kernel and C functions. In an integrated workflow the CCompilerDriver package generates LibraryLink compatible shared libraries.

Execution envirinments:
  • Interpreter - includes everything but exclusively symbolic programming, arbitrary-preciasion calculation, heterogeneous expressions, ..
  • Compiler --> Wolfram Virtual Machine - optimizes for machine-precision calculation, homogeneous expressions, numerical functions, procedural programming, functionals programming
  • Compiler --> Native Code - transforming Mathematica function into a shared library using the above transformations
In certain applications speed ups can be 1:10 from Interpreter to Wolfram Virtual Machine and 1:10 from Wolfram Virtual Machine to Native Code (orthogonal to the support of grids and CUDA). 

How to summarize and conclude?
Use Mathematica interpreter for productivity, compiler for performance. C language interface when necessary. 

I have compiled this from a talk, our Senior Software Engineer, Sascha Kratky gave at the Austria Mathematica Conference recently.