Tony Williams, co-inventor of COM, bashes dynamic object systems
Erik Buck
erik.buck at sbcglobal.net
Thu Jul 5 20:25:33 PDT 2007
I just watched an extensive interview with Tony
Williams, co-inventor of COM, on Microsoft's "Behind
the Code" series. He described the genesis of OLE1,
COM, .Net, and his new component environment for
"Office 12".
He is a very interesting fellow who seemed bright and
friendly. However, given the combination of his
paleolithic programming views and his job as an
influential "Software Architect" at Microsoft, I
suspect Apple and Cocoa will have no problem staying
ahead of Microsoft in both developer productivity and
technology. He has a pathological love for strict
interface typing and strong coupling between
components. His education is in physics and not
software. He dismissed dynamic binding and the
Small-talk school of object orientation as "just not
suitable for office applications". He said users
would be plagued by "does not understand message"
error windows. He should tell the iWork team before
it's too late!
He also claimed responsibility for initial creation of
the Windows Registry. He showed a slide about the
registry that said, "sorry sorry sorry sorry sorry..."
Given the general disfavor of COM programming these
days and the absolute abomination of the Windows
registry, this guy may have single handedly crippled
Microsoft for a decade or more.
He may have been working under unavoidable constraints
in the Windows 3.1 days when OLE was released, but to
make all teh same mistakes again in 2007 is
unforgivable. NeXT has already showed him how
effective object/components systems could be built way
back in 1988 (three years before Windows 3.1 shipped).
Mr. Williams did not seem to appreciate .Net much
because .Net is focused on programmer productivity and
COM is focused on something else loosely described as
component technology. In the same breath, he lamented
that tool support for COM was never very good. The
compilers and debuggers didn't understand components.
There was some support in MFC for components, but it
was weak. The Office/application teams never got on
board regarding components. He seemed to be implying
that tools and application groups were on board for
.Net.
He eventually went to work for Rick Rashid, Senior
Vice President - Research, where he has spent years
developing yet another doomed tight coupling based
component models that so far is only used for a
calendar printing function in a future version of
Office.
The irony is that NeXT got D'OLE working before
Microsoft could ship DCOM. NeXT provided tools that
enabled Objective-C objects to interoperate with COM
objects. It was even possible to wrap Objective-C
objects in COM/Active-X interfaces. If there is
anyone alive today besides Mr. Williams who thinks a
component model should be based on strong typing and
strong coupling between components, he/she deserves an
eternity reading and re-reading "Object-Oriented
Programming: An Evolutionary Approach" by Dr. Brad
Cox.
I guess I am just prone to wishful thinking that the
general programming community would have awakened to
the reality that COM style interfaces are worse than
straight C function interfaces if software re-use is
the goal. The key to software re-use is minimizing
coupling between components - not maximizing it!
More information about the MacOSX-talk
mailing list