Am 21.08.14 14:54, schrieb David Palao:
I consider myself a python programmer, although C++ was one of the
first languages I learned (not really deeply and long time ago).
Now I decided to retake C++, to broaden my view of the business.
However, as I progress in learning C++, I cannot take out of my head
one question
Why to use C++ instead of python?
You are asking in the wrong group; ask this in comp.lang.c++ Here most
of the programmers know Python well and maybe some C++
It is not ranting against C++. I was/am looking for small-medium
projects to exercise my C++ skills. But I'm interested in a "genuine"
C++ project: some task where C++ is really THE language (and where
python is actually a bad ab initio choice).
The truth is, that both languages have a fairly large overlap. C++ spans
a very wide gap, from tight low-level loops and direct memory access
"close to the metal" up to composing a GUI application from ready-made
building blocks. There is a variety of programming paradigmata, like
functional (so-so), object oriented (quite good), generic (very good),
imperative (shiny = the C subset). Graphically
C++:
metal |----------------------------------|
Python:
metal |------------------------------------|
If your application lives within the overlap region, and a lot of them
do, the choice is a matter of taste. I'm not even convinced that the
development time is significantly lower in Python within this overlap.
It becomes different at both ends: The more you go to the higher level,
the more will Python outperform C++ in terms of development costs, but
conversely C++ will win if you go closer to the metal. Then, as a Python
programmer, you will find yourself rewriting parts of the application in
Cython, trying PyPy, numpy, finally embedding C...
A few arguments outside of "what I can do with it" have already been given:
* For deployment, it is nice to compile and link a self-contained small
binary. Try that with matplotlib - pyinstaller gets me a 100MB
executable containing OS libraries, while the linker in C++ is able to
only link what is needed.
* Access to the hardware: C structs, raw pointers, unboxed datatypes are
needed in a painless and efficient way if you want to write, say, a
middle-level device driver
* performance is not only speed, but also memory usage. In most cases a
C++ program will consume less memory
* static type checking can find bugs at compile-time. C++ is easier to
compile (though on of the harder languages for compiler implementers),
and therefore many tools exist for static analysis.
The usual argument in favour of C++ (when comparing to python) is
performance. But I'm convinced that, in general, the right approach is
"python-profiling-(extension/numpy/Cython/...)".
Well, that's Ousterhouts dichotomy.
Christian
Christian
--
https://mail.python.org/mailman/listinfo/python-list