Many people disagree with your 'of course'. I have the right to see anything I've seen once as many times as I want, forever. If you disagree with that right you're advocating coming into my brain and cutting out the memories.
Keeping some sort of digital copy around is just a matter of memory enhancement.
And as another useful hint, enable the warning on your compiler for empty expression. All modern compilers have this warning, and will prevent you from ever making this mistake again.
Failing one course for a false accusation of plagarism or even getting kicked out of college wouldn't stop someone with talent from reading slashdot and becoming a senior programmer with an office.
I've read CS from time to time over the years and never noticed that column. Is there really a large following, or was this just a last ditch attempt to get some attention and money by this Alice and Bill?
Peronsally, I don't like anything from XP except the testing ideas, and those don't originate with XP.
The process I like best for 'test-first' is actually 'almost-test-first'. Instead of just sitting down and writing tests, the process is:
1) Design a system that solves the problem. 2) Figure out what entry points are to the system. 3) Implement the interfaces for the entry points so that the public contract is defined. 4) Now you start writing tests that verify the fulfillment of the public contract. 5) Implement the interfaces in a way that satisfies the tests.
Our current project has about 7500 tests. The system is what I would rate as middleing complex. I average about 3 sideffects caught by tests per major checkin. That's a lot of subtle stuff no qa person had to chase down, and a lot of developers who aren't irritated that someone else broke their stuff.
Requirements come in many forms. For example, an interface is a requirement which for apps where reliability is important enough, ought to be tested.
If you can write the backbone code, surely you can imagine some of the common uses to which it might be put, and verify that it is at least functional for some of the base cases?
That's definitely the ideal, but even if you don't have the resources to do that, forcing the engineer to think about ways his code could break is very helpful in increasing code quality.
"How do you write a test to check that a banking application does not allow a customer to cancel other customer's cheques? "
Umm, you call the cancel function with one customer's check and a different customer, and verify that it fails.
"How do you write a test to check that someone didn't allow sql injection?"
You enumerate the functions calling sql and attempt sql injection on all of them.
"How do you write a test to ensure that a user account cannot do what it is not authorized to?"
You make sure your design included an authorization component, and you test the invalid combinations of authorization. You make sure that the accessors of the system all have appropriate scope so that access to the data without passing through authorization is compile time impossible.
The performance though is not really acceptable, adequate yes and games have been done on this stuff, but it doesn't keep pace with what you can do on native platforms.
type safety isn't much of an issue since you only have primitives. memory is allocated until all cast structs and the base holding object all release. this isn't rocket science, other languages have it.
the new ogl speedup is a nice improvement for general apps, but is tangential to the problem of high performance graphics.
Bah, each new release I try hoping they'll do something about the speed since I like the language better than c/c++.
Since 1.0 there have been three major speed holdbacks preventing me and many others from adopting java:
1) array access too slow due to boundary checking (no, their optimizer doesn't work for my cases, and this is a problem a lot of scientists/performance hungry people have).
#1 has some good solutions on 64-bit platforms developed at the university of georgia, but sun won't include them, nor will they enable a flag on the jvm to turn of bounds checks. GCJ lets you do it, but can't compile everything I need yet.
2) casting raw memory to objects requires a copy. Java needs a structured object without a header to overcome this, such as the struct proposal, which is in the top 25 rfe's yet has no comment from sun.
#2 has a well understood solution that sun is apparently too lazy to even consider implementing.
3) No way to do fast 2d/3d rendered graphics. Too many call overheads & copies.
Sun needs to ditch AWT/Swing, and probably needs to open source java to overcome this. They've proven their inability to keep up a reasonable mapping to modern featuresets.
I'm probably going to have to give up and learn c# since I'd like a more modern language with good tools, but java just doesn't have the speed.
Thankfully, only the "Moore's Law" camp has the support of both Merriam Webster, and the popular vote.
Unfortunately, the correct term is in fact "Moore's Law".
Looks like the early polls are favoring kerry 53/46/1 overall and 300/270ish electorally.
No difference really.
Well, and the people who can't get their preferred name in the existing TLD's.
There's a word I'd really like as my domain name, but it's taken in all the existing domains, and I keep getting beaten to it in the new domains.
Many people disagree with your 'of course'. I have the right to see anything I've seen once as many times as I want, forever. If you disagree with that right you're advocating coming into my brain and cutting out the memories.
Keeping some sort of digital copy around is just a matter of memory enhancement.
The pet fee isn't for killing the next owner, it's for the inevitable damage to the apartment that has to be repaired.
And don't forget wind power, which also generates free meat.
The saddest part is that he mis-pronounces it on purpose to _gain_ votes.
And as another useful hint, enable the warning on your compiler for empty expression. All modern compilers have this warning, and will prevent you from ever making this mistake again.
Failing one course for a false accusation of plagarism or even getting kicked out of college wouldn't stop someone with talent from reading slashdot and becoming a senior programmer with an office.
Hence the IT industry.
Actually, political ideologies are clearly N-dimensional, where N is substantially greater than two.
However, depending on what is important to you, you can graph them in any smaller dimensional subset.
This makes the linear spectrum and the Nolan grid equally valid.
I've read CS from time to time over the years and never noticed that column. Is there really a large following, or was this just a last ditch attempt to get some attention and money by this Alice and Bill?
Peronsally, I don't like anything from XP except the testing ideas, and those don't originate with XP.
The process I like best for 'test-first' is actually 'almost-test-first'. Instead of just sitting down and writing tests, the process is:
1) Design a system that solves the problem.
2) Figure out what entry points are to the system.
3) Implement the interfaces for the entry points so that the public contract is defined.
4) Now you start writing tests that verify the fulfillment of the public contract.
5) Implement the interfaces in a way that satisfies the tests.
Our current project has about 7500 tests. The system is what I would rate as middleing complex. I average about 3 sideffects caught by tests per major checkin. That's a lot of subtle stuff no qa person had to chase down, and a lot of developers who aren't irritated that someone else broke their stuff.
Requirements come in many forms. For example, an interface is a requirement which for apps where reliability is important enough, ought to be tested.
If you can write the backbone code, surely you can imagine some of the common uses to which it might be put, and verify that it is at least functional for some of the base cases?
That's definitely the ideal, but even if you don't have the resources to do that, forcing the engineer to think about ways his code could break is very helpful in increasing code quality.
"How do you write a test to check that a banking application does not allow a customer to cancel other customer's cheques? "
Umm, you call the cancel function with one customer's check and a different customer, and verify that it fails.
"How do you write a test to check that someone didn't allow sql injection?"
You enumerate the functions calling sql and attempt sql injection on all of them.
"How do you write a test to ensure that a user account cannot do what it is not authorized to?"
You make sure your design included an authorization component, and you test the invalid combinations of authorization. You make sure that the accessors of the system all have appropriate scope so that access to the data without passing through authorization is compile time impossible.
I've seen that bumper sticker.
Is the foot/hand one supposed to be hard ... I do it right every time. Granted, I'm pretty non-flexible, so the rotations don't get very far.
The performance though is not really acceptable, adequate yes and games have been done on this stuff, but it doesn't keep pace with what you can do on native platforms.
type safety isn't much of an issue since you only have primitives. memory is allocated until all cast structs and the base holding object all release. this isn't rocket science, other languages have it.
the new ogl speedup is a nice improvement for general apps, but is tangential to the problem of high performance graphics.
but of course! Anyone trying to develop java without it is missing out.
Bah, each new release I try hoping they'll do something about the speed since I like the language better than c/c++.
Since 1.0 there have been three major speed holdbacks preventing me and many others from adopting java:
1) array access too slow due to boundary checking (no, their optimizer doesn't work for my cases, and this is a problem a lot of scientists/performance hungry people have).
#1 has some good solutions on 64-bit platforms developed at the university of georgia, but sun won't include them, nor will they enable a flag on the jvm to turn of bounds checks. GCJ lets you do it, but can't compile everything I need yet.
2) casting raw memory to objects requires a copy. Java needs a structured object without a header to overcome this, such as the struct proposal, which is in the top 25 rfe's yet has no comment from sun.
#2 has a well understood solution that sun is apparently too lazy to even consider implementing.
3) No way to do fast 2d/3d rendered graphics. Too many call overheads & copies.
Sun needs to ditch AWT/Swing, and probably needs to open source java to overcome this. They've proven their inability to keep up a reasonable mapping to modern featuresets.
I'm probably going to have to give up and learn c# since I'd like a more modern language with good tools, but java just doesn't have the speed.
ha ha ha you should have used javjava.lang.NullPointerException