Are Programmers Overly Dependent on Compilers?
Statements that the computer science industry should obey the same same regulations as the automotive industry involving reliability and safety are not justified because computer science is in fact a science! A programmer is not-so-much a part of an industry as they are a scientist producing a solution. In any science a margin of error is directly factored into the evaluation of the final product. As a programmer I feel a bit dirty talking abut how its ok for code to contain errors, it shouldn't, but it often does.
Statistically speaking; if one were to write billions of lines of code for an application it is more than likely that errors will show up at some point. Continuously bouncing code off your compiler could be seen as an over-reliance on the programs ability to debug but it is the quickest and most efficient way to verify your code.
Blame for a crashed system can easily fall upon the software developer but other factors can also contribute. Issues such as frozen screens and system crashes can just as easily be caused by hardware failures, improper use, and any damn thing ranging from solar flares to barometric pressure. The truth is that we are imperfect people who build imperfect technology that processes imperfect instruction, and when the end result is observe the blame falls on whoever was bold enough to create the accused item in the first place.
Every time my computer freezes I put it in the microwave for a few minutes, and whenever it falls asleep I give it a good strong shake and yell at it to wake up. OK, not really.
Bill Gates said that "if automotive technology had kept pace with computer technology over the past few decades, you would now be driving a V-32 instead of a V-8, and it would have a speed of 10,000 miles per hour. Or, you could have an economy car that weighs 30 pounds and gets a thousand miles with a gallon of gas. In either case, the sticker price of a new car would be less than $50." Critics such as Charles C. Mann have encouraged that if this were true, then for no reason whatsoever your car would crash twice a day.
While this statement is many times correct, it is not correct to directly assert that software is the leading cause. Hardware failures are equally, if not more prevalent than software malfunctions and can be much more inconvenient to fix. I have had issues where laptops would not start due to a depleted CMOS battery or a system designed with insufficient cooling leads to an overheated processor. With this in mind it is somewhat safe to say that anyone would rather install the latest version of adobe reader than replace their computer’s CPU fan.
I agree that oftentimes software can be released that has many flaws but it is not necessarily due to the dependance of developers on compilers to debug their code. Rapid production of a product in order to get a competitive item to market is hardly excusable but is ultimately unavoidable. I personally think that a good product will be updated, many times, and still never be perfect. What I mean by this is that no program can be flawless because there will always be a better way to do some task eventually. A developer might improve a program by converting a messy select case into a elegant function only to see the programming language that the software was written in obsolete the next year.
I think that it is necessary for software to be modified and released many times to provide new features and keep it up to date with the latest advancements in technology. Technology will improve continuously and will provide new and better ways to solve problems. If a program was created “perfect” the first time it would still become obsolete as technology evolved past it. The perfect program would be artificially intelligent to the extent where it could adapt to a new environment, adapt to a user, and evolve itself to keep up to date with the latest changes and trends in technology. Since such a program does not exist it is completely necessary for updates to code to be released.
I also agree that software standards can be very low. It would be better if there was a minimum universal standard that all software had to follow similar to safety standards that are set in the automotive industry. There are many ways that setting standards and creating common agreements between all software products could provide great benefits. For instance, imagine if all browsers suddenly agreed that they would accept universal terms other than having to specify -webkit, -moz -ms, -o. (Unified acceptance of CSS 3). In a way HTML5 and CSS3 are an excellent beginning towards unified programming standards but more truly needs to be done in order to set a standard for all developers and software.