It's remarkable how many organizations don't enable aggressive compiler warnings (or worse, ignore or disable them). One of the best practices I've learned is to turn on every warning that you possibly can and use the option that treats all warnings as compiler errors. The code from Apple may have been properly unit tested. However, if this was the result of a bad automated merge, unit tests are often not repeated on the resulting code base headed for system test. The GCC "-Wunreachable-code" option would have caught this type of error.
This, I think, is the general reason why CS isn't popular. CS *is* math and logic. It's also a difficult subject that not everyone can or wants to learn. You can't learn the awesome things in Computer Science without first understanding these core concepts. If you just want to make a pretty web site or fancy mobile app, you probably don't need a CS degree. The awesome stuff requires an understanding of the "nuts and bolts" (including sorting algorithms from the 70's).
It's remarkable how many organizations don't enable aggressive compiler warnings (or worse, ignore or disable them). One of the best practices I've learned is to turn on every warning that you possibly can and use the option that treats all warnings as compiler errors. The code from Apple may have been properly unit tested. However, if this was the result of a bad automated merge, unit tests are often not repeated on the resulting code base headed for system test. The GCC "-Wunreachable-code" option would have caught this type of error.
This, I think, is the general reason why CS isn't popular. CS *is* math and logic. It's also a difficult subject that not everyone can or wants to learn. You can't learn the awesome things in Computer Science without first understanding these core concepts. If you just want to make a pretty web site or fancy mobile app, you probably don't need a CS degree. The awesome stuff requires an understanding of the "nuts and bolts" (including sorting algorithms from the 70's).