Premiers pas avec Python et Raspberry Pi – critique de livre

1590OS 4628 Getting%20Started%20with%20Python%20and%20Raspberry%20Pi%20(Redirected%20from%20Learning%20Python%20By%20Deve

David Whale m’a envoyé quelques livres à regarder récemment. Le premier, Getting Started with Raspberry Pi Zero, que j’ai passé en revue il y a quelques semaines. J’en viens maintenant au deuxième: Premiers pas avec Python et Raspberry Pi par Dan Nixon.

Je sens que je dois commencer par donner une indication à qui je pense que le livre s’adresse. Il n’est à mon avis, étonnamment, pas adapté aux débutants. Même s’il porte le titre «Getting Started», il convient parfaitement aux personnes qui sont déjà des programmeurs, plutôt qu’aux débutants absolus. La structure du livre, et certains des concepts abordés, se situent davantage à un niveau intermédiaire ou avancé – adapté à ceux qui sont à l’aise avec les concepts de programmation, mais qui ne connaissent pas la façon dont Python «fait». Dans cet esprit, j’ai commencé à me demander, à mi-parcours, si le surnom «Getting Started» ne rendait pas vraiment service au livre.

Le livre commence de manière assez optimiste avec un chapitre sur l’installation de Raspbian et sa configuration. Maintenant, le livre a été publié en septembre de l’année dernière et Raspbian a depuis parcouru un long chemin, en particulier dans le domaine de la configuration du wifi, il y a donc un certain nombre de choses dans le chapitre qui ne s’appliquent plus. Ce n’est pas la faute de l’auteur, bien sûr: Raspbian est un peu un festin mobile en ce qui concerne les interfaces et les fonctionnalités. Cependant, cela me fait me demander: Sommes-nous maintenant au-delà du point où un chapitre d’installation et de configuration est souhaitable ou même nécessaire? Ce chapitre explique également que nous allons utiliser Python 2.7 plutôt que Python 3. C’était un peu décevant car la version 3 est clairement la voie à suivre, mais je peux comprendre l’argument selon lequel il y a plus de bibliothèques disponibles pour 2.7. Je pense, cependant, que même si vous utilisez Python 2.7, vous utiliseriez, par exemple, la syntaxe d’impression (”“) plutôt que la syntaxe d’impression ””, juste pour que lorsque vous passez à Python 3 cela fonctionne simplement ». Malheureusement, la vieille façon de faire certaines choses, indépendamment de toute compatibilité ascendante, est très bien respectée dans ce livre.

Le chapitre suivant concerne les flux de contrôle et les types de données. C’est là que j’ai réalisé que le livre doit être destiné aux programmeurs existants. Plutôt que d’enseigner par l’exemple, ce qui est la façon dont la plupart des livres pour débutants vont de nos jours, ce livre opte plutôt pour une approche ascendante. Cela signifie que les débutants absolus pataugeront à ce stade précoce. En effet, ils peuvent demander « Qu’est-ce qu’un «flux de contrôle»?« Encore une fois, ce n’est pas le contenu du livre qui est en question – en fait, il est très bien écrit et le contenu est formidable pour les programmeurs existants – c’est juste que le titre du livre n’aide pas beaucoup à indiquer qui il vise à.

Les prochains chapitres abordent les structures de données, les E / S, la programmation orientée objet et le threading. Ceux-ci sont très sujets avancés, en particulier OO et threading, et j’ai été surpris de les trouver dans un livre de mise en route. Ils sont les bienvenus de mon point de vue – pouvoir faire plus d’une chose à la fois est la clé de la programmation moderne – mais quand même … Le livre n’a pas vraiment beaucoup appris avant d’arriver à ce point, et je me demande si un le lecteur est prêt pour ces concepts avancés.

Le chapitre suivant, de même, semble très avancé pour un livre de mise en route – il s’agit d’empaqueter votre code. Très utile, mais peut-être aurait-il dû être inclus à la fin pour que lorsque vous avez créé quelque chose de substantiel puis vous pouvez apprendre à le conditionner.

Ensuite, un chapitre sur l’utilisation des broches GPIO du Raspberry Pi via la bibliothèque RPi.GPIO. Avec l’avènement de GPIO Zero, cela semble être un peu «  old-hat  » mais bien sûr, avec une date de publication en septembre 2015, la nouvelle bibliothèque n’était pas vraiment là pour être utilisée. Ce qui est dans le chapitre, cependant, est excellent car il traite de l’utilisation de LED, de commutateurs et également de PWM. Je note que l’auteur utilise toujours «sudo» pour exécuter les commandes Python. Cela ne vous fera aucun mal, bien sûr, mais ce n’est plus nécessaire.

Le module caméra est le sujet du chapitre suivant et je suis heureux que l’auteur ait choisi de suivre l’itinéraire de la bibliothèque picamera car c’est une excellente bibliothèque. Il passe très rapidement à l’utilisation de base puis se met à utiliser le filetage avec la caméra. Cela m’a surpris car j’aurais pensé qu’un guide de mise en route irait davantage dans les fonctionnalités de la bibliothèque picamera. Dans l’état actuel des choses, les fonctionnalités les plus avancées de la bibliothèque sont ignorées ou, dans de nombreux cas, entièrement ignorées. C’est peut-être parce que l’auteur a souhaité revenir rapidement au strict Python, mais c’est une occasion manquée à mon avis.

Le chapitre suivant est extrêmement intéressant et bien pensé. Il traite de la consommation d’API sur Internet dans une variété de formats de données tels que XML, JSON et même comment analyser le HTML à l’aide de BeautifulSoup. Un bon chapitre, mais peut-être qu’une liste d’autres API accessibles aurait été la bienvenue.

La création d’interfaces de ligne de commande consiste à créer des programmes «exécutables» à l’aide de Python. Intéressant, mais encore une fois légèrement au-delà des attributions d’un guide de mise en route.

Le débogage à l’aide de PDB et de fichiers journaux est abordé ensuite. Très utile pour une programmation plus avancée lorsque vous avez besoin de beaucoup plus de traçage. Je ne suis tout simplement pas sûr que le livre ait amené le lecteur assez loin pour mériter d’introduire le sujet.

Enfin, il y a un bon chapitre consacré à la conception d’interfaces graphiques avec Qt. Ceci est très intéressant et utile et couvre l’utilisation de Qt Designer pour concevoir des formulaires et des écrans ainsi que pour interagir avec eux au niveau du code. Le concepteur de formulaires me rappelle Visual Basic et même Microsoft Access! Ce chapitre est particulièrement utile à ceux qui souhaitent pouvoir programmer pour l’environnement de bureau.

Résumer

Ce livre est très bien écrit. Il enseigne aux personnes déjà familiarisées avec la programmation comment faire les choses à la manière pythonique, en couvrant les détails de la structure du code Python et en adoptant une approche plus large d’autres sujets. Cependant, malgré cela, je pense que le titre du livre est trompeur. «Getting Started» indique clairement que le livre convient aux débutants. Les débutants, cependant, seraient perdus au chapitre 2. Je pense que la meilleure façon de le dire est que le livre est génial si vous êtes habitué à une approche partant de la base. Cependant, si vous recherchez un livre avec de nombreux exemples concrets qui vous guident dans la programmation de manière logique et conviviale, alors celui-ci n’est probablement pas pour vous.

Je félicite l’auteur et les éditeurs d’avoir essayé de couvrir beaucoup de terrain avec le livre. Cependant, d’après le titre, ce n’est pas tout à fait ce à quoi je m’attendais!