- Is there any common in approaches to learning foreign language and programming language? Both machine and human languages have common structure: syntax, vocabulary and rules.
- Can we expect that a man, who knows several foreign languages would learn programming language faster than a man who knows only his mother tongue?
Please note that my answer is based on personal experience and reflection, not on actual research.
While you are right that both types of languages are systems with a similar structure, the weight of the individual elements is distributed completely differently in a natural and a programming language. When learning a natural language you have to put endlessly more effort into learning vocabulary and, for lack of a better word, phrasing. While programming languages do have their "vocabulary" (keywords, variable types, functions, whatnot), the most important part of knowing a programming language is understanding its grammar.
In the topic of grammar, another important thing is that you cannot learn programming language grammar by rote memory, which is definitely possible in a natural language. To program you must understand the system, not just be able to use it in a set of very specific situations.
Natural languages are infinitely more tolerant of imperfection, because the recipients of your communication are humans. While some programming languages are a bit more tolerant of "imperfection" that others, as a rule there is little room for mistake there.
This does not mean there are no analogies between learning the two types of languages that can help at the very least in the way you mentally approach learning. Of these I would list:
It's useful to think of coding standards as choosing the right register. Sure, you can learn to write code without them, just as you can ignore "social niceties", and it's something that may be forgiven as long as you are a beginner (but you will not get far without them).
It's useful to think of similarities between the grammatical structures of different languages if you are learning more than one: once you've understood the case system of one natural language, learning another one with cases is going to come easier. Once you've wrapped your head around object-oriented programming, you're one step close to getting to know another programming language that is based on it, and so on.
Question 1: I think the concept of feedback is an extremely important commonality in learning a programming language and a (new) human language. It is indeed fundamental to all learning. When we start to use the language, not just study it, we learn quickly by seeing the results of what we have expressed. The degree to which you are investing in the learning is also an important element. The more important a few lines of code are to you, the more deeply you will learn from the results. The same goes for human language. If a moment of conversation is important to you, your learning will be all the deeper, whether or not the result either confirms or disconfirms your working hypothesis.
Question 2: I suspect that the literature on language learning has only speculation to offer in this area. My personal sense is that there is unlikely to be a correlation. Learning to communicate in a human language is much more than a matter of vocabulary and syntax, and covers the whole range of human experience.