One of my friend says, 'Software is never finished. It is only abandoned!'.

But I don't get it right. Why is it not finished, but abandoned?

Can anyone justify this?


Hello World is pretty complete, it does its job without fail every time.

4 accepted

Most of the time - yes, as almost anything else. Making a program perfect takes lots of time, so efforts are usually stopped when it is good enough.

It's like in 80/20 rule - you spend 20 percent effort on making a good enough program and then can spend 4 times more (actually, much more than that) on making it perfect, but it will likely not pay off - most users just won't notice.


It's probably possible to find an example of trivial software that is actually finished, in the sense that it does everything that it's creators ever intended it to do.

Most of the time, software models complex, constantly-evolving real-world problems/challenges. The system is so complex that any given iteration of the software will only approximate what it should ideally do. By the time a given iteration is available, there are generally already new ideal requirements waiting to be implemented.

Certainly software often ships and is useful to people. Still, there is always something more that one wishes the software could do.


wget changelog http://changelog.org/blog/wget/index.cgi changelog for wget en

complete software...


There are near always features that are not implementet yet, code improvements not done and so on. Thats why we use requirement documents-otherwise it will mostly become a neverending story.


In my opinion, TeX is an example of a large, complex and widely used "finished" software product. Admittedly it has taken 21 years to be complete (essentially v3.7 but using a strange numbering scheme) All (7) versions after 3.0 have been bug fixes, with most recent version being released in 2008. I can't find when version 3.0 was released though. [ info mostly pulled from wikipedia ]

But then again it was written by Donald Knuth... one of the greats of computer algorithms.

LaTeX a system built on TeX is also ridiculously stable, First release looks like 1994, with 18 releases total, with the most recent being 2005, then 2009. http://www.latex-project.org/ltnews/

Both systems are used by a huge number of people. Most mathematical publications (books, journals, etc) use it, and a large proportion of maths heavy sciences also use it.


If you define finished as being a program without bugs, we cannot prove that there are any finished programs out there.

Proof(ish): To quote the famous Dr. Dijkstra, "Testing shows the presence, not the absence of bugs." Therefore we can test/use the program all we want but we will never know whether or not there is a bug that we haven't found yet. If you want to get really nerdy about it you could use Rice's Theorem or reduce from the halting problem to get a full on proof but I will leave it at that.

By normal societies definition of finished then there are some examples of finished programs. I would argue that a non computer scientist would define a program to be finished if it completes his/her task without any errors. Look at notepad for example. Mainstream society would argue that that program is finished.

Basically the argument could be taken either way depending on how you define the word.