On Sunday, 14 June 2015 at 14:25:11 UTC, Ilya Yaroshenko wrote:
I am sorry for this trolling:
Lisp is the best abstraction, thought.
Even it if was, it does not provide the meta info and alignment
type constraints that makes it possible to hardware/SIMD optimize
it behind the scenes.
For example many programmers don't want to use Boost only
because it's abstractions makes them crazy.
Yes, C++ templates are a hard nut to crack, if D had added
excellent pattern matching to its meta programming repertoire the
I think this would be enough to put D in a different league.
Application programmers should not have to deal with lots of type
parameters, they can use the simplified version (aliases). That's
what I do in my C++ libs, using templated aliasing to make a
complicated type composition easy to use while still getting the
benefits generic pattern matching and generic programming.
Convolutions, identiy matrices, invertible matrices are stuff
For daily scientific purposes - yes.
For R/Matlab like mathematical library - yes.
For real world application - no. Engineer can achieve best
performance without special cases by lowering "abstraction"
down. Simplicity and transparency ("how it works") is more
important in this case.
Getting platform optimized versions of frequently used heavy
operations is the primary reason for why I would use a builtin
library over rolling my own. Especially if the compiler has
builtin high-level optimizations for the algebra.
A naive basic matrix library is simple to write, I don't need
standard library support for that + I get it to work the way I
want by using SIMD registers directly... => I probably would not
use it if I could implement it in less than 10 hours.