In South Australia, you can't get a thin plastic bag at the checkout at all. But you can buy a much tougher plastic bag for 20c or a canvas(-ish) bag for $1.00.
It took a while to remember to take our reusable bags with us when we go shopping, but we've got so many of them now it just seems normal. Every time I travel interstate, I'm surprised by the stores handing out those nasty thin fragile bags.
If I connect to a web server and request a html page, using the published HTTP standard, without any tricks to bypass user authentication. And the server obligingly gives me the content I asked for, have I invaded the privacy of the server? Have I trespassed?
Of course not.
How is using an established P2P standard to request content from your home PC any different?
Mining coins is based on probability. The block length is designed to grow at a fixed rate, and periodically the number of coins mined per block will halve until the number mined drops to zero. The supply is designed to be limited. The production of coins is designed to be controlled. One miner successfully mining a coin, deprives someone else of the possibility of mining it. All miners have to share the coins that are being produced.
Every individual miner judges the odds of getting a bitcoin against the energy they expend and make their own decision about whether to turn their mining hardware on or off. But not everyone who wants bitcoins is a miner, and not every miner has access to the same efficiency hardware. It's easy for the price someone is willing to pay to be significantly different to the production cost of a coin.
Though it is likely that the production cost will follow, or be slightly above the exchange value. The causal relationship is the other way around. Miners will turn their rigs on and off based on the price. The price is not set based on the energy consumed.
It's possible for the electricity actually used to greatly exceed the value of the coins produced. It's possible for miners to produce coins for less electricity than the current exchange value, it certainly happened a lot when GPU mining started to take off.
You cant assume that the exchange value and production cost are in equilibrium. A coin's exchange value is exactly what someone else is willing to give you in exchange. It's the very difference between production cost and exchange value that drives the gold rush fever related to mining. But with bitcoins, the more people who join, the lower the share that each miner can produce.
Plus the current rate that new coins are being created is insignificant when compared to the number of coins being traded.
Seriously? No, you're totally and utterly wrong.
Firstly, there is a limit to the rate of newly mined bitcoins. The total number of created bitcoins will approach an upper limit and never pass it. If more people want to buy them, they have to be willing to offer more value than anyone else to get them. Since the supply is limited, if the demand goes up, so should the exchange value.
Secondly, bitcoins have absolutely no inherent value. You can't create anything with them directly. You might say that their implicit scarcity gives them some value in the same way that gold, silver and platinum are considered to be valuable, but at least those metals have some utility value as well.
So the only sense that bitcoins have any value at all is in exchanging them. People keep trying to trade bitcoins for more traditional currencies. It's this exchange that we use to measure the value of bitcoins, and it is mainly speculation that drives people to trade them. If someone wants to offer a million dollars for a single bitcoin, then that is by definition the current exchange value.
The difference between the cost of electricity to mine coins, and their current exchange value will have an impact on the willingness of bitcoin miners to run their rigs. But the production cost of bitcoins has no direct impact on the exchange value of existing coins. Instead I'd suggest that the relationship is the other way around. If the exchange value is higher than the production cost, more people would be encouraged to join the mining operation and vice versa.
Clang includes a number of compilation flags that can be used to make sure, or at least as sure as it can, that your code never hits any undefined behaviour at run time.
But normally, yes the compiler may change the behaviour of your application if you are depending on undefined behaviour.
"What every C programmer should know about undefined behaviour" (part 3, see links for first 2 parts).
For example, overflows of unsigned values is undefined behaviour in the C standard. Compilers can make decisions like using an instruction that traps on overflow if it would execute faster, or if that is the only operator available. Since overflowing might trap, and thus cause undefined behaviour, the compiler may assume that the programmer didn't intend for that to ever happen. Therefore this test will always evaluate to true, this code block is dead and can be eliminated.
This is why there are a number of compilation optimisations that gcc can perform, but which are disabled when building the linux kernel. With those optimisations, almost every memory address overflow test would be eliminated.