C doesn&#x27;t have tagged unions, which makes it a terrible language to write pretty much anything in. Most of the other pieces you need for good programming you can write yourself in C, but you can&#x27;t make a safe tagged union out of thin air, and if you rely on helper functions or macros then your tools won&#x27;t understand them.<p>It&#x27;s also so bad at expressing literal values that I&#x27;ve seen a serious recommendation to write literal strings and parse them instead ( <a href="http:&#x2F;&#x2F;www.tedunangst.com&#x2F;flak&#x2F;post&#x2F;string-interfaces" rel="nofollow">http:&#x2F;&#x2F;www.tedunangst.com&#x2F;flak&#x2F;post&#x2F;string-interfaces</a> ).<p>The type system doesn&#x27;t even do generics, never mind higher kinds. <i>Maybe</i> you could keep a web framework small enough that that wouldn&#x27;t be too big a deal.