Um, auto_ptr/reference counting is a form of garbage collection, just not a very good one. The trivial example given is certainly fine, but why not just put pfoo on the stack if it's that trivial. Reference counting has problems with circular references; most other garbage collection schemes do not. Note: any doubly-linked list or both-way parent-child relationship is circular.
There is overhead to auto_ptr; In the statement pfoo->do_Stuff(), the -> is an overloaded operator, requiring a function call. The implied destructor is also a function call. In the gc world, there are far better schemes than mark/sweep, which is the other one that most people think of when talking about gc. Incremental and concurrent gc is feasible. Also, new and delete aren't free, by the way; they do things that aren't strictly necessary in a gc environment. Reference counting (smart pointers)has overhead at every assignment/function call, whereas most gc has far better overhead performance, especially for long-lived data. The argument that gc is too expensive holds little water.
It's called axioms. Those are the faith of mathematics. Goedel proved formal systems such as logic or set theorey based on axioms, and used in proofs are incomplete, so in the end we have already out-thought ourselves, 70 years ago. But Science != Mathematics. Science is much more pragmatic, and always knows that it doesn't know every thing, and is ideally always ready to have its foundations removed and replaced by something even more difficult to understand. We put faith into science because it works. In the end, the same thing goes for mathematics. The universe is not compressible.
Goedel's theorem is equivalent to the Halting Problem in computability. Certainly we as programmers would like to know if our programs halt before we run them, so our compiler should tell us this. But it cannot. Likewise, we'd like to know if a grammar is ambiguous. We cannot determine this automatically, for the same reason. In fact, we'd like to know if a particular program computes a particular function. But Rice's theorem follows from all this and tells us we cannot automatically determine this in general. To me, these seem like practical, not pathological, problems.
Does this mean Microsoft now has a trademark on W? This reminds me of IBM Lotus going after a trademark for just "123". At that time, there was the joke about them using "inductive litigation" to get all the natural numbers.
So, by giving stuff away for the past few years, the percieved value of software has been going down.
This may be true of open source software, but essentially paid-for software is of a better quality and with better support, and thus still holds the majority of the market. People (slashdotters and hobbyists excepted) will still actually pay for something if it is better than the free or cheaper alternative. Same goes for programmers.
- Of course, I still think there is an acceptable level of unemployment, which is to say I have a job.
Two things actually do benefit you. One is the exports that go to India, which can now afford them. Another is the improvement in Indian economy, which has made them less likely to launch nuclear missiles at their neighbor.
Hee hee. Ok, as always, present company is excepted;-) No, I guess what I was really meaning to say is that I've had about enough of software engineering and need to move on to something else (theory). Those OO'ing, XP'ing sw engrs are welcome to it.
With regards to grandmothers and eggs, in this case I was the grandmother, the way I understand that phrase. Which reminds me, the first time I encountered a reference to that (I think it's a Britishism) was in the Hobbit. It's not explicit, it comes up in a reminiscence of Gollum's from his childhood. It took me a long time before I even knew it was a common phrase and what it meant. Anyway, good day.
That sort of attitude is proabably more than a little partonising(sic)... especially coming from a student.
Whoa, talk about self-referential statements.
Programming is hard. Whaa. Oh, I forgot to mention that in addition to my status as a PhD student, I am also a 15 year professional (continuously employed on successful projects ranging from video games to shrink-wrap graphics software to 50000-user distributed systems to compilers, none of which "succeeded via cancellation"), with OO roots going all the way back to LISP. Oh, and the last 8 or so has been as a C++ and/or Java and/or C# OO developer.
Hear now the voice of experience: In the end, there is no substitute for good, smart software engineers (with debuggers), regardless of methodology or language.
We used to think "structured programming" was cool too, never mind this "newfangled" OO or XP stuff. In 15 years, plus the 25 or so prior that my father has been a programmer, not much has changed in the daily work of programming, and anyone who thinks their next pet is going to change that, is a clod. So anyway, don't teach your grandmother to suck eggs;-)
p.s., to get back on topic for a second, I think the authors of the original book and of the review missed the whole point of XP, which is that many of these "worst practices" are already firmly in place, XP is a means to try to mitigate some of them. Not that I like XP that much; I like good programmers.
p.p.s., I hate software engineering, especially as it presumes to be a disciplne. That will be the day.
I hate self-referential statements - except for this one.
My school (UT-Dallas) is still experiencing record growth in the CS department. We are now one of the biggest in the nation. Of course, 75% of the students are not US based, so the article still applies. However, we also have a sub-major called Software Engineering, and you're welcome to it, you XP-ing, OO-ing clods. I'll stick to the science of computing (theory, computability, algorithms, etc).
Brainmaster has been doing this for years. I just sold mine on e-bay. The games are all silly, because there is no way to have a Doom-like experience with a single bit of input, which is currently what these amount to (I'm on the target wavelength or I'm not). While on target, the game advances, otherwise it doesn't. Kind of like the original rebel assault, but without a fire button. Whee.
A solution to the problem would be a technology that could decide any given theorem to be true or false, among other things. The discovery in the 30's was that it is not computable even with infinite time and computing power; I don't see that changing. However, you are right, there could be ways to be right most of the time, and it would be useful for compiler technology to at least generate a warning: loop may not halt.
Um, auto_ptr/reference counting is a form of garbage collection, just not a very good one. The trivial example given is certainly fine, but why not just put pfoo on the stack if it's that trivial. Reference counting has problems with circular references; most other garbage collection schemes do not. Note: any doubly-linked list or both-way parent-child relationship is circular.
There is overhead to auto_ptr; In the statement pfoo->do_Stuff(), the -> is an overloaded operator, requiring a function call. The implied destructor is also a function call. In the gc world, there are far better schemes than mark/sweep, which is the other one that most people think of when talking about gc. Incremental and concurrent gc is feasible.
Also, new and delete aren't free, by the way; they do things that aren't strictly necessary in a gc environment. Reference counting (smart pointers)has overhead at every assignment/function call, whereas most gc has far better overhead performance, especially for long-lived data. The argument that gc is too expensive holds little water.
It's called axioms. Those are the faith of mathematics. Goedel proved formal systems such as logic or set theorey based on axioms, and used in proofs are incomplete, so in the end we have already out-thought ourselves, 70 years ago. But Science != Mathematics. Science is much more pragmatic, and always knows that it doesn't know every thing, and is ideally always ready to have its foundations removed and replaced by something even more difficult to understand. We put faith into science because it works. In the end, the same thing goes for mathematics. The universe is not compressible.
Goedel's theorem is equivalent to the Halting Problem in computability. Certainly we as programmers would like to know if our programs halt before we run them, so our compiler should tell us this. But it cannot. Likewise, we'd like to know if a grammar is ambiguous. We cannot determine this automatically, for the same reason. In fact, we'd like to know if a particular program computes a particular function. But Rice's theorem follows from all this and tells us we cannot automatically determine this in general. To me, these seem like practical, not pathological, problems.
Does this mean Microsoft now has a trademark on W? This reminds me of IBM Lotus going after a trademark for just "123". At that time, there was the joke about them using "inductive litigation" to get all the natural numbers.
- Of course, I still think there is an acceptable level of unemployment, which is to say I have a job.
Two things actually do benefit you. One is the exports that go to India, which can now afford them. Another is the improvement in Indian economy, which has made them less likely to launch nuclear missiles at their neighbor.
Hee hee. Ok, as always, present company is excepted ;-) No, I guess what I was really meaning to say is that I've had about enough of software engineering and need to move on to something else (theory). Those OO'ing, XP'ing sw engrs are welcome to it.
With regards to grandmothers and eggs, in this case I was the grandmother, the way I understand that phrase. Which reminds me, the first time I encountered a reference to that (I think it's a Britishism) was in the Hobbit. It's not explicit, it comes up in a reminiscence of Gollum's from his childhood. It took me a long time before I even knew it was a common phrase and what it meant. Anyway, good day.
Programming is hard. Whaa. Oh, I forgot to mention that in addition to my status as a PhD student, I am also a 15 year professional (continuously employed on successful projects ranging from video games to shrink-wrap graphics software to 50000-user distributed systems to compilers, none of which "succeeded via cancellation"), with OO roots going all the way back to LISP. Oh, and the last 8 or so has been as a C++ and/or Java and/or C# OO developer.
Hear now the voice of experience: In the end, there is no substitute for good, smart software engineers (with debuggers), regardless of methodology or language.
We used to think "structured programming" was cool too, never mind this "newfangled" OO or XP stuff. In 15 years, plus the 25 or so prior that my father has been a programmer, not much has changed in the daily work of programming, and anyone who thinks their next pet is going to change that, is a clod. So anyway, don't teach your grandmother to suck eggs
p.s., to get back on topic for a second, I think the authors of the original book and of the review missed the whole point of XP, which is that many of these "worst practices" are already firmly in place, XP is a means to try to mitigate some of them. Not that I like XP that much; I like good programmers.
p.p.s., I hate software engineering, especially as it presumes to be a disciplne. That will be the day.
I hate self-referential statements - except for this one.
My school (UT-Dallas) is still experiencing record growth in the CS department. We are now one of the biggest in the nation. Of course, 75% of the students are not US based, so the article still applies. However, we also have a sub-major called Software Engineering, and you're welcome to it, you XP-ing, OO-ing clods. I'll stick to the science of computing (theory, computability, algorithms, etc).
Brainmaster has been doing this for years. I just sold mine on e-bay. The games are all silly, because there is no way to have a Doom-like experience with a single bit of input, which is currently what these amount to (I'm on the target wavelength or I'm not). While on target, the game advances, otherwise it doesn't. Kind of like the original rebel assault, but without a fire button. Whee.
A solution to the problem would be a technology that could decide any given theorem to be true or false, among other things. The discovery in the 30's was that it is not computable even with infinite time and computing power; I don't see that changing. However, you are right, there could be ways to be right most of the time, and it would be useful for compiler technology to at least generate a warning: loop may not halt.
The halting problem has not been, nor will it ever be, cracked. There would be plenty of interest in doing so.
Uh, digital voice recorders. About 50 bucks, they've been out for years. Like this one.