Are there any default dmd optimizations

foobar foo at bar.com
Mon Feb 25 14:00:54 PST 2013


On Sunday, 24 February 2013 at 22:28:46 UTC, Walter Bright wrote:
> On 2/24/2013 12:57 PM, Andrej Mitrovic wrote:
>> On 2/24/13, Jonathan M Davis <jmdavisProg at gmx.com> wrote:
>>> Yeah, which just adds the confusion, because all it does is 
>>> enable debug
>>> bocks.
>>
>> The feature almost doesn't pay its weight. I mean technically 
>> you can
>> use -version=Debug and then use version(Debug) blocks. All 
>> `debug`
>> does is saves a little bit of typing.
>
> I should explain the reasoning for this.
>
> I've talked to many C/C++ programming managers. They lament 
> that every C/C++ coding group feels compelled to reinvent their 
> own debug macro scheme. This makes it pointlessly difficult to 
> share code between groups.
>
> It's not that unlike how pre-C++98 code bases all had their own 
> "string" class.
>
> By baking one scheme into the language, people will rarely feel 
> a need to reinvent the wheel, and will go on to more productive 
> uses of their time.

This is a fallacy caused by the "culture" of c++ programmers - 
there is exactly *zero* benefit in baking this into the language.
Yes, I agree with the sentiment that there should be a standard 
way to save programmers the hassle and all that. The correct 
solution to that is a culture of cultivating standard conventions 
and "convention over configuration". E.g. Java has many such 
convections followed to a level of religious zeal, such as using 
camelCase everywhere and using PascalCase for types, etc, etc. 
None of which is _enforced by the language_.
On the other hand, many major c++ libraries re-invent "string" 
even though there exists already std::string and there are even 
libraries that advocate _avoiding_ the use of stl entirely, all 
for the perceived benefit of efficiency which is a prime example 
of premature optimization. Even if there is efficiency gain in a 
specific implementation, ideally it should have been used to 
improve the standard stl::string but trying to change anything in 
the c++ standard is futile - you can't just send a pull request, 
you need to pass boat loads of red tape and wait a decade or two 
for the next version, thus causeing this major NIH attitude.
All of this is to say, that instead of trying to "fix" the c++ 
culture in D, we should try to create a *better* D culture. When 
you're buying an airplane ticket, what do you say to the travel 
agent? The human reflex of "I don't want to go to ___" doesn't 
get you a ticket anywhere. This feature is analogous - it's 
designed to not allow c++ misbehavior, instead of actually 
thinking what we do want and how best to achieve that. In fact 
there are many such "not c++" features in D and which is why I 
find other languages such as rust a *much* better design and it 
evolves much faster because it is designed in terms of - what we 
want to achieve, how best to implement that.


More information about the Digitalmars-d mailing list