One area where the C++ compiler optimizer excels is in the template compiler. When using templates, the compiler is free to inline pretty much anything, and if you have a deep enough template call tree, it can boil the code down into extremely tight instructions.
C++ doesn't "simply have too much overhead". Most C++ features compile down to the equivalent, or faster (sometimes much faster), C code. C++ being "slow" or having "overhead" is a common misconception, and quite possibly the worst argument against using C++.
My father once told me "you start dying the day you're born". Might as well live how you can while you have the chance.
I smoked one this year - and it was fantastic! I have a Kamado Kooker Char-Griller (poor man's version of the Big Green Egg). Been smoking pork all summer so I figured I'd give it a shot.
I loaded it up with plenty of big chunks of good wood charcoal, with several layers of wet and dry apple wood. Started it up and then smoked my oysters for the oyster stuffing while it got to temp. By the time it hit 200 the oysters were "done" (cooked but still very tender and quite smoky) and I took them off. I had dry brined the bird the night before and then sprayed olive oil on it and sprinkled salt+pepper. Stuffed it with onions and apples to fill up the cavity. I also mixed up a butter seasoning solution and injected it with a baster under the skin. I think this step is crucial to getting a moist result.
Was going to stand it upright but it wouldn't fit that way so I laid it on a baking stone instead. Sealed it up, got the temp up to about 350 (20 pound bird) and let it smoke. I checked it at about 2 hours and it the skin was dark and crispy so I tended it. In about 4 hours the probe was reading 160. Then I glazed it with a red pepper jelly and let it get up to 170 and then took it off. Let it rest on the counter for an hour and when we cut into it it was still hot and wonderfully moist. The smoke permeated every piece.
I highly recommend trying it, if you have the means!
I suspect that a lot of them were just vacuous celebrities whose publicists arranged to get them a ticket at a discount, as a PR stunt.
Oh come now! No need to be so harsh. JUSTIN BIEBER is on that list!
why Apple would make a change that impedes legibility, requires more screen space, and makes the GUI appear fuzzy?
You're viewing it wrong.
I was going to swing by West Central Africa on my way back from my vacation to Syria. Thanks for the warning!
We'll have to agree to disagree then.
Nobody writes math like Option B, unless they are forced to.
If someone wants to do this:
Vec4 operator+(const Vec4 &lhs, float scalar) const
Well, they're an asshole. That doesn't prevent the same asshole from doing this:
- (Vec4 *)multiplyScalar:(float)scalar
Programmers can be bad (or assholes) regardless of the language. I personally am thrilled that I've been allowed to shoot myself in the foot for 30+ years. It's made me a better programmer. I can't imagine being shacked to the incomprehensible mess that is Option B out of fear of what some bad egg might do to the api.
Option A is provably easier to type, easier to understand, and vastly more efficient to execute, usually optimizing down to a handful of vector instructions.
You don't have a single good reason why Option B is "better" except that you don't like C++, which really isn't a good reason. Let me guess - you also hate Python because of the indentation.
Which do you think is more readable?
Vec4 a = 1.0;
Vec4 b(2.0, 3.0, 4.0, 5.0);
Vec4 result = matrix * a * b / 10.0 + 0.5;
Vec4 *a = [[Vec4 alloc] initWithScalar:1.0];
Vec4 *b = [[Vec4 alloc] initWithX:2.0 Y:3.0 Z:4.0 W:5.0];
Vec4 *result = [matrix multiplyVec:[[a multiplyVec:[b multiplyScalar:1.0 / 10.0]] addScalar:0.5]];
Personally, I prefer the first one.
You can easily do automatic memory management in C++ using reference counted smart pointers. This allows you to control when "memory management" occurs when necessary, as is common in the case of high-performance applications (games, imaging software, etc) where C++ excels. The ability to overload operators allows you to write vastly more readable (and efficient) code than with Objective C. And in Objective C all method dispatches are effectively virtual, where in C++ you can control when you pay the cost.
Objective C is definitely NOT well-suited to solve all the same problems as C++. It's fine that you don't need to write high-performance (or portable) applications, but sweeping generalizations like this just show your ignorance.
Disclaimer: I use C++, Objective C, and Python on a daily basis.
He was being ironic.
Or the ever popular Minecraft-themed Bag of Glass.
Maybe it's not part of C++ because this kind of initialization is trivial to do, and more readable, with helper classes and constructors. Just a theory - I wasn't even aware of designated initializers.
What I find pathetic is all of the C programmers who still think C++ is slow, bloated, or impossible to understand.