On Thursday, 13 August 2015 at 17:32:33 UTC, Dmitry Olshansky wrote:
On 13-Aug-2015 20:17, Jonathan M Davis wrote:
On Thursday, 13 August 2015 at 17:09:11 UTC, Dicebot wrote:
On Thursday, 13 August 2015 at 17:06:18 UTC, Jonathan M Davis wrote:
Matter of scale. At some point of application size maintenance cost become much higher than development costs - and problems of name clashes become more important than any extra typing annoyance.

Well, if name clashes become that high in a .cpp file, odds are that
it's pulling in too much stuff.

My projects have been broken twice by adding new functions to druntime (and one was symbol added to object.di :)). Forgive me if I discard that argument as nonsense. If short names are allowed and project is big enough, clashes are simply inevitable. With D module system even
medium size will do.

Yes. Clashes are going to happen, especially if you're using short names heavily, but in C++, I've rarely had problems with it. D is potentially
worse,

Because private symbols from imported modules *do* clash with public ones even though not accessible. THAT is the problem and header/source is not the reason of D doing worse here.

Oh. That makes the problem even worse, and it definitely needs to be fixed, but the fact that you're essentially forced to use fully qualified names in C++ for header files means that you're not going to run into name clashes in the public declarations - only in the function bodies in the .cpp file - whereas all of that is out in the open with .d files. So, the header/source separation does reduce the problem in C++, and even if we do fix the private symbol mess in D, D will still have more name clashing problems because it doesn't normally have that separation. But the private symbols affecting the public API is just plain embarrassing and definitely makes the problem _far_ worse.

- Jonathan M Davis

Reply via email to