drsmachado:
Sinceramente, lógica de programação e os conceitos básicos de OO.
O resto é sintaxe de linguagem.
Pense que, se os idiomas seguissem uma lógica comum, a gramática, por exemplo, você aprenderia mandarim, russo, alemão e grego, com muito mais facilidade.
Aprimorando sua analogia: se aprender OO, você pode aprender com facilidade linguagens estruturadas (como C e Cobol) e OO (como Pascal, C++, C#, Objective-C) mas não tão facilmente linguagens funcionais (como Haskell ou Lisp, ou talvez Scala).
Se você sabe português, é relativamente fácil aprender espanhol (o português é quase um dialeto do espanhol, devido à sua proximidade linguística), várias das línguas latinas (que têm mais ou menos a mesma gramática e as palavras são semelhantes ou mesmo iguais), com um pouco mais de dificuldade as línguas germânicas (inglês, alemão, sueco etc.) e com um pouco mais de dificuldade ainda outras linguas indo-européias (russo e o grego).
No meu exemplo, eu diria que Java é o espanhol (uma língua mais antiga e mais regular, e que está implantada em mais países) e C# o português (que é uma língua mais recente e mais irregular que o espanhol, e implantada em menos países - existe uma versão Windows e uma versão Mono).
Eu diria que o mandarim está em uma categoria um pouco diferente, já que ele tem uma estrutura gramatical e léxica bem diferente. (A gramática é relativamente simples, mas lexicamente é que são elas
)