When you want to fully grok C, knowing some assembly and techniques does help.  It&#x27;s irrelevant for those learning the language.  They don&#x27;t need to know about CPU saving effects from fallthrough or lazy evaluation.  They&#x27;re still busy tripping up mixing arrays and pointers and incrementing the wrong one, null pointer assignments or forgetting the break in the switch.  When you have some years time and are exploring the edges of the language that knowledge undoubtedly helps.<p>It was rare for students 25 years ago to learn assembly first.  Can&#x27;t say it made it harder to learn or that students had issue (spent a couple of years in the 90s teaching C part time to contractors).  They had issue with language beginner things.  Pointer arithmetic, or confusing pointers&#x2F;arrays, but can&#x27;t ever remember anyone having a particular issue with switch.  Fall through was a C thing, they accepted it quite happily, and forgot break sometimes as learners do.  People seemed to have far, far more difficulty getting comfortable with C++ and OO than C.  The new C++ programmer was <i>much</i> more dangerous than the new C programmer!<p>C was often taught as first &quot;real&quot; language.  You&#x27;d introduce pointers and here&#x27;s how that aspect of computers work as part of the same scribble on the whiteboard.  Same for memory allocation, stacks, heaps and byte sizes&#x2F;packing.  The fact that C was so directly close to those concepts made grasping them that much easier.<p>We lost a lot when we moved beyond expecting people to be aware of those basics.  PHP isn&#x27;t even sure itself what data is.  Being able to pack your data or have app data that&#x27;s optimal would be appreciated by those &quot;few&quot; smartphone users outside SV where dropping data or fallback to GPRS happens often.  Data is rarely thought of in terms of size, it&#x27;s just a blob of some types&#x2F;objects.  Little surprise when the app spits JSON of epic size and spends half its time &quot;thinking&quot;.