Re: Those who do not understand existing computer languages
Respectfully disagree.
True even a very suitable language will not do anything to rescue a project/system from bad management, sloppy coders, bad requirements, bad marketing (either internal "sell" or failure to sell externally).
On the other hand however, there are broad trends that show languages do matter.
- is it easy to read? Code gets written once, but maintained many times. PERL fails miserably here and its declining use reflects that. Objective C would probably still be lingering in the bottom of the leagues if not for iOS apps.
- how easy is it to use by low/mid-level coders? i.e. the bulk of us. C and C++ are very powerful, but require a lot from their devs. They still get used, a lot, but only where their prime qualities - speed, low resource use - overcome the need for being very thorough.
Biz apps _generally_ don't do C/C++. That's precisely why Java took off, because ease of use, even at the cost of verbosity, does matter. Ditto COBOL.
LISP might be very nice, but not many people grasp it, so again, not used much.
- Cultural. What's the accepted language "in the community"? Each problem area has its own set of usual suspects so the choice does matter, because domain-knowledgeable coders and managers are, mostly, language-bound. Writing a banking system in Python would be daft and so would a COBOL web server.
- Tie-in? C# is, IMHO, a better Java, but is it to be trusted outside of the Windows ecosystem? Stay tuned.
There's also the magic elixir of acceptance at large. Is the language "respected" by companies? Is it too exotic? I.e. you're not going to be laughed at for suggesting Java, but you might for Rust (at least for now). Smalltalk never gained traction.
- mem alloc/garbage collection? That's going to impact your domain suitability massively. Real-time capability? Suitability for large code bases? Error handling and discoverability? - something Javascript massively sucks at. Memory allocation scheme and safety - Rust's raison d'etre.
- system/interop capability. Java interops very well. With Java. And the JVM. Outside of it? Talking to the OS? What's an OS?
- dependencies and upgradeability. All those programs stuck with obsolete JVM versions are a testimony to something that should be best avoided.
- Design. There's a reason VB and VB.Net aren't used much by higher-skilled coders - the syntax is awkward and there are many limitations. PHP won't get much love from me either, though I only know it from reputation. Yes, it has very good penetration in web development, mostly because it was the first. Outside of it...
Java, despite its large following, has spent years trying to do things that other languages do naturally. First class objects? Passing functions? Templates? GUIs (hah!).
On the other hand, Javascript, a kludgy language designed in a few months, with many odd and unpleasant quirks and which gets no respect in general, seems to do surprisingly elegant things when used by smart people. Babel - basically the equivalent of taking C++ code (new style es6) and transpiling it to old style C (for the existing geriatric JS support in browsers), Vue - a declarative GUI library which beats the pants off something like Swing, d3.js - a visualization library. Taking C code for DOOM or Graphviz, translating it to itself, and running it in a browser.
So, it is capable of doing pretty clever stuff despite its shortcomings.
A "better Java, smarter/safer C", compiled, would, if they gained large acceptance, complement the JS/Python/Ruby type of languages very well. Interpreted script languages like those have their uses and their fans (I'm one), but often you need the .EXEs and linked assemblies.
Currently we are still mostly using C/C++ when we absolutely need pedal to the metal. That's sad, despite the sheer elegance of C's design all that time ago.
Language design and best practices have evolved over the last 30 years or so and so have the threat models applications in those languages are subjected to. OOP, while gaining general acceptance, has turned out to be a useful tool, but not a silver bullet - inheritance esp is much less useful than first thought. RPC calls like CORBA once seemingly had a future, but have thankfully been dodo-ed out. Heavy stacks like J2EE are not as desirable as once seemed.
Go/Swift/Rust do NOT merit instant adulation, true. But, if any of them does high-performance/low-resource computing as well as C/C++ do, but with the business friendliness of Java, then I would hardly claim "it will be 20 years" before they make their mark. That underlying unmet need may also explain Delphi/Pascal still kinda hanging on.
Java itself came out in 1995. So we've barely hit the 20 year mark even now. Wanna say that it has had limited impact in the meantime? How long did C take to take over in the days dinosaurs ruled the earth? Not long at all, I think.