http://www.perlmonks.org?node_id=78530

Item Description: French edition of : 'Advanced programming in Perl'

Review Synopsis:

Programmation avancée en Perl
Auteur : Sriram Srinivasan (Traduction Jean Zundel)
Synopsys :
ISBN: 2-84177-039-7

As suggested by several monks I've produced a review in french of the french translation of 'Advanced Perl Programming'.
Some people asked for an english's translation of this review, you'll find it below as a comment.

Programmation avancée en Perl

INTRODUCTION

J'ai un avis assez mitigé au sujet de ce livre.
Je recherchais un livre sur les structures internes de Perl,
qui irait un peu plus loin que le Camel et qui serait un peu plus abordable que les sources de Perl.
Ce livre a partiellement répondu à mes attentes.
J'ai trouvé un livre intéressant à plus d'un titre, d'un excellent niveau technique mais certains aspects (que je détaillerai plus bas) amoindrissent sensiblement l'attrait de ce livre.

PRESENTATION

Programmation avancée en Perl comporte 412 pages.
Il se décompose en 20 chapitres :

  1. Références de données et stockage anonyme
  2. Implémentation de structures de données complexes
  3. Typeglobs et table de symboles
  4. Références de sous-programmes et fermetures
  5. Eval
  6. Modules
  7. Programmation orientée objet
  8. Orientation objet : les étapes suivantes
  9. Tie
  10. Persistence
  11. Implémentation de la persistence objet
  12. Réseaux et sockets
  13. Réseaux : implémentation des RPC
  14. Interfaces utilisateur graphique avec Tk
  15. Exemple d'interface graphique : Tetris
  16. Exemple d'interface graphique : perlman
  17. Génération de code par modèle
  18. Extension de Perl : un premier cours
  19. Intégration de Perl : la solution de facilité
  20. Fonctionnement interne de Perl

Et 2 annexes :
ANALYSE

Ce découpage, dont la logique m'échappe, donne au livre un petit coté 'décousu'.
Les chapitres sont, à mon avis, assez inégaux, certains sont excellents, d'autres le sont moins.
Certains domaines sont TRES (trop?) détaillés, comme par exemple le chapitre 5 entier sur Eval, ou les 3 chapitres sur l'interface graphique.

Plus que l'ordre de présentation des sujets abordés, c'est leur intérêt(variable) et les raisons de leur choix qui me pose problème.
L'auteur a beau justifier ses choix en disant que ces domaines ont été choisis car représentatifs de ce qu'un programmeur DEVRAIT connaître,
le choix me semble arbitraire et pour le moins discutable.
(Pas de chapitre sur la sécurité ? Sur le tri ? L'obfuscation ?...)

En fait outre ce problème très subjectif, je reproche 4 choses a ce livre :
  1. Il n'est pas écrit par un programmeur Perl mais par quelqun qui connaît bien Perl.
    La nuance est de taille, je n'ai pas retrouvé de passion dans ce livre, avec au bout du compte un livre qui n'arrive pas a captiver...
    (Par opposition au Camel qui reste passionnant de bout en bout...)

  2. Plus embétant, certaines fautes de styles me semblent préjudiciables :

    • Usage d'idiomes C/C++ a la place des idiomes Perl
      Comme par example l'utilisation des boucles
      $lng2=@$rtableau2; for($i;$i<$$lng2;$i++) {...
      ala place des boucles foreach (page 9)
    • Pas de use strict (même pas d'incitation a l'utiliser)
      et des constructions douteuse comme $x{toto} au lieu $x{'toto'} (page 44)
    • Pas de déclaration des variables locales (page 33,58,231...)
    • 'Références douces' pas déconseillées comme OeufMayo me l'a justement fait remarquer
      (lire les articles de Dominus sur ce sujet...)

  3. Un livre qui commence à dater (1998!)
    Avec certaines informations sur les threads ou les refs incompletes par exemple...

  4. Une tendance de l'auteur à plus présenter ses modules que les modules 'standards'.

Mais tout n'est pas a jeter dans ce livre.
De positif, on retiendra :

CONCLUSION

Ce livre reste un bon livre sur Perl, Moins passionant que le CamelBook, moins pratique que le CookBook, il est quand même d'un excellent niveau, tout en restant clair et facile a lire.
Toutefois je ne peux m'empécher d'imaginer ce que ce livre aurait été s'il avait été écrit par un PASSIONNE de Perl...
Et de rêver...
(A quand un livre ecrit par plusieurs Saints du monastère... ;-)

Éditent chipmunk 2001-05-07

Replies are listed 'Best First'.
English translation (Programmation avancée en Perl)
by arhuman (Vicar) on May 09, 2001 at 02:16 UTC
    Advanced programming in Perl

    INTRODUCTION

    I have mixed feelings about this book.
    I was looking for a book about Perl internals,
    which would go a little bit further than the Camel and which would be a little bit easier to grapple with than Perl sources.
    This book partially met my expectations. I found an interesting book on several accounts, with an excellent technical level but some aspects (which I'll detaill below) noticeably reduce this book's value.

    PRESENTATION

    Advanced programming in Perl includes 412 pages.
    It's broken up into 20 chapters :
    1. Data References and Anonymous Storage
    2. Implementing Complex Data Structures
    3. Typeglobs and Symbol Tables
    4. Subroutine References and Closures
    5. Eval
    6. Modules
    7. Object-Oriented Programming
    8. Object Orientation: The Next Few Steps
    9. Tie
    10. Persistence
    11. Implementing Object Persistence
    12. Networking with Sockets
    13. Networking: Implementing RPC
    14. User Interfaces with Tk
    15. GUI Example: Tetris
    16. GUI Example: Perlman
    17. Template-Driven Code Generation
    18. Extending Perl: A First Course
    19. Embedding Perl: The Easy Way
    20. Perl Internals

    And 2 appendices :
    • A. Tk Widget Reference
    • B. Syntax Summary
    REVIEW

    I don't understand the logic of this layout, and it seems a bit 'disjointed'.
    Chapters are, to my mind, quite uneven, some are excellent, others are less good.
    Some areas are VERY (too much?) detailed, like the whole chapter 5 about Eval for example, or the 3 chapters about the GUI.

    More than the topics presentation order, It's their interest (varied) and the reasons why they were choosed that bother me.
    Whatever the author say to justify his choices (these topics were choosed beccause they're what a programmer SHOULD know),
    the choice seems arbitrary, and to say the least questionable.
    (No chapter about Security ? Sorting ? Obfuscation ?...)

    Aside from the above subjective issues, I have 4 specific complaints :
    1. It's not written by a Perl programmer but by someone who knows Perl well.
      This detail is important - I haven't found any passion in this book, hence a book which fails to captivate...
      (As opposed to the Camel, which remains gripping from the beginning to the end...)
    2. More disturbing, some style mistakes seems harmful to me :
      • Use of C/C++ idioms instead of Perlish ones
        Like, for example, the use of this loop
        $lng2=@$rtableau2; for($i;$i<$$lng2;$i++) {...
        instead of foreach loop
        (page 9)
      • No 'use strict' (not even a suggestion to use it)
        and questionable construct like $x{toto} instead of $x{'toto'} (page 44)
      • No lexically scoped variables declaration (page 33,58,231...)
      • 'Soft references' not mentionned as inadvisable, as OeufMayo righlty pointed out
        (read Dominus articles on this topic...)

    3. Written in 1998, it's beginning to show it's age
      With some information on threads and ref incomplete for example...

    4. A tendency from the author to present his modules instead of the 'standard' ones.

    But everything isn't bad in this book :
    On the good side, we'll notice:
    • The style, clear and efficient.
    • The comparison between Perl and other languages (C++,Java,Tcl,Python) at the end of each chapter, which is interesting and objective.
    • The 20th chapter will provide answers to many questions you might have about about Perl internals
      (As long as you have some notions in C).
    • The pointers to other source of information at the end of each chapters, always usefull.
    • The 3rd Chapter, about typeglobs and symbol tables which is VERY enlightning while remaining clear.
      (To be able to understand, for example, why my is faster than local)
    • The tackling of some topics usually not considered although interesting : Serialization, the DIFFERENT tie uses.
    • The excellent overal quality of the book :
      With very few typos and printing mistakes (just a footnote placed on the next page, at the page 17)),
      And an excellent translation, I mean one you just don't notice (I've only found one translation error in all the source codes(page 271))

    CONCLUSION

    This book remains a good book about Perl, less exciting than the CamelBook, less practical than the CookBook,
    nonetheless, it contains excellent and detailed information, while being clear and easy to read.
    However I just can't refrain from imagining what this book would have been if it would have been written by a Perl fanatic...
    And dreaming...
    (How long until a book written by our saints?)
    ;-)
Re: Programmation avancée en Perl
by BooK (Curate) on May 09, 2001 at 12:20 UTC

    You should know that some of our Saints (merlyn, davorg) have already written books on Perl...

    Perhaps they'll mention Perlmonks in their next editions!

      I know, I even believe that danger belongs to that club...
      I meant a book written by several saints alltogether...

      "Only Bad Coders Badly Code In Perl" (OBC2IP)

        And don't forget gnat and KM - and I've probably still forgotten some.

        --
        <http://www.dave.org.uk>

        "Perl makes the fun jobs fun
        and the boring jobs bearable" - me