back

by rramadass·9d ago·view on hn ↗
Well said.

COM was one of the best realizations of "Component-based Software Engineering" and Brad Cox's "Software-IC" model. It was a binary standard and so components could be written in any language and yet be assured of perfect interoperability provided you followed all the rules/conventions. There was a bunch of boiler-plate for the framework itself but once you understood it, everything was smooth sailing in your language of choice.

One of the things i always advise people is not to focus only on the current way of doing things but to study older well-known libraries/frameworks/architectures/kernels/etc. to really understand "Software Engineering" from many perspectives. That is where insight comes from and real understanding happens.

For people interested in understanding COM, see the classic Essential COM by Don Box.

1 comments
COM is heavily used in Windows today, no need for past tense.
Not directly by app developers. Everybody uses only WinRT/.NET based managed languages/runtimes/libraries/frameworks etc.
Who uses WinRT besides Microsoft employees, or APIs that are only available in WinRT like MIDI 2.0?

Regardless, WinRT is COM.

It only adds IInspectable as additional interface alongside IUnknown, and .NET metadata files instead of type libraries.

I said "WinRT/.NET based managed languages/runtimes/libraries/frameworks" implying that it is the higher-level constructs that are used by app developers.

If you were to interview any "standard" windows programmer today i can almost guarantee they know nothing about COM even though WinRT itself is an evolution of COM and .NET also provides COM interop. Only the older senior programmers who have used it directly know of it.

Ignoring C++ devs on purpose?

Also no one uses WinUI, if that is what you are implying with WinRT, only Microsoft employees on Windows team forced to deal with that clusterfuck framework after Project Reunion pivoted into WinAppSDK.

What do you think Qt, VCL, FireMonkey, ImGui, wxWindgets, JUCE make use of?

What are you talking about? None of it is relevant to the point i am making.

Also you do not need COM to program in C/C++ directly on Windows API since they are all C interfaces anyway. COM is just an architecture you choose to use or not depending upon your needs.

Ever since managed languages/virtual machines became "standard" programming platforms most Windows programmers only write to these. Everything is at such a high-level now that only curious programmers delve deeper into the rabbit-hole.

You definitely do, unless you are stuck in Windows XP view of computing world.

It is like using ReactOS instead.

All Windows APIs since Vista are delivered via COM.

How much Windows development are you doing actually?

Not that much apparently.

Also someone has to surface Windows APIs to managed languages, they don't appear by magic.