Empty statement of intent
I just want it on record that I intend to actually bring my STM library into a feature-complete, robust and well-documented state, and then release it to the world. Continue reading Empty statement of intent
I just want it on record that I intend to actually bring my STM library into a feature-complete, robust and well-documented state, and then release it to the world. Continue reading Empty statement of intent
Yesterday, on March 25, 2011, the C++ standards committee signed off on the final draft of C++0x, the upcoming major revision to C++.
After a month or so of editorial changes, proofreading and integration of the last changes into the draft, it will be sent off for all the national bodies of ISO to vote on, and then we will officially have a much-needed refresh of C++. Barring any major surprises, the process should finish later this year, officially turning C++0x into C++11.
Of course, many new features of C++0x are already available in various compilers, but later this year, all of them will become official.
A few reports from committee members are already trickling out, and no doubt, there will be many more to follow:
I don’t have much more to add, other than to say a big thank you to the brilliant people who have spent an awful lot of their time over the last 11 – 12 years to make this happen. Of course, there have been a lot of casualties along the way (three “core” features were originally envisioned for C++0x: an optional garbage collector, concepts, and language-level support for threading. Of those, only the third survived, although the two others may still make it into future revisions), but overall, C++0x is a huge improvement to the language. Just a few of the features I am excited about:
nullptrA few days ago, I came across an interesting rant about “Why C++ Templates (and STL) Are Bad”.
As any C++ programmer who reads my blog likely knows, I’m quite fond of both templates and the STL — I feel those are largely what transforms C++ from a clumsy and outmoded language that should’ve died 10 years ago, into a modern, expressive, high-performance and yes, even elegant language that I enjoy using. Continue reading Hating that which you don’t understand
Two weeks ago, I wrote a post that you might consider “mildly critical”, discussing the brand new Games for Windows Live web-based store, and the countless ways in which it fell apart as soon as you looked at it.
Today, I went to look at their site again, as they have Deus Ex on sale, and, while it is a 10 year old game, and I already have it, I was interested in seeing if they’d opened up the store for people outside America and the UK yet. Continue reading GfWL: are they trying, I wonder?
Once again, Microsoft “relaunched” Games for Windows Live, either gambling that if they keep relaunching the same thing, eventually everyone will just give up and start using it, or perhaps that if they keep relaunching the same thing, eventually everyone will just give up and buy an XBox 360 instead. I don’t know. But it is really getting ridiculous.
Unlike the last time it “relaunched”, however, this time it actually has a new feature as well: it is now possible to view (and use) their store from a browser, or so they claim. And what’s more, games can now, apparently, be bought using money, actual human currency, rather than imaginary Microsoft Points.
In practice? Not so much. Continue reading GFWL: Malice or Incompetence?
A while ago, I made a post about the proposed TeX StackExchange site. Now it’s out of beta, and it’s got a brand new, and pretty sweet-looking, design. Go check it out: http://tex.stackexchange.com/
I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras — families of interfaces that span multiple types.
I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting — saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms — you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work. — Alexander Stepanov
This post is an attempt at extracting something coherent from a series of comments I recently left on a StackOverflow question about “good design” (in what’s quite clearly an object-oriented context). The person asking the question has been gracious and patient enough to deal with my countless comments repeatedly pointing out that he’s doing it wrong, which would probably have driven a lot of people mad.
Many people have come up with many varied criticisms of the object-oriented programming paradigm. My problem with it is not new — in fact it is pretty much exactly what Stepanov pointed out in the interview I quoted above (and which is definitely worth reading in its full length). The only real difference is that he is an extremely intelligent mathematician, and I’m… not. So I’m not able to express it as concisely. But then, on the other hand, maybe my take on it will be easier to swallow for others who also aren’t hyper-intelligent mathematicians. Continue reading “Good design”, and why OOP isn’t going to get us there
It sometimes amazes me how many people, programmers as well as non-programmers seem to take offense at my lack of psychic abilities.
Either that, or at my tendency to try to answer questions with a useful answer.
Or maybe they’re just bad at asking questions. Continue reading Yes, you’re going to have to tell me what your question is before I can answer it
Anyone who’s been around a C++ programmer for any length of time has probably realized that we tend to be horrible language lawyers: we only trust the ISO standard describing the language. We certainly would never assume something to work just because the compiler happens to generate code that works right now. If it’s not in the standard, we can’t count on it.
I’m fine with that. It’s often annoying that we have to be so paranoid, that we so often have to double-check that our code not only compiles, not only passes our tests, but also avoids the dreaded Undefined Behavior (where the behavior is not constrained by the standard), but you get used to it. And all in all, being precise and specific when talking to a compiler is probably not a bad habit to get into, regardless of which language you program in.
However, every once in a while, people try to carry the same level of pedantry over into discussions about C++. Continue reading STL, language lawyers and pedantry
So the big news these days is obviously Paul the Psychic Octopus. Definitely interesting. It was able to maintain a 100% success rate in this year’s World Cup (and a much higher success rate than it had in 2008 where it mispredicted a whopping two matches).
So what’s going on here? Freak coincidence? Supernatural powers? At a first glance, both sound ridiculous to me.
But I want to think about the more “interesting” explanation a bit: perhaps Paul really is psychic. Perhaps Paul can tell the future. Continue reading Psychic Octopuses