From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-2.9 required=3.0 tests=BAYES_00,NICE_REPLY_A autolearn=ham autolearn_force=no version=3.4.6 Subject: Re: Trivial question: how to avoid confusing sec, min, hour and day in a program? Newsgroups: comp.lang.ada References: From: ldries46 Date: Mon, 6 Sep 2021 09:20:27 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-GB Message-ID: Organization: KPN B.V. Path: eternal-september.org!reader02.eternal-september.org!news.mixmin.net!feed.abavia.com!abe002.abavia.com!abp002.abavia.com!news.kpn.nl!not-for-mail Injection-Date: Mon, 06 Sep 2021 09:20:28 +0200 Injection-Info: news.kpn.nl; mail-complaints-to="abuse@kpn.com" Xref: reader02.eternal-september.org comp.lang.ada:62653 List-Id: Op 5-9-2021 om 9:27 schreef Dmitry A. Kazakov: > On 2021-09-05 08:56, reinert wrote: >> Anybody with good ideas on how (in a simplest possible way) to avoid >> to confuse between representation of time as seconds, minutes, hours >> and days in an Ada program? > > Just use the standard type Duration. > >> It is somewhere in my program natural/human to think in seconds >> whereas  minutes or hours feels more natural at other places (so the >> numerics is "human"). Example to illustrate: heart rate is "natural" >> to give in number per minute (not in number per second, hour or day). >> Time on work is normally given by hours (not seconds) etc.. > > The user interface is responsible to convert anything to Duration and > back. > I agree with Dimitry but I think the problem  is far bigger and not only in Ada but in every computer language. You cannot use packages written by others if you do not know the dimensions they use. For instance in mechanical engineering in Europe there is a general use of cm while in other countries they use inches and in aircraft engineering they use in Europe mostly mm. In general the use of dimensioning system ( f.i. cgs -cm gram second) is different for different countries and application area's. Some factors used within calculations are even dependant in the dimensioning system. It would be a good idea if a package was developed that can solve all these problems for instance by doing the calculations in one of the possible dimensioning systems automagically presenting the results in the dimension you choose. Such a system must exist of a record for every value, that exist of at least  real values for the standard dimensioning system and the value in the dimensioning system you want, the factor between the two systems and the string containing the dimension, perhaps even more. There should be functions for "+", "-", "*", "/" and sqrt. The calculation should be done for the value in the standard dimension while the input and output must be in the wanted system. Also the strings and factors must be changed when necessary. I have already been thinking how but the problem are mostly in the strings and the fact that there are also dimensions that have  a lower limit (temperature) or have an offset (degrees Celcius, Reamur or Fahrenheit) or exist of several integer values (time). I think that the potential of Ada of being independent of an operating system can be extended that way to independent of the dimensioning system.