On Fri, 27 Aug 2010 16:18:26 -0400, Andrei Alexandrescu <[email protected]> wrote:

On 8/27/10 13:01 PDT, Steven Schveighoffer wrote:
On Fri, 27 Aug 2010 05:36:32 -0400, Andrei Alexandrescu
<[email protected]> wrote:

D doesn't look half bad:

http://stackoverflow.com/questions/3538156/file-i-o-in-every-programming-language-closed



Note that D's version doesn't follow the rules, you were supposed to
re-open the file for appending, they just never closed it.

The call to open() closes the file (and throws on error) and then opens the file (and throws on error). I think that's fair.

No, the code does this:

f.writeln("hello");
f.writeln("world");

The example is supposed to demonstrate how to re-open the file for appending and write "world". Look at some of the other examples. Not that it's a big deal, because I think it's just one more line.


It also reads the first line into a buffer and then throws it away. Does
File have a way to skip a line?

Not that I know of. Save for the allocation, the effort is the same - the implementation still has to look for the '\n'.

Allocation can be expensive. With D-allocated buffers, this would be trivial to do without allocation, just keep refilling the buffer until you find a '\n'. But searching in the FILE * buffer is not trivial at all. I think D is going to eventually have to address this.

I bring it up because people look at the C++ or C version and say "how ugly, look how nice D looks," but the C++ version doesn't incur extra allocations AFAIK. It's like commenting on how beautiful function qsort looks. In reality, it's not as bad, because it's just that the functionality isn't there yet. If it were, it would still look as beautiful :) I just hate it when people compares an apple to orange and comment on how the orange looks like a much better apple.

-Steve

Reply via email to