C has a reputation for being a "hacker" language, in contrast to say Haskell, which is abstract with ties to logic and category theory. There is even the quip "C is a portable assembler".
Logic programming fails for many reasons; interestingly it fails to integrate
with imperative programming or export its constructs. Haskell's monadic
I/O—explicitly passing a RealWorld—offers a nice demonstration.
Egison advocates a pattern-match oriented style of programming and offers poker hands as an example:
My Apple compiler started as an experiment in what I would implement as compiler for an array system. Several parts did not pan out so I offer my warnings and advice to other array language implementers.
Functions are compiled to machine by a convention of jumps and
registers; one calls a function by jumping to its
location in memory. These jumps are relative and particular functions (say,
malloc) may be loaded at different memory locations, so the machine code for
a function cannot be pinned down and in fact is contingent on every function
that it calls.