K&amp;R C has a beautiful, elegant simplicity to it, which later ANSI C has lost --- the idea that everything is a machine word unless specified otherwise means that you get to do things like this:<p><pre><code>    add(a, b) { return a+b; }
    fib(a) { return (a &lt;= 1) ? 1 : (fib(a-1) + fib(a-2)); }
</code></pre>
That&#x27;s totally valid K&amp;R C. The lack of boilerplate makes abstraction really cheap, conceptually --- Forth programmers will recognise the advantage here. You can write real programs out of tiny one-line definitions like the above.<p>Of course, ANSI C is better in just about every other way, but I still regret losing the stripped-down simplicity of K&amp;R C.