Perl è un linguaggio di programmazione dinamico di alto livello, multi-paradigma, interpretato e di alto livello. Java è un linguaggio di programmazione di alto livello, per uso generale, principalmente a paradigma singolo, tipicamente statico.
Quindi, entrambi sono di alto livello :
Un linguaggio di programmazione di alto livello è un linguaggio di programmazione con forte astrazione dai dettagli del computer.
e per scopi generici :
Nel software per computer un linguaggio di programmazione generico (GPL) è un linguaggio di programmazione progettato per essere utilizzato per la scrittura di software in un'ampia gamma di domini applicativi.
In sostanza, ciò significa che tutto ciò che puoi fare con Perl, puoi farlo anche con Java. E come menziona @KyleHodgson , entrambe le loro sintassi derivano da C e C ++ e la sintassi per cose semplici come for
loop e if
istruzioni è essenzialmente la stessa - e come nota @DipanMehta , entrambe sono raccolte . E ovviamente entrambi sono estremamente popolari e hanno comunità vibranti.
Ma è qui che si fermano le somiglianze. Perl è multi-paradigma e supporta una vasta gamma di paradigmi di programmazione:
Perl non incoraggia un singolo paradigma, sono essenzialmente uguali e sei libero di scegliere quello che ritieni più adatto a ciò che stai costruendo, senza ovviamente limitarti a un singolo paradigma, puoi mescolare e abbinare. D'altra parte, Java è principalmente un linguaggio orientato agli oggetti basato sulla classe. C'è un supporto per la programmazione generica, ma come principiante dovresti pensare a Java come a un linguaggio orientato agli oggetti strettamente basato sulla classe.
Quindi Perl offre più di un modo per strutturare il tuo codice 1 , mentre Java solo uno. Non è una brutta cosa (o una buona cosa), è solo diversa. Se non hai scritto alcun codice Perl orientato agli oggetti, all'inizio Java potrebbe sembrare un po 'alieno. Non scoraggiarti, l'orientamento agli oggetti è qualcosa che alla fine dovrai imparare, se stai considerando una carriera nello sviluppo di software e l'apprendimento di Java è un buon modo per apprendere i concetti di base dell'orientamento agli oggetti - non un modo perfetto, ma sicuramente un buon modo.
E come sai, Perl viene interpretato, mentre Java è ... beh ... una bestia completamente diversa . In Java scrivi il tuo codice come faresti in Perl, e poi lo compili . Il risultato non è un eseguibile, ma un bytecode Java . Questo formato di intermediazione viene eseguito (finalmente!) Nella Java Virtual Machine , che è in qualche modo analoga all'interprete Perl. Per poter eseguire un programma Java, è necessario installare prima una JVM, allo stesso modo su come è necessario installare un interprete Perl per eseguire uno script Perl 2 .
Proveniente da uno sfondo Perl, la cosa più importante da ricordare è la fase di compilazione in bytecode: ogni volta che si modifica un file sorgente Java, è necessario ricompilarlo. All'inizio potrebbe sembrare folle, ma la compilazione ha una conseguenza molto bella: il tuo codice viene verificato per una varietà di errori in questa fase e il compilatore rifiuta di terminare il processo se ce ne sono, e talvolta ti aiuterà a individuare gli errori con messaggi utili (ci sono sempre messaggi, ma solo a volte sono utili).
Il che ci porta all'ultima grande differenza:
Perl è dinamico 3 :
Il linguaggio di programmazione dinamico è un termine ampiamente utilizzato nell'informatica per descrivere una classe di linguaggi di programmazione di alto livello che eseguono in fase di esecuzione molti comportamenti comuni che altri linguaggi potrebbero eseguire durante la compilazione, se non del tutto. Tali comportamenti potrebbero includere l'estensione del programma, aggiungendo nuovo codice, estendendo oggetti e definizioni o modificando il sistema di tipi, tutto durante l'esecuzione del programma.
e digitato in modo dinamico 4 :
Si dice che un linguaggio di programmazione sia tipizzato in modo dinamico quando la maggior parte del suo controllo del tipo viene eseguito in fase di esecuzione anziché in fase di compilazione.
e Java è scritto staticamente :
Si dice che un linguaggio di programmazione utilizza la tipizzazione statica quando il controllo del tipo viene eseguito durante il tempo di compilazione anziché in fase di esecuzione.
Il che, per dirla nel modo più semplice possibile, significa che in Java devi dichiarare il tipo di variabili e metodi prima di usarli. Ci sono altre differenze, ma non vorrei rovinare il divertimento di scoprirle da soli :)
E, infine, c'è una differenza molto importante: Java è il linguaggio dolce del mondo accademico 5 e del mondo aziendale, mentre incontrerai raramente Perl in un ambiente accademico (dove l'ho incontrata per la prima volta), e le sue prospettive di carriera si stanno riducendo (ancora un bel po 'di lavori, ma in nessun posto vicino a molti linguaggi Java, .Net o PHP). Non commenterò i motivi, sto solo affermando i fatti (tristi). Dato che sei ancora molto giovane, imparando Java sarai un po 'più preparato per una laurea in Informatica, se sceglierai di seguire quel percorso.
Non rinunciare a Perl, ovviamente, ma esplora Java. Il fatto che siano più diversi che simili significa anche che imparerai approcci e mentalità di programmazione abbastanza diversi, è un percorso difficile ma che alla fine ti renderà un programmatore migliore.
1 "Tim Toady"
2 La comunità Perl sta esplorando attivamente la possibilità di una macchina virtuale Perl, tramite Parrot .
3 Dinamico non significa sempre digitato in modo dinamico.
4 Perl è tipizzato in modo dinamico per tipi definiti dall'utente, tipicamente staticamente rispetto a matrici, hash, scalari e subroutine distintivi e fortemente tipizzato via use strict
, quindi essenzialmente è un linguaggio di sistema di tipo variabile, ma per mantenere un certo senso di sanità mentale chiamiamolo in modo dinamico digitato.
5 Al punto di abuso, come scrive Joel Spolsky in The Perils of JavaSchools .