When you compile a source file and get multiple compile errors, there are two conflicting principles governing the order in which you go through the source file fixing them.
On the one hand, you want to fix the errors from the top downwards, because of the possibility that some errors are cascades from others: fixing earlier errors may cause later ones to turn into non-
On the other hand, if you fix an early error in a way that changes the number of lines in the source file, then you have to mentally adjust all the line numbers in the subsequent error messages. Do this multiple times and you're looking at keeping a running track of the cumulative change to the file's line count as you edit, which you didn't really want to have to hold in your head at the same time as the more important state regarding the problems you're fixing.
The solution is simple. Line numbers in source files should be indexed backwards from the end, with line 0 being the part of the file after the final newline, line 1 the line before that, and so on. If compilers reported errors using those line numbers, and programmers' text editors displayed the same line numbers, then there would no longer be a conflict: you'd fix compile errors from the top of the file downwards, each error message would have a correct line number when you reached it, and you'd only see cascade errors after fixing the primary error that caused them.