Sé que puede haber sido preguntado antes, pero aquí no pasa nada ...
¿Perl sigue siendo algo que se consideraría útil? Si alguien fuera un nuevo programador (ya sea completamente nuevo en programación o solo unos pocos meses / años de experiencia), ¿Perl sería algo que valga la pena aprender?
¿Perl todavía se usa con frecuencia? ¿Sigue siendo popular?
¿O está desapareciendo Perl en comparación con lenguajes como Python, Ruby, PHP, ASP.NET, etc.?
Básicamente se reduce a esto:
- ¿Todavía se usa / todavía se usa con frecuencia? Si es así, ¿se está muriendo? Si no, ¿volverá?
- ¿Es algo que valdría la pena aprender?
- ¿Cómo se compara en demanda con lenguajes como Python tanto en popularidad como en usabilidad / viabilidad? ¿Podrían los lenguajes como Python o Ruby ser considerados reemplazos de Perl?
Además, ¿las versiones más recientes de Perl realmente traerán una gran mejora a la comunidad de Perl, y tal vez traerán a Perl de nuevo al centro en comparación con otros idiomas?
EDITAR:
Bien, supongo que aquí hay una pregunta mejor y redactada de nuevo:
¿Perl sigue creciendo o está "muriendo"? ¿Sigue siendo un idioma que vale la pena aprender y usar? ¿En qué proyectos realmente "brilla" en comparación con otros idiomas? ¿Qué hace que Perl sea un idioma para elegir? Esencialmente: ¿Perl se está volviendo obsoleto en comparación con otros idiomas, y si es así, espera que eso cambie o continúe?
Y gracias a todos los que han respondido hasta ahora, ¡la discusión ha sido realmente interesante!
Respuestas:
En primer lugar, siempre es mejor desambiguar .
Ok, dicho eso, ¿para qué se usa Perl 5 hoy?
sistemas web heredados / intrawebs : algunos simplemente no morirán
minería de datos / análisis estadístico : el motor perl regex, incluso si está un poco desactualizado , (
PCRE
una biblioteca girada, lo completa de cualquier manera posible y es elPHP
motor predeterminado ) sigue siendo bueno para un análisis simpleAdministración del sistema UNIX : Perl siempre se instalará en UNIX.
Puede contar con que esté disponible incluso en Mac OS X.
creación de prototipos de red : muchos expertos en redes principales aprendieron Perl cuando estaba de moda; y todavía hacen sus pruebas de concepto con eso.
seguridad : muchos expertos en seguridad también necesitan prototipos rápidos . (y soluciones automáticas rápidas) Perl puede, y lo hace, cubrir eso.
La extensa colección de CPAN es muy útil cuando se trata de prototipos.
(Las baterías pueden no estar incluidas, pero aún están allí, en el estante )
Sin embargo, recuerde inconvenientes :
fuente
"Whenever you find a python executable preinstalled, it's the wrong version"
Corolario:"sometimes the right version is available, but it has the wrong name"
En mi opinión, después de trabajar con Perl nuevamente después de algunos años de casi no usarlo, es mejor que nunca. Perl 5 tiene mucha genialidad en CPAN, incluso OO se puede hacer en este momento. (Echa un vistazo a Modern Perl )
Perl 5 está lejos de estar muerto. Solo eche un vistazo a algunos sitios web de Perl y CPAN y en el horizonte hay un lenguaje completamente nuevo: Perl 6.
Hay muchos recursos en la web, blogs y presentaciones sobre por qué no es malo y por qué tiene una mala reputación que no merece, solo eche un vistazo a esos para obtener una comprensión.
fuente
shape($wheel) == 'round' ? available_in_cpan($wheel) : false;
no es un filtro válido.Lo más importante que Perl todavía tiene es CPAN : hay tantos módulos preescritos que es muy fácil encontrar lo que necesita.
Dicho eso, no aprendería Perl. Perl es un gran lenguaje para las personas que ya lo saben (como yo), pero Python parece ser (desde la perspectiva de mi extraño) un mejor lenguaje para hacer el tipo de análisis rápido y sucio de archivos y texto que Perl solía ser el " ir a "lenguaje para.
fuente
Cuando decidí aprender Perl como mi primer idioma hace unos años, hubo una serie de factores que guiaron mi decisión:
Para mí la respuesta fue sí. Yo soy un diseñador grafico. Aprendí HTML y CSS hace años, pero necesitaba actualizar mis habilidades después de que los clientes querían más de sus sitios web. Había usado varios frameworks php que me dieron el error para realmente aprender a programar. Investigué mucho y encontré proyectos bien apoyados como Template Toolkit, así como nuevos como Perl Dancer y Mojolicious. La documentación que viene con Perl ha sido muy útil, así como la biblioteca de publicaciones.
He encontrado las listas de correo de Perl bastante amigables para principiantes y activas. En PerlMonks, personas de todo el mundo vienen con preguntas y respuestas para una amplia gama de aplicaciones. Hay varios sitios de noticias, blogs y transmisiones de Perl activos. Estos recursos me han enseñado mucho sobre Perl y la programación.
De acuerdo, esa es MI experiencia. No sé exactamente cuántas personas inician sesión en estos sitios, se suscriben a las listas de correo o crean sus aplicaciones web, por ejemplo, usando Perl. Tampoco puedo comentar cuánto mejor o peor habría sido mi experiencia si hubiera elegido otro idioma para comenzar. No dudo que podría encontrar muchos de los mismos aspectos positivos en las comunidades de otros idiomas. Puedo decir que todavía estoy contento con la elección que hice.
fuente
La popularidad de un idioma tiene muy poco que ver con su viabilidad o usabilidad. Perl sigue siendo un lenguaje muy útil. Su reputación, merecida o no, como no ser amigable con los novatos eventualmente significaba que nadie nuevo lo aprendería si pudieran ayudarlo. La única razón por la que ya no lo uso es porque nadie más que conozco lo usa más.
fuente
Para el registro, he estado programando en Perl 5 durante aproximadamente 15 años, así que estoy un poco sesgado. Habiendo dicho eso, realmente me gusta Perl. No escuches a los detractores, y no pienses que su edad es de alguna manera un indicador de su vida útil. La mejor manera de ver Perl es verlo en comparación con otros idiomas:
PHP : PHP es un lenguaje de programación web bastante bueno; no me malinterpretes Pero, es solo un lenguaje de programación web. Incluso las aplicaciones web necesitan sus cronjobs para realizar procesos de limpieza, y usted tiene que hacer algunas cosas extrañas para que eso suceda. No importa tener que escribir un script rápido para el administrador de UNIX o analizar un archivo de texto. Además, PHP no tiene CPAN.
Ruby : el lenguaje es demasiado nuevo y "script kiddie" para mis gustos. Lo único que escucho sobre Ruby es Ruby on Rails. Perl tiene Catalyst and Dancer (como marcos MVC), que son MVC muy buenos, pero no es la piedra angular del lenguaje. No va a encontrar "Ruby" como un requisito en las ofertas de trabajo en el corto plazo (si es que lo hace). Además, Ruby no tiene CPAN.
Python : en palabras de Larry Wall, Python es solo aceite de serpiente. Python se preocupa por los espacios en blanco y el último idioma que utilicé que se preocupaba por los espacios en blanco fue BASIC. Además, al igual que BASIC, fue diseñado esencialmente para ser un lenguaje para principiantes fácil de usar. Finalmente, no hay CPAN aquí.
Java : Java es un lenguaje secundario problemático. El concepto era tener esta máquina virtual que se ejecute en cualquier plataforma, pero debido a la gran popularidad del idioma en los cursos universitarios, se ven aplicaciones Java en todas partes donde no deberían estar. Por ejemplo, las aplicaciones web internas basadas en servidor no deberían existir. Es un servidor único con especificaciones que definen y se envuelve en una VM separada con una huella de memoria limitada. Java está hinchado y no tienen CPAN.
C # - De hecho, he estado usando este lenguaje bastante ahora, y parecía haber formado una relación de amor / odio con él. Ser capaz de sobrecargar métodos con diferentes parámetros es genial y divertido. Pero, si desea un lenguaje que se queje en cada línea de código sobre la conversión de tipos , entonces C # es para usted. ¡Dios mío, quiere que pongas un casting explícito POR TODAS PARTES! Hacer clases es divertido, pero de repente te das cuenta de que pasas más tiempo haciendo clases para que el maldito idioma simplemente FUNCIONE que escribir código real.
Además, C # no tiene ... bueno, tiene .NET, que es realmente bueno y extenso. Sin embargo, todavía me gusta más CPAN porque todavía puedes escribir tus propios módulos y quejarte ante el autor por un error o defecto de diseño. Y todos son gratis. Además, Perl está trabajando para Perl.NET en el futuro, por lo que podemos estar diseñando aplicaciones de Windows en poco tiempo.
Perl es un gran lenguaje que tiene:
Expresiones regulares : si es algo que Perl puede hacer bien, es la manipulación de texto. Sí, muchos lenguajes tienen expresiones regulares, pero Perl casi los ha inventado, y hay una razón por la cual grep tiene un modo de "Expresión regular de Perl", o por qué Oracle tiene una sección sobre "Extensiones influenciadas por Perl en expresiones regulares de Oracle". Está integrado y no requiere ningún módulo.
Flexibilidad : tiene tres tipos de variables básicas: escalares, matrices y hashes. Eso es. Eso es todo lo que necesitas. No tienes un int, byte, string ni nada de esa basura. Perl se da cuenta muy bien. Y puede usar referencias todo lo que quiera sin temor a pérdidas de memoria o causar que toda la PC se bloquee. El lenguaje simplemente funciona.
Portabilidad : Perl funciona muy bien en la web. Funciona muy bien en UNIX. Incluso funciona bastante bien en Windows. No está encasillado para una sola función. Es un juego de todo tipo, pero también un maestro de (principalmente) todo.
Es fácil hacer mucho con un pequeño código : dame un archivo en blanco de 1K y puedo escribir todo tipo de cosas con ese espacio. Incluso un one-liner de Perl es excelente para agregar a una tubería de línea de comando.
CPAN - No puedo enfatizar lo bueno que es encontrar casi cualquier cosa que necesite para cualquier cosa. ¿Qué es "cualquier cosa"? Bueno, ¿qué hay de los módulos de base de datos para cada base de datos o cualquier cosa que puedas imaginar, desde Oracle a iPod a CSV a Adabas a Yaswi? ¿Qué tal varios servidores web con todas las funciones? ¿Qué tal un lector de archivos Excel, o un módulo SNMP, o un módulo que lee comentarios para líneas de depuración, o módulos que lo ayudan a programar más rápido? Un proyecto que estoy haciendo en este momento es escribir un generador de mapas dinámico de Terraria, que aumenta desde un módulo existente llamado Games :: RolePlay :: MapGen. .NET nunca tendría algo así.
Además, es muy fácil instalar cualquier módulo a través de CPAN. Obtenlo de Debian. Instalarlo desde CPAN directamente. Hace un trabajo tan bueno como apt-get para resolver dependencias. No tengo ningún problema en decirle a mi administrador del sistema que instale el módulo X desde CPAN, ya que es solo un comando simple.
Sí, tiene sus defectos, y sí, soy parcial hacia eso, pero probablemente ya hayas escuchado los negativos muchas veces. No superan los aspectos positivos, ni mucho menos.
fuente
El rendimiento es una de las principales razones para optar por Perl. En comparación con Python, Ruby o cualquiera de los lenguajes de secuencias de comandos basados en JVM, es increíblemente rápido.
Es por eso que nunca se ha reemplazado en el espacio de minería de datos, todos los demás lenguajes (gratuitos) son más lentos cuando se trata de manejar grandes volúmenes de datos.
fuente
Perl tiene su lugar. Su "mala reputación" generalmente se debe a que le permite una gran flexibilidad para hacer cosas que realmente deberían hacerse con una herramienta diferente.
Si se hace la pregunta "¿Qué estoy tratando de lograr? ¿Y existen herramientas apropiadas para lograr esto?" entonces eres parte del camino hacia allí.
Si está escribiendo una secuencia de comandos rápida, entonces tiene sentido usar un lenguaje de secuencias de comandos. Si desea crear una aplicación compleja, entonces "podría" escribirla en Perl, pero probablemente no debería.
Sin embargo, como su pregunta se relaciona con un programador nuevo, ¿puedo sugerir que deje a Perl solo por ahora? Simplemente porque aprenderá menos malos hábitos de un lenguaje menos flexible.
fuente
Su diseño me atrajo a Python: la estructura de bloques es "lo que ves es lo que obtienes", y no entiendo por qué hay personas que se desaniman por esto. Creo que fue, y es, una buena idea.
Sin embargo, volví a Perl. Simplemente parece mejor pensado como una herramienta práctica. En teoría de la informática, Python y Ruby son "mejores". Pero yo trabajo en el mundo real.
Ruby y Python están más de moda entre los niños recién salidos de la universidad. La mayoría de los programadores que están en Facebook seguirán la moda actual e irán con Ruby o Python. La publicación original ilustra esto: combina "¿Vale la pena" con "¿Sigue siendo popular?"
No sé ni me importa si Perl es "popular" en un mundo de Facebook. Es probablemente el lenguaje de script más utilizado entre las personas que logran mucho, lo cual es algo muy diferente. Algunos de los comentaristas que piensan que su idioma favorito tiene un recurso comparable a CPAN no tienen idea de cuán amplio y profundo es CPAN.
fuente
Perl es EL lenguaje para escribir herramientas desechables. Hay varias otras aplicaciones en las que Perl es más o menos persistente y útil, pero si no tiene un comando de shell para hacer algo extraño, si necesita un código auxiliar para obtener algunos datos de un socket extraño, si tiene un archivo de registro o un base de datos y necesita extraer algo de contenido de una manera que esté fuera del alcance de SQL, si necesita extraer un par de imágenes del servidor, o si las plantillas de su página web contienen el mismo tipo de error y desea corregirlas todas Un guión de Perl de 10 minutos es el camino a seguir.
Probablemente sea posible escribir lo mismo en Shell, pero debido a las extrañas advertencias de la sintaxis de Shell, tomará más tiempo y puede ser mucho más difícil. Escribir esto en cualquier lenguaje "profesional" como C ++, C #, Java, etc. tomará aproximadamente una hora en comparación. Escribir esto en un lenguaje de secuencias de comandos competitivo como Python, Ruby o PHP es una alternativa viable y probablemente tomará hasta un 20% más de tiempo para escribir.
Sí, los programas en otros idiomas serán más fáciles de mantener y más fáciles de leer. Pero si necesita una solución AHORA, Perl es el camino a seguir.
fuente
Echa un vistazo a los "archivos recientes a CPAN" - la página . Cada día se cargan> 20 módulos nuevos o módulos actualizados. Creo que el número promedio de cargas diarias ha aumentado lenta pero constantemente. ¿Es esta actividad una señal de un lenguaje que se está muriendo? ¡No!
Siempre me impresiona cómo se han mantenido y perfeccionado algunos módulos importantes (por ejemplo, para programación web o interfaces para controladores RDBMS) durante muchos años. A menudo por el autor original, o por nuevos encargados. A menudo esto ha creado un código muy maduro.
Para introducir un módulo en CPAN, se recomienda a los autores que hagan un largo camino para mantener la compatibilidad con versiones anteriores (con versiones anteriores de perl 5), así como la independencia de la plataforma. Ver por ejemplo http://matrix.cpantesters.org/?dist=DBI (DBI = interfaz de base de datos, capa de abstracción)
También el lenguaje en sí: estoy un poco desconcertado por todas las nuevas características que se han incluido en el lenguaje desde 5.10, 5,12., 5.14. No he aprendido a aprovechar las nuevas funciones. ¡Perl ha evolucionado demasiado rápido para mí!
fuente
Aprendí Perl 4 y 5 mientras administraba el sistema en los años 90. Hoy hago programación Java (donde invocar a Perl generalmente no es deseable), y todavía uso Perl de vez en cuando en mi computadora de desarrollo. Por lo general, esto es solo para hacer minería de datos en archivos de registro donde las expresiones regulares en Perl y el andamiaje para líneas de análisis de texto en Perl hacen que sea muy fácil hacerlo en una línea de comando.
Esencialmente lo uso hoy como awk con esteroides. Por esto es brillante.
Una de las características de Perl es que hay más de una forma de hacer casi todo. Esto le permite elegir el que mejor se adapte a su forma de pensar, lo cual es excelente cuando simplemente piratea uno o dos, pero no es tan bueno cuando tiene que entender el código Perl de otras personas, ya que generalmente eligen otra forma de hacerlo. encaja con su forma de pensar.
Consideraría que Perl es una herramienta muy útil que quizás quieras aprender si te enfocas en lo que las expresiones regulares pueden hacer para ayudarte a examinar tus archivos de texto. Manténgase alejado de cualquier cosa que tenga que ver con objetos.
fuente
Durante un tiempo, el desarrollo de Perl5 se estancó debido al enfoque en Perl6 que causó un largo retraso entre el lanzamiento de 5.8 y 5.10. Desde entonces, la comunidad realmente ha comenzado a darse cuenta de que Perl5 y Perl6 son idiomas diferentes y recientemente ha habido nuevos lanzamientos muy regulares.
Perl recientemente ganó un concurso de aplicaciones web usando Catalyst (aunque prefiero Mojolicious ) y algunas de las nuevas prácticas de Modern Perl traen muchas ideas más limpias de OO a Perl con cosas como Moose.
En mi opinión, como desarrollador de Perl, Perl tiene un gran legado y un futuro brillante, no solo por ser la cinta adhesiva que mantiene unidas las redes corporativas, sino también un lugar en la nueva actualidad de las aplicaciones web.
fuente
No soy un programador experto. Pero encontré a Perl bastante fácil de aprender (usé el libro de camellos), siempre es un placer, y PerlMonks es la comunidad de ayuda más amigable en el mundo de la programación. Perl parece haber perdido su atractivo sexual en términos de contratación para Ruby y Python, pero solo en ciertas industrias (especialmente en la web).
fuente
Si conoces a Perl, es más fácil aprender Powershell de Microsoft. Con respecto a la sintaxis de powershell, no tiene raíces perl , pero Powershell ha tomado muchas características y conceptos del lenguaje Perl, por ejemplo, fuera de mi cabeza: la variable $ _, prefijando matrices con @ y cadenas / valores escalares con $, convenios de archivo para nombrar y almacenar módulos y, de alguna manera, cargar automáticamente, por nombrar algunos.
Entonces, si conoces a Perl, será útil, y es un poco más fácil aprender Powershell, o comprender la mentalidad de Powershell, o mantener el idioma de Powershell en tu memoria a largo plazo. Encontrar Powershell sin algunos antecedentes de perl es probablemente un poco más extraño. Solo digo.
Por supuesto, el lenguaje Powershell agregó cosas nuevas, en particular su compatibilidad con .NET, y no continuó ninguna de las funciones / operadores de perl que proporcionan "compatibilidad con versiones anteriores" con las herramientas de línea de comandos de Unix.
fuente
Grant McLean acaba de subir una película corta basada en la evolución de mapofcpan.org , que muestra la forma en que el CPAN evoluciona a lo largo del tiempo con una forma visual de estilo de mapa. Se explica por sí mismo sobre la vida de la comunidad. No muriendo
Perl seguramente está sufriendo por su mala reputación, debido a muchas leyendas y porque su comunidad no quiere y no intenta que sea el lenguaje de programación más moderno del mundo. Es muy difícil entender por qué tanta gente está absolutamente convencida de que es un lenguaje horrible. Puede escribir código espeluznante con cualquier idioma. Perl obtuvo las mejores prácticas como cualquier otro idioma, solo necesita implementarlo en más de una forma de hacer filosofía básica.
Puedo ver una razón muy triste para esta mala reputación: durante mucho tiempo, los sitios web de las comunidades de Perl obtuvieron diseños de interfaz de usuario muy feos (al igual que perlmonks.org, por ejemplo). Personalmente, realmente no me importa esto , tal vez incluso vengo a Perl porque por esta razón: no hay muchos sitios web de moda UI, pero puedes confiar en las herramientas, la comunidad con mucha más fe porque no intenta Sé más bella de lo que es. Sin embargo, las herramientas de calidad no significan que no debas enfocarte en la apariencia, y eventualmente es un tipo de error no cuidar el aspecto.
Por ejemplo, un amigo mío (al que le gustan los idiomas más de moda) me dijo que el logotipo actual de Perl6 es horrible y que será un problema atraer carne joven a Perl. Mucho más un problema que con una piedra brillante o cualquier otro logotipo bien diseñado .
Creo que es una razón muy triste para la impopularidad, pero eso es lo que gobierna el mundo.
fuente
Perl definitivamente no se está muriendo. Nunca ha sido tan publicitado como lo han sido otros idiomas.
Si bien es cierto que Perl es un idioma antiguo, tiene una comunidad vibrante y muy productiva, cuyo valor se encuentra en la biblioteca de CPAN. No creo que ningún idioma tenga una biblioteca tan extensa y completa como CPAN. Nada ni siquiera se acerca. En CPAN encontrará miles de módulos y marcos, que hacen casi cualquier cosa que pueda imaginar. ¿Necesita un servidor web? Hay HTTP :: Servidor. ¿Necesita una base de datos independiente? Ahí está Muldis :: DB. Cualesquiera que sean sus necesidades, generalmente encontrará varios módulos que satisfacen sus necesidades, solo tiene que elegir el que mejor se adapte a su aplicación.
En cuanto a Ruby, Python y otros competidores, creo que una competencia saludable ha sido un gran beneficio para Perl. Todo lo que obtuvieron otros idiomas, la comunidad Perl reescribió en Perl. Por ejemplo, cuando Ruby estaba volando en el éxito de Rails, Perl consiguió Dancer, que en muchos aspectos es mejor que Rails.
Perl definitivamente no está muerto, ni se está muriendo. Simplemente no hay nada llamativo a su alrededor, no hay compañía, que se beneficiaría de promocionar a Perl, por lo que no recibe mucha atención de los medios, y no todos los niños conocen a Perl, por lo que se habla menos al respecto.
Han pasado más de 6 meses desde su publicación original. En caso de que aún no lo hayas decidido, hazte un favor y aprende Perl.
fuente
He estado usando Perl para el desarrollo de juegos web desde los años 90, y después de un descanso de 3 años, estoy de acuerdo con el póster anterior. Regreso y encuentro que ha evolucionado mucho más allá de donde lo dejé.
Se esta muriendo? De ninguna manera.
¿Es útil? Estaría perdido sin eso. Tal vez solo soy yo, pero por las otras respuestas, diría que es una criatura viva muy activa.
fuente
Obtuve la mayor parte de mi experiencia web profesional con PHP, pero a medida que crecí como desarrollador, las cosas se volvieron un poco más difíciles, muchas tareas que PHP simplemente no podía hacer o lo hace de manera ineficiente. Podría haber levantado mis manos, pero en su lugar (gracias a Google) me encontré en sesiones ssh aprovechando libreoffice, ffmpeg, imagemagick para escribir funciones de post proceso para PHP. Nunca lo usé antes de ir a PERL ... principalmente porque Perl se sienta perfectamente debajo de la pila LAMP.
(1) está preinstalado en todos los servidores LAMP o al menos tiene un nuevo rpm. (2) tiene un impresionante repositorio de CPAN para ahorrarle mucho tiempo. (3) más rápido / más seguro para realizar tareas donde PHP que se ejecuta en apache falla. (4) muy similar a PHP y fácil de aprender.
Mezcle ideas con PHP, hornee con PERL usando BASH como lo desee, voltee de acuerdo con MySQL y luego sirva con HTML5 y una pizca de jQuery. Es una gran receta.
fuente