{"id":28437,"date":"2020-04-20T22:05:02","date_gmt":"2020-04-21T03:05:02","guid":{"rendered":"http:\/\/huewhite.com\/umb\/?p=28437"},"modified":"2020-04-20T22:05:02","modified_gmt":"2020-04-21T03:05:02","slug":"big-time-software-small-time-warranty-ctd","status":"publish","type":"post","link":"https:\/\/huewhite.com\/umb\/2020\/04\/20\/big-time-software-small-time-warranty-ctd\/","title":{"rendered":"Big Time Software, Small Time Warranty, Ctd"},"content":{"rendered":"<p>A reader writes concerning the <a href=\"https:\/\/huewhite.com\/umb\/2020\/04\/19\/big-time-software-small-time-warranty\/\" target=\"_blank\" rel=\"noopener noreferrer\">software warranty debate<\/a>:<\/p>\n<blockquote><p>Does this put developers\/coders on the hot seat?<\/p><\/blockquote>\n<p>For those entities that can credibly be sued, by which I mean corporate entities that take money for their products, the heat has to begin right at the top with the people who make the priorities &#8211; the CEO and his team. They have to make it abundantly clear to the product managers that producing and selling a product which will damage the credibility and profitability of their companies is no longer acceptable. I word this paragraph this way as Chong did not address the question of free, open-source software, an area in which I once dabbled. I&#8217;ve been out of touch with that area for 20 years, and for the 15 I did dabble, I didn&#8217;t communicate with fellow open source authors much at all. These days I really have no idea what is motivating open source authors, to what standards they work, etc. Until I froze updates on my current home computer, which runs Linux\/Fedora, I noticed that occasionally an update would cause my system to crash frequently; I can only assume that a flawed enhancement or bug fix had gotten loose into the wild, so it appears testing remains a challenge.<\/p>\n<p>Developers will ultimately be responsible for implementations of technologies and processes that address warranty requirements, of course, but it&#8217;s their managers that have to reallocate resources to accomplish the required goals.<\/p>\n<p>My suspicion is that the first step will be to disabuse a lot of developers of the notion that their favorite computer language &#8211; or only language they know &#8211; can be used for warrantied software. The development costs associated with warrantable work in C, C++, and quite a few others, possibly even including Java, will be devastating.<\/p>\n<p>There&#8217;s a couple of aspects to this. First, I would expect there would be a push for provably correct software. This is software that has been subjected to mathematical examination that proves the software does what requirements specify, and nothing more &#8211; no nasty side effects, timing issues. Provably correct requires that the requirements be specified in a mathematical manner so that mathematical techniques may be applied to discover problems. There&#8217;s been some work done in this area by &#8230; Microsoft, I think. I recall blogging about this once, but I don&#8217;t recall any keywords. It was getting quite the tout from someone, but it doesn&#8217;t appear to have successfully invaded the industry. Which may simply mean software shops are insular.<\/p>\n<p>But, in general, mathematicians hate side effects, and that leads to the second aspect of this work: are we programming machines, or are we developing solutions to problems? These are two very different things, and it&#8217;s often difficult to find someone who can do both well. Primitive languages such as machine language and assembly language are the quintessential computer programming languages; C, my milk language, is little more than a portable assembly language that puts a bit of grout over the ugly parts. C++ attempts to jump to object-oriented language while retaining its C roots, a decision that allows the worst aspects of both worlds to persist.<\/p>\n<p>My view is that compilers are potentially the bridge between the two worlds. They are, in essence, a collection of wisdom concerning how to program a computer with a given architecture; the language(s) a compiler supports then become the languages with which we express anything from problems to solutions.<\/p>\n<p>If you&#8217;re wrinkling your brow, there actually have been a few languages in which the problem is articulated, and the &#8220;compiler&#8221; is responsible for taking that articulation and forming a solution. I&#8217;m thinking of PROLOG, in which I&#8217;ve never worked but covered in a computer course. I&#8217;m not absolutely certain skilled practicioners of the language would initially agree with my characterization of a language I learned about 40 (oh god) years ago. Hah!<\/p>\n<p>As noted, not all languages are good for solution composition. C, C++, and other languages which permit side effects which can affect future computations are difficult, or impossible to &#8220;prove&#8221; correct. Worse, their relatively low support for engineers by closing off the use of techniques that have proven dubious, which many programmers resent, makes them less than useful for producing warrantable work.<\/p>\n<p>I wish I could say I expect that languages in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\" target=\"_blank\" rel=\"noopener noreferrer\">functional programming paradigm<\/a>, which refers to mathematical functions and not to alternate meanings, might come into stronger use, but I don&#8217;t have enough exposure to the general currents in programming-land to actually make a credible guess. The sharks in this ocean, if I may continue this metaphor, consist of monied interests who are less interested in finding optimal solutions and more in making money. Big conferences, processes such as Agile (which I&#8217;m told was used in development of the Minnesota DMV&#8217;s recent utter debacle of a computer system), new languages, consultants, they all have a hand and an interest, overt or covert, in their favored solutions. So while I think functional programming languages, which appear to be more amenable to producing provably correct, and therefore warrantable, software, may be the best approach going forward, I&#8217;m not aware of any interests capable of the necessary capitalization to thrust them forward into the spotlight for proper evaluation. I myself wonder about their utility when it comes to very large data processing tasks. My experience in this family of languages is limited to Mythryl.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A reader writes concerning the software warranty debate: Does this put developers\/coders on the hot seat? For those entities that can credibly be sued, by which I mean corporate entities that take money for their products, the heat has to begin right at the top with the people who make \u2026 <a class=\"continue-reading-link\" href=\"https:\/\/huewhite.com\/umb\/2020\/04\/20\/big-time-software-small-time-warranty-ctd\/\"> Continue reading <span class=\"meta-nav\">&rarr; <\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-28437","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/posts\/28437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/comments?post=28437"}],"version-history":[{"count":1,"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/posts\/28437\/revisions"}],"predecessor-version":[{"id":28438,"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/posts\/28437\/revisions\/28438"}],"wp:attachment":[{"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/media?parent=28437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/categories?post=28437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/huewhite.com\/umb\/wp-json\/wp\/v2\/tags?post=28437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}