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

Reply via email to