Yeah,
coding (especially bad coding) is easy, and requires almost no knowledge, whereas
programming is a completely different discipline, which requires a lot (really a lot) of knowledge, especially programming of systems.
Programming begins with understanding of how computers work, what is an architecture, an instruction set, size of registers, etc. Look at that MIT Scheme source. They have macroses - 32bit word - well, use few bits as a tag, and rest as a value. 64 bit word - this for a tag part, this for value. This is an example of programming.
When people "program" VMs - it is just coding. Piling up stuff without understanding. VMs were marketed for those who don't want to understand or even think. Ask those "programmers" to describe the behavior of the system in which their code supposed to work - I dunno, lol, JVM is the best VM, you know.
Programming is about understanding how your data are represented, what are the access patterns, when memory is allocated, are there any mutations? concurrent access? how conflicts were resolved, if any, etc. It is about realizing that there is an OS, which manages your memory, switches contexts, does I/O, manages your stupid threads, and has another thousand processes running at the same time, sharing the same resources. Then, perhaps, programmer will think more about the data and access patterns, which is the essence of programming.
It almost doesn't matter which language to use. Good programming has been done in C (nginx, Plan9, lisp kernels) and Lisp (Open Genera - the whole OS) etc. You can program using ideas form FP in assembly or C - there is no problem with that.
The questions coders never asking is like why on earch a web-site must be represented as a huge hierarchy of objects inside a stupid VM, while it is bunch of files and some templating? Why to do simple map/reduce jobs we need hundreds megabytes of jars and gigabytes of memory, while the same task could be implemented more efficiently even in shell scripts?
The answers, unfortunately, has nothing to do with programming. It is about making money by coders and managers.