On Sunday 07 August 2011 04:40:52 Kagamin wrote: > bearophile Wrote: > > - And foo can't be const or immutable, I don't like this. > > I suppose accidental overwrite bugs are overrated. I have never seen them > even from evil programmers. If you write random code, overwrite is not your > only problem, you can as well read wrong variable or call wrong function. > No language will help you if your code is junk. You should fix this in a > different way.
Being able to use const can be very valuable. For instance, what if you were using std.algorithm.copy and got the arguments backwards? If the source is const, then the compiler will complain, and you'll quickly find the bug. If the source isn't const, then you could accidentally end up copying the target to the source, and it may or may not be an easy bug to catch. I made that exact mistake in C++ with its copy function just the other day. const saved me a lot of headaches. Now, I think that D gives us enough ways to deal with the problem that Bearophile illustrates here (and Bearophile actually showed us a number of ways that D allows us to do what he's trying to do), so I don't think that we really need to do anything to the language to better deal with this situation. But accidental overwrites _can_ be a problem, and that's one of the things that const catches. So, not being able to use const when you should logically be able to due to syntax problems in the language would definitely be a problem - not the biggest problem ever perhaps, but it _would_ be a problem. Fortunately however, D gives us plenty of ways to get around the problem. - Jonathan M Davis
