From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,XPRIO, XPRIO_URL_SHORTNER autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,4feb499c05063194,start X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!not-for-mail From: "Marc A. Criley" Newsgroups: comp.lang.ada Subject: Artistically creative expression has no role in software design Date: Mon, 19 Jul 2004 13:46:58 -0500 Message-ID: <2m2j9gFhf4cpU1@uni-berlin.de> X-Trace: news.uni-berlin.de SO4DW7K0PG13k8LVGd7DNwjgCwqmff/WYf8JKZbsvjVvUkmF0l X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1437 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 Xref: g2news1.google.com comp.lang.ada:2241 Date: 2004-07-19T13:46:58-05:00 List-Id: (Okay, now that I have your attention... :-) In spectating the "SCO vs Linux" lawsuit (www.groklaw.net), a lot of documents of various types get posted. One of the recent references was a paper titled, "The case against Copyright Protection of Non-literal Elements of Computer Software" http://tinyurl.com/3tjqj, by Christopher Heer of the University of Toronto. The paper analyzes something called the "Abstration-Filtration-Comparison test (AFC test), which is a court created means for attempting to determine copyright infringement of software where no _literal_ copying was involved, or perhaps was obscured. One of the interesting conclusions of this paper is this: "Since the design of computer software is forever driven by its intended functionality and efficiency concerns, the room for artistically creative expression never arises. [...] It is more appropriate to consider the software objects of a computer program as analogous to the gears, pulleys, and levers of a mechanical invention, as by its very nature, the design of computer software is intended to optimize functionality by making a program run faster, use less memory, or be easier for the programmer to modify." Since programming in Ada has been sneered at as requiring that a programmer "lose their programming freedom" and likened to "programming in a straitjacket", this article argues that those are in fact proper characteristics in the development of correctly functioning, optimized software! Software is pure function, there are inputs (data and time), transformations, and then outputs; although the software's design and implementation may be formulated in a specific way that promotes one or more of Heer's three functionality optimization axes . Arguably then, for the first two axes, more speed and less memory, there should be an optimal design and an optimal implementation. Add in the overriding requirement that the software must be _correct_, and Ada shines--its definition supports establishing and verifying programming correctness--and subsets with supporting tools like SPARK (www.sparkada.com) even take that a serious step further. Ada's case for the third axis of optimization, "easier for the programmer to modify" (which is subjective), can be strongly made as well. With its design goal of readability, fully object-oriented capabilities, and the strong typing that makes it easier to modify software _correctly_, again Ada shines. After you get past the knee-jerk reaction to Heer's conclusion (which I'll admit to), sit back and really think about software, its function, and how to achieve _correctness_ and _efficiency_ in design and programming. Software development starts to become less about creative expression, and more like a quest, trying to find the elegant implementation of functionality. Refactoring, anyone? Marc A. Criley McKae Technologies www.mckae.com "The Efficient Production of High Quality Software"