From: anon@anon.org (anon)
Subject: Re: Learning Ada (Was: unsigned type)
Date: Sun, 05 Jul 2009 23:21:36 GMT
Date: 2009-07-05T23:21:36+00:00 [thread overview]
Message-ID: <4Aa4m.421894$4m1.207252@bgtnsc05-news.ops.worldnet.att.net> (raw)
In-Reply-To: 4a4f6cce$0$31869$9b4e6d93@newsspool3.arcor-online.net
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 5868 bytes --]
Wrong!
I was not talking about the Ada Statements "Type" or "Subtype" but
true Standards that go beyond Ada.
An example that is listed in the Ada RM, is the standard character sets:
ISO 10646 Universal Multiple-Octet Coded Character Set
ISO 8859-1 (Latin-1)
But Ada also, use standards for it types, "Integer", and "Float', with
their associate subtypes. One reason but not the only reason for the range of
these built-in types are the hardware. If the hardware uses 32-bits integers
then the Ada "Integer" is based on 32-bit. And in todays systems the Ada
"Float" is normally based on the FPU (hardware) range. And the numeric
ranges for the FPU is based on standard that are defined and adopted by the
agencies like IEEE and ISO.
But some people like "Ludovic Brenta, state that most Ada programmers
would prefer to create their own types. In some case, that goes against the RM
because it can create a non-standardize form of an Ada programs, that violate
other RM rules. Plus, the RM states that a number of numeric types are
predefined, such as "Integer", and it subtypes "Natural" and "Positive" as
well the type "Float" and its subtypes. Redefining those predefines types are
legal in Ada, by simply re-defining the type. Like for example, using 24 bit
integer:
type Integer is range -2 ** 24 .. +2 ** ( 24 - 1 ) ;
To use this new definition of "Integer", globally it needs to be define in the
standard package, but for a single package or routine it better to create a new
type or subtype and for the routine or package. But in most programming this
is not necessary. That is, since Ada creation and the DOD dropping it full
support of Ada, the usage for redefining the numeric data types is almost nil,
not the norm any more. Plus, the DOD require full documentation on all new
define types. And no matter what type is defined the compiler will fall back to the
basic standards of the universal-integer and universal-real aka CPU integer
and FPU float and their operations. If you study most of the implementations of
Ada, one can see that the types "Integer" and "Float" that are defined in the
"Standard" package are basically equivalent to the Ada's universal-integer and
universal-real.
Now, "Rob Solomon" stated that he think "it would be beneficial, if
the types Float and Integer were removed from the language".
First, if this could happen the RM would need a MAJOR overhaul.
It would be easier to create a new language. Because both types are used
throughout the RM defined packages.
Second, the predefined types allow for the program to be more portable,
because a users type might not be accepted on the new system. But using the
standards or creating a subtype from the standards is better. An example is:
type Integer is range -2 ** 256 .. +2 ** ( 256 - 1 ) ;
which is a valid Ada statement but in a 32-bit and most 64-bit system this
type is not allowed. You would need to use a special array or record type that
is based on the universal-integer or CPU and define the operations in a math
package or packages. There are a few special scientific projects that could
use that type of maybe even a larger type like 1024-bit, but there's not
enough applications for most to spend their time in creating such a package.
Normally, its the scientist that ask for help that developes such packages for
his project and only for his project and then sets the big price tag for others
that package.
Then third, is without standards types like "Integer" and "Float" how
would the system work. Using Ada, define a "=" or "*" without using the
universal-integer and universal-real types or there operations. You can not!
You must have some basic standard types and operations to define other
operations. Ada calls these types universal-integer and universal-real and uses
their operations to build the predefine types and their operations.
Fourth, is to interface with other languages. which also use standards.
Some Ada programmer prefer pure Ada code. Like using the "Interface"
package to only define the standard unsigned types and to use the low-level
shift and rotate routines for those unsigned types. But there are times when
interfacing is required.
In <4a4f6cce$0$31869$9b4e6d93@newsspool3.arcor-online.net>, Georg Bauhaus <rm.tsoh.plus-bug.bauhaus@maps.futureapps.de> writes:
>anon wrote:
>> Standards are the way to go.
>
>Yes, standards are the way to go.
>
>And this *is* standard Ada:
>
> type T is range 1_000_000 .. 9_999_999;
>
>The type T has the exact same set of operations as Standard.Integer.
>It is just as efficient as implementation defined Standard.Integer.
>The types Integer or Boolean you mentioned are not needed in
>order to define T. Universal_integer is the type of integer
>literals like 1_000_000; it is *not* declared in package Standard, it
>does not even have a name, it is just a predefined anonymous
>type.
>
>> Also, Its kind of funny. Other than me not one person here tried to answer the
>> original person question from "unsigned type".
>
>The first answer by Florian Weimer answered the original
>question, implying, I guess, that CARDINAL is not a mod
>type and so cannot be replaced with a mod type like Unsigned_N
>as you seem to suggest: For Modula-2's CARDINAL, there
>is overflow check control... So CARDINAL is not the same
>as a modular type in Ada.
>
>The second answer, by Albrecht K�fer, in addition
>points to modular types and to how they
>differ from Modula-2's CARDINAL.
>
>Maybe it is part of Ada culture to explain how
>a problem is solved in Ada, not how you can
>write Ada in the language you know, even when
>that might make some Ada teachers more popular
>among those students who do not have the, uhm, time
>to really learn Ada.
next prev parent reply other threads:[~2009-07-05 23:21 UTC|newest]
Thread overview: 113+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-28 15:36 unsigned type Rob Solomon
2009-06-28 15:45 ` Florian Weimer
2009-06-28 15:48 ` Albrecht Käfer
2009-06-28 17:56 ` anon
2009-06-28 19:17 ` Ludovic Brenta
2009-06-28 23:08 ` anon
2009-06-29 0:19 ` tmoran
2009-06-29 8:00 ` anon
2009-06-29 9:56 ` Jean-Pierre Rosen
2009-06-29 10:21 ` Ludovic Brenta
2009-06-29 11:23 ` sjw
2009-06-29 12:07 ` Jean-Pierre Rosen
2009-06-29 20:06 ` anon
2009-06-29 19:31 ` anon
2009-06-29 21:49 ` Georg Bauhaus
[not found] ` <zuKdneNYxfFNLNTXnZ2dnUVZ_t2dnZ2d@earthlink.com>
2009-06-30 11:29 ` anon
2009-06-30 12:19 ` Ludovic Brenta
2009-06-29 20:19 ` anon
2009-06-29 20:41 ` Ludovic Brenta
2009-06-29 22:15 ` Georg Bauhaus
2009-06-29 23:08 ` Adam Beneschan
2009-06-29 23:11 ` Adam Beneschan
2009-06-30 12:39 ` Martin
2009-06-29 10:25 ` Georg Bauhaus
2009-06-29 20:02 ` anon
2009-06-29 22:08 ` Georg Bauhaus
2009-06-30 23:01 ` Randy Brukardt
2009-06-30 13:46 ` Jean-Pierre Rosen
2009-06-30 15:22 ` Adam Beneschan
2009-06-30 15:59 ` Albrecht Käfer
2009-06-30 16:59 ` Adam Beneschan
2009-06-30 17:44 ` Albrecht Käfer
2009-06-30 18:13 ` Robert A Duff
2009-06-30 18:16 ` Albrecht Käfer
2009-06-30 23:48 ` anon
2009-07-01 1:39 ` Adam Beneschan
2009-07-02 19:04 ` anon
2009-07-02 19:49 ` anon
2009-07-02 21:37 ` Adam Beneschan
2009-07-03 1:42 ` anon
2009-07-03 2:10 ` Adam Beneschan
2009-07-03 7:07 ` Jean-Pierre Rosen
2009-07-03 20:53 ` anon
2009-07-03 21:24 ` Georg Bauhaus
2009-07-04 9:09 ` anon
2009-07-04 13:43 ` Georg Bauhaus
2009-07-06 9:04 ` AdaMagica
2009-07-03 21:46 ` Adam Beneschan
2009-07-04 12:39 ` Martin
2009-07-01 8:09 ` Jean-Pierre Rosen
2009-07-01 15:08 ` Albrecht Käfer
2009-07-11 14:40 ` Hibou57 (Yannick Duchêne)
2009-07-11 17:18 ` sjw
2009-07-11 18:15 ` Hibou57 (Yannick Duchêne)
2009-07-11 20:20 ` anon
2009-07-12 17:57 ` Samuel Tardieu
2009-07-12 18:24 ` AdaMagica
2009-07-13 22:03 ` anon
2009-07-14 7:58 ` Martin
2009-07-16 13:54 ` anon
2009-07-16 14:41 ` Martin
2009-07-16 15:12 ` Adam Beneschan
2009-07-11 14:43 ` Hibou57 (Yannick Duchêne)
2009-07-11 15:22 ` Albrecht Käfer
2009-06-29 8:42 ` Martin
2009-06-29 8:54 ` Dmitry A. Kazakov
2009-06-29 10:10 ` Martin
2009-06-29 12:34 ` Dmitry A. Kazakov
2009-06-29 19:26 ` anon
2009-06-29 23:02 ` Martin
2009-06-29 19:47 ` anon
2009-06-30 8:31 ` Ludovic Brenta
2009-06-28 19:54 ` tmoran
2009-06-28 22:34 ` Gary Scott
2009-06-28 23:15 ` John B. Matthews
2009-06-28 23:21 ` anon
2009-06-29 7:18 ` Dmitry A. Kazakov
2009-06-29 9:52 ` Georg Bauhaus
2009-06-29 12:43 ` Dmitry A. Kazakov
2009-06-29 13:36 ` Rob Solomon
2009-06-29 14:03 ` Robert A Duff
2009-06-29 14:13 ` Georg Bauhaus
2009-06-29 14:18 ` Ludovic Brenta
2009-06-29 15:40 ` Robert A Duff
2009-07-03 1:41 ` Rob Solomon
2009-07-03 7:12 ` Learning Ada (Was: unsigned type) Jacob Sparre Andersen
2009-07-03 8:38 ` Learning Ada Peter Hermann
2009-07-03 9:44 ` Georg Bauhaus
2009-07-03 22:20 ` Learning Ada (Was: unsigned type) anon
2009-07-04 14:53 ` Georg Bauhaus
2009-07-05 23:21 ` anon [this message]
2009-07-06 0:05 ` Ludovic Brenta
2009-07-06 0:19 ` Learning Ada Albrecht Käfer
2009-07-06 2:50 ` anon
2009-07-06 6:18 ` AdaMagica
2009-07-06 7:47 ` Jean-Pierre Rosen
2009-07-06 20:21 ` anon
2009-07-06 21:08 ` Georg Bauhaus
2009-07-06 22:43 ` Frank J. Lhota
2009-07-09 22:28 ` anon
2009-07-10 6:23 ` AdaMagica
2009-07-06 10:53 ` Learning Ada (Was: unsigned type) Georg Bauhaus
2009-07-06 19:34 ` anon
2009-07-06 20:29 ` Learning Ada Albrecht Käfer
2009-07-06 21:04 ` Learning Ada (Was: unsigned type) Georg Bauhaus
2009-07-07 19:25 ` sjw
2009-07-06 23:15 ` Randy Brukardt
2009-07-07 15:29 ` Adam Beneschan
2009-07-09 0:15 ` Randy Brukardt
2009-07-09 15:26 ` Adam Beneschan
2009-06-29 15:37 ` unsigned type Adam Beneschan
2009-07-06 20:20 ` Dave
2009-06-29 16:51 ` Martin Krischik
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox