C/C++ are unmanaged languages,
Which is great for very important and specific classes of problems.
so code written in them tends to be rife with security holes, buffer overruns, and memory leaks.
And a significant % of web applications written in Java, .NET or, say, Ruby, have security holes up to the wazzo.
You might not get buffer over runs, but you certainly get null pointer, illegal arguments, index out of range, and invalid state exceptions (corresponding types as per each language.)
Memory leaks? You get similar manifestations of those in managed languages (abandoned file handles, database connections that are never released). Memory specific, you can bring a VM to the ground if the creation rate of objects is so large that it causes the garbage collector to utilize CPU beyond a given threshold. In Java, for example, you can get an OutOfMemoryException if the GC is trashing the CPU even if you have plenty of memory allocated to the VM
.
Anyone who works in software for a living (and that is at least decently good at it) knows these issues. Anyone else thinks these problems are exclusively the domain of unmanaged code.
Also their standard libraries are incredibly poor compared to other languages, so you have to fall back on 3rd party libraries that may or may not be available on the platform you need them on, and may or may not be maintained and supported.
A lot of times you do not require such rich language libraries in unmanaged code. If you are writing a device driver for a memory constrained platform, you wouldn't (shouldn't) be needed a, let's say, uber-rich concurrent container class with even richer iterator semantics. That is just one example.
If you are finding yourself with a significant need for a rich library, then you should be using a higher-level language.
70's style languages are going away for good reasons.
This only shows the significantly shallow view (or exposure) you have with respect of software technology. Look around you. There are more devices using unmanaged code that managed. Your toasters. Your microwaves and termostats. Your termometers. Your remote control. The cable/dsl/wireless modem that allows you to connect internet to post ignorant shit. The operating system and the myriad of hardware device drivers that make your computing experience possible.
What language do you think they are written with?
It is absolutely disturbing to see people think that unmanaged code is somehow waning away. That is where the money is. Those jobs are not decreasing. The jobs using managed code, that is the number that is increasing (and their salaries for the most part decreasing unless you are really a very good, Sr-or-Principal-level Java/.NET/Ruby/Python software engineer or architect.)
* source : 18 years of programming experience as a Java/JEE application and C/C++ systems developer in both the commercial and defense sector.
Jobs using those languages are waning.
And our jobs will go to India or China, and programs will begin to write other programs making us developers obsolete, the earth is flat and the sun orbits it, blah blah blah.
If you want to be employed in 10 years, you need to change with the times.
That is an oxymoron. Of course you have to change with the times. But changing with the times does not necessarily mean changing languages. It means evolving your skill set. You are looking at the problem of being up-to-date and marketable as if it meant one should become a language-trick pony. There are code monkeys, and there as software engineers.
Sure, there are still COBOL programmers and even well paid ones, but that doesn't mean COBOL is the language to learn if you want to do well in the industry. It's effectively a dead language even if you can find the occasional rare use here or there.
This is true, but it is also irrelevant. How hard is it to learn COBOL? If you get a chance to make $200K as a COBOL programmer in a city with very low cost of living, for example, it would be stupid to pass that in favor of using the latest tech blink for 75% of that in SV.
C is headed in that direction, though not as far along as COBOL yet.
Let me know when communication technology, operating systems and device drivers are written in Java or Ruby. Again, your views insinuate a very shallow and limited exposure to what is out there in terms of the software industry.