I'd consider Warframe to be pay to win though. You can get everything for free but you can't keep it for free.
Warframe is basically pokemon for guns but you have to pay money for inventory space.
Imagine how popular pokemon would be if you had to pay money for every pokemon you caught beyond the initial 6 team slots...
>The only consolation you get, if it is one, is that the C++ fans are screwed worse than you are. At least Rust has a real prospect of dramatically lowering downstream defect rates relative to C anywhere it’s not crowded out by Go; C++ doesn’t have that.
Except, C++ is updated frequently and is constantly addressing these concerns. With every update C++ is becoming safer and safer. C++ is a good bet. It's a language with an upgrade path vs throwing all your code away and rewriting it in the hottest new programming language.
If you accept the cost of a GC then C++ might look bad but there are already hundreds of alternatives to C++. If a gc is unacceptable then only C, C++ and Rust remain.
I don't know through what kind of mental gymnastics you managed to come to that conclusion but let me try to get rid of your cognitive dissonance.
If chinese engineers are completely worthless then how do american companies manage to let chinese manufacture their products to american QA standards but chinese companies selling to chinese markets fail to adhere to them and only follow chinese QA standards?
It's quite simple if you think about it. American companies have american QA standards. Chinese companies have chinese QA standards. If you buy from a chinese shopping platform you get products that meet chinese QA standards. If you buy from an american shopping platform the products follow american QA standards.
It has nothing to do with competency of the engineers.
This sounds to me like most retarded idea I've ever heard.
If smartphone SoCs were viable server platforms then you would buy them directly from the manufacturer instead of scavenging them from a landfill.
The entire idea is based around the cognitive dissonance of buying fully functioning hardware at low or no cost when the reason for the low cost is the fact that it's not fully functioning.
The C in the CAP theorem refers to strong consistency usually in the form of ACID transactions.
MongoDB gives up the C because not all applications need ACID transactions and only a weaker form of consistency called eventual consistency. In exchange it can do automatic failover without excessively slow distributed transactions, data corruption or data loss (at least in theory) and sharding.
On the other hand almost every RDBMS has ACID transactions.
I would lie if I said this isn't fun which is probably the reason why people do it in the first place even though their explanations might make it worse than just reading this:
Asking what a monad is is like asking what an iterator is. It doesn't tell you very much what it actually does because it depends on the implementation. The iterator is just an interface. A bunch of functions that have to be correctly implemented according to certain rules.
It all first started with lazyness. FP developers wanted a new modern language developed from the ground up. It should be a pure language. The haskell developers soon realised the evaluation order of a pure language must not necessarily be fixed. Eventually lazyness was born. Lazyness was a unique and very appealing feature for a purely functional programmming language. However as soon as a haskell program had to leave it's protective shell and interact with the real world lazyness turned into a double edged sword!
FizzBuzzes were printing their buzzes and fizzes out of order! Chaos ensued and haskell developers returned back into the shell. After long years of work they have finally discovered it! A mechanism to force the evaluation order of a program to be partially sequential again! It is a new type of container that allows you to put another type inside it. However sometimes the only way to access the contained value is by giving the container a function that takes a the boxed value as input and returns another container with a boxed value inside! The value never escapes the box. And so was the (IO)monad born! You can now take two IO actions a and b and turn them into c which is a combination of a and b where the output of a is piped into b. Not only can we send messages to the outside world, we can also finally receive them!
Everyone was happy in haskell kingdom until the imperative migrants started writing monad tutorials... (including this one)
This story is fiction by the way.
As a bonus for all the wasted time. another crappy analogy: A cage inside a bird is given a machine that puts birds in cages. The regular tool called functor that only replaces what's inside the cage would give us a bird in a cage in a cage! The special tool gives us what we actually want! The tool named monad gives us a bird in a cage! No nested cages!
A phone battery only has around 10 watthours. That's less than 1 cent worth of electricity if you wait hours until it's mined empty. It's more effective to just donate a single cent than to let them mine on your phone.