Outils pour utilisateurs

Outils du site


issue67:critique

Table des matières

1

Think Like A Programmer by V. Anton Spraul (published by No Starch Press) is a 226 page, 8 chapter long book, of typical “technical manual” dimensions. That's essentially where the similarities to most technical instruction books end. As opposed to books like “Programming PHP” or “Beginning Python”, this book doesn't aim at teaching you a specific programming language. Indeed, it assumes a fair amount of knowledge of C++. Which isn't to say that knowledge is necessarily required for this book. If you're comfortable piecing together a working knowledge of C++ through examples, or can convert solutions into a language you're more comfortable with, it should still prove rather enlightening. After all, the actual goal of this book is to introduce you to creative problem solving. Specifically, it tries to teach you a method of approaching complex problems, and to break it into its constituent parts, to allow you to make better progress.

Penser comme un programmeur de V. Anton Spraul (publié par No Starch Press) est un livre de 226 pages, 8 chapitres, et de dimensions caractéristique des « manuels techniques ». C'est ici essentiellement que les ressemblances avec la plupart des livres techniques s'arrête. Contrairement aux livres comme Programmer en PHP ou Débuter en Python, ce livre ne vise pas à vous enseigner un langage de programmation spécifique. En fait, il suppose une bonne dose de connaissance de C++. Ce qui ne veut pas dire que la connaissance soit nécessairement requise pour ce livre. Si vous êtes à l'aise dans la construction d'une connaissance pratique de C++ au moyen d'exemples, ou si vous pouvez convertir les solutions dans un langage où vous êtes plus à l'aise, il se montre plutôt instructif. Après tout, le but réel de ce livre est de vous faire découvrir la résolution créative de problèmes. Plus précisément, il essaie de vous enseigner une méthode d'approche des problèmes complexes, et de le diviser en ses parties constituantes, pour vous permettre de mieux progresser.

Method The first thing that struck me about this book is the method with which they teach. The first chapter is dedicated solely to the strategies for solving problems. They do this by offering puzzles and riddles which, while solvable, aren't immediately answerable by the reader. The reason for this is due to the listener assuming implications that don't exist. For example, assuming the possible actions listed in a problem are the only actions you can take. By exposing you to these sorts of problems from the beginning, the author is hoping to make you more aware of the assumptions you're making. In doing this, you then also become more aware of your specific method for answering problems, allowing you to better follow the later problems and discussions. The answers to each puzzle are also clearly explained in the author's own methodology, while still encouraging the reader to explore other possible solutions. As such, I find this is one of the most helpful books I've read, due to the fact that it guides you towards designing a system for yourself, as opposed to encouraging a mindset where there can be only one correct method.

Méthode

La première chose qui m'ait frappé au sujet de ce livre est la méthode avec laquelle ils enseignent. Le premier chapitre est consacré exclusivement à des stratégies de résolution de problèmes. Ils le font en offrant des énigmes et des devinettes qui, tout en pouvant être résolues, ne sont pas immédiatement trouvées par le lecteur. La raison de cela est dû au fait que l'auditoire suppose des implications qui n'existent pas. Par exemple, en supposant que les actions énumérées dans un problème soient les seules actions que vous pouvez prendre. En vous exposant à ce genre de problèmes depuis le début, l'auteur espère vous rendre plus conscient des hypothèses que vous faites. En faisant cela, vous devenez alors plus conscient de votre méthode personnelle de réponse aux problèmes, vous permettant de mieux suivre les problèmes et discussions ultérieurs. Les réponses à chaque jeu sont aussi clairement expliquées dans la méthodologie personnelle de l'auteur, tout en encourageant le lecteur à explorer d'autres solutions possibles. En tant que tel, je trouve que c'est un des livres les plus utiles que j'ai pu lire, car il vous guide dans la conception d'un système pour vous-même, plutôt que d'encourager une façon de penser où il ne peut y avoir qu'une seule méthode correcte.

2

Excercises Besides discussing the strategies behind problem solving, this book also offers a slew of actual exercises to solve using C++. Obviously, almost all of these problems can all be solved in most programming languages; the answers supplied are simply in C++. Each successive chapter is dedicated to driving the original strategy home. This means that it helps you to break down a problem, to notice which sections of a problem you may have already answered, and how to keep up the motivation to solve a problem. However, each chapter focuses on a specific type of problem. For example, Chapter 2 is focused on input, output and tracking the state of a program, while Chapter 6 focuses on recursion. This approach to teaching helps cement the basic strategies for solving the problems, while helping you apply them to a multitude of practical examples. It also helps you understand certain aspects of programming (especially in C++) that can sometimes be abstract, or confusing to comprehend.

