Spanish, Russian, Java, Python
We use “language” for a misleading variety of things.
Our tutoring consultant has a student in an unenviable position. Inadvertently, he (the student) is now taking one class in which he is learning the Java programming language, and another in which he is learning Python.
Any of us would have advised against it, though not for anything specifically related to Java or Python. We’ve found that trying to learn two speaking/writing languages at about the same stage at the same time is a recipe for confusion. The mind has trouble compartmentalizing new information, and one is prone to bilingual sentences, unintelligible to speakers of either one; to say nothing of mangled syntax.
When one language is already established, there is less trouble. At first, the mind adds new words to the old language, which can be amusing. One of our consultants started Russian after several years of Spanish, and his Spanish teacher felt vindicated to learn that the Russian for “boy,” “malchik,” was obviously a slight mispronunciation of “mal chico,” “bad boy” in Spanish. But eventually the new language finds its own space and there is less cross-talk. Indeed, having assimilated one different way of doing things, one finds it easier to look out for differences in another; and comparing languages illuminates all of them. The Spanish “sympatico” is not the English “sympathetic,” but is very close in meaning to the Russian “sympatichny.”
But why should we apply this immediately to computer languages? For all that they share the same label, computer coding is far closer to mathematics than to literature. We have always resisted the assertion that “mathematics is a language:” they does not do the same things. Mathematics cannot produce the emotional effect of a novel or a sonnet; going the other way, one cannot determine the date of the next eclipse by eloquent discussion. They both have a sense of symmetry and elegance in certain situations, but these are limited in number and not always easy to connect with each other.
However, the processes of learning both types of language (computer and human) share many features. In each, one takes new objects and connects them in some ways and not others, and the ways in which they are connected are important. A flaw in syntax (the use of that word in both fields is quite appropriate) will lead to the wrong meaning, if any at all, on one side, and a program that does not work on the other. And while the student is given many examples of proper usage in the course of each class, the real test of his or her learning will come when using the language to do something new, something not in the book.
So while we’ve not tried to learn two computer languages simultaneously, we have no hesitation in advising against it. It’s better to bring one up to a solid understanding and only later start another. Which advice, unfortunately, is too late for our student.