Dijkstra writes here:Besides a mathematical inclination, an  exceptionally good mastery of one's  native tongue is the most vital asset  of a competent programmer.I do not understand the latter part of this quote. Can you please explain or elaborate?P.S. I have grown up in India. I speak Bengali at home; I speak Marathi in the community that I live in; Hindi is the national language and very widely spoken, so I know that, and in school and college I was taught with English as the first language. Of course, now I think in a multitude of languages and I must admit I don't have mastery over any. Is this really affecting my programming aptitude? If yes how ? and are there any solutions?
What does Dijkstra mean when he recommends an exceptionally good mastery of one's native tongue?
skills
While I agree with what alex and quickly_now has said I believe that there may be a different spin. This is my own theory and I am not suggesting that Dijkstra meant the same thing.What is mastery of a language: It is the ability to take the basic building blocks of a language and put them into constructive, useful phrases and sentences. Alphabets and characters are meaningless in themselves. You need to put them together and get a meaning out of it. Words are meaningless by themselves; it is only when you put them in a proper sequence based on syntax and grammar that they express concrete ideas.Isn't it exactly the same in computer programming? We put together a few keywords and symbols and make concrete workable stuff out of them. A programming language has symbols and grammar just like a natural language. Mastery of a programming language requires the ability to put these (individually meaningless) symbols and rules together to make something meaningful and useful.I believe this means that there is a direct corellation between a person's ability to learn a human language and a computer lanugage. Both need the same set of human abilities and thinking capability. Take a look among your colleages, and you will find that those with poor programming skills are also the ones who can't speak or write as clearly as others. Those who are good at picking human languages have the skills neccessary to become good programmers too.