http://qs321.pair.com?node_id=391206


in reply to Problem Domains and Multiple Disciplines

At my university, Computer Science was a department in the Faculty of Mathematics, but I understand your distinction between mathematicians and programmers. A professional statistician or applied mathematican may know algorithms I've never heard of.

However, I'm not sure calling in specialists is a very practical idea in the business world. They all want to be paid, and they usually cost a lot. The more they know, in general, the more they cost.

And sometimes, what the programmer should code may still be the O(n) solution, not the O(1) solution. The O(n) solution is slower, but it's simpler, more obviously correct to someone who doesn't know the mathematics involved, and "fast enough". A simpler solution may also be more maintainable.

Three weeks from now, when someone from the marketing department steps in and says 'We need you to omit all the odd primes from that calculation, when run for the following customers', you'ld have to throw away Gauss's formula -- it doesn't apply.

You can keep the loop from the other version, and add an if statement, "if (is_odd_prime($i) && is_special_customer($cust)) { $sum += $i }". Admittedly, the whole thing is toy problem, but hopefully you see my point.

In some applications, fast code is important. In almost all applications, correct code is as important. Optimizing for verifyably correct, maintainable code is not the same as optimizing for speed, but it's arguably more important. And for businesses, the optimization computation really comes down to the utility of the application in terms of cost savings versus the development and maintainance costs.

So, yes, your points about cross-disciplinary understanding are well taken, but they need to be balanced with the costs involved, as well.

Just some musings, -- Ytrew