Pessoal, estava conversando com um amigo (programador C++) sobre linguagens de programação, e ele me veio com um argumento de que “Java tira a liberdade do programador”.
Quais argumentos ele usou para dizer isso?
- Java não permite ponteiros explícitos, fazendo com que não possamos, por exemplo, mapear um endereço no disco rígido e executar um processamento diretamente sobre ele (mmap) sem bufferizar em memória como se faz em C++.
- Java verifica se o índice do vetor está dentro do “tamanho” dele, se não tiver dá erro, fazendo a aplicação ficar mais lenta.
- Java não permite herança múltipla.
Agora, qual a vantagem em se ter “ponteiros explícitos”? (tem classes que nos permitem fazer mmap em java)
Qual a vantagem em se ter herança múltipla?
Concordo que um array fica mais lento por essa questão(de verificar o limite de tamanho), mas tem que ver também que de uma forma ou de outra, o programador teria que fazer uma verificação semelhante em C++. Essa implementação de verificação do tamanho do array, em java, já está otimizada, por exemplo, se usamos em um for, ele não vai verificar em cada elemento do for, mas sim somente onde o otimizador dele disser que existe a possibilidade de acontecer isso.
Sobre a questão da herança multipla, sempre ouço falar do exemplo do CarroAnfíbio, mas ao meu ver, estão invertendo as coisas. Logicamente um carroAnfibio não deve herdar um carro e um barco. Um carro é que tem características de um carroAnfíbio e um barco que tem características de um carroAnfíbio.