Learning a programming language is same as learning any natural language. Except programming language have negligible amount of special words and no ambiguity. Grammar and language specification/standard are major ingredients here.
You can be a poet on the other side of the language, but to reach there I strongly believe that you have to go through them: language specification/standard and grammar. Because all your questions/doubts can be answered with them. It is a bit difficult to understand them because they are intended(mainly) for language implementors, who are assumed to have sound knowledge. But being a poet counts. :)