An interesting consequence of safety requirements

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Nov 4 12:15:20 PST 2009


dsimcha wrote:
> == Quote from grauzone (none at example.net)'s article
>> Andrei Alexandrescu wrote:
>> Also, does anybody really care about SafeD, or would it be better if we
>> had some sort of valgrind for D? Maybe this is one of those features
>> which first sounded nice, but then it turned out it's better to drop them.
> 
> I'm starting to get that feeling.  It seems like D was just not meant to be a
> fully safe language.  It was built from the ground up to be a better C++, i.e. a
> close to the metal language that assumes the programmer knows what he/she is
> doing, albeit one with enough high level features that it doesn't require
> attention to the irrelevant in day-to-day programming.  Shoe-horning D (originally
> designed as close-to-the-metal/programmer-knows-best) into a safe Java-like
> language is going to work about as well as shoe-horning C (originally a very
> low-level portable assembler) into C++ (a language that tries to be high-level but
> is too hobbled by C compatibility to actually achieve it).
> 
> Example (Simple program that has no chance of working in SafeD):
> 
> import std.getopt;
> 
> void main(string[] args) {
>     uint foo;
>     getopt(args, "someParam", &foo);  // Not allowed in SafeD.
> }
> 
> Personally, if an example like that won't even compile, I refuse to ever use SafeD
> for any project I do because it is simply too rigid.  On the other hand, if it
> does compile, SafeD provides no guarantees and is next to useless.

getopt takes pointers just because variadic references aren't available. 
It's not a matter of principles. I agree that a useful module such as 
getopt should work in safe mode.

Andrei



More information about the Digitalmars-d mailing list