This is a very opinionated overview of Wolfgang:
scientific programming and data analysis: use the best available software which often/usually is commercial, we also buy lasers and don't build them ourselves (we could). This is matlab & mathematica, matlab even has a very nice and largely compatible open source clone: GNU octave. Mathematica is simply the best if symbolic manipulations or calculations are needed, there is no comparable open-source program. Further, mathematica's built-in curated datasources (from properties of the elements to corona data) are incredible and can truly bring science forward. For me, a good programming language for data analysis and general programming is not so much about the language but about the tools (IDE, debugging), quality and stability of the code, and most importantly documentation: clear and centralized, best also offline, with examples including output, doesn't require google. Libraries should be curated and organized.
python has none of this: it can be used for basic data analysis, but even for this, the lack of proper documentation makes everything very time-consuming. By language design (dynamically typed) and lack of leadership, there won't ever be a good IDE. It can only somewhat be used because a commercial company offers usable installers. Finally, python is super slow.
My bottom line is to use matlab/mathematica (we pay for it).
User interface programming: Labview is simply the best for realtime plots etc, but it's only an option if you use windows or mac and have a campus license, it's crazy expensive otherwise. Another reason for labview is to talk to NI hardware, I have seen people wasting months to try to achieve something in python which takes 2 minutes in labview, thanks to the awesome example code library of labview. In addition, there is an excellent forum & dedicated support. Btw, NI DAQ hardware is quite cheap compared to alternatives. Labview is IMO also a nice language itself, if and only if you never make structures larger than 10x10cm, use local variables and not only wires, and use a state machine for all logic. There is no other language where parallel processing including UI interaction is as easy, nice & safe. Regarding user interfaces for data analysis, newer versions of Matlab are awesome.
If you need fast big data arithmetics (like FFT), use optimized libraries
If you have custom logic and have to go fast, write it in any compiled language, I recommend (all cross-platform and open source):
import Pkg; Pkg.add(“StaticArrays”)
etc to the top of files, so you can periodically do rm -rf ~/.julia
.Language benchmarks performance comparison: https://github.com/drujensen/fib
If you need to talk very fast or with high bandwidth to hardware and/or native libraries, I usually take the language where demo code is available, do data pre-processing in this language, and write a tcp server and talk to it via a nice language or directly with labview UI. If you need to do more complex things or parallel data processing: rust library calls have very little overhead compared to c (use rust-bindgen), golang around 1.4x, and JVM-based languages >1.5x.
An excellent comparison of language performance for hardware programming: https://github.com/ixy-languages/ixy-languages. Bottom line: complain if a company doesn't provide drivers in rust!
Please drop me a note if you have comments