eliminate writeln et comp?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Mar 17 14:03:16 PDT 2009


Georg Wrede wrote:
> Andrei Alexandrescu wrote:
>> Hey all y'all,
>>
>>
>> Here's another nice bicycle shed discussion. During the recent 
>> discussion about globals being harmful, Walter told me something that 
>> made me think. I said, hey, there are things that are global - look at 
>> stdout. He said, well, that's a bad thing. He then argued that it 
>> would be better and cleaner to write:
>>
>> stdout.writeln("Hello, world");
>>
>> instead of the current:
>>
>> writeln("Hello, world");
>>
>> On one hand, I agree with Walter. On the other, I want to avoid the 
>> phenomenon of the all-too-long "Hello, world" example.
>>
>> What do you think?
> 
> 1. It is not often that a program that is first designed to write to 
> stdout is changed to write to somewhere else. (The whole reason of 
> stdout is, after all, that you can redirect outside the program!)
> 
> 2. Of course it would be Proper (as in Prudent, almost as in goody 
> two-shoes) to write stdout.writeln. But then, to be useful the 
> programmer should write myOutDestination.writeln in order to be able to 
> "conveniently" later change the destination.
> 
> 3. IMHO later redefining stdout would be a moronic idea. (And 
> /definitely/ not Prudent!)
> 
> 4. Globals, shmobals... globals in spirit vs. globals in techicality. I 
> can't /believe/ there's any idea in totally banning globals. Heck, this 
> language has *goto*. Blind purism has made a few other languages 
> impractical.
> 
> 5. Good defaults a good UI make. Can't we just decide that a bare 
> writeln(...) is defined as writing to stdout, period? Without thinking 
> of globals.
> 
> 6. stdout is "global" to such an extent, that it actually exists outside 
> of the program. (RTF *nix man, man!)
> 
> Blehhhhhhh....
> 
> PS, I don't think you were serious with the post.

I was, serious and especially curious. I'm with you on all of the above.

Andrei



More information about the Digitalmars-d mailing list