file i/o in a variety of languages
Steven Schveighoffer
schveiguy at yahoo.com
Fri Aug 27 13:28:56 PDT 2010
On Fri, 27 Aug 2010 16:18:26 -0400, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> On 8/27/10 13:01 PDT, Steven Schveighoffer wrote:
>> On Fri, 27 Aug 2010 05:36:32 -0400, Andrei Alexandrescu
>> <SeeWebsiteForEmail at erdani.org> 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
More information about the Digitalmars-d
mailing list