On Saturday, 14 March 2015 at 18:33:24 UTC, Russel Winder wrote:
On Sat, 2015-03-14 at 18:11 +0000, Chris via Digitalmars-d
wrote:
[…]
This may be part of it. But I know that open source free
software in this sector is also written in C/C++ or Java. I
haven't seen a single system that was acceptable in Python.
Sooner or later they all go back to C.
Java will have the same problem as Python regarding shipping
source to
anyone who knowns how to decompile Java.
I just don't see the point in using Python only to rewrite
performance critical parts in C/C++ or D. Why not start with D
or C from scratch. Also, I know that this Cython and C module
mixing becomes a mess very quickly which makes development
tricky and deployment a pain in the a**. I believe that as
soon as you have to mix languages like that, there is
something wrong, and you begin to rely heavily on an
infrastructure that helps you to keep track of the whole mess.
I would reject C as a language of implementation for everything
except
small operating systems – which includes many embedded things,
most
being effectively operating systems. I can see people using
C++, but it
would be better if they used D, but I doubt this will happen :-(
Mixing Python, Cython, and C does require standard compiled
project
management, but is no worse than pure C, C++ or D systems. I
would
suggest that the "messiness" is due to the Python people not
doing the
Cython and C properly, and the C people objecting to having
Python
involved. It usually comes down to the people and not the
technology.
+1
Using Python with C++ for small critical sections reduces our
code development and maintenance costs significantly. The C++
constitutes about 3% of our code base. For the rest Python does
the job very well.
There is no mess, the code base and build system are nicely
segregated into performance critical code and the rest.
My hope is that D can replace the Python/C++ mix with one
language that is both cheap for development/maintenance and
achieve the C++ performance when necessary.
But even with a single language the performance critical code
would still be kept separate. It can often get messy and it's
important that only those with specific algorithm and low-level
expertise make changes in it.
Cheers,
Stew