Je suis tombé par hasard sur cette citation de Bill Gates: "Vous devriez absolument m'envoyer un CV si vous pouvez tout lire." Il parlait des livres The Art of Programming . Donc j'étais assez curieux et je veux tout lire. Mais honnêtement, je ne le comprends pas.
Je ne suis vraiment pas intellectuelle. Donc, cela devrait être la raison pour laquelle je ne peux pas le comprendre, mais je suis désireux d'apprendre. Je lis actuellement le volume 1 sur les algorithmes fondamentaux. Existe-t-il des livres qui soient conviviaux pour les novices / les gens lents comme moi, qui pourraient m'aider à approfondir mes connaissances et me permettre de lire facilement le livre de Knuth à l'avenir?
Réponses:
Même moi, je pense que le livre de Knuth est un peu avancé et difficile à comprendre. Ces livres sont définitivement destinés aux algorithmistes de niveau recherche, IMHO.
Introduction aux algorithmes par CLRS est beaucoup plus simple.
EDIT :
Néanmoins, si vous voulez lire le livre de Knuth, vous devez commencer par les mathématiques concrètes . Knuth souhaite que ses étudiants connaissent la partie mathématique de base de l'analyse par algorithmes.
la source
Assurez-vous de lire toute la citation de Gates, y compris ceci:
Ce ne sont pas des livres faciles et ils ne sont pas destinés à l'être. Rappelez-vous que l'un des objectifs de Knuth était d' apporter de la rigueur mathématique à l'informatique . C'est très bien si vous voulez prouver quelque chose à propos d'un algorithme, mais pas si bon si vous voulez juste savoir comment il fonctionne.
Michael Dorfman a quelques bons conseils pour lire les livres dans sa réponse à la question (maintenant supprimée) sur Stackoverflow sur «Que puis-je obtenir de la lecture du lot? . Si vous n'avez pas de représentant 10k, vous pouvez toujours voir la question et sa réponse sur la machine de retour .
Pour d’autres ressources, j’ai trouvé utile de consulter les programmes d’écoles de sciences informatiques réputées. Par exemple, les manuels pour commencer les classes d’algorithmes:
la source
Knuth est l'auteur de l'informatique le plus respecté, cité, discuté et très respecté de l'histoire. Ses livres ornent les étagères de tous les développeurs de logiciels sérieux et font l’objet du même respect que les gens qu’ils accordent à la Bible et à Art of War.
J'ai même entendu dire que certaines personnes avaient lu des extraits des livres de Knuth.
La plupart des gens ont juste l' intention de le faire.
Personnellement, je les garde pour ma retraite
la source
Les livres de Knuth ont changé le domaine des algorithmes pour toujours. Il a lui-même déclaré que "deux pages de mon livre représentent le travail de carrière de quelqu'un" et que ses livres étaient difficiles à lire. Le livre contient de la matière condensée d'années de travail en informatique.
Vous ne devriez pas vous sentir mal si vous ne pouvez pas le comprendre.
Comme Prasoon l'a dit, CLRS est un livre plus simple à lire.
Vous avez également des algorithmes de Rajasekaran, Sahni et autres faciles à comprendre.
la source
Quand j'ai eu mon premier diplôme, j'ai pris les trois premiers volumes de TAOCP comme cadeau de remise des diplômes et essayé de les lire directement. Jamais réussi. Ces jours-ci, j’ai passé au moins peut-être un tiers des trois premiers volumes (pensé sans ordre particulier). Le matériau est vraiment dense, mais j'ai appris trois trucs qui m'ont beaucoup aidé.
Tout d'abord, n'essayez pas de lire d'un bout à l'autre. TAOCP est vraiment un ouvrage de référence, mais j’ai trouvé qu’il était préférable de lire une section quand elle concerne un problème que vous essayez de résoudre. Comme beaucoup de choses dans le monde, il est beaucoup plus facile de comprendre les solutions une fois que vous avez rencontré les problèmes qu’ils essaient de résoudre.
Ensuite, l’organigramme qui se trouve au début du livre indique non seulement un peu d’humour, mais aussi un conseil utile. Lisez les sections sur lesquelles vous travaillez de manière itérative, en commençant par les concepts généraux, puis en approfondissant les mathématiques.
Enfin, gardez du bon vieux papier et un crayon à portée de main pour parcourir les algorithmes tels qu'ils sont décrits, et résolvez quelques-uns des problèmes simples. Cela contribue grandement à renforcer ce que vous lisez.
la source
Ne vous inquiétez pas, la plupart des gens ne comprennent pas l'Art de la programmation informatique (TAOCP). Alors ne vous croyez pas lent ou novice pour ne pas comprendre - vous êtes comme les 99,99% d’autres qui ne l’ont pas.
Vous êtes assez ambitieux si vous voulez atteindre le niveau où vous pouvez lire facilement le TAOCP . J'ai moi-même parcouru les livres avant de les ranger. Il n'y a probablement qu'une poignée de personnes sur cette planète qui comprennent le TAOCP.
Découvrez l'article: Les programmeurs de livres ne sont pas vraiment lus par Bill le lézard.
Il y a beaucoup d'autres livres énumérés ici qui sont assez lisibles , compréhensibles et dont vous pouvez bénéficier immédiatement .
J'aime personnellement:
la source
si vous vous définissez vous-même,
not a highly intellectual being
vous vous fixez de faibles attentes. Vous devez briser cette mentalité si vous voulez faire quelque chose qui vaille la peine. Il ne devrait y avoir aucun doute dans votre esprit que vous pouvez réaliser quelque chose. En outre, cela ne signifie pas que vous y parviendrez facilement.Les choses qui valent la peine d’être poursuivies sont celles qui sont difficiles… et ce n’est pas un cliché. En logiciel, en ingénierie, dans la vie en général, si vous voulez réaliser quelque chose, vous devez rechercher les choses difficiles, les choses que les gens évitent et ne pas se contenter des plus petits dénominateurs communs.
Premièrement, vos antécédents de CS ne sont pas clairs. Le livre de Knuth exige un certain degré de maturité. Peu de personnes ayant un diplôme en informatique peuvent le passer facilement. Je ne m'attendrais pas à ce qu'un étudiant en informatique qui vient de terminer son premier cours d'algorithme soit en mesure de parcourir le moindre livre de Knuth. La maturité nécessaire pour l'obtenir n'est tout simplement pas au rendez-vous et cela n'a rien à voir avec la capacité mentale de l'élève.
Vous devez maîtriser les bases de vos algorithmes, et vous avez besoin de pas mal de programmation (travail et / ou scolastique) à votre actif - je dirais au moins 40 crédits en programmation. Vous devez également maîtriser les mathématiques CS.
Vous ne pouvez pas aller très loin sans avoir une bonne compréhension des mathématiques discrètes (et éventuellement de la théorie du calcul).
Ce n'est pas que vous ayez besoin de cette connaissance pour résoudre les problèmes de Knuth, mais vous avez besoin d'une maturité suffisante pour pouvoir parcourir ce type de matériel.
Choisissez d’abord un livre et un seul livre (le livre de la CLRS comme suggéré précédemment), et travaillez-le du début à la fin. Lorsque cela est possible, les programmes implémentant les algorithmes. N'utilisez pas Java ou C #, pas même C ++. Allez jusqu'à l'os nu C et obtenez le sentiment de construire des objets à partir de déchets de métal sans os.
Obtenez également le livre de Knuth sur "Les mathématiques concrètes" si vous n'avez pas suivi de cours de mathématiques discrètes et de théorie de l'informatique. Ce serait bien que vous parcouriez ce livre également.
Ensuite, abordez l'encyclopédie de Knuth, un livre, un chapitre à la fois. N'entrez pas dans un autre chapitre sans avoir une bonne compréhension du premier.
Je vous suggère de commencer par le volume I (algorithmes fondamentaux), puis le volume III (recherche et tri). Celles-ci devraient être vos objectifs immédiats. Puis, plus tard (beaucoup plus tard), abordez le volume IV (algorithmes combinatoires), puis le volume II (algorithmes semi-numériques).
Ne vous sentez pas mal si vous ne l'obtenez pas au début. J'essaie de traverser les volumes I et III depuis des années (10 ans maintenant).
Et vous ne devriez pas mettre autant de poids dessus non plus. Ne le faites pas pour prouver quelque chose à quelqu'un ou à vous-même. Faites-le parce que vous êtes intellectuellement intéressé à le faire. Vous pouvez devenir compétent dans les algorithmes en utilisant simplement le livre du CLRS (ou n'importe lequel des livres de niveau supérieur disponibles).
Soyez pragmatique et accordez-vous une pause. Traitez le livre de Knuth comme une ambition personnelle à long terme et non comme une preuve immédiate que vous êtes un matériau CS;)
Il y a d'autres choses plus importantes (en termes de carrière) pour lesquelles on se tue;)
la source
Avant même de commencer Knuth, je devais parcourir quatre livres différents. Les deux premiers sont les livres de Sedgewick sur les algorithmes. Celles-ci donnent un aperçu de la plupart des algorithmes et des structures de données sous une forme implémentée réelle, afin que vous puissiez voir ce qu’ils sont et comment ils fonctionnent. Ces livres sont disponibles dans différentes versions linguistiques. Je lis celles en C, mais elles ont été écrites à l'origine en Pascal. Il existe des versions C ++ et Java.
Après cela, j'ai parcouru une bonne partie du livre de Cormen sur les algorithmes et ai utilisé l' introduction à l'analyse des algorithmes de Sedgewick et Flajolet comme complément, car il s'inscrit davantage dans la rigueur mathématique de Knuth que le livre de Cormen. Je n'ai pas encore terminé l'une ou l'autre de ces tâches, principalement en sélectionnant les pièces dont je sens le besoin.
Après avoir lu ces ouvrages et obtenu un diplôme en mathématiques, je peux en lire quelques extraits, mais c'est une lecture difficile. Cela ne veut pas dire que ce n'est pas utile. TAOCP est l’un des meilleurs manuels de référence en matière d’algorithmes, mais il est quelque peu problématique de les utiliser pour "comprendre" complètement tout.
la source