There are an almost infinite number of software utilities to find differences in text. Most of them use a variation of an algorithm developed by universities in the 1970s. They all find the longest in-order run of similar text between two documents. Any text outside of this is either marked as a deletion or an addition. This in itself proves to be very useful, although it is far from perfect.
Suppose you make a copy of a document (or software source code file) and then reorder some paragraphs (lines of code). Note you are not making any real changes. Perhaps you are just arranging the methods in a class in alphabetical order. If you compare the modified copy with the original document, you will find most comparison tools will fail. They will mark a reordered paragraph as either a deletion or addition. It is not a deletion or addition, it is just an unaltered line that has moved from the middle of a document to the top.
Could there be a separate step to detect moved text? Well that in itself has many problems. For one, suppose you take a paragraph, change one word in it and then move it from the bottom of the document to the top. How can the software spot that it has been moved, if it has been changed at the same time?
It can get more complicated. Suppose the paragraph isn't changed at all, but just has all its sentences reordered at the same time as being moved around in the document.
Our software product Florencesoft TextDiff for Microsoft Windows addresses the above problems. The color green is used for new text, red for deleted text, blue for text moved up in the document and gray for text moved down. The background color changes from white to alternating use of yellow and light blue to indicate that text has been reordered.
TextDiff is free to use for the first 30 days and can be downloaded from our Downloads page.