This is all artificial talk, because you can get best of the both worlds. Write performance critical pieces of software in languages such as C, and use Python whenever the libraries (written in C) are available to do the heavy lifting for you.
You can get the best of both worlds by using a language that allows you to write code as quickly and sloppily as Python to get your algorithm right, and then improve the most critical code IN THE SAME LANGUAGE to get C-like speed by doing things such as adding declarations, not by re-writing the whole thing.
Is there such an interpreted language right now?
(Note that it is not Siwastaja, only myself, that needs the language to be interpreted. Thus, this is not a counter-question, this is a new question that just happens to fit into the discussion at this point. I am the one that uses Python3+Qt5 for user interfaces, with all proprietary and high-performance code in native dynamic libraries, implemented in C.)
The only one that I know of, Julia, seems to be directed at research, and Windows/MacOS desktop users. In particular, there does not seem to be a sane maintained Qt interface package at all; I could find two Python-derived ones, and a MacOS-only package. Even the
GObject Introspection Julia Package seems to be incomplete and unmaintained; it would immediately provide interfaces for tens of dozens of useful, well-known, trusted libraries available in standard Linux distributions.
There does seem to be one for
Gtk+ 3.0, so anyone using Python+Gtk+3 should consider the Julia alternative. Of course, since no major distribution (especially Debian) have Julia package(s), installation will require executing a binary with superuser privileges from julialang.org, which is not something I personally can vouch for (compared to e.g. installing a Debian package from the official repositories).
I fully agree that Julia is such a language, in theory. (I particularly love its native/C interface capabilities.) In practice, however, the lack of native Linux packages and a maintained Qt interface, does mean one cannot currently use Julia as a practical replacement for Python3+Qt5.
I also use Python for server-side scripting. As to using Julia for server-side scripting, I really worry about the security implications of its precompilation mechanism. I have not yet investigated this thoroughly, but especially in an environment where server-side scripts are run as dedicated user accounts with a shared home directory, controlling such precompilation is paramount. (For Python, there is the
-B command-line option and
PYTHONDONTWRITEBYTECODE environment variable that can be used to avoid "precompilation"/bytecode file generation issues. For HTML templates and similar, the Python
exec() interface provides a way to limit "untrusted" code access to specified variables, objects, and even limit the availability of standard library functions, including
import.)
In other words, to me it looks like the Julia language developers are really not interested in this kind of use cases at all (including multi-user security and privilege separation techniques), and are instead directed at research and Windows/MacOS single-user desktop users, rather than cross-platform and server-side uses.
This look, of course, is only very superficial, and I could easily be wrong. I probably am wrong. You seem to have much more experience in it than I do; do you disagree with my – admittedly superficial! – observations above? Was there some other interpreted language you were thinking of?
The reason I post this, is that language features and theoretical capabilities are one thing; practical use cases and patterns are another thing. Neither thing alone is sufficient to determine what language is most appropriate for a given task: one must consider
all things, using whatever weighing pattern one deems most appropriate. For myself, even superior excellence in one thing does not override deficiencies in another. I am not looking for "the best language"; I am looking for the tool with the
least drawbacks instead. (Except for a few purely personal quirks, of course, like my avoidance of Perl purely for non-technical personal reasons.)
For myself, I hope I've made it clear that Python language is not the main reason I use it. I do not think it is anything exceptional; it just avoids many of the pitfalls I had to work around in PHP, and has a gentler learning curve than Perl. It is the practical use cases, especially portability and ease of use that determine when I use Python; with everything proprietary and anything requiring computational efficiency provided as native binary dynamic libraries, implemented in C. (I avoid C++ here, to keep dependencies and Python interfacing as simple as possible.)
Julia comes very close. To replace Python3+Qt5 in normal application development, all I'd need is Debian packaging and native/non-PySide Qt5 support. (If it cannot be provided as a Debian package, an application is not worth much in Debian-derived Linux distributions.) To use as a server-side scripting language, some investigation and perhaps development first with precompilation and privilege separation seems necessary, to avoid exploits using precompilation or runtime access to Julia package repositories. As it is, I
cannot trust Julia as a server-side scripting language.