2011/2/17 Nicolas Bock <[email protected]>: > 2011/2/17 Jordi Gutiérrez Hermoso <[email protected]>: >> On 17 February 2011 13:15, Nicolas Bock <[email protected]> wrote: >>> I am writing a small linear algebra library >> [snip] >>> would like to reuse existing code as much as possible. >> >> http://arma.sourceforge.net/ >> >> or the present GSL. >> >> There really is no reason to write your own linear algebra library, >> no matter how small. Well, unless the reason is educational.
> Yes, the reason is educational :) In that case, it looks like you've discovered C templates. C++ templates were inspired by it and were intended to replace C templates. Originally templates in C++ were just a mechanism to replace C preprocessor templates with something that compiler could understand (as you know, CPP macros aren't seen by the compiler). Later people realised that C++ templates were their own little sublanguage of C++ and went to town with them. As to your original questions... > * Why did you decide to stick with C and not use C++ and its > template functionality? Wouldn't that have lead to a cleaner > implementation? GSL is part of GNU, and GNU generally dislikes C++. I do think GNU writes the most beautiful C code out there, which is a rarity. Much "C" code is more properly called "C/C++", a bizarre Frankenstein monster of a language, if you ask me. Mind you, I don't mind C++ myself, but I don't like it when C and C++ mix. They are two separate languages and should stay that way. In my opinion. > * Was portability an issue? GNU likes C, because C is sleek. > * Was there a particular reason to implement the templates in the C > files with includes to other C files as opposed to in the makefile > with "-D..." preprocessor arguments? This is analogous to explicit template instantiation in C++. You could also do it by passing CPP macros in the compilation line. This is just a matter of taste. - Jordi G. H. _______________________________________________ Help-gsl mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gsl
