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=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.157.27.226 with SMTP id v31mr70534636otv.4.1470498835529; Sat, 06 Aug 2016 08:53:55 -0700 (PDT) X-Received: by 10.157.45.97 with SMTP id v88mr512608ota.4.1470498835501; Sat, 06 Aug 2016 08:53:55 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!news.glorb.com!f6no7830626ith.0!news-out.google.com!d130ni26586ith.0!nntp.google.com!f6no7850480ith.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Sat, 6 Aug 2016 08:53:55 -0700 (PDT) In-Reply-To: <12ca4276-cd1e-49ae-b5dc-56432e721687@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=50.111.146.161; posting-account=Ies7ywoAAACcdHZMiIRy0M84lcJvfxwg NNTP-Posting-Host: 50.111.146.161 References: <31c22983-150c-4dab-abba-588e15f75914@googlegroups.com> <84d258dc-b60d-4a49-9af4-27dd6f3e5f5f@googlegroups.com> <1703ca9a-2665-4435-9564-4abd8a77ebe9@googlegroups.com> <12ca4276-cd1e-49ae-b5dc-56432e721687@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <2a3fc931-feb3-4542-a4c9-e43affa5c4f4@googlegroups.com> Subject: Re: New IEEE Language Popularity Ratings From: brbarkstrom@gmail.com Injection-Date: Sat, 06 Aug 2016 15:53:55 +0000 Content-Type: text/plain; charset=UTF-8 Xref: news.eternal-september.org comp.lang.ada:31305 Date: 2016-08-06T08:53:55-07:00 List-Id: > Is this not the whole purpose of reusable libraries? Otherwise we will all still program in assembly language and write our containers the hard way for example .... I think the response on this needs a bit more nuance. There are several reasons one might not want to use a library from some source, even though a developer wouldn't have a need to use assembly language. So, if you're the developer here are some questions to ask: 1. Do I trust the algorithms in the library? Numerical procedures may need care to ensure they've been implemented carefully. For example, if one has to do matrix inversion, it's important to use a Singular Value Decomposition (SVD) algorithm implemented with long floats (or double precision). I don't know whether spreadsheet inversions do that, so I might not want to use a spreadsheet - even if the spreadsheet has matrix inversion. Another example is random number generators. Knuth's Art of Computer Programming, Vol. 2, is the basic definitive reference. It includes ten tests of a random number generator that anybody needing one should be sure have been used. Park and Miller's article many years ago in CACM provides code for a portable version of an algorithm that they put through the Knuth wringer. In my own work, I've got an Ada library for generating probability distributions that includes Park and Miller's algorithm, since it includes a test as to whether it's been implemented correctly. I might trust the algorithms in MatLab or Mathematica, but this kind of work is not for amateur mathematicians. 2. Do the data structures in the library fit with the ones I want to use in my application? For example, if you're planning to do Monte Carlo simulations of schedule uncertainties and resource loading, it would be wise to make sure that a library's calculations can handle a topological sort (depth-first search) through the graph represented by the activities and links that form the directed acyclic graph (DAG) to get the critical path - meaning that the path through the graph needs to be able to go from beginning to end and from end to beginning. Again, the numerical calculations should be in double precision numbers. Assuming the schedule is for computation, the duration of the activities should probably be in days or seconds, not in work weeks that require including no work on weekends and holidays. 3. How stable is the library? This question also involves assessing risks: Can I take over maintenance of the library to ensure it's stable? How much work will my maintainers have to do to deal with upgrades in the library - or learning to use it? Here, Boehm's COCOMO II cost model has a good discussion of the cost of reusing code. As Boehm and colleagues note, reusing code may require redesign and actually cost more than writing new code. Good software engineering practices suggest that developers should evaluate this cost before undertaking the work. In addition, organizations providing code libraries may drop them if their priorities change or they go out of business. Finally, the index to the Patents maintained by the U.S. Patent office had 45 PAGES listing patents for wheels. We reinvent wheels all the time. It doesn't make much sense to attach bicycle wheels to aircraft landing gear (unless you're the Wright Brothers back a few years ago). Bruce B.