Either you create useless generic certifications or some that are so specific the certified are unemployable. Now imagine trying to certify someone in all programming languages, including ones not even invented yet! Add to that certification in every kind of program from toasters to spaceships. I knew a guy who passed all the Java certifications yet when put on a real application was hopeless he simply didn't get how to write a real body of code. Like the bridge ingredients these things rarely change after all fluid physics is a well known science and unlikely to spontaneously become something else. Plumbers deal with water, gases, pipes and valves. The other white lie is that we can come up with a way to formally prove that the programmer can write perfect code through testing, licensing and certification. I think I'd believe you have a time machine to sell me before I believe that your formal methods can work in messy real world. Even if you could formally prove a set of source code where would it run? An operating system you don't control? Calling web services from some other company? Interacting with users who are real people? Built with a compiler running on a CPU you didn't design talking to other electronics that didn't exist when you proved your software? Even if such a perfect miracle were possible the cost would make it impossible to ever use it. The idea that there exists a set of formal methods that if followed ensures a perfect result for every kind of program is ludicrous. High speed stock trading software executes trillions of times one microsecond at a time. The Mars Lander is millions of lines of C written for exactly one use. It's nothing like a bridge or a building. What makes writing software so hard is that it can be almost anything and anywhere, affect one person or a billion, have to work flawlessly for decades or only once. Programs come in all sizes from a few lines of code to tens of millions and touch every single area in modern life. There are nearly a million iPhone apps all of which were written in the past 5 years. There are around 600,000 bridges in the US, built over two centuries. Software evolves constantly, both during development and afterwards. In programming we have to create our own universe for every program, or probably a better description would be we adapt some collection of universe elements that are combined to simultaneously construct a hundred different bridges which all have to work together even though the universe may change unpredictably later.Įven worse is that a bridge may take years of planning and construction time, and then last for a 50 years without alteration. Building a bridge has not fundamentally changed in two thousand years you deal with gravity, wind, rain and heat and many basic materials that would be familiar to a Roman engineer. I love when people try to compare programming to something like civil engineering. That's one mighty bunch of stuff to try to describe formal methods for just listing all the programming languages is mostly impossible much less explaining how to write perfect code in all of them. Now add multiple language web applications and client/server and distributed systems. Try to license programmers in Assembly, C, Java, PHP, Fortran, LISP and Erlang. Try to find common ground between iPhone games, high speed stock trading systems, your toaster and a Mars lander. Software lives in so many realms, is written in so many environments, languages and businesses, and interacts in multitudinous and often unpredictable ways that there isn't any easy way to even find a formal definition of what comprises software. In fact it's even difficult to define what a program is, much less describe how you would go about developing perfect programs. After 30 years of writing code for a living I feel secure in saying that there is no silver bullet, no magical method or paper guarantee that will make all software perfect and bug free. The article is not a big deal but the comments were really interesting, especially all the PhD's in Computer Science who said following formal methods would make it all better, plus the usual folks who want regulation and certification and licensing.Īll I could think of was "good luck with all that". Software Runs the World: How Scared Should We Be That So Much of It Is So Bad?
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |