2008-09-23 8 views

Respuesta

24

no hay ninguna ventaja que se pueden obtener por el cambio de Perl a Python. Tampoco se gana ventaja cambiando de Python a Perl. Ambos son igualmente capaces. Elija sus herramientas en función de lo que sabe y del problema que está tratando de resolver, más que de algún tipo de noción de que, de alguna manera, es inherentemente mejor que el otro.

La única ventaja real es si cambia de un idioma que no conoce a un idioma que conoce, en cuyo caso su productividad probablemente aumentará.

+2

Usted dice: "Elija sus herramientas en base a lo que sabe y el problema que está tratando de resolver", pero por el momento, no sé ni idioma, y ​​no sé qué aspectos del problema que trato de resolver se ajustan a qué idioma. Eso es básicamente por qué hice la pregunta. – raldi

+0

@raldi - Perl 6 no es muy diferente de Perl 5, por lo que conoce la mayoría de un idioma. Y por lo que veo, Python no es tan diferente de Perl 5, y muchos conocimientos de Perl se trasladarán a Python. –

+1

Nada de esto agrega ninguna información que ayude al que pregunta (y a mí) a decidir de cualquier manera. Es una respuesta bastante vacía. – reinierpost

12

En mi opinión, la sintaxis de Python es mucho más limpio, más simple y consistente. Puede definir las estructuras de datos anidados de la misma manera en todas partes, ya sea que planee pasarlas a una función (o devolverlas desde una) o usarlas directamente. Me gusta mucho Perl, pero tan pronto como aprendí lo suficiente de Python para "obtener", nunca volví.

En mi experiencia, los fragmentos aleatorios de Python tienden a ser más legibles que los fragmentos aleatorios de Perl. La diferencia realmente se reduce a la cultura en torno a cada idioma, donde los usuarios de Perl a menudo aprecian la inteligencia, mientras que los usuarios de Python prefieren la claridad con mayor frecuencia. Eso no quiere decir que no puedas tener Perl claro o Python desviado, pero esos son mucho menos comunes.

Ambos son finas lenguas y resolver muchos de los mismos problemas. Personalmente me inclino hacia Python, aunque no sea por otra razón, ya que parece estar ganando impulso mientras Perl parece estar perdiendo usuarios a Python y Ruby.

nota la abundancia de palabras engañosas en lo anterior. Honestamente, realmente se reducirá a las preferencias personales.

+0

Su respuesta probablemente pertenece a la pregunta opuesta; esta pregunta proporciona un enlace. – tzot

+5

el problema es que los fragmentos aleatorios de Python a veces no funcionan porque donde fueron pegados no preservaron el espacio en blanco correctamente – MkV

13

Python no tiene Junctions. De hecho, creo que solo Perl tiene uniones hasta el momento. :-)

+0

Yo, y otros, hemos creado "uniones" para Python, simplemente no lo hemos nombrado así, donde puedes hacer cosas como: al = [1, 2, 3, 4]; al1 = Todos (al) + 1; if Any (al)> 3: print "some true". – tzot

+4

Las uniones en Perl 6 pueden hacer mucho más que eso. ¿Sus conexiones pueden autotread? –

+0

No, no es mío. ¿El ensamblaje automático ya está mejorando la velocidad de sus programas? Si es así, ¿por qué factor? – tzot

5

Python tiene una gran ventaja: está implementado, hay un compilador bastante estable para él.

Perl 6 es un lenguaje más visionario, y todavía no en cualquier lugar cerca de lo suficientemente estable como para la producción. Pero tiene un conjunto de características muy buenas, entre ellas: las uniones, gramáticas (sí, se puede escribir analizadores completos con Perl 6 "expresiones regulares"), manejo de Unicode a nivel grafema, listas de perezosos y macros de gran alcance.

En su caso particular, cuando conozca Perl 5, se familiarizará con la sintaxis de Perl 6 muy rápidamente.

Para obtener una lista más completa de las funciones interesantes que tiene Perl 6, consulte the FAQ.

+0

Tu respuesta probablemente pertenece a la pregunta * opuesta *. – tzot

+0

Soy un chico perl, pero obtienes +1 por darle a Perl6 sus accesorios como un "lenguaje visionario". – Axeman

4

No has dicho por qué quiere alejarse de Perl *. Si mi bola de cristal funciona hoy, es porque no conoces el idioma por completo y eso te frustra.

Quédese con Perl y estudie bien el idioma. Si lo hace, un día será un gurú y sabrá por qué su pregunta es irrelevante. La iluminación llega a aquellos para buscarla.

  • Se llamaron "Perl5", pero no hay tal idioma. : P
+1

Considero que Perl5 es un idioma. ¡Soy un Fiver!: D – skiphoppy

+2

Perl 5.10 está fuera, pero usted dijo que Perl 5 no existe? –

+3

Por el contrario, hay muchas personas en PerlMonks y Perl Iron Man Challenge de Entel Perl Organzation que consideran que Perl5 es un lenguaje y Perl6 es un lenguaje * diferente * (pero relacionado). Leí la pregunta no como "Quiero alejarme de Perl", sino más bien como "Creo que Perl5 está a punto de desaparecer, ¿a dónde debo ir cuando eso suceda?", En cuyo caso la respuesta correcta es realmente " Perl5 no va a desaparecer pronto, así que no te preocupes por eso ". –

4

Python tiene la gran ventaja de estar disponible en un formato de producción listo hoy.

Python tiene Jython e IronPython, si necesita trabajar estrechamente con Java o .net clr.

Perl 6 tiene las ventajas de estar basado en los mismos principios que Perl (1-5); Si te gusta Perl, te gustará Perl 6 por las mismas razones. (Hay más de una forma de hacerlo, etc.)

Perl 6 también tiene la ventaja de ser implementado solo parcialmente: si quiere hackear las partes internas del lenguaje o ayudar a definir las bibliotecas estándar, este es un gran momento para empezar en Perl 6.

Editar: (2011) es todavía un buen momento para cortar en las partes internas Perl6, pero ahora hay una, distribución Perl6 utilizable mucho más maduro, Rakudo Star. Si quiere usar Perl6 hoy, esa es una gran opción.

+0

Un campo donde Python es mejor que la familia Perl es la abundancia de potentes gráficos, análisis de datos y bibliotecas de aprendizaje automático en Python. La familia Perl va muy rezagada. Aparte de estos, ambos son buenos. –

3

IMO python's regexing, esp. cuando intenta representar algo como el operador de perl's/e como en s/whatever/somethingelse/e, se vuelve bastante lento. Así que, en caso de duda, es posible que necesite quedarse con Perl5 :-)

14

Perl 6 tiene algunas características excelentes sobre python. Creo que estas son todas las características que Python 3 no tiene:

  • un extensible, pero el sistema de tipo opcional
    • incluyendo el envío de múltiples método y comprobación de tipos
    • incluso para las órdenes internas y "operadores"
    • con los tipos de subconjuntos
  • Roles: clases no instanciables para la reutilización de código (también conocido como mixins)
    • con algunas ventajas adicionales sobre la mayoría de mixins:
    • en tiempo de compilación nombre del método colisión,
    • la capacidad de requerir, en una definición de función, que ciertos métodos están presentes en la clase de acogida, y, posteriormente, para llamar a los métodos de la clase de host en la implementación del rol.
  • gramáticas (composiciones de expresiones regulares que devuelven datos estructurados)
  • potentes expresiones regulares extendidas. Fancier que las capacidades regex integradas de python.
  • cruces y uniones de tipo
  • Metaoperators
  • La capacidad de definir los operadores Circunfijo, postcircumfix, infijos, prefijos, y de sufijo.
  • Teóricamente, la capacidad de trabajar con el AST como datos estructurados.(aka: macros Lisp)
  • Bloque de alcance
  • El * plazo para la generación de cierres de cualquier expresión
  • construcciones de concurrencia implícitos ([] meta, uniones)
  • construcciones de concurrencia declarativos (hiper para)
  • El sub MAIN convierte su firma de función en una interfaz de línea de comando y una guía de uso de línea de comando.
  • listas Lazy (pero se puede liar con los generadores)

Y comparte con Python las siguientes ventajas sobre Perl 5:

  • El concepto de una "clase", la palabra clave class y el azúcar asociado **:
    • la propia palabra clave
    • captador de azúcar/colocador con el concepto de datos privados
  • un protocolo de meta-objeto accesible bien definido
  • gran soporte Unicode
  • gran/soporte de la fecha del tiempo construida en
  • En general, "baterías incluidas" - un montón de funciones incorporadas
  • no un ámbito global variables por defecto

La implementación de Perl6 no está completa al 100%, o sintonizada lo suficiente como para usar para ciertos valores de aplicaciones "sensibles al rendimiento". Pero el 80-90% de la especificación que se necesita para el 95-99% de los casos de uso está completo en Rakudo, ahora *

* Una omisión evidente es cualquier disposición para la E/S asíncrona. Esa parte de la especificación está en flujo.

** Aunque el proyecto Moose populares ofrece esto en Perl 5.

Cuestiones relacionadas