I think C is pretty good as a first language. It's not fraught with too many concepts and the few concepts it has are essential for many kinds of programming. If people use languages with mutable variables they have to know how pointers work. C makes that very explicit. You can't use it without understanding pointers and that's a good thing.
I'm not saying C is the best language to learn how to program, but it's definately better than Java, C++, Ruby or JavaScript. I can't tell how Lisp would work as a first language because I haven't seen anyone try to learn or teach it.
"If people use languages with mutable variables they have to know how pointers work" -> wrong. They don't. That's the idea of a high-level language, to hide how the computer interprets your instructions so you can focus on giving instructions.
Now, understanding pointer would help a lot, but that's a different argument.
I don't agree. The difference between copying a thing and referring to a thing is not some low level technical detail that you can abstract from. It's a fundamental structure of any system, not just computer systems.
I'm not saying C is the best language to learn how to program, but it's definately better than Java, C++, Ruby or JavaScript. I can't tell how Lisp would work as a first language because I haven't seen anyone try to learn or teach it.