I feel proponents of any programming language put a lot of spin around what isolated aspects it is good for, but fail to illustrate what a programmer in even one target domain gains from using it.
Are there programming language implementations unlike what is described above, that you feel back up their marketing?
What “spin” are you talking about?
Who is marketing C++?
Big C. That’s why it’s got the ++.
fail to illustrate what a programmer in even one target domain gains from using it.
I think the main illustration for almost all languages is pretty clear (for most situations) - it’s easier and faster than writing assembly by hand.
The rest comes down to trade-offs, technical (compiled/interpreted, strong/week typing, high/low level, optimization), ecosystem (are there libraries targeting your domain, is it likely to be maintained for the duration of your project), personal (how familiar you are with the language, how well do you understand its paradigm), business (how easy it is to hire for it, how good is the developer collaboration story, are there certifications).
All the languages you list have some weak points and some strong points. Because they are all popular and received a lot of development over the years, they are now all a good fit for at least some situations.
Although to be clear, even assembly has its benefits and will be the right fit occasionally.
Dunno. If it fits the purpose and you get a lot of libraries and tooling around your specific domain… Why not make use of it? Python is easy to learn and has a lot of nice stuff for data science. Or R for statistics… Considering the absence of other complete frameworks when doing embedded programming… wouldn’t you just use C++?
You are right Python and C++ have a huge amount of collateral available going for them. But is the utility of their language features backed up by any examples or explanations? Rigid object-orientedness as seen in Python, C++, Java, modern Javascript is not conducive to good software in practice, and we are just muddling along.
Object-oriented is a design pattern that the language can facilitate. Just because a language supports “is a” doesn’t mean “has a” does not exist. There are a lot of design patterns. Use the best language and design patterns for your team.
Neither python or JS are “rigidly” OOP, they have support for them but you can very easily do functional or imperative programming in either. out of those I believe Java is the only one that “rigid OOP” is a fair descriptor for, and I could be wrong on that as its not a language I’ve used (c# which I have and started as essentially microsoft Java has moved away from that style by incorporating numerous functional features from f#)
Fun fact, you can totally do functional programming in C++ too. Actually, it is in the top-right of the λ-cube, making it (in a specific sense) a more functional-programming language than Haskell or LISP :D
Ditto for Smalltalk and Lisp.
Squeak Smalltalk and its evolutions, Pharo and Cuis, get talked up for being easy to program and re-program, but the closest to being a useful app is recent: the DrGeo rewrite. Others like Glamorous Toolkit and various proprietary developments with Cuis don’t lead to any useful outcome.
Of course, Python. Just look at the TIOBE language popularity index. The top languages all have some rational for use. Not so popular have less reasons to use or just narrower application range. See https://www.tiobe.com/tiobe-index/ .
Python is easy to learn. C and C++ when Python is too slow. I often find Python slow.
Python is slow often 1% of the speed of a fully parallelized and vectorized C app compiled specifically for your architecture. There are ways to improve speed like libraries, PyPy, numba, etc of course but often theٌse are application specific and do not always give the performance you might think. I love Python, but for speed it is not the best.
Interesting. What is useful in Python other than the effort put into the bindings to fast libraries? I thought alternatives like Go, Julia and Ruby are appreciated over Python for programming utility.
You generally do no write Python for speed though generally the apeed is good enough. You write it for minimal effort of coding plus libraries. Why do people use Matlab ҄and R, same.
Maybe you are replying to the other comments, but what I am getting is Python is good glue and doesn’t get in the way. That is fine, but not getting in the way is little help with any of the programming.
Python as glue is absolutely a use. The big advantage of Python is that it also has a broad range of use and expands what a single developer can do in cases where time and cost of development is more important then code efficiencey and long term support. Basically quick often throwaway apps to get something done.
Edit: Python is a good alternative to say tcl, perl, R, matlab, VB, etc.
Just as an example, neither the C++ documentation nor its sagely bloggers have ever shown why it is a good fit for, say, systems programming. A really neat way of handling bit-level data is actually in Erlang’s bit syntax.
Separately, I spluttered when I realized that Boost includes 2 statechart libraries which proclaim the approach is widely useful, but nothing else in Boost uses it - not asio or its ilk, not the parser libraries, not the graph library.
Just as an example, neither the C++ documentation nor its sagely bloggers have ever shown why it is a good fit for, say, systems programming. A really neat way of handling bit-level data is actually in Erlang’s bit syntax.
Erlang requires a runtime environment, which disqualifies it for situations where you don’t have a filesystem to load the runtime from, like developing a kernel or for microcontrollers.
Of the popular languages, your choices are virtually just C, C++ and Rust for that.More towards your general question: Not needing a runtime environment also means you can use C, C++ and Rust for cross-language libraries. For example, SQLite and OpenSSL have just been implemented once in C, and then you simply have a thin wrapper for Java, Python etc…
If you are looking to build a library that can be used by as many devs as possible, that’s a selling point which is hard to ignore.


