On 03.03.2012 17:07, Luis Pedro Coelho wrote: > I sort of missed the big C++ discussion, but I'd like to give some examples of > how writing code can become much simpler if you are based on C++. This is from > my mahotas package, which has a thin C++ wrapper around numpy's C API
Here you are using NumPy arrays, not implementing them. That makes a big difference. Your code would be even simpler if you had used Cython or Fortran (f2py) instead of C++. The only thing you have proved is that using NumPy arrays in C can be messy, which I suspect everybody knows already. C is a good systems programming language, but it sucks for any kind of numerical computing. C++ sucks a little bit less. Using either for numerical programming usually a mistake. But NumPy core is not a case of numerical programming, it is a case of systems programming, for which C is actually very nice. And no, unmaintainable C is NOT an example of "very good C", rather the opposite. This is a big mistake: "If you compare this with the equivalent scipy.ndimage function, which is very good C code (but mostly write-only—in fact, ndimage has not been maintainable..." Another thing to observe is that the ndimage C code you cited has a major DRY violation: We have the best text (pre)processor there is to our disposal: Python. So why are there macros and switch statements for so many dtypes in there? As with C++ templates, generics in C is easy if we just let Python generate the type-specialized code we need. (Actually that is what NumPy's .src files do.) Generics is therefore not an argument for using C++. We can augment standard C with syntax suger for generics, or even NumPy arrays and Python types, using a Python script as meta-compiler. We don't need C++ for that. Sturla _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion