2010-01-21 14 views
18

No he usado Perl durante aproximadamente 8 años y ahora estoy entrando en un proyecto que está utilizando mucho Perl orientado a objetos, así que necesito reafilar mis habilidades de Perl y hacerlo rápidamente. Durante estos últimos años hice principalmente todo tipo de desarrollo de Java y algo de PHP. Soy muy bueno en OO y no soy un programador novato en ningún grado remoto.¿Cómo puedo ponerme al día sobre las últimas capacidades orientadas a objetos de Perl?

Así que aquí viene la pregunta: ¿cuáles son los mejores recursos/sitios/prácticas/formas/libros que ustedes pueden recomendar para aprender mis habilidades oxidadas de Perl y aprender Perl "la nueva manera"? Tus sugerencias serán muy apreciadas.

P.S. Investigué algunas respuestas anteriores. Quiero enfatizar que no estoy buscando un libro/recurso novato (sintaxis, directores principales, etc.), sino específicamente aquellos que cubren las capacidades de OOP que no estaban allí cuando estaba programando en Perl (o puedo pasarlo por alto en ese momento))

PPS Gracias a todos por sus sugerencias y consejos. Después de un poco de consideración, fui con la respuesta de @MBO, ya que es la primera vez que menciono a Moose, que realmente me gusta hasta ahora.

+0

respuesta relacionada: http: // stackoverflow. com/questions/984868/is-my-book-too-old-to-learn-from-perl/984909 # 984909 – mercator

+0

En realidad, se refiere al libro en el que tengo muy poco interés. No necesito sintaxis general, necesita OOP parte de th e idioma – Bostone

Respuesta

21

No escribo código Perl en este momento (actualmente trabajo en otros idiomas), pero leo de vez en cuando este sitio: http://www.modernperlbooks.com/mt/. También puedes ver Moose para la nueva manera de definir objetos en Perl

+3

Moose es el marco principal de OO en Perl – kixx

+1

Seré el segundo del blog de Modern Perl y de Moose; echa un vistazo Catalizado para una introducción rápida de Moose: http://www.catalyzed.org/2009/06/a-gentle-introduction-to-moose.html –

+0

¿por qué downvote? ¿Debo copiar la respuesta del enlace publicado en el comentario de [mercator] (http://stackoverflow.com/users/23263/mercator)? O respondí mal a la pregunta? – MBO

21

El libro "Higher order Perl" podría ser de interés para usted. Lo mejor de todo, es gratis.

+0

Muy interesante, gran consejo, gracias y es gratis (incluso mejor) – Bostone

+0

Lo conseguimos para cualquier nuevo desarrolladores en el trabajo si aún no están familiarizados con él. – fennec

+0

+1 Bonito enlace ... – mob

8

Salida:

  • Perl Best Practices - buena colección de las mejores prácticas sugeridas. Incluso si no los adopta, la discusión del razonamiento detrás de las sugerencias es valiosa.

  • Perl Testing: A Developer's Notebook - Brinda una excelente cobertura de las capacidades de prueba de Perl.

  • Object Oriented Perl - Un excelente libro sobre cómo usar y abusar del sistema de objetos de Perl. Este libro está un poco anticuado. Es anterior a los objetos (cuyo tiempo ha llegado y se ha ido) y Moose, ambos desarrollos importantes en OOP. Si tiene un cuerpo grande de OO Perl viejo para mantener, este libro puede ser útil.

  • PerlMonks - Un sitio muy útil centrado en Perl con un tono muy generoso y colegial. Un buen lugar para buscar ayuda y comentarios. Ha estado en funcionamiento durante años, por lo que también hay un archivo masivo de publicaciones.

+1

Pruebas (con Prueba :: Más, Prueba :: Excepción, Prueba :: NoAdvertencias, etc.) es bastante importante, y Perl (bueno, CPAN) lo hace fácil. Por supuesto, usted puede estar muy familiarizado con todo esto dependiendo de lo que estaba haciendo/dónde estaba trabajando hace 8 años ... también podría estar interesado en Log4perl, especialmente si ha usado Log4j en Java, que probablemente sea el el más fácil de agregar el registro – plusplus

+0

¡Buena lista - a través de ella - gracias! – Bostone

21

Bueno, en primer lugar Higher-Order Perl es muy bueno, pero es sobre la programación funcional, no objetos.

Perl Best Practices es un libro excelente, pero tiene limitaciones, y una de ellas es que Conway recomienda usar su propio módulo Class::Std para hacer objetos de adentro hacia afuera, y el consenso general parece ser (1) que si usted está va a hacer objetos de adentro hacia afuera, Object::InsideOut y Class::InsideOut son mejores maneras de hacerlo (2) y de todos modos, usar objetos basados ​​en "Moose" es una mejor manera de hacerlo.

Esto ilustra lo que probablemente sea principal diferencia entre el mundo de Java y Perl: rara vez hay una forma estándar de hacer algo con Perl. Comenzando por alguien que se siente cómodo con los objetos en otro idioma, supongo que lo más interesante de Conway es que con el Object Oriented Perl ligeramente anticuado lo está viendo desarrollar gradualmente diferentes formas de agregar características OOP que ha estado dando por sentado.

Me gusta el estilo básico bendito de Perl OOP, pero debe comprender que su encapsulación es muy débil y que, aunque la herencia de métodos funciona, normalmente no hay herencia de datos. También hay algunos trucos bastante perlish en uso amplio, como la generación automática de descriptores de acceso usando una rutina AUTOLOAD.

En cuanto a lo que puede leer sobre el tema, no olvide la documentación en línea que viene con Perl: perldoc. Tenga en cuenta la sección "Tutoriales" en la parte superior. Si está oxidado en las referencias y estructuras de datos de Perl, lea los dos primeros: perldoc perlreftut y perldoc perldsc. Un poco más abajo en la lista, verá múltiples tutoriales de OOP. En gran parte se trata de objetos simples basados ​​en href, aunque hay algunas rarezas graves allí, como el esquema de Tom Christiansen para objetos basados ​​en cierres en la parte inferior de: perldoc perltoot

Si está interesado en algunos de los más recientes las formas en que las personas hacen las cosas, es posible que desee comenzar con Moose, que se supone que es lo más cercano que puede llegar a los objetos perl6 mientras sigue escribiendo el código perl5. Por cierto: ignora la palabra "posmoderno" que hay, es una broma tonta que no tiene ningún sentido.

Si le interesan los objetos de adentro hacia afuera (que tienen encapsulado a prueba de balas, pero que son quizás un poco molestos de depurar-- no puede usar Data::Dumper en el objeto para obtener su estado), me gustaría sugiero comenzar con este perl5 wiki page.

+1

¡Impresionante! ¡Gracias por tomarse su tiempo y dar esta impresionante reseña! – Bostone

+1

Clase :: Std apesta mal, todo lo que hace es causar dolor. Esa sugerencia es probablemente la peor idea en PBP. Me pregunto si 'Std' es un acrónimo aquí (http://www.cdc.gov/STD/). Hay mucha discusión sobre las sugerencias de PBP que se pueden encontrar en Perlmonks y en otros lugares. – daotoad

+0

Creo que te refieres a "basado en hash" en lugar de "basado en href" –

3

Si puede usar Moose, entonces esa es la mejor manera de hacerlo (en mi humilde opinión).

Hay un libro disponible: Moose. A postmodern object system for Perl 5

Moose Book

El libro es la versión impresa de la excelente línea Moose::Manual

/I3az/

+0

gracias, Moose parece ser una cosa caliente, maldito el libro no es gratis :) – Bostone

+0

@ DroidIn.net: Sí, es malditamente caliente! Consulte la pregunta/respuestas de Moose aquí en SO. Por cierto ... hay un PDF gratuito: http://blog.urth.org/2009/02/moose-book-well-sort-of.html (vea el enlace "Salida en PDF ...") y vea el Github enlace en comentarios para crear el suyo propio. – draegtun

Cuestiones relacionadas