gregk@cbnewsm.att.com (gregory.p.kochanski) (02/08/91)
Here's a quick, ballpark economic-like analysis of when it's worthwhile to make a language incompatible. The idea is to calculate a immediate cost (in man-years) to make the change, and then compare it to a long-term benefit (increased productivity) by doing a present-value calculation with some reasonable interest rate. The cost: We assume a non-trivial change (that can't be mechanically applied easily with awk or sed or the like) that affects 1% of the lines of existing code. Assuming 'N' lines of code presently written, and a programmer productivity of 10 debugged lines per day (comparable to the rate of writing new code), the cost is 10^-3*N man-days, or 3*10^-6*N man-years. I believe 'N' is on the order of 10^7-10^8, but it ends up cancelling out in the end. The benefit: Assume that the change increases productivity by a factor of 'P', where P is probably just a little bigger than 1. Since C++ is about 5 years old, assume that the total number of lines is increasing at 1/5, or 20%, per year. Further assume that an average chunk of code is re-written or obsolete every 4 (?) years. Putting those together means that about (0.20+0.25)*N lines are (re)written every year. So the change saves (1-1/P)*(0.20+0.25)*N lines worth of work, or (at 10 lines per day) 1.5*10^-4*(1-1/P)*N man-years. Economics: Having something done now is always better than having it done next year. Getting $1 now is about as good as getting $1.1 next year (10% interest rate). Now, getting a product out now can be *lots* more valuable than that, because next year you may have five competitors. As a guess, let's use a 25% 'interest rate' to account for this. So now, we can compare the improvement in productivity with the 'interest' on the work expended to upgrade. Productivity: 1.5*10^-4*(1-1/P)*N Interest on upgrade: 0.25* 3*10^-6*N So, the change is worthwhile if P>1.01 or so: a 1% productivity improvement. Now comes the hard part -- estimating the productivity improvement that a given change makes. I leave that to the ANSI commmittee.