Exercices

En plus de discuter des stratégies sous-jacentes à la résolution de problèmes, ce livre offre également un grand nombre d'exercices réels à résoudre en utilisant C++. De toute évidence, la quasi-totalité de ces problèmes peut être résolue dans la plupart des langages de programmation, simplement, les réponses fournies sont en C++. Chaque chapitre successif est dédié à la compréhension de la stratégie originale. Cela signifie qu'il vous aide à décomposer un problème, à remarquer à quelles sections d'un problème vous avez déjà répondu et comment garder la motivation pour résoudre un problème. Mais chaque chapitre se concentre sur un type spécifique de problème. Par exemple, le chapitre 2 est centré sur l'entrée, la sortie et le suivi de l'état d'un programme, tandis que le chapitre 6 se concentre sur la récursivité. Cette approche de l'enseignement contribue à cimenter les stratégies de base pour résoudre les problèmes, tout en vous aidant à les appliquer à une multitude d'exemples pratiques. Il vous aide également à mieux comprendre certains aspects de la programmation (surtout en C++) qui peuvent parfois être abstraits, ou confus.

Diagrams One aspect of the book that I found made it much more approachable is the liberal use of diagrams, tables, and thought processes. For example, for some of the more convoluted puzzles, the book usually offers a diagram to help explain what is meant. This can help you to understand, but also shows you how to translate word-based problems into visual representations. As such, if you're a big fan of visualization, or simply a visual learner, the method and explanations in this book can be invaluable.

Diagrammes

Un aspect du livre qui, à mon avis, le rend beaucoup plus accessible, est l'utilisation généreuse des diagrammes, des tableaux et des processus de pensée. Par exemple, pour certaines des énigmes les plus alambiquées, le livre offre généralement un diagramme pour expliquer ce que ça signifie. Cela peut vous aider à comprendre, mais vous montre également comment traduire les problèmes écrits avec des mots en représentations visuelles. Par conséquent, si vous êtes un grand fan de visualisation, ou simplement un apprenant visuel, la méthode et les explications données dans ce livre peuvent être très précieuses.

3

Explanations For those who are most comfortable with written explanations, then you will also not be disappointed. The author has a writing style that is both easily understandable, and enjoyable to read. As opposed to most reference books, the author imbues a certain level of life to his prose, allowing otherwise dry and technical explanations to be entertaining.

Explications

Pour ceux qui sont plus à l'aise avec des explications écrites, alors vous ne serez également pas déçus. L'auteur a un style d'écriture qui est à la fois facile à comprendre et agréable à lire. Contrairement à la plupart des livres de référence, l'auteur insuffle un certain niveau de vie à sa prose, ce qui permet à des explications - qui seraient autrement sèches et techniques - d'être divertissantes.

Conclusion Overall, I find this book is an excellent addition to any library of reference books, so long as you sincerely wish to learn. If you approach this book with the intent to learn as much about creative approaches to solving problems, you'll probably find that working through this book goes much quicker (and is much more entertaining) than you might have first assumed. If, however, you're already comfortable solving complicated problems, or have little interest in developing an approach to solving those sorts of problems, this book may be of little interest to you. For anyone uncertain of which group they belong to, I offer this advice: find a physical copy of the book that you can flip through, and looking through Chapters 1 & 2 should give you a very good idea of what to expect. If you have any specific questions, you're welcome to email me at lswest34@gmail.com, and I will do my best to answer them.

Conclusion

Dans l'ensemble, je trouve que ce livre est un excellent ajout à toute bibliothèque d'ouvrages de référence, tant que vous avez sincèrement envie d'apprendre. Si vous envisagez ce livre avec l'intention d'en apprendre beaucoup sur des approches créatives pour résoudre les problèmes, vous trouverez probablement que travailler avec est beaucoup plus rapide (et c'est beaucoup plus amusant) que vous pourriez l'avoir d'abord supposé. Si, toutefois, vous êtes déjà à l'aise dans la résolution de problèmes complexes, ou que vous avez peu d'intérêt pour l'élaboration d'une approche pour résoudre ce genre de problèmes, ce livre peut être peu intéressant pour vous. Pour tous ceux qui ne savent pas à quel groupe ils appartiennent, voici mon conseil : trouver une copie physique du livre que vous pouvez feuilleter et parcourir les chapitres 1 et 2 devrait vous donner une bonne idée de ce à quoi s'attendre. Si vous avez des questions spécifiques, vous êtes les bienvenus à lswest34@gmail.com et je ferai de mon mieux pour y répondre.

issue67/critique.txt · Dernière modification : 2013/01/29 12:20 de andre_domenech