Den 18. feb. 2012 kl. 01:58 skrev Charles R Harris <charlesr.har...@gmail.com>:

> 
> 
> On Fri, Feb 17, 2012 at 4:44 PM, David Cournapeau <courn...@gmail.com> wrote:
> I don't think c++ has any significant advantage over c for high performance 
> libraries. I am not convinced by the number of people argument either: it is 
> not my experience that c++ is easier to maintain in a open source context, 
> where the level of people is far from consistent. I doubt many people did not 
> contribute to numoy because it is in c instead if c++. While this is somehow 
> subjective, there are reasons that c is much more common than c++ in that 
> context.
> 
> 
> I think C++ offers much better tools than C for the sort of things in Numpy. 
> The compiler will take care of lots of things that now have to be hand 
> crafted and I wouldn't be surprised to see the code size shrink by a 
> significant factor. 

The C++11 standard is fantastic. There are automatic data types, closures, 
reference counting, weak references, an improved STL with datatypes that map 
almost 1:1 against any built-in Python type, a sane threading API, regex, ect. 
Even prng is Mersenne Twister by standard. With C++11 it is finally possible to 
"write C++ (almost) like Python". On the downside, C++ takes a long term to 
learn, most C++ text books teach bad programming habits from the beginning to 
the end, and C++ becomes inherently dangerous if you write C++ like C. Many 
also abuse C++ as an bloatware generator. Templates can also be abused to write 
code that are impossible to debug. While it in theory could be better, C is a 
much smaller language. Personally I prefer C++ to C, but I am not convinced it 
will be better for NumPy.

I agree about Cython. It is nice for writing a Python interface for C, but get 
messy and unclean when used for anything else. It also has too much focus on 
adding all sorts of "new features" instead of correctness and stability. I 
don't trust it to generate bug-free code anymore. 

For wrapping C, Swig might be just as good. For C++, SIP, CXX or Boost.Pyton 
work well too.

If cracy ideas are allowed, what about PyPy RPython? Or perhaps Go? Or even C# 
if a native compuler could be found?


Sturla










> I would much rather move most part to cython to solve subtle ref counting 
> issues, typically.
> 
> 
> Not me, I'd rather write most stuff in C/C++ than Cython, C is cleaner ;) 
> Cython good for the Python interface, but once past that barrier C is easier, 
> and C++ has lots of useful things.
> The only way that i know of to have a stable and usable abi is to wrap the 
> c++ code in c. Wrapping c++ libraries in python  has always been a pain in my 
> experience. How are template or exceptions handled across languages ? it will 
> also be a significant issue on windows with open source compilers.
> 
> Interestingly, the api from clang exported to other languages is in c...
> 
> 
> The api isn't the same as the implementation language. I wouldn't prejudge 
> these issues, but some indication of how they would be solved might be 
> helpful.
> 
> <snip>
> 
> Chuck 
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to