Boost logo

Boost :

Subject: Re: [boost] [qvm] Terseness of syntax etc.
From: Phil Endecott (spam_from_boost_dev_at_[hidden])
Date: 2015-12-09 09:23:34


Emil Dotchevski wrote:
> I agree that transp is perhaps too short. The q_, v_ and m_traits though
> shouldn't be a problem since throughout the entire library q, v and m mean
> the same thing.

Throughout the entire *library*, yes; while you're writing your library
I'm sure you don't get confused about what q, v and m stand for. But when
they appear in my application, which pulls in maybe a dozen libraries,
these short names are incomprehensible.

Imagine the scenario where someone picks up some code written by someone
else and needs to understand it: they really need to be able to read
it without referring to the documentation for an obscure library first.

> The ir/iw accessors are for dynamic indexing and are generally optional.
> You use r and w for read and write access and in that case access to x, y
> and z can be implemented as specializations.

Yes I'm aware of the template-index-parameter versions. But I was asking
about those that take run-time index parameters. For example, consider
a matrix-multiplication function; most likely that will use loops and
invoke the ir/iw accessors. Have you looked at whether compilers produce
respectable code in that case for structs with x,y,z elements?

>> I'm really not a fan of the old operator% and now operator, syntax.
>> To me, (v,XY) looks like you're forming a row-vector with two elements.
>> Is there a reason why these accessors can't be written with function
>> syntax, i.e. XY(v) ? Or, for matrices, something like element<4,2>(m)
>> rather than (m,A<4,2>) ?
>
> There is (m,A42) actually which seems preferable to element<4,2>(m).

No, (m,A42) is not preferable to element<4,2>(m):
  - The (...,...) syntax doesn't look like a function invocation, it
    looks if anything like you're trying to form a row-vector with two
    elements.
  - "A" presumably is short for "at", saving one letter of typing at
    the expense of incomprehensibility.
  - "42" says forty-two, not 4,2.

> There is no good solution for swizzling, unfortunately.

As an aside, I think it would be useful to present a motivation for the
"swizzling" operations. I.e. a simple "real" example of why you might
want to "swizzle".

Also, I find the word "swizzle" a bit odd. To me it means the same as
"munge" or "frobnicate" i.e. it's a nonsense-word that you use as a
placeholder. I think what you're really doing is often a permutation,
and could be named e.g. permuteZYX() - but there are other cases where
you're duplicating or removing elements that aren't strictly permutations.
Maybe there is some other mathematical term that encompasses that.

Regards, Phil.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk