Before and After C
2025-03-25
Back around 1980, I looked into FP by understanding Denotational Semantics. [Aside: the most understandable code I found was in Peter Lee’s book Realistic Compiler Generation]. At the time, FP was something like an order of magnitude worse than then-current techniques.
More recently, I remember thinking that we've finally solved the problems with FP.
Today, I see that we didn't solve the problems with FP, we just made FP more acceptable by shoving complexity down into the underlying hardware.
I have come to think that much of this can be blamed on C(!).
Programming languages invented Before C contain 2 concepts:
subroutines
functions.
Languages invented After C contain only 1 concept:
1. functions.
Bloatware is the result of that minor psychological wording difference. It is generally believed that "writing a function" is programming. Hence, you have to follow the rules of making functions in order to write programs, whilst ignoring the fact that functions cause mutation of the global stack, and are chopped up into little state machines by the O/S. Claude 3.5 tells me that a context switch is 7,000-11,000 cycles these days (I used to think that 80 microseconds on 1979 CPUs was unacceptable). Programmers are not able to understand how hardware works because everything is so complexified.
See Also
Email: ptcomputingsimplicity@gmail.com
References: https://guitarvydas.github.io/2024/01/06/References.html
Blog: guitarvydas.github.io
Videos: https://www.youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/65YZUh6Jpq
Leanpub: [WIP] https://leanpub.com/u/paul-tarvydas
Gumroad: tarvydas.gumroad.com
Twitter: @paul_tarvydas
Substack: paultarvydas.substack.com


C language is derived from the B language, which is in turn derived from the BCPL language. In the BCPL (invented in 1967), there is a distinction between subroutines and functions. In B language (invented in 1969), both subroutines and functions are simply called functions. Source:
www.nokia.com/bell-labs/about/dennis-m-ritchie/btut.pdf
The confusion between suborutines and functions started with B language, not C!
I see. So would you consider C good or bad?