Il y a beaucoup de livres sur la programmation, et il semble que Code Complete figure en tête de la liste des "livres de programmation à lire absolument", mais qu'en est-il de The Art of Computer Programming de Donald Knuth? Je suis une personne occupée, entre le travail et une jeune famille, je n'ai pas beaucoup de temps libre, je dois donc être pointilleux sur la façon dont je l'utilise.
Je me demande si quelqu'un ici a lu 'TAOCP'? Si oui, vaut-il la peine de prendre le temps de lire ou un autre livre ou une programmation plus parallèle, comme des projets pour animaux de compagnie, ou contribuer à l'open source, serait-il une meilleure utilisation de mon temps en termes de développement professionnel?
AVERTISSEMENT - Pour ceux qui portent les t-shirts "Knuth est mon petit ami", ne vous méprenez pas - je veux le lire, mais je me demande si cela devrait figurer en tête de ma liste de priorités ou si quelque chose d'autre doit venir en premier.
Réponses:
TAOCP est une référence inestimable pour comprendre comment les structures de données et les algorithmes que nous utilisons tous les jours et pourquoi, mais s'engager à le lire intégralement constituerait un investissement extraordinaire de votre temps.
En tant que père de famille, passez le temps avec vos enfants.
la source
Dans votre question, remplacez «l'encyclopédie» par chaque référence au TAOCP, et je pense que la réponse devrait être évidente. Parce qu’à bien des égards, c’est ce que le TAOCP est.
Il y a une histoire (peut-être apocryphe) de Steve Jobs rencontrant Knuth. La première chose que Jobs lui ait dite était "C'est un plaisir de vous rencontrer, Dr Knuth. J'ai lu toutes vos œuvres!". La réponse de Knuth était "Vous êtes plein de merde": http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt
la source
Non, cela ne devrait pas être en haut de votre liste de priorités. J'ai un ensemble complet et je n'ai pas lu le tout. Je l'ai utilisé (jusqu'à présent) comme une bonne référence sur certains problèmes (par exemple, il m'a été très utile pour comprendre l'aléatoire et tester les générateurs aléatoires). À chaque fois qu'un sujet de CS sur lequel je ne suis pas vraiment au courant survient, j'ai tendance à saisir le morceau pertinent de TAOCP comme un pas en avant dans ma compréhension.
Si vous décidez de le lire, vous aurez plus de pouvoir et je vous recommande vivement de le prendre par petits morceaux. N'ayez pas peur de sauter et de regarder ce qui est le plus intéressant en premier.
la source
TOACP est une lecture essentielle - à un moment donné. Selon ce que vous faites quotidiennement, ce n'est peut-être pas le plus urgent.
C’est l’un de ces livres (bien sûr, des recueils de livres) qu’il est bon de lire au début de votre carrière car il vous donne de bonnes idées que vous n’auriez normalement pas apprises plus tard, mais ce n’est pas essentiel à la survie avant d’être diplômé. de votre carrière où vous ne codez pas, vous choisissez la boîte à outils. C’est le point où vous voulez vraiment étudier les algorithmes, si tout va bien comprendre un peu la conception du langage, et avoir une compréhension très large des outils, langages et systèmes existants, et de la manière dont chacun s’intègre dans l’écosystème de choses que vous pouvez. s'appuyer sur un projet particulier.
En d’autres termes: c’est un apprentissage global, donc si vous êtes obsédé comme moi, lisez-le maintenant, sinon, vous pouvez le reporter jusqu’à ce que vous souhaitiez gravir les échelons et devenir un grand type.
la source
Ayant récemment entrepris cette tâche, je peux dire que la façon dont il écrit est très agréable et que les problèmes sont étiquetés (selon la difficulté) très correctement. Obtenez le premier volume et lisez les chapitres 1 et 2 et voyez comment vous l'aimez.
la source
TAOCP est un excellent travail, mais le lire serait un investissement de temps terrible pour un développeur de logiciels en exercice. Si vous le faites, vous sacrifierez quelques années (c'est le temps que cela prendra) de votre budget d'amélioration personnelle pour en apprendre trop sur trop peu.
Je recommanderais de travailler sur un ou plusieurs livres moins "ultimes" sur les algorithmes. Mon préféré dans ce domaine est The Algorithm Design Manual de Steven S. Skiena.
Ensuite, si vous sentez que vous avez besoin / désirez plus, rendez-vous au Knuth.
Dans le même temps, vous pouvez acheter un ou plusieurs volumes de TAOCP, y jeter un coup d'œil pour comprendre quelles zones sont couvertes par Knuth et le conserver dans votre bibliothèque au cas où vous auriez besoin de quelques informations dans votre travail quotidien. travail. Mon hypothèse est que vous ne le feriez pas et c'est une autre raison pour laquelle je ne conseille pas d'essayer de lire. Mais si vous vous retrouvez à le référencer assez souvent, alors vous saurez que votre lecture en vaut la peine.
la source
Le travail séminal de Knuth est la référence la plus populaire que les programmeurs ont l' intention de lire ou de finir de lire. Un jour.
la source
+10 sur le commentaire famille / enfants. J'essaie de lire le plus souvent tout en continuant de voler les yeux rouges des clients.
Mais ... oui, ça vaut vraiment la peine d'être lu. Aucune raison de lire de manière linéaire, au lieu de feuilleter et de choisir quelques sujets d'intérêt.
la source
Je suis résolument dans le camp des personnes qui estiment que chaque développeur devrait investir dans l'obtention des livres à un moment donné (et cela devient de plus en plus facile maintenant qu'il semble qu'ils soient réimprimés en livre de poche ), mais je le ferais également. De plus, ayez du mal à croire que quelqu'un s'assoirait et les lirait de bout en bout.
La meilleure façon de les aborder - si vous n’avez pas le temps de vous rendre au travail où vous avez du temps libre pour vous asseoir et lire - consiste à en lire suffisamment pour savoir où trouver quelque chose en eux, puis à lire un chapitre complet chaque fois que vous le souhaitez. trouvez-vous de les utiliser comme ouvrages de référence pour un problème donné. Avec Google et Stack Overflow, il est moins courant de rechercher des ouvrages de référence, mais dans certains cas, vous constaterez peut-être que ces ouvrages donnent une idée de la nécessité de passer plus de temps à chercher sur Internet.
la source
N'oubliez pas qu'au début, Knuth voulait écrire quelque chose sur la façon d'écrire un compilateur.
Vous pouvez obtenir beaucoup d’informations sur le net avec Wikipédia par exemple, mais si vous n’êtes pas un chercheur, il suffit de lire le résumé pour obtenir satisfaction.
Vous pouvez toujours obtenir le premier tome pour pouvoir le lire quand vous vous ennuyez ...
la source
Il est probablement plus important de résoudre ce problème dans le livre que de le lire. Cela demandera beaucoup de temps.
Il est capable de 4 volumes et 5 fascicules (quels que soient ceux-ci), donc terminer les livres serait probablement mieux qu’un cours universitaire sur les bases de l’informatique et ferait de vous le meilleur programmeur de tous les temps.
Depuis que tu as une jeune famille, comme moi, tu me as donné une bonne idée de la houle. J'achèterais les livres un à un et les enseignerais à vos enfants.
la source
Si vous êtes curieux, faites-le, mais comme il faut un certain temps pour le digérer, vous devez prendre votre temps.
Avez-vous un trajet où vous pouvez lire - ce serait parfait.
EDIT: Vous pourriez trouver cet aperçu d’une petite partie du volume 4 intéressant: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz
(note: post-scriptum compressé)
la source
Ce n'est pas quelque chose que la plupart des gens voudront s'asseoir et lire de bout en bout, non. C'est une référence incroyablement précieuse, et il est certainement bon de la reprendre, de choisir une section intéressante, de la lire et de faire des exercices. Mais les comparaisons faites dans les encyclopédies ci-dessus sont plutôt aptes ... c'est grand, détaillé et détaillé. Et certains des "exercices" sont des problèmes de recherche qui peuvent prendre des années à résoudre.
Si vous souhaitez simplement mieux connaître les algorithmes de bas niveau, commencez par les livres de Robert Sedgewick (par exemple, "Algorithms in C", "Algorithms in Java", etc.).
la source
Si vous voulez changer le monde, lisez-le. Si vous voulez apprendre de nouvelles techniques, alors ne le lisez pas.
la source
Le TAOCP de Knuth est un chef-d'œuvre. Mais, tout comme n'importe quel chef-d'œuvre (comme "Illiad", "Guerre et Paix" ou "À la recherche du temps perdu" de Proust), ce n'est pas pour tout le monde ni pour les heures supplémentaires.
Le livre est très bien écrit et très bien documenté. Les problèmes sont importants et l'explication des algorithmes est bien faite.
Le grand problème de ce livre est le fait que Knuth affiche le code d’un langage assembleur fictif pour un ordinateur fictif. Je comprends pourquoi il l’a fait, mais le fait est que ça craint.
Je recommande d'utiliser ce livre comme une bible. Lorsque vous en avez besoin, cherchez-le. Vous trouverez la réponse. Cela m'est arrivé plus d'une fois!
la source