Hi Jordi, thanks for the detailed reply. Good point about the C/C++ hybrid. Thanks to you, I feel better again about my choice of C and my feeling against using C++, just for the templates :)
Thanks again, nick 2011/2/17 Jordi Gutiérrez Hermoso <[email protected]>: > 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
