{"id":414,"date":"2005-08-23T16:01:37","date_gmt":"2005-08-23T23:01:37","guid":{"rendered":"http:\/\/balafon.net\/?p=414"},"modified":"2005-08-23T16:01:37","modified_gmt":"2005-08-23T23:01:37","slug":"baroque-programming","status":"publish","type":"post","link":"https:\/\/balafon.net\/?p=414","title":{"rendered":"Baroque Programming"},"content":{"rendered":"<p>What is it with Windows programming and baroque, massively redundant systems?<\/p>\n<p>At my previous job, I observed with some interest that people who came from the Unix camp tended to write and design simple, direct, and elegant systems.  Windows people, on the other hand, seemed to love convoluted designs, full of indirection and multiple layers of interfaces.  I guess this correllates with the nature of programming on each system.  Unix programming is a hodge-podge of different libraries, but there is usually only one library for any given domain &mdash; as functionality was added, the APIs were bolted on to the side of the existing libraries.  There&#8217;s the C &#038; C++ standard libraries for basic stuff, Berkeley Sockets for networking, etc.  Admittedly, there are half a dozen GUI libraries (Motif, GTK, Qt, etc.), but they are orthoganal to each other; they aren&#8217;t lovingly intertangled like an octopus orgy.<\/p>\n<p>In Windows, on the other hand, we find layers upon layers of interfaces all to accomplish the exact same things.  For your basic user interface, there&#8217;s the original 16-bit API, the Win32 API, MFC and now Windows Forms, each one calling the one below, until the call stack of a given function in your code is hundreds of functions deep.  For interprocess communication, there&#8217;s DDE, OLE, COM, DCOM, ATL, Web Services, SOAP, etc.  Most of the code I&#8217;m looking at these days uses half a dozen different memory management libraries, string libraries and collection type libraries in any given file.<\/p>\n<p>This irks me, because that style of doing things infects designers and makes them write the same way.  I&#8217;m working on an MMC snap-in, a simple tree of nodes with associated property pages.  Each node is a COM object that inherits certain interfaces by means of which to handle events, etc.  But this designer has built a base class for all the nodes in this snap-in which handles the COM events, and then passes them on with a second set of virtual functions to the individual node objects.  This is a completely redundant and useless layer that makes the code harder to understand and maintain, as well as slower and more and more inefficient.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is it with Windows programming and baroque, massively redundant systems? At my previous job, I observed with some interest that people who came from the Unix camp tended to write and design simple, direct, and elegant systems. Windows people, on the other hand, seemed to love convoluted designs, full of indirection and multiple layers &hellip; <a href=\"https:\/\/balafon.net\/?p=414\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Baroque Programming&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-414","post","type-post","status-publish","format-standard","hentry","category-computing"],"_links":{"self":[{"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts\/414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=414"}],"version-history":[{"count":0,"href":"https:\/\/balafon.net\/index.php?rest_route=\/wp\/v2\/posts\/414\/revisions"}],"wp:attachment":[{"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/balafon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}