Perl es un lenguaje de programación dinámico, de alto nivel, multi-paradigma, interpretado y dinámico. Java es un lenguaje de programación de alto nivel, de propósito general, en su mayoría de un solo paradigma, de tipo estático.
Entonces, ambos son de alto nivel :
Un lenguaje de programación de alto nivel es un lenguaje de programación con una fuerte abstracción de los detalles de la computadora.
y de uso general :
En software de computadora, un lenguaje de programación de propósito general (GPL) es un lenguaje de programación diseñado para ser usado para escribir software en una amplia variedad de dominios de aplicación.
En esencia, esto significa que todo lo que puede hacer con Perl, también puede hacerlo con Java. Y como menciona @KyleHodgson , sus sintaxis derivan de C y C ++ y la sintaxis para cosas simples como for
bucles y if
declaraciones es esencialmente la misma, y como señala @DipanMehta , ambas son basura recolectada . Y, por supuesto, ambos son extremadamente populares y tienen comunidades vibrantes.
Pero ahí es donde terminan las similitudes. Perl es multi-paradigma, apoyando una amplia gama de paradigmas de programación:
Perl no fomenta un solo paradigma, son esencialmente iguales y eres libre de elegir lo que creas que se adapta mejor a lo que sea que estés construyendo, sin, por supuesto, limitarte a un solo paradigma, puedes mezclar y combinar. Por otro lado, Java es principalmente un lenguaje orientado a objetos basado en clases. Hay soporte para programación genérica, pero como principiante debe pensar en Java como un lenguaje orientado a objetos estrictamente basado en clases.
Entonces, Perl permite más de una forma de estructurar su código 1 , mientras que Java solo una. Eso no es algo malo (o algo bueno), es simplemente diferente. Si no ha escrito ningún código Perl orientado a objetos, Java puede parecer un poco extraño al principio. No se desanime, la orientación a objetos es algo que eventualmente tendrá que aprender, si está considerando una carrera en desarrollo de software, y aprender Java es una buena manera de aprender los conceptos básicos de orientación a objetos, no es una manera perfecta, pero Definitivamente una buena manera.
Y como saben, Perl se interpreta, mientras que Java es ... bueno ... una bestia completamente diferente . En Java, escribe su código como lo haría en Perl, y luego lo compila . El resultado no es un ejecutable, sino un código de bytes de Java . Este formato de intermediación se ejecuta (¡finalmente!) En la máquina virtual Java , que es algo análogo al intérprete de Perl. Se debe instalar una JVM de antemano para que se ejecute un programa Java, de manera similar sobre cómo necesita instalar un intérprete de Perl para ejecutar un script Perl 2 .
Viniendo de un fondo Perl, lo más importante para recordar es el paso de compilación a bytecode: cada vez que realiza un cambio en un archivo fuente Java, necesita volver a compilarlo. Puede parecer una locura al principio, pero la compilación tiene una muy buena consecuencia: su código se verifica por una variedad de errores en esta etapa, y el compilador se niega a finalizar el proceso si hay alguno, y a veces lo ayudará a identificar los errores con mensajes útiles (siempre hay mensajes, pero solo a veces son útiles).
Lo que nos lleva a la última gran diferencia:
Perl es dinámico 3 :
El lenguaje de programación dinámico es un término utilizado ampliamente en informática para describir una clase de lenguajes de programación de alto nivel que ejecutan en tiempo de ejecución muchos comportamientos comunes que otros lenguajes podrían realizar durante la compilación, si es que lo hacen. Estos comportamientos podrían incluir la extensión del programa, agregando un nuevo código, extendiendo objetos y definiciones, o modificando el sistema de tipos, todo durante la ejecución del programa.
y tipeado dinámicamente 4 :
Se dice que un lenguaje de programación se tipea dinámicamente cuando la mayoría de su verificación de tipo se realiza en tiempo de ejecución en lugar de en tiempo de compilación.
y Java se escribe estáticamente :
Se dice que un lenguaje de programación usa escritura estática cuando la verificación de tipo se realiza durante el tiempo de compilación en lugar del tiempo de ejecución.
Lo cual, para decirlo de la manera más simple posible, significa que en Java debe declarar el tipo de sus variables y métodos antes de usarlos. Hay otras diferencias, pero no me gustaría arruinar la diversión de descubrirlas por ti mismo :)
Y, finalmente, hay una diferencia muy importante: Java es el lenguaje ideal de la academia 5 y del mundo corporativo, mientras que rara vez se encontrará con Perl en un entorno académico (donde la conocí por primera vez), y sus perspectivas profesionales se están reduciendo. (todavía hay bastantes trabajos, pero ni mucho menos como Java, lenguajes .Net o PHP). No comentaré las razones, solo estoy exponiendo los hechos (tristes). Como todavía eres muy joven, al aprender Java estarás un poco más preparado para un título en Informática, si eliges seguir ese camino.
No renuncies a Perl, por supuesto, pero explora Java. El hecho de que sean más diferentes que similares también significa que aprenderá enfoques y mentalidades de programación bastante diferentes, es un camino difícil pero que finalmente lo convertirá en un mejor programador.
1 "Tim Toady"
2 La comunidad Perl está explorando activamente la posibilidad de una máquina virtual Perl, a través de Parrot .
3 Dinámico no siempre significa tipeado dinámicamente.
4 Perl se escribe dinámicamente para tipos definidos por el usuario, estáticamente escrito con respecto a la distinción de matrices, hashes, escalares y subrutinas, y fuertemente tipeado a través de use strict
, por lo que esencialmente es un lenguaje de sistema de tipo variable, pero para mantener un cierto sentido de cordura, llamémoslo dinámicamente mecanografiado.
5 Hasta el punto de abuso, como Joel Spolsky escribe en The Perils of JavaSchools .