C tips (again)
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri May 1 18:20:47 PDT 2009
bearophile wrote:
> Walter Bright:
>> Why couldn't you do the exact same thing in D?<
>
> Those ctips show some tricks done with the preprocessor that I don't know yet how to do with D1, and there are some situations where in D I'd like to be able to locally disable array bound checks (this is doable in Delphi/FreePascal), like in the data array here:
>
> typedef struct {
> int size;
> int capacity;
> char data[0];
> } Mystring;
(untested)
struct Mystring {
size_t size, capacity;
char* pdata() { return cast(char*) (&this + 1); }
char[] data() { return pdata()[0 .. size]; }
}
> But D is more or less a superset of C, so a D programmer may be able to implement all those things, as you say.
> The main point of my original post is that some of those ctips may be added as built-in idioms to D.
I've had a nice "blast from the past" feeling while skimming the
document, but really it's more of a proof that with ingenuity and
discipline a bear can be made to dance. I don't see how that stuff could
help D any more than a coconut and two straws could help a radar receiver.
I have been mightily disappointed (essentially my respect for the author
has crashed into the ground) when I saw that the entire optimization
example, although clearly a lot of time and effort has been put into it,
had absolutely no numbers whatsoever.
> Regarding possible things to be added to D: recently I have heard that some people is thinking about creating a small C compiler that supports some nonstadard low-level features, to be used to compile the future Linux kernel:
> http://lkml.org/lkml/2009/4/22/78
> If such project goes on, then it may show other things that may be useful in D if D wants to be fit to write kernels too.
IMHO all D needs for writing kernel-grade code is a way to code cleanly
without the GC.
Andrei
More information about the Digitalmars-d
mailing list