D - more or less power than C++?
Walter Bright
newshound at digitalmars.com
Fri Mar 3 20:02:35 PST 2006
"Andrew Fedoniouk" <news at terrainformatica.com> wrote in message
news:dub0rk$2eje$1 at digitaldaemon.com...
> There is no way currently in D to implement "guarded variable":
>
> something s = ....;
>
> I cannot write code which will allow to catch
> assignment to the variable (concrete memory region if you wish).
> Just nothing for that in D at all - variables are naked.
There are assign-at-compile-time and assign-once variables. What major niche
does a guarded variable serve?
>> I don't really understand this, as many languages have serious libraries
>> without const - such as Java, Python, C#, etc.
> 1) All these have builtin immutability. For example strings there
> are immutable objects. D has no strings so it must have
> some features in the language allowing to implement such
> objects as a library.
You can do so by only allowing private functions access to the underlying
data. There is no notion of "const-correctness" or const as a type modifier
in any of those languages.
> If you can do something in C/C++ you must
> be able to do it in D. This is it.
>
> Postulate: D must include all features C++ has now.
Are you suggesting D must have a preprocessor, too?
>> Try doing nested functions elegantly in C++ <g>.
> Agree, they are useful. But if used with care.
> As soon as you can get address of such inner function
> then you are in trouble - result of later call of such function
> is non-deterministic.
True, one can get into trouble doing that wrong, but it isn't conceptually
any different from the following C++ code:
int *p;
void foo()
{ int i;
p = &i;
}
void test()
{
... = *p;
}
So I would not argue that it is a defect *in comparison to C++*.
> D inner classes for example - strange halfly implemented Java feature.
How so?
> Scope guards are generally good
> but without clear and strict definition of execution model - almost
> useless - syntactic noise.
I strongly disagree there. I thought I had answered your questions about
that in the scope guard thread.
> "auto zoo" there too. Over-qualified 'static' All that private/protected
> stuff
> is just not finished yet - I was fighting with it in Harmonia - never win.
The private/protected stuff works like it does in C++.
> OT: I was proposing readonly ranges and pointers as a simple alternative /
> palliative
> of problem #1. At least they allow to have lightweight and fast strings as
> in Java/C#/Python.
Java/C#/Python do not have lightweight and fast strings. There are some
layers of complexity there that are hidden, but are there.
More information about the Digitalmars-d
mailing list