About "optimization", Gates likely had
a point. That problem of assigning
code blocks (subroutines/functions) to
memory segments
does suggest a
significant role for optimization.<p>What is optimization? For a very
sparse description,
for the set R
of real numbers,
positive integers
m and n, functions f: R^n --> R
and g: R^n --> R^m, find x in R^n
to solve<p>minimize f(x)<p>subject to<p>g(x) >= 0<p>So, set up a mathematical description
of the problem based mostly just on the
'cost' function f, that is, what want
to minimize, and 'constraints' g
that keep the solution 'feasible', that is,
realistic for the real problem. Then look
for a solution x. Yes, easily enough such
problems can be in NP-complete and
still difficult otherwise.<p>Likely what Gates wanted was function f
to be the execution time and function
g to force honoring the 64KB limit per segment,
etc.<p>Then a big question would be, assuming
what software to have its segments
assigned?<p>So, for an answer, just take some
Windows and/or Office code and
get the total execution time on
a <i>typical</i> workload.<p>Might also want to be sure that
on any of several workloads, the
optimal solution was no worse than
some factor p in R of the best
solution just for that workload.
Then keep lowering p until the
f(x) starts to rise significantly
and come up with a curve of f(x)
as a function of p. Present the
curve to Gates and have him pick
a point.<p>Gee, should we rule out having
the same subroutine/function in more than
one segment? Hmm ....<p>Just where Gates learned about optimization
would be a question, but he had a point.