comp.lang.ada
 help / color / mirror / Atom feed
From: "jimmaureenrogers@worldnet.att.net" <jimmaureenrogers@worldnet.att.net>
Subject: Re: Various Language Architecture Questions
Date: 24 Sep 2005 22:07:05 -0700
Date: 2005-09-24T22:07:05-07:00	[thread overview]
Message-ID: <1127624825.425796.61240@g43g2000cwa.googlegroups.com> (raw)
In-Reply-To: 1127615832.540718.246970@g43g2000cwa.googlegroups.com

frankgerlach@gmail.com wrote:
> Hello,
> I am contemplating to create a new language, which is supposed to be as
> fast as C++, but as safe as Java.

Why limit yourself to a language as safe as Java?

> Maybe Ada is already fulfilling these requirements, so I have a few
> questions:
> Is is possible to safely allocate objects on the stack and then pass a
> pointer to these objects to a procedure ?

Within limits, yes.
The objects on the stack must be within scope when passed.

Ada has very strict scoping and lifetime rules.
You might want to read the Ada Reference Manual covering these
areas.
http://www.adaic.com/standards/95lrm/html/RM-TTL.html


> (The stack is very fast, but I cannot tolerate invalid references from
> the heap or from "older" stack regions)
> Are the common Ada runtimes performing range checks on Arrays,
> including "casted" pointers ?

Ada does not confuse arrays and pointers like C and C++.
Ada does perform range checks on arrays as a general rule.
There are some situations where the compiler can determine
that an out-of-range value is not possible, and therefore
eliminates the range check. The programmer is also free to
disable range checking when desired.

> (Typecasting is necessary for high-performance access, but I want to be
> safely in bounds of the array all the time)

Typecasting is not a way of life for Ada. It is somewhat unusual.
Ada access types (similar to references in Java) cannot be cast
from one type to another. Ada uses Unchecked_Conversion for that
purpose.

> Also, it should be forbidden (by compiler or runtime) to cast a type
> that contains a pointer to a different type. Does Ada support this ? (I
> must secure pointers in order to have only valid pointers in the
> system. Invalid pointers introduce random errors or security problems
> for a sandbox execution model)

Again, read the Ada language reference manual. Pay particular
attention to the Ada type model. You will find that Ada's concept
of type is far different than the C/C++/Java concept of a type.

Primitive types can be coerced from one to the other with limitations.
You cannot coerce a real number type to or from an integer number
type. You cannot coerce an enumeration type to or from an
integer number type.

You cannot coerce any compound type to another compound type or to
a scalar type.

Tagged types do allow you to operate with a limited view of an object
within the same inheritance hierarchy, but there is no true
coercion or casting.

Jim Rogers




  reply	other threads:[~2005-09-25  5:07 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-25  2:37 Various Language Architecture Questions frankgerlach
2005-09-25  5:07 ` jimmaureenrogers [this message]
2005-09-25  7:24   ` Martin Dowie
2005-09-25  8:17 ` Martin Krischik
2005-09-25  8:53 ` Dmitry A. Kazakov
2005-09-25 12:56   ` frankgerlach
2005-09-25 13:24     ` Larry Kilgallen
2005-09-25 14:04     ` Pascal Obry
2005-09-25 14:24     ` Martin Krischik
2005-09-25 15:25     ` Georg Bauhaus
2005-09-25 15:32       ` Georg Bauhaus
2005-09-25 16:02         ` Pascal Obry
2005-09-25 16:02       ` Pascal Obry
2005-09-26  7:44     ` Maciej Sobczak
2005-09-26 21:07       ` Florian Weimer
2005-09-27  4:31         ` Simon Wright
2005-09-27  7:18           ` Tapio Kelloniemi
2005-09-27 23:43           ` Florian Weimer
2005-09-28 20:43             ` Simon Wright
2005-09-29 23:24             ` Randy Brukardt
2005-09-26 21:05     ` Florian Weimer
2005-09-25 11:57 ` Marin David Condic
2005-09-25 15:21 ` Björn Persson
2005-09-25 22:25 ` Jeffrey R. Carter
2005-09-26 18:09   ` David Emery
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox