[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Stick to loops
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] Stick to loops |
Date: |
Mon, 12 Oct 2015 13:56:32 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Paolo Bonzini <address@hidden> writes:
> On 12/10/2015 12:00, Daniel P. Berrange wrote:
>> I don't think your example here is a reasonable comparison when you consider
>> the full extent of this patch series. You are only having to iterate over a
>> single data structure here. At the end of this patch series we have to
>> iterate over multiple data structures spread across the object instance
>> and class hierarchy, so writing a 'next' like method is not as trivial
>> as you suggest with this comparison.
>>
>> > Higher-order functions are a wonderful tool if the language is equipped
>> > for them. In Lisp, for instance, you'd have everything in one place and
>> > no need for the awkward marshalling and unmarshalling of arguments,
>> > thanks to nested functions.
>> >
>> > In C, stick to loops. That's what the language supports.
>>
>> You're really arguing against use of function callbacks in general with
>> this comparison to LISP. I don't think that's really practical in the
>> real world, as any integration with event loop needs callbacks, which
>> share al the same limitations as callbacks used with this foreach()
>> style iterator. Given this I don't think banning use of callbacks in
>> one specific scenario is really beneficial in general - its really
>> just a personal style choice.
You're right, I do think callbacks in C are relatively awkward. But
then you're attacking a strawman --- I did not advocate *banning*
callbacks. That would be silly indeed. I did advocate for using them
*sparingly*.
There are cases where callbacks are simply required, and you quoted one.
There are cases where callbacks compete with other techniques, and I
quoted one.
> I agree with Eric that in general loops are better than callbacks.
Me. Eric's innocent :)
> However, there are cases where iterators are just as awkward to write.
> Considering that we have very few iterations on properties, I think your
> patches are fine.
Mind, I didn't actually object to them. I merely voiced my reasoned
opinion on idiomatic iteration in C: stick to loops.
Just to deter strawmen: that's a rule of thumb, not a law :)
[Qemu-devel] [PATCH v3 5/5] qom: allow properties to be registered against classes, Daniel P. Berrange, 2015/10/08
[Qemu-devel] [PATCH v3 2/5] qmp: convert to use object_property_foreach iterators, Daniel P. Berrange, 2015/10/09
[Qemu-devel] [PATCH v3 4/5] qom: replace object property list with GHashTable, Daniel P. Berrange, 2015/10/09
Re: [Qemu-devel] [PATCH v3 0/5] qom: more efficient object property handling, Eric Blake, 2015/10/09
Re: [Qemu-devel] [PATCH v3 0/5] qom: more efficient object property handling, Pavel Fedin, 2015/10/09