Swift, HTML and C++ make the list for languages and technologies in high demand
sdtimes.com
sdtimes.com
For years we have been told, Developers are expensive, embrace frameworks, ignore the bloat, just ship quick, even if it needs a billion servers to run.
Both firms are building amazing products on very conservative hardware requirements, so they can scale if required, but they actually know and understand their full stack, and it shows.
One had started with too much Python and Go, before realising the error, the other took a detour into JVM country, before getting back onto the main roads with C++.
The matter has not been settled and will become more important if the industry decides that gaining developer productivity at the cost of software inefficiency is no longer worth it.
Corporate controlled languages do not allow developers to fully control the software that they produce. C++ allows this and it's very fast and safe (even safer since C++11).
Microsoft has C#. Google has Go. Apple has Swift. Oracle has Java. Which would you want to lock your software into? Also, most all of those languages (or at least the critical parts) are implemented in C++ (hotspot).
The security track records of large-scale security-sensitive software written in C++ support the opposite conclusion.
> Also, most all of those languages (or at least the critical parts) are implemented in C++ (hotspot).
Go is not, and never was, implemented in C++.
At any rate I'm not sure that you can say much more than C is a popular language, and thus has a larger share of poorly written code. It _would_ be nice to see the number of security flaws in a given language graphed against language popularity, but I don't buy that code written in one language or another is necessarily more or less secure.
Yes. Modern C++ is neither memory safe in theory nor memory safe in practice.
> I don't buy that code written in one language or another is necessarily more or less secure.
The entire security industry, more or less, disagrees with you.
Though I should qualify this with the obvious statements that (a) dynamic languages admit classes of security bugs that static ones don't; (b) no language will magically eliminate all security bugs. But it's just an empirical fact that C and C++ admit lots of memory safety bugs that result in security problems way, way more often than memory-safe languages do.
The only conclusion I've ever really drawn from software analysis is that large scale software written by armies of programmers is full of security problems. As soon as the organisation stops investing in being the one that knows the most about the security problems of their own software ... shit hits the fan. Since security tends to be one of the first things to get "financially optimized" ...
Go is (less and less over time but still not 0%) implemented in C, with macros. Let's not pretend this is an improvement over C++, because it isn't. The only advantage C has over C++ is that most C programs are far smaller than most C++ programs (on average, of course, there are exceptions). Oh, and if you think C++'s security track record is bad, you will find C's track record horrendous.
Sounds like they went from Java with heavy frameworks to C++ with no frameworks.
In many applications the point is not to be "fast" but "as fast as possible".
Once you have found a product-market fit and what you're offering has stabilized to a large degree, then it makes total sense to go back and rewrite things to improve performance and eliminate technical debt.
Ignoring performance is a gamble and in the worst case one might find that improving performance means rewriting everything.
In my experience, if you set things up properly the only part of the server side stack that is unavoidably difficult to transition is the underlying data management layer.
If you have good examples (outside of latency constrained applications like multi-player gaming and finance) where a decoupled micro-service architecture would need to be completely rewritten (rather than just rewriting hot services/aggressively caching), I'd love to hear them.
What do you do if you wrote your app in Python and you need high-performance multi-threading? What do you do if you chose Java and your heap is way too big? Get ready for a lot of pain, that's what.
As for the problems you specified, usually only a portion of your application work flow will require multi-threading or big mem support, in most non-latency constrained applications those portions of the work flow can easily be split off into independent services, which can be rewritten to be performant.
Obviously there are client-only applications (for example, a 3D modelling package) where it makes sense to go straight to the high-performance solution, but even in that case there are exceptions (for example, PyMol).
A friend of mine, who was a iOS dev from the beginning told me about this, but I didn't imagine it going so fast. He's a bit sad about this, because he did a few years of web stuff and wanted to switch back to mobile, now he fears his Objective-C skills are wasted.
https://h4labs.wordpress.com/2016/02/09/should-i-use-objecti...
Demand for iOS development could be tapering due to app market saturation; saw a post recently around here about that.