[phobos] Time to get ready for the next release

Steve Schveighoffer schveiguy at yahoo.com
Fri Apr 22 13:28:35 PDT 2011


Unlike your example, writeln = "hello" is actually valid, correct code.  That is, it's not utterly stupid, it's just utterly ugly (to you and me).  If someone wants to call writeln that way because they like the "style", then that's their choice.  I see no difference from what you propose.


It's not about the compiler rejecting terrible code because it thinks the code is terrible, it's about the compiler rejecting terrible code because the library author thinks it's terrible.  That is, the library author can decide how you should use their code, just like he decides which functions are private and public.

I understand your frustration for having existing code break.  All I can offer is at least the broken code will provide an error and line number where you can fix it.

There are many people who refuse to move to D2 because of the const semantics.  They say "my code works fine without const, I don't see why I should have to change it.  D2 const sucks!"  But const can be a very useful thing *if* you use it correctly.  So it's a tradeoff.  I feel the property syntax as it currently stands is out of control, bug prone, and needs to be reined in.  You feel it's just what you need, and you use it to great effect.  Nobody is 100% right, but with strict properties, things look better because you have the freedom to name your methods without worry that they are misused.  I see it as a huge gain.

I also don't like the new operator overloading scheme in D2, since there are oodles of problems with template methods and classes, but they are much more powerful than the old method.  Since the old methods are unofficially still there, I have something to fall back on for dcollections, but I expect some day to have to drop all references to the old operator overloading functions.  Is it frustrating?  Yes.  Does it seem pointless?  Yes.  But my single opinion and my library cannot be the reason that an obviously better system isn't adopted.


-Steve




>________________________________
>From: David Simcha <dsimcha at gmail.com>
>To: Discuss the phobos library for D <phobos at puremagic.com>
>Sent: Friday, April 22, 2011 3:39 PM
>Subject: Re: [phobos] Time to get ready for the next release
>
>
>
>
>
>On Fri, Apr 22, 2011 at 3:26 PM, Steve Schveighoffer <schveiguy at yahoo.com> wrote:
>
> Like it or not, the same thing applies to things like:
>>
>>writeln = "hello";
>>
>>Even though we know this is not the right way to call it, the compiler doesn't give an error to enforce the semantics.
>>
>>
>>-Steve
>>
>Ok, but just because you can do something utterly stupid like this doesn't mean you should.  You can also do the following even though it's a terrible idea, because it's impossible for the compiler to reject every terrible idea without rejecting some good ideas:
>
>import std.random;
>
>// Overwrite random memory locations with random data until the program
>// crashes
>void main() {
>    while(true) {
>         auto num = uniform(0, int.max);
>         auto ptr = cast(int*) num;
>         *ptr = uniform(0, int.max);
>    }
>}
>
>Again, I'd be more sympathetic to your point of view if making these changes didn't also break existing code.  For me this is the tiebreaker.  I have already designed a whole API around methods-as-properties.  I'm sure having tons of code break will be very aggravating to a lot of people.  Given the weak arguments put forth in favor of strict semantics, I can't bring myself to say that breaking not only existing code but whole existing API designs is justified.
>
>BTW, as far as your argument about static typing, this may be a fundamental disagreement between us.  I don't like static typing, but consider it a necessary evil in exchange for performance and the ability to do low-level work.  Therefore, I want only as much static typing as is necessary for these to be possible.
>
>_______________________________________________
>phobos mailing list
>phobos at puremagic.com
>http://lists.puremagic.com/mailman/listinfo/phobos
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/phobos/attachments/20110422/35fbe3aa/attachment-0001.html>


More information about the phobos mailing list