Perl é uma linguagem de programação dinâmica de alto nível, de propósito geral, multi-paradigma, interpretada e dinâmica. Java é uma linguagem de programação de alto nível, de propósito geral e principalmente de paradigma único, tipicamente estaticamente.
Então, ambos são de alto nível :
Uma linguagem de programação de alto nível é uma linguagem de programação com forte abstração dos detalhes do computador.
e de uso geral :
No software de computador, uma linguagem de programação de uso geral (GPL) é uma linguagem de programação projetada para ser usada para escrever software em uma ampla variedade de domínios de aplicativos.
Em essência, isso significa que tudo o que você pode fazer com Perl, também pode fazer com Java. E como o @KyleHodgson menciona , ambas as sintaxes derivam de C e C ++ e a sintaxe para coisas simples como for
loops e if
instruções é essencialmente a mesma - e, como observa o @DipanMehta , ambas são coletadas como lixo . E é claro que ambos são extremamente populares e têm comunidades vibrantes.
Mas é aí que as semelhanças param. Perl é multi-paradigma, suportando uma ampla variedade de paradigmas de programação:
O Perl não encoraja um único paradigma, eles são essencialmente iguais e você é livre para escolher o que achar melhor para o que estiver construindo, sem, obviamente, limitá-lo a um único paradigma, você pode misturar e combinar. Por outro lado, Java é principalmente uma linguagem orientada a objetos baseada em classe. Há suporte para programação genérica, mas como iniciante, você deve pensar em Java estritamente como uma linguagem orientada a objetos baseada em classe.
Portanto, o Perl permite mais de uma maneira de estruturar seu código 1 , enquanto o Java é apenas uma. Isso não é uma coisa ruim (ou uma coisa boa), é apenas diferente. Se você não escreveu nenhum código Perl orientado a objetos, o Java pode parecer um pouco estranho no começo. Não desanime, a orientação a objetos é algo que você precisará aprender, se estiver considerando uma carreira em desenvolvimento de software, e aprender Java é uma boa maneira de aprender os conceitos básicos de orientação a objetos - não é uma maneira perfeita, mas definitivamente uma boa maneira.
E como você sabe, Perl é interpretado, enquanto Java é ... bem ... um animal completamente diferente . Em Java, você escreve seu código como faria no Perl e depois o compila . O resultado não é um executável, mas um bytecode Java . Esse formato intermediário é executado (finalmente!) Na Java Virtual Machine , que é algo análogo ao interpretador Perl. Uma JVM deve ser instalada previamente para que um programa Java seja executado, de maneira semelhante a como você precisa instalar um interpretador Perl para executar um script Perl 2 .
Vindo de um plano de fundo Perl, a coisa mais importante a lembrar é a etapa de compilação para bytecode: toda vez que você faz uma alteração em um arquivo de origem Java, é necessário recompilá-lo. Pode parecer uma loucura no começo, mas a compilação tem uma consequência muito boa: seu código é verificado quanto a uma variedade de erros neste estágio, e o compilador se recusa a concluir o processo, se houver algum, e às vezes ajuda a identificar os erros com mensagens úteis (sempre há mensagens, mas apenas algumas vezes são úteis).
O que nos leva à última grande diferença:
Perl é dinâmico 3 :
Linguagem de programação dinâmica é um termo usado amplamente na ciência da computação para descrever uma classe de linguagens de programação de alto nível que executam em tempo de execução muitos comportamentos comuns que outras linguagens podem executar durante a compilação, se houver. Esses comportamentos podem incluir a extensão do programa, adicionando novo código, estendendo objetos e definições ou modificando o sistema de tipos, tudo durante a execução do programa.
e digitado dinamicamente 4 :
Diz-se que uma linguagem de programação é digitada dinamicamente quando a maioria de sua verificação de tipo é executada em tempo de execução, em vez de em tempo de compilação.
e Java é digitado estaticamente :
Diz-se que uma linguagem de programação usa digitação estática quando a verificação de tipo é realizada durante o tempo de compilação, em oposição ao tempo de execução.
O que, para simplificar o máximo possível, significa que em Java você deve declarar o tipo de suas variáveis e métodos antes de usá-los. Existem outras diferenças, mas eu não gostaria de estragar a diversão de descobri-las sozinho :)
E, finalmente, há uma diferença muito importante: Java é a linguagem da academia 5 e do mundo corporativo, enquanto você raramente encontra Perl em um ambiente acadêmico (onde eu a conheci) e suas perspectivas de carreira estão diminuindo. (ainda há muitos trabalhos, mas nem de longe tantos como Java, linguagens .Net ou PHP). Não vou comentar sobre os motivos, apenas afirmo os fatos (tristes). Como você ainda é muito jovem, ao aprender Java, você estará um pouco mais preparado para o curso de Ciência da Computação, se optar por seguir esse caminho.
Não desista do Perl, é claro, mas explore Java. O fato de serem mais diferentes do que similares também significa que você aprenderá abordagens e mentais de programação bastante diferentes, é um caminho difícil, mas que o tornará um programador melhor.
1 "Tim Toady"
2 A comunidade Perl está explorando ativamente a possibilidade de uma máquina virtual Perl, via Parrot .
3 Dinâmico nem sempre significa digitado dinamicamente.
4 Perl é digitado dinamicamente para tipos definidos pelo usuário, estaticamente em relação a matrizes, hashes, escalares e sub-rotinas distintas e fortemente tipado via use strict
, portanto, é essencialmente uma linguagem de sistema de tipo variável, mas para manter um senso de sanidade, vamos chamá-lo dinamicamente digitado.
5 Ao ponto do abuso, como Joel Spolsky escreve em The Perils of JavaSchools .