How Old School C Programmers Process Arguments
I have to say, to reasonably experienced C programmers, this code should be pretty clear. If you need that whole paragraph to understand (* ++argv)[0], you might be an awesome programmer, but you&#x27;re not yet a reasonably experienced C programmer. ;)<p>I do think this is even more concise than they would have written in maintained code. In particular, I believe the missing {}&#x27;s for the &#x27;while&#x27; and &#x27;for&#x27; loops whouldn&#x27;t have been left away, but I might be mistaken. Compare, for example, with this gem:<p><a href="https:&#x2F;&#x2F;www.cs.princeton.edu&#x2F;courses&#x2F;archive&#x2F;spr09&#x2F;cos333&#x2F;beautiful.html" rel="nofollow">https:&#x2F;&#x2F;www.cs.princeton.edu&#x2F;courses&#x2F;archive&#x2F;spr09&#x2F;cos333&#x2F;be...</a> (submitted as <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=5672875" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=5672875</a> some time ago)<p>There Kernighan talks about a piece of code written by Rob Pike for inclusion in a different book; the code was written to be as small as possible while still including some useful functionality. In particular, Pike made well-considered choices about which functionality to include and which to exclude, but there are also some of those expressions that will not be completely transparent to the beginner C programmer. But the goal was writing <i>short</i> code, and <i>clarity</i> came secondary, but also emerged partly as a result of the first.