DS9 came about after Straczynski first presented the concept of Babylon 5 to Paramount. They claimed they weren't interested but some months later DS9 came out which was effectively the same story line.
Babylon 5 was much darker and frankly better than DS9, perhaps because the aliens in B5 weren't restricted by Star Trek constraints.
Microsoft has another thing going for it, it is a pure-tech play unlike Google and AWS.
AWS is considered a major retailer and competitor to retailers so other retailers don't want to give them business.
Google is a data company and trying to move into other areas. So they are considered a competitor to many companies that play in the data space.
Microsoft (and to a lesser extent Oracle) are not competitors to these industries, they are service providers only. So Microsoft Azure is a good choice for that reason alone.
I installed Assistant on my phone and not long after it started giving me notifications of bills coming due. Turns out that it reads your emails and does this. I did not agree to it and I looked for a way to turn that off. Lots of suggestions on the web but every time there is an update it turns it back on. So I had to ask what else it was doing and who else it was sending notifications to?
Fortunately I'm on an older phone so I was able to uninstall all updates to the Google App and that removed Assistant, other phones can't remove it.
Now I don't allow the Google App to update because I won't allow that crap back on my phone.
It is also the most secure method, because bots crawling the S3 buckets won't be able to find your data.
That is a win win.
1) I agree completely with you here
2) I'm not aware of a compiler that detects this situation as indexes into arrays and the like tend to be dynamic at runtime.
3) and they aren't really that difficult to use.
Back to array over reads - there is nothing magical in any other language that detects this situation at runtime. The data structure, i.e. the array, is not just a block of memory, it has associated length attribute. All access to the array then checks this length attribute and generates an error at runtime when out of bounds. In C you can do exactly the same thing if you simply define your array to be a structure with a length value and a data holder, then use functions to access the data that perform the same check.
All that is happening is your language of choice has built that capability in for you, but doing protected data reads/writes is simple to implement. Nice thing is, in C you don't have to incur the overhead of protected access if you know you don't need it. In other languages you aren't given the choice.
Receiving a million dollars tax free will make you feel better than being flat broke and having a stomach ache. -- Dolph Sharp, "I'm O.K., You're Not So Hot"