Finished Software is Software is a form of mathematics; too many fools are ignorant of this simple fact, and the state of software has them believe perfect software to be a myth. Perfect software is finished software, for to perfect something is to finish it. We get the word ``perfect'' from Latin; a form of the verb to finish, PERFICERE, is PERFECTVM; the word ``finish'' is also from Latin, the noun FINIS meaning end. If software meets its specifications exactly, then it's finished, and therefore perfect; the current trend is to finish anything, never, for then malicious changes called ``updates'' may be forced onto others perpetually, which is another Latin word, PERPETVVS, meaning endless. Any idiot who believes finished software to be a myth is stating his inability to finish anything, and ought to be avoided. Finished software is obvious. Consider a program that does nothing. Fools who worship at the altar of UNIX think very highly of software that does nothing, although some does it more efficiently than others. Next consider a program that does something useful, such as adding positive integers modulo some limit. Such a program can obviously be finished, and anyone who disagrees is lying, or stupid. If any software can be finished, perfected, and any can, then it stands to thought that all software can be finished, although many a modern program's so grotesquely complicated and poorly specified to effectively prevent this, simply because no one knows exactly what it should do, but most software's not complicated so; there's not much of a point in trying to finish software that should be trashed. It stands to thought, as software is recursively built from smaller software until reaching bedrock. Finished software requires a finished context. This is why it's easier to write a video game for an abandoned video game console than on some newer platform. There's a valid point to be made that the interfaces used by modern software are a poor foundation, and I'd agree this is at least half of the problem. One solution is to use foundations independent of this poor current state. An APL program will be finished forever, as will any other program with a mathematical bent and proper abstraction. Software isn't physical and thus isn't subject to the rot or decay which affects most or all things. Programmers love to speak out of both sides of their mouths on this, by arguing that they're akin to bridge builders forced to change building materials halfway through construction, and simultaneously arguing that they shouldn't be held to similar standards, like customers expecting software to work. Such physical analogies begin and end whenever convenient, and it's clear there's no clear thinking. At the least, proper interfaces can be designed which require very little maintenance to cope with a changing world. Almost all software can be designed to use some nice abstraction to support itself, and those abstractions can use yet deeper abstractions, until only a very small amount would need to be touched whenever some extreme change occurs; stability isn't the end of the world, but its start. I was spurred to finish this article recently, but it may collect some new ideas before I finish it. .