> C shepherds you into manipulating data via pointers rather than value objects.
Overly simplified IMHO, this was probably true for K&R C, but in more recent C versions (e.g. in the last two decades or so), passing structs around by value is fine and often preferable.
(in general I agree with the article though, the shepherding side effect of programming languages is probably more important than the syntax and feature set)
How? Unless you are talking about really small structs, something like 16 bytes or less. Unless there are optimizations that I am not aware of, calling by value takes up stack space and make full copies each time. If you are doing C, chances are that you care about that.
Few languages pass structs/objects by value nowadays, at least not as a default action, because it is rarely what you want. Usually, a reference is what you want. In fact, if C++ wasn't designed as a superset of C, passing by reference probably would have been the default, like in most other languages.
C shepherds you into manipulating data via pointers simply because pointers are what you are using for the all important task of referencing objects.
What I like about C is that one can easily tell if something is passed by value or not, because I know these things won't be modified. C++ does not have this property, because C++ has (non-const) references - so when reading code one always has to check the signature of the called function.
On the other hand, C sometimes nudges you to pass by pointer where semantically you want a copy. Well, Matrix4x4 is the only example I can think of right now actually, and here I usually just bite the bullet and pass a copy, which might be a little wasteful but whatever (copying 64 bytes is not the end of the world, and the code might actually be inlined). And here, C++'s const-references can be an improvement to the situation.
Overly simplified IMHO, this was probably true for K&R C, but in more recent C versions (e.g. in the last two decades or so), passing structs around by value is fine and often preferable.
(in general I agree with the article though, the shepherding side effect of programming languages is probably more important than the syntax and feature set)