One of my friends (who studied philosophy) and I had a discussion the other day about differences between natural and programming languages. I made a point that my knowledge of Russian in no way helps me speak better English (we both agreed on that), while a C programmer who also knows a language that relies on a different programming paradigm, for example, Lisp or Prolog, is likely to be a more effective C programmer than someone who hasn't been exposed to that paradigm.
That's interesting. I found my German lessons did help me better understand the underpinnings of English. Of course, that may owe more to the teacher, and English being a Germanic language probably helped, but knowing a second natural language does give you a new perspective on your first, and additional languages broaden that even further. If you don't feel knowing a second language is helping you use your first, maybe you need to look more closely at how you use both.
> knowing a second natural language does give you a new perspective on your first
I agree with that, however I disagree that having a different perspective on English makes me a better English speaker. Writer -- perhaps -- but still nothing that a smart native English speaker who spent some time in school reading Shakespeare and the classics could not beat.
> If you don't feel knowing a second language is helping you use your first, maybe you need to look more closely at how you use both.
I can speak English, Russian, Ukrainian, Polish, and French. The last two are a bit rusty but I bet I could catch up pretty quickly if I had to. The problem is that, while I speak and write English very well, I possess no "secret power" that would let me beat native speakers of English. Proof: nearly all great writers who wrote in English (or any other language) were native speakers. Knowing the ways of Lisp gives a C programmer a "secret power" which he or she can apply even to the procedural language that is C. Knowing the ways of Russian or French gives me no such advantage with English (except obviously for the occasional French phrase or word root -- but those advantages are insignificant compared to the tremendous advantage of being a native speaker).
I don't think that is true. Learning another language sets you up with a grammar vocabulary that is very useful when learning any other language later on. We learn Latin in high school specifically because it is like a key to learning other languages.
> We learn Latin in high school specifically because it is like a key to learning other languages
I would say that this concept that Latin is a key to European languages is a big fat lie. In the former Soviet block (which is where I'm from), Latin was not taught in schools. About half of my former high school classmates now live in a different country and are fluent in the language of that country, whether it's English, German, Spanish, or Italian. Most of the Americans I've met know only English, some bits of French/Spanish, and some bits of Latin.
I'm not saying that learning Latin is completely useless -- I am simply saying that I believe that whatever advantage it gives is insignificant compared to actually going to the country and speaking the language. As a matter of fact, I believe that teaching Latin/Greek in American schools is a giant conspiracy designed to making pupils appear educated without actually giving them practical knowledge.
Which is completely different from the situation with programming -- where, if you are really, really good with math and logic, you can pick up pretty much any programming language relatively easily.
That doesn't mean Latin is not a useful key to learning other languages for native English speakers.
English lacks many of the concepts that exist in a lot of European languages; no grammatical gender, almost no noun case, verb conjugation has little inflexion, etc, etc. Since Latin possesses these features it is a useful reference language for many European and even many non-European languages.
Now, I'm not sure where you're from exactly, but a lot of the languages in the former Soviet block also do tend to exhibit a lot of these features so Latin would probably not be as needed there.
Well, the syntax and vocabulary (keywords and such) of even a large programming language like Java or C++ is regular, and tiny compared to a natural language.
What is hard about programming has very little to do with learning a programming language and everything to do with more abstract concepts and ways of structuring solutions. The equivalent of CS concepts like object orientation or functional programming would be types of writing such as essays, or newspaper articles.
Even though I can't write Russian, I still know how I'd structure an essay written in Russian. Even though I've never used Ruby, I have a fairly good idea of how I'd tackle any particular category of problem using Ruby.
The difference is that the vocabulary required for writing Russian is vastly larger than the equivalent vocabulary in Ruby.
What is hard about programming has very little to do with learning a programming language and everything to do with more abstract concepts and ways of structuring solutions. The equivalent of CS concepts like object orientation or functional programming would be types of writing such as essays, or newspaper articles.
Thanks for putting into words what I meant but wasn't sure how to express.