[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 3:29 AM, Rhodri James <rhodri at kynesim.co.uk> wrote:
> On 11/10/17 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.
> That's only really one level more complex than declarations I use fairly
> regularly (I am an embedded system programmer most of the time).  On the
> other hand, I never actually do declare things in that way: typedef is your
> friend, and makes your C code much easier to read.

I wouldn't consider embedded systems to be the most common kind of C
coding out there, particularly when people compare against C++ (I
don't remember ever hearing of anyone doing embedded work in C++,
though I'm sure it does happen). Nevertheless, you're exactly right
about the typedefs. Writing crazily complicated type declarations
without typedefs is like writing massively nested list comprehensions
without intermediate variables. Hey look, Python's terrible! Or maybe
they're just non-idiomatic examples.