<div dir="ltr">On 11 April 2013 06:50, Rob T <span dir="ltr"><<a href="mailto:alanb@ucora.com" target="_blank">alanb@ucora.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Wednesday, 10 April 2013 at 06:03:08 UTC, Manu wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Can you demonstrate a high level class, ie, not a primitive tool, but the<br>
sort of thing a programmer would write in their daily work where all/most<br>
functions would be virtual?<br>
I can paste almost any class I've ever written, there is usually 2-4<br>
virtuals, among 20-30 functions.<br>
<br>
</blockquote>
<br>
In my case it was a C++ virtual class used to supply a common interface to various database libraries. This is not a usual thing, so your point is valid, and I'll agree that most often your classes will have proportionally far less virtual functions overall. It's mostly the base classes that will contain the most virtual functions, but derived classes generally outnumber them.<br>

<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Mark your properties as final?<br>
<br>
</blockquote>
<br>
That's 90% of the class! You are familiar with OOP right? :)<br>
Almost everything is an accessor...<br>
</blockquote>
<br>
Based on what I've learned from this thread, to get the best performance I'll have to wrap up almost all my D classes with "final", or take the more painful alternative route and move all non virtual functions into UFCS.<br>

<br>
I can understand the argument in favor if UFCS as the "final" solution, however it's something I'd have to try out first before making a conclusion. Off hand it seem like more work (an example with static if's was shown already), and for code structuring and readability it seems to me it won't be helpful. Again these are my first impressions without actually trying it out, so who knows, it may work well despite my concerns.<br>

<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Correct, it's not quite a systems language while the GC does whatever it<br>
wants. But D needs the GC to be considered a 'modern', and generally<br>
productive language.<br>
</blockquote>
<br>
The GC issue is a recurring one (how many threads on this topic?) because the current implementation directly interferes with the stated goals of D being a systems language.<br>
<br>
Not only can the GC be fixed in simple ways (eg just give us programmers more control over how and when it does its job), but we can do one better than just improving the GC, and it's through marking sections of code as off limits to anything that may allocate, and even better than that in more general terms, prevent the use a feature (or features) of the language that is not appropriate for a marked section of code. That'll make me very happy.</blockquote>
<div><br></div><div style>I won't complain about this, but it'll prevent you from being able to call into a very significant portion of the standard library. Browse through it, especially the most basic of tools, like std.string, basically everything allocates somewhere!</div>
<div style>I'm not that enthusiastic about fracturing my code into sections that can make use of the library, and sections that just can't.</div><div style>A lot of work could be done to make the library not allocate I'm sure, increasing the amount of library available in these isolated sections maybe... but I'd rather see work done to add finer control of the GC, so I can operate it in an acceptable manner.</div>
</div></div></div>