Please tell me the differences between Embedded system engineer, Embedded system programmer and Embedded system software engineer.

An engineer probably has more chances to be working with hardware design. A system software engineer would possibly be working with more low level programming such as drivers and working with an OS kernel, while an embedded system programmer is more vague and could be programming high level applications or low level. I guess what do you think is the difference between an engineer and a programmer? Look at the curriculum of a computer science student an an engineering student to get an idea.

I think you are right on embedded system engineering and embedded system software engineer. But I need little more explanation on Embedded system programmer, like, the programming languages used in programming what kind of devices. What is high level and low level applications? When we are writing a piece of code on any device describing it's working mechanism ( example: touch screen- we program how the touch screen should react to our touch) then does it come under embedded system programming or embedded system software engineering?
Thank you for the answers!