2012/2/19 Sturla Molden <stu...@molden.no> > Den 19.02.2012 10:28, skrev Mark Wiebe: > > > > Particular styles of using templates can cause this, yes. To properly > > do this kind of advanced C++ library work, it's important to think > > about the big-O notation behavior of your template instantiations, not > > just the big-O notation of run-time. C++ templates have a > > turing-complete language (which is said to be quite similar to > > haskell, but spelled vastly different) running at compile time in > > them. This is what gives template meta-programming in C++ great power, > > but since templates weren't designed for this style of programming > > originally, template meta-programming is not very easy. > > > > > > The problem with metaprogramming is that we are doing manually the work > that belongs to the compiler. Blitz++ was supposed to be a library that > "thought like a compiler". But then compilers just got better. Today, it > is no longer possible for a numerical library programmer to outsmart an > optimizing C++ compiler. All metaprogramming can do today is produce > error messages noone can understand. And the resulting code will often > be slower because the compiler has less opportunities to do its work. >
As I've said, the compiler is pretty much stupid. It cannot do what Blitzz++ did, or what Eigen is currently doing, mainly because of the basis different languages (C or C++). -- Information System Engineer, Ph.D. Blog: http://matt.eifelle.com LinkedIn: http://www.linkedin.com/in/matthieubrucher
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion