I completely agree that the most important thing is to have a concrete objective that you really want to achieve that you are moving towards.
However, I disagree that every language is equally hard. There are three challenges in learning programming: syntax, logic, and resource management. Those can be optimized for beginners:
Syntax: A syntax that is more natural and less symbolic will be easier to learn. There is a lot to be said about brevity for experienced programmers. For new programmers, it is completely wrong.
Logic: While certain, highly mathematically-inclined people may be different, most people understand the concepts involved with imperative programming (I do this, then this, then this; if I do this thing a lot, I can abstract its concept; etc.). Functional programming, "pure" object oriented programming, etc., are concepts that add impedance.
Resource Management: Whether memory, pixels on the screen, or bytes to a network connection, you've got to interact with the hardware at some point. Different languages approach this in very different ways, from manage everything directly to nearly complete abstraction.
Trying to learn all three at once for any but the most highly motivated is a recipe for frustration and, ultimately, failure.
On the flip side, it really makes little sense to learn a language that is useless for what you want to do. If what you really want to do is program a microcontroller, it is my opinion that PHP or Python would be a very poor choice in first languages.
Having never done embedded work, I don't have an opinion either way. There are people successfully doing embedded work with Python, though (http://stackoverflow.com/questions/240996/anyone-using-pytho...), though I would probably choose Lua over Python in most cases.
If I were teaching somebody who wanted to do embedded work (and Python/Lua/<insert "easier" language here> really wasn't a deployment option, which is very feasible), I would start them with Python to get them to the point of understanding how programming works, then switch them to a more appropriate language for the project. Teaching the algorithms in Python, then converting them to C is a great way to learn the difference between the languages and to introduce the resource management that occurs.
That is also why I prefer Python - I'm not a computer scientist, I am a business owner who uses programming as a tool to achieve my goals. Sometimes it's 2 weeks or more between writing code and Python is by far the best language that fits into my workflow.
However, I disagree that every language is equally hard. There are three challenges in learning programming: syntax, logic, and resource management. Those can be optimized for beginners:
Syntax: A syntax that is more natural and less symbolic will be easier to learn. There is a lot to be said about brevity for experienced programmers. For new programmers, it is completely wrong.
Logic: While certain, highly mathematically-inclined people may be different, most people understand the concepts involved with imperative programming (I do this, then this, then this; if I do this thing a lot, I can abstract its concept; etc.). Functional programming, "pure" object oriented programming, etc., are concepts that add impedance.
Resource Management: Whether memory, pixels on the screen, or bytes to a network connection, you've got to interact with the hardware at some point. Different languages approach this in very different ways, from manage everything directly to nearly complete abstraction.
Trying to learn all three at once for any but the most highly motivated is a recipe for frustration and, ultimately, failure.