[Numpy-discussion] How a transition to C++ could work

Ben Walsh ben_w_123@yahoo.co...
Sun Feb 19 03:10:24 CST 2012

> Date: Sun, 19 Feb 2012 01:18:20 -0600
> From: Mark Wiebe <mwwiebe@gmail.com>
> Subject: [Numpy-discussion] How a transition to C++ could work
> To: Discussion of Numerical Python <NumPy-Discussion@scipy.org>
> Message-ID:
> 	<CAMRnEmpVTmt=KduRpZKtgUi516oQtqD4vAzm746HmpqgpFXNqQ@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> The suggestion of transitioning the NumPy core code from C to C++ has
> sparked a vigorous debate, and I thought I'd start a new thread to give my
> perspective on some of the issues raised, and describe how such a
> transition could occur.
> First, I'd like to reiterate the gcc rationale for their choice to switch:
> http://gcc.gnu.org/wiki/gcc-in-cxx#Rationale
> In particular, these points deserve emphasis:
>   - The C subset of C++ is just as efficient as C.
>   - C++ supports cleaner code in several significant cases.
>   - C++ makes it easier to write cleaner interfaces by making it harder to
>   break interface boundaries.
>   - C++ never requires uglier code.

I think they're trying to solve a different problem.

I thought the problem that numpy was trying to solve is "make inner loops 
of numerical algorithms very fast". C is great for this because you can 
write C code and picture precisely what assembly code will be generated.

C++ removes some of this advantage -- now there is extra code generated by 
the compiler to handle constructors, destructors, operators etc which can 
make a material difference to fast inner loops. So you end up just writing 
"C-style" anyway.

On the other hand, if your problem really is "write lots of OO code with 
virtual methods and have it turned into machine code" (probably like the 
GCC guys) then maybe C++ is the way to go.

Some more opinions on C++: 

Sorry if this all seems a bit negative about C++. It's just been my 
experience that C++ adds complexity while C keeps things nice and simple.

Looking forward to seeing some more concrete examples.



More information about the NumPy-Discussion mailing list