[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Lies in education [was Re: The "loop and a half"]

On Thu, Oct 12, 2017 at 5:22 AM, Grant Edwards
<grant.b.edwards at gmail.com> wrote:
> On 2017-10-11, bartc <bc at freeuk.com> wrote:
>> On 11/10/2017 15:36, Chris Angelico wrote:
>>> On Thu, Oct 12, 2017 at 1:14 AM, bartc <bc at freeuk.com> wrote:
>>>> Python, maybe. C syntax isn't as painful as C++ but I still have a lot of
>>>> trouble with it. (Eg. the variable declaration 'char(*(*x[3])())[5]'. The
>>>> name of the variable can be found lurking in that lot somewhere, but what's
>>>> the type?) Not so convenient.
>>> People love showcasing stupid examples like that. But how often do you
>>> REALLY make declarations that complex? That's not technically
>>> strawmanning, since C syntax does indeed include that, but you're
>>> cherry-picking the most extreme example.
>> Sure. Statistically most declarations are going to be things like 'int'
>> or 'char*. But more complicated ones (usually not as bad as the
>> example), crop up often enough to be a nuisance.
> The easiest way to make stuff like that readable is to unroll them
> into a sequence of typedefs.  But, a lot of people never really
> learn how to do that...

The most complexity you'll usually see is a function that
accepts/returns a pointer, and those generally should be typedef'd.
But even if not, they're still not anything like as bad as the
mythical examples that get touted as "why C is bad" or "why variable
declarations are bad" or "why type declarations are bad".