Existe-t-il une date d'expiration pour les livres bien connus, mais anciens, sur la programmation? [fermé]


51

Après avoir lu une question sur les livres que tous les programmeurs devraient lire , je me demande si ce qui suit devrait être considéré comme obsolète:

Tous ces livres semblent très vieux. N'y a-t-il pas une différence entre l'informatique moderne et l'actualité de l'écriture de ce livre?

Par exemple, mon professeur de 61 ans explique très bien les choses mais oublie de prendre en compte tout ce qui a été fait entre le moment où il a commencé à enseigner il y a 25 ans et maintenant.

N'est-ce pas la même chose pour ces livres? N'y a-t-il pas de livres plus modernes qui enseignent des principes et des technologies plus proches des pratiques actuelles? Ou les considérez-vous comme utiles et pertinents même aujourd'hui?


9
Il serait utile de réfléchir aux raisons pour lesquelles tous les titres énumérés ont été publiés pour la première fois il y a au moins 12 ans, mais sont toujours valables aujourd'hui. Quatre des cinq ont été mis à jour depuis leur première édition, mais le délai moyen entre les éditions est de 10,4 ans.
Caleb

83
Les principes fondamentaux de la programmation ne changent pas simplement parce qu'il existe un nouveau langage ou cadre "saveur de la semaine".
Robert Harvey

26
S'attendre à ce qu'un diplômé en sciences informatiques construise un système informatique complexe revient à s'attendre à ce qu'un diplômé en génie civil conçoive un pont suspendu, cela ne devrait tout simplement pas arriver. L’école ne vous apprend pas tout ce que vous devez savoir, elle devrait vous apprendre à apprendre à devenir un grand ingénieur en logiciel, et ces vieux livres ont autant à dire à présent qu’il ya des décennies - c’est fini 16 ans après la publication de l'édition du 20e anniversaire de The Mythical Man-Month, elle est tout aussi pertinente aujourd'hui que l'original l'a été en 1975.
Mark Booth Le

10
ces livres sont intemporels; mais un programmeur qui se limiterait à ces livres et ignorerait les nouveautés, serait vraiment dépassé
gnat

4
Vous posez la question en quelque sorte: si les livres sont bons, ils ne sont pas obsolètes.
quant_dev

Réponses:


92

Ce livre traite des principes de développement. Ces principes sont, par nature, agnostiques au langage, et pour certains même au paradigme (programmation orientée objet, programmation fonctionnelle, langages impératifs).

Ils expliquent la théorie et les bons moyens de développement car, au final, un logiciel consiste toujours à obtenir des données, à les traiter, puis à les restituer. Facebook, Twitter, 3D, traitement par lots de la comptabilité, gestion du trafic ferroviaire, lancement de fusées, etc.

Les livres qui parlent d’une langue, par exemple "How to learn XXXXX in YY days"XXXXX est une langue et YY, un chiffre qui finira par devenir (et parfois même très rapidement) obsolète, car, par nature, il s’agit de choses qui évoluent ou qui sont remplacées et deviennent dépassé.

Code Complete , de l’impressionnant Steve McConnell, est peut-être le livre qui m’a fait comprendre cela. Et le programmeur pragmatique a totalement changé ma vision du développement logiciel. En lisant de tels livres, vous réalisez que 95% du problème auquel vous êtes confronté au quotidien ont déjà été résolus et que 95% d'entre nous réinventons encore la roue.

Le "nuage" n'est pas l'avenir du développement logiciel, c'est une façon d'utiliser les logiciels développés.

Ne tombez pas dans le piège des mots à la mode et des conneries, concentrez-vous sur la façon dont vous pouvez améliorer vos compétences d'artisan en logiciels.

Concentrez-vous sur l'apprentissage de ce que d'autres esprits brillants ont inventé et appris avant nous, car c'est le seul moyen de devenir un développeur accompli.


6
De bons artistes copient de grands artistes volent
hafichuk

16
... de vrais artistes expédient. :-)
kindall

9
Et pourtant, peu importe le nombre de fois que nous le disons, les gens croient encore qu'ils ont juste besoin de javascript dans 12 jours.
Spencer Rathbun

2
Les bons artistes copient, les grands artistes copient ET gardent le code propre! (J'ai eu tellement de maux de tête à l'école que de travailler avec d'autres enfants qui ont gâché le projet parce qu'ils
copiaient

De plus, avec @SpencerRathbun (IMHO), Javascript est bien plus efficace que d’autres langages, comme PHP. Pourtant, il y a un bazillion "Learn Javascript in 15 seconds"et seulement un demi-bazillion de"Learn PHP on 17 secsonds"
Clement Herreman

80

Tous ces livres semblent très, très, très vieux. "

Psychologie-Informatique-Programmation (1971) - Avec un million de fois plus de programmeurs qu'en 1970, la psychologie de la façon dont ils conçoivent les programmes, de leurs erreurs et de la façon de les éviter est plus importante que jamais.

Outils logiciels (1976) - Le Web étant un ensemble de cadres, d’utilitaires, de scripts et de plug-ins, les idées présentées dans les outils logiciels n’ont jamais été aussi pertinentes.

EDIT: Aborder la question générale de - les anciens livres de programmation sont-ils pertinents?

Les principes généraux du génie logiciel n'ont pas tellement changé, il existe de nouvelles technologies OO, TDD, etc. Mais en général, les utilisateurs et les problèmes n'ont pas changé - et réfléchir à la façon de diviser un problème est la même chose maintenant. a toujours été.

Ces livres plus anciens ont généralement été écrits par des experts dans le domaine. De nombreux livres de programmation modernes ont pour but de créer une barrière de 2000 pages pour le dernier mot à la mode tant qu'il est toujours d'actualité.

Les ouvrages sur les langages et les technologies qui ne sont plus utilisés ne sont probablement pas pertinents - aucun manuel d'assembleur Vax ne figure sur la liste. Mais 'C' est toujours très utilisé et 'The C programming language' n'est pas seulement le meilleur livre sur 'C', c'est aussi un modèle pour rédiger un tutoriel concis et une référence à votre langue.

Y a-t-il de nouveaux algorithmes? Oui. Mais tous les anciens algorithmes sont toujours pertinents et la plupart des nouveaux sont situés dans des zones obscures que vous ne rencontrerez probablement pas. Personne n'a mis au point un meilleur type ou FFT récemment. Bien que d'autres personnes aient tenté de mieux les expliquer, rien ne justifie que les livres d'algorithmes de cette année soient meilleurs que ceux du CLRS.

ps. Votre nouvel iWhatsit fonctionne sous BSD, développé en 1977. Maintenant, vous les enfants, sortez de ma pelouse!


28

Tous ces livres semblent très, très, très vieux. Ne pensez-vous pas qu'il y a une différence entre aujourd'hui et quand ces livres ont été écrits?

IMHO, il n'est pas surprenant que les très bons livres restent populaires au fil des décennies - cela montre à quel point ils sont bons. Mais je pense pouvoir vous dire quelque chose pour chacun des candidats que vous avez énumérés:

Code complete: 2nd edition = may, 2004

En fait, la première édition de "Code complete" date de 1993, elle est donc vraiment un "classique". Il s'agit d'un style de base, utilisant des exemples qui s'appliquent à presque tous les langages de programmation de la famille C, qui contient les langages les plus populaires de nos jours (C / C ++ / Java / C # / Objective-C / D / ...). Donc oui, ce livre est à jour.

Introduction to algorithms (Cormen, Leiserson, Rivest, Stein)

En fait, je n'ai en fait pas lu ce livre (mon manuel d'algorithmes provenait de "Sedgewick"), mais l'apprentissage des algorithmes et de la construction d'algorithmes est vraiment indépendant du langage. Bien sûr, ce métier est de moins en moins connu ces dernières années, car on trouve aujourd'hui de nombreux algorithmes de base dans les bibliothèques standard, mais à mon humble avis, chaque programmeur professionnel devrait avoir des connaissances de base dans ce domaine.

The Pragmatic Programmer

C'est un très bon livre sur la programmation en tant qu'artisanat. Langage agnostique et très, très actuel, tant que la programmation est effectuée manuellement par les programmeurs, à l'aide d'éditeurs de texte, d'EDI, de contrôle de version, etc.

Structure and Interpretation of Computer Programs: = September 1, 1996

Ceci est mon préféré, même si (ou peut-être parce que) le livre utilise Scheme pour vous apprendre les différences entre différents paradigmes de programmation. Je ne connais aucun autre livre qui consacre une telle importance à la construction d'abstractions. Et construire des abstractions est une capacité clé qui fait la différence entre un programmeur médiocre et un programmeur de haut niveau - cela n’a pas changé depuis les dernières décennies, alors vraiment, ce livre est intemporel. En outre, les langages fonctionnels et les éléments de langage sont devenus plus populaires récemment, alors les idées présentées dans ce livre ont connu une renaissance.

The C Programming Language

Eh bien, ce livre n’est peut-être pas aussi intemporel que les quatre autres. Mais puisque C est quelque chose qui ressemble à la "mère" de tous les langages populaires que j'ai énumérés ci-dessus, il serait peut-être une bonne idée de lire ce livre non plus - je ne pense pas qu'il existe des livres "C" modernes qui sont vraiment meilleurs. Et si vous devez effectuer une programmation de maintenance du code C ++ écrit par quelqu'un qui connaissait mieux le C que le C ++, alors ce livre est un must.

Enfin, vous demandiez des livres qui tiennent davantage compte de la "réalité actuelle", sans être trop spécifiques à la technologie. Quelle est donc la "réalité actuelle" et qu'est-ce qui a changé du côté de la "non-technologie"? Voici quelques points de la dernière décennie, sans dire que cette liste est complète ou a les bonnes priorités.

  1. Il existe plus de code hérité (notamment plus de code hérité non seulement en Fortran et Cobol, mais également en C ++ et Java).
  2. Les tests unitaires et TDD sont devenus plus préférés.
  3. Il y a beaucoup plus de code source ouvert disponible.
  4. OO a de plus en plus de critiques

(Je ne liste ici rien sur le développement Web ou App, car je pense que cette technologie est spécifique).

Il existe de bons livres pour les sujets 1 et 2, en particulier "Clean Code" de 2008 et "Travailler efficacement avec du code hérité" de 2004. Peut-être que ce sont les "nouveaux" livres que vous recherchez?


5
Le langage de programmation C est intemporel. Un tel livre distillé est rare. Je l'ai relu pour le ... Je ne sais pas, j'ai perdu le compte (je l'ai lu pour la première fois à l'âge de 13 ans) et je l'apprécie toujours. Au contraire, je l'apprécie beaucoup plus maintenant.
Francesco

3
Je vais ajouter le numéro 5 à votre liste: l'informatique parallèle. Ce n'est pas vraiment une idée nouvelle , mais de nos jours, cela se fait à une échelle sans précédent, ce qui soulève de nouveaux problèmes. Mais tout cela est toujours construit sur les mêmes fondements que l'ancien, et j'ai l'impression que le PO ne comprend toujours pas vraiment ces fondements.
Mike Baranczak

2
@ Mike: Je suis d'accord, l'informatique parallèle attire de plus en plus l'attention au cours de la dernière décennie, j'ai raté cela lorsque j'ai écrit ma réponse.
Doc Brown

2
@Doc Brown Votre point de vue sur l'intemporalité de la littérature est-il dû aux visites que vous avez effectuées en 1885, 1955, 1985 et 2015 dans quelques jours à partir de votre propre perspective?
Kalamane

13

Parmi ceux que vous avez mentionnés comme "Code complet", "Le programmeur pragmatique" et "SICP" figurent sur ma liste de lecture recommandée pour tous les nouveaux développeurs qui commencent ici dans mon entreprise et souhaitent passer à un niveau supérieur.

Ils ne sont pas obsolètes, car la science fondamentale en informatique n’a pas changé.


10

Je n'ai pas lu tous ces livres, mais je possède Code Complete et The Pragmatic Programmer. Ces livres sont loin d'être obsolètes. Ils ont peut-être quelques paragraphes un peu rouillés mais la majeure partie du contenu est toujours d'actualité.

Le progrès en informatique et en programmation est un processus évolutif . De nouvelles abstractions sont introduites par-dessus d'anciennes, mais ces nouvelles choses ne rendent pas nécessairement l'ancienne obsolète.

Une analogie ... Que vous soyez étudiant en chirurgie traumatologique ou spécialiste en transplantation cardiaque, vous devez toujours savoir comment fonctionne le corps humain, la chimie cellulaire, les systèmes organiques, comment ouvrir rapidement la poitrine et comment s'ouvrir. arrêtez de saigner si cela se produit, etc ... Ce n'est pas parce qu'ils ont inventé le matériel endoscopique et des techniques moins invasives que vous êtes prêt à tout pour apprendre les bases. Cela signifie seulement que vous devez en apprendre davantage.


Oui, l'anatomie de Gray (le vrai livre, pas l'émission de télévision) a été écrite en 1918 et les étudiants en médecine l'utilisent encore.
HLGEM

7

Le "nuage" n'est pas un facteur. Le "nuage" est en réalité beaucoup plus ancien que la plupart des livres que vous avez énumérés. la plupart de ces livres traitent de principes de base, ils ne changent pas vraiment souvent. Les frameworks et les bibliothèques changent tout le temps, mais la structure de votre code ne change pas beaucoup. De même, un pointeur est toujours un pointeur, il ne commence pas à faire des choses différentes simplement parce que. Le seul livre spécifique à une langue que vous avez répertorié concerne C, auquel cas ce livre est beaucoup plus utile que tout nouveau, car il a probablement été écrit plus proche de la période de développement du code C avec lequel vous travailleriez.


6

La liste que vous avez citée, non, ils ne sont pas obsolètes. Un livre n'est obsolète que lorsque le sujet a suffisamment changé pour ne pas être utile. La nature de la programmation et le langage C ont très peu changé depuis la publication


6

Une des choses que vous devez comprendre est qu’il existe des principes sous-jacents qui sont essentiellement intemporels et des implémentations qui vont et viennent.

Les principes sous-jacents sont essentiellement toute la théorie ennuyeuse sur laquelle l'informatique a tendance à passer beaucoup de temps, et cela reste valable même si le monde change autour. Ceci par opposition à des choses comme "Comment utiliser Win32s sous Windows 3.11" qui est très ancien et obsolète.

Pour mettre les choses en perspective, le texte canonique sur la géométrie a deux mille ans. La plupart des mathématiques enseignées jusqu'au niveau universitaire ont au moins 300 ans. La seule raison pour laquelle les livres CS ne sont pas anciens, c'est parce que le champ est toujours nouveau.


La proposition 1 du livre 1 d'Euclide ne peut pas être prouvée par les définitions, les axiomes et les postulats fournis. Ce n'est pas un bon choix d'apprendre aujourd'hui, et après des millénaires, on peut considérer qu'il est dépassé.
David Thornley

1
@DavidThornley si Euclids Elements n'est pas le texte canonique sur la géométrie, quel est?

6

Certains livres sont intemporels car ils abordent des idées qui sont si fondamentales pour la pratique du développement logiciel qu’ils seront toujours appliqués.

Prenons, par exemple, le mois de l'homme mythique , quand je lisais ce livre, j'oubliais qu'il avait été écrit en 1975. Quand il se mêle de temps en temps à la référence d'IBM System 360, il m'emballe toujours parce que c'est le seul contenu datant de la livre. Tout le reste s'applique ici et maintenant. Je conserve toujours mon exemplaire de Patterns of Enterprise Application Architecture de Martin Fowler , maintenant âgé de 9 ans mais encore intemporel et toujours applicable au travail que je fais aujourd'hui.

Mon livre préféré en ce moment est La modélisation Java en couleur avec UML (1999) de Peter Coad, même si je suis un développeur C # et évite UML, car les techniques et les concepts font de moi un meilleur codeur.

Nous ferions bien d'apprendre de la première génération de développeurs, car ils ont parcouru le sol que nous connaissons actuellement et leur sagesse durement acquise peut nous aider à prendre une longueur d'avance sur ce que nous faisons / apprenons aujourd'hui.


MMM - J'aime la partie sur l'équipe qui
répare

5

Les principes de base du logiciel n'ont pas changé au cours des 20 dernières années. Une pile, un arbre et une liste chaînée fonctionnent toujours comme auparavant. "XOR" signifie toujours la même chose. Un octet a encore 8 bits.

Etes-vous sérieusement en train de suggérer que le "développement multiplateforme" est une nouvelle idée? Pourquoi pensez-vous que C a été inventé?

"Cloud" est un mot à la mode marketing. Cela voulait dire quelque chose de spécifique, mais il a été dégradé par la surutilisation. De nos jours, chaque fois que vous communiquez avec un serveur distant via un réseau, les spécialistes du marketing y apposent l'étiquette «nuage». Il est donc inutile de parler de cela, car c'est un mot dénué de sens.

Je ne connais pas votre professeur de 61 ans, je ne peux donc pas le garantir. De votre côté, vous n’êtes clairement pas aussi intelligent que vous le pensez. Écoutez le professeur, il est possible que vous appreniez quelque chose.


"Tu ne deviens pas vieux en étant pas dupe. Beaucoup de jeunes hommes sages, ils sont morts en enfoirés." - Richard Pryor


2
"Vous, en revanche, n'êtes pas aussi intelligent que vous le pensez". Si je pensais être aussi intelligent, je n'aurais jamais posé une telle question.
Olivier Pons

4

Voici quelques livres très anciens et obsolètes:

  • L'art de la programmation informatique, vol. 1-3 par D. Knuth. Celles-ci ont été publiées entre 1968 et 1981! Nous n'utilisons plus de tubes à vide, les gens! Tout dans ces livres sont boiteux. Où est la discussion sur Python et Ruby?

  • Computers and Intractability: Un guide sur la théorie de la NP-Complétude par MR Garey et DS Johnson, 1979. Super boiteux! Tous ces problèmes ont probablement déjà été résolus.

Si aucun livre n’a été écrit au cours des trois dernières années en Python, sa lecture ne vaut pas la peine.


En toute justice, il est au moins possible de démontrer que l'utilisation par TOCP d'un assembleur pour son pseudo-code signifie que les algorithmes plus modernes, utilisant des pseudocodes plus proches des langages plus modernes, sont plus utiles pour les 90% + d'entre nous qui n'écrivons pas pour systèmes.
Peter Taylor

-1: toutes les semaines ou toutes les deux semaines, je vois quelqu'un qui demande un algorithme pour gérer quelque chose que Knuth a décrit avec des détails incroyables. Juste pour le plaisir: nommez un algorithme de tri plus récent que 1981. Vous souhaitez répondre à un tri parallèle? Knuth a des pages sur le tri des données en parallèle. Vous avez peut-être raison sur les livres Python, mais il existe une énorme différence entre les livres "Saveur de la semaine" et les livres de génie.
sarnold

5
Apparemment, certains détecteurs de sarcasmes sont cassés ...
DaveE

1
<Sarcasm> "Comment" </ Sarcasm>
NWS

1
Je pense que cette réponse donnerait encore plus de sens si elle incluait la mention du volume 4A de The Art of Computer Programming , publié en 2011, et du volume 5, prévu pour 2020!
Mark Booth

3

Ces livres ne sont pas obsolètes, ces livres sont des classiques.

Pour citer Kaplansky , " passez chaque jour tous les jours à apprendre quelque chose de nouveau et qui ne correspond pas au problème sur lequel vous travaillez actuellement (souvenez-vous que la disjonction peut être temporaire) et lisez les maîtres . "


3

Je sais ce que vous voulez dire, quand nous avons des avancées (LINQ me vient à l’esprit) qui changent la lisibilité et l’utilisation du code, mais le fait que ces livres soient anciens ne signifie pas qu’ils n’offrent pas d’excellentes leçons au lecteur.

Bien que les langages de programmation qu'ils utilisent puissent ne plus être à la mode, la théorie qui les sous-tend encore est vraie aujourd'hui. La plupart de ces livres insistent sur le fait de bien couvrir les bases, et les bases n'ont pas tellement changé.


2
Les langages de programmation qu’ils utilisent sont pour la plupart «C» - ils sont peut-être tombés hors de la mode, mais leur utilisation a considérablement augmenté.
Martin Beckett

3
Vous devriez lire SICP, cela pourrait vous ouvrir les yeux sur l'origine de LINQ :)
Joris Timmermans Le

1

L'industrie informatique est encore très jeune. Les livres écrits il y a 30 ans me paraissent toujours précieux et nécessaires à une compréhension complète. Les concepts abstraits prennent parfois un certain temps à digérer.


1

Certaines parties mineures sont obsolètes dans tous ces livres, mais 99% est toujours aussi bon.

Les livres d'algorithmes vont vieillir lentement. Les algorithmes sont des maths, et les maths ne changent pas rapidement. Bien sûr, il existe encore des recherches sur de nouveaux algorithmes supérieurs dans certaines circonstances (par exemple, l'algorithme de Furer (2007) de Schonhage-Strassen pour la multiplication de plus de 40000 chiffres), mais l'introduction vous oblige à apprendre les bases (diviser pour mieux vaincre / Programmation dynamique / Programmation linéaire / etc) afin que vous puissiez apprendre à penser raisonnablement aux algorithmes.

L'apprentissage de la norme C de K & R reste la meilleure source. bien que je ne sois pas sûr de pouvoir faire confiance à leurs sections sur la configuration de votre environnement.

SICP est un livre merveilleux et enseigne les fondements de la société de l'information moderne en enseignant le lisp, une langue merveilleuse. Cependant, lisp n'est sans doute pas la langue la plus utile de nos jours; Lisp est l'arme secrète de certains, mais l'apprentissage de langages comme Java ou Python est d'abord un très mauvais programmeur qui n'a jamais besoin d'apprendre à implémenter des listes de tri, des listes chaînées ou des tableaux ou la notation Big-O pour finalement faire des choses très inefficaces.

Certains programmeurs Code Complete ou Pragmatic sont moins pertinents, en particulier si vous programmez dans des langages plus récents (par exemple, python / ruby ​​/ C ++ 11), car il est souvent centré sur la manière de faire quelque chose en C ou donne des solutions recommandées en utilisant le meilleur outils disponibles à l’époque (comme CVS / RCS pour le contrôle de version plutôt qu’un outil moderne comme git / bzr / hg / svn). Mais il est toujours bon de penser que le contrôle de version est indispensable et qu’il doit être transparent, s’auto-documenter et comprendre la logique de la raison pour laquelle il s’agit d’un impératif absolu.

Ou encore les recommandations de PP contre les IDE pour les outils de base éditeur / éditeur unix - cela ne veut pas dire que vous ne devriez pas apprendre à utiliser find / awk / local / grep / sed, mais un bon IDE peut souvent vous faire gagner beaucoup de temps. Par exemple, emacs peut mettre en évidence la syntaxe ou compléter le code simplement; mais disons qu'un bon IDE dira de donner des info-bulles avec les déclarations de fonction lorsque vous les saisissez, d'analyser du code et de marquer des variables inutilisées, de simplifier la réduction de sections de code, etc.


1

N'y a-t-il pas une différence entre l'informatique moderne et l'actualité de l'écriture de ce livre? Pensez-vous que cela change ce que nous devrions apprendre? Ne devrions-nous pas prendre en compte les développements des 20 dernières années?

Oui, oui et oui.

Cela ne rend pas ces livres obsolètes. "Informatique moderne" est un terme incroyablement large. Cependant, il inclut la programmation C, de sorte que "Le langage de programmation C" est toujours un livre pertinent. Il comprend des algorithmes, de sorte que "Introduction aux algorithmes" est toujours un livre pertinent. Etc., etc.

L’accent mis actuellement sur le développement multiplateforme (voir phonegap) devrait-il changer ce que nous apprenons aujourd’hui?

La plupart des applications de l'App Store (pour utiliser la plate-forme mobile la plus populaire à titre d'exemple) sont écrites en Objective C, un langage du début des années 80 qui est un sur-ensemble de C. Donc, encore une fois, le langage C reste pertinent.

Pensez-vous que le "nuage" est une mode ou le futur?

C'est notre présent.

Quand les étudiants sortent de l'université, ils sont supposés être de vrais développeurs et être capables de travailler immédiatement

Mais qu'est ce que ça veut dire?

Il existe trop de langues, d'API, de cadres, de plates-formes, d'outils, de stratégies de collaboration, etc. pour que l'école vous prépare à un travail spécifique . L’école ne peut que jeter les bases en vous fournissant un modèle de travail de base sur le fonctionnement de la machine, sur les algorithmes, les structures de données, la construction de code, les stratégies de décomposition, certains outils, etc.

Un "vrai développeur" n'est pas quelqu'un qui sait tout, mais quelqu'un qui a la capacité de faire ce genre de travail, qui a des bases théoriques et pratiques et qui sait apprendre , car votre éducation ne se termine jamais.


1
+1 pour le commentaire 'Comment apprendre' - c'est à ça que servent les étudiants, pas la formation professionnelle par cœur.
DaveE

1

Ok, je vais donc proposer une réponse beaucoup plus théorique. Je suis d’accord avec tous ceux qui ont répondu à la question, ce qui est assez évident à mon avis, c’est la base de ce que nous faisons en tant que programmeurs et tous ces nouveaux cadres reposent sur ces mêmes piliers.

Voici mes deux cents - pas vraiment les miens, je l'ai appris de Saint-Aquinas et d'Aristote avant lui.

An abstraction is useless to someone who doesn't understand the particulars.

La mécanique d'un ordinateur n'a pas changé depuis von-neumann. De même, les détails dont vous avez besoin pour apprendre à être un bon programmeur resteront les mêmes jusqu'à ce que le modèle de von-neumann soit obsolète. L’assemblage, c’est le langage informatique… apprenez-le, pas d’excuses.

C est la langue maternelle de Windows et Unix. Apprenez-le ou trouvez un nouveau métier. Si vous êtes un de ces types qui sont passés directement à JAVA ou à C #, vous pouvez être un bon programmeur, mais vous seriez un meilleur programmeur si vous appreniez C - un point.

Les algorithmes et les structures de données sont la base des programmes informatiques, apprenez-les.

Tout le reste est une abstraction de ces disciplines fondamentales. Les abstractions sont merveilleuses lorsqu'elles sont utilisées correctement-- sérieusement, j'utilise C # pour 75% de tous mes projets. Cependant, ils vous rendent stupide si vous ne prenez pas le temps de comprendre comment ils fonctionnent et comment fonctionner sans eux. Vous passerez un temps infini à créer des logiciels à traverser le trou carré proverbial lorsqu'il existe de bien meilleures approches et que des bugs auraient pu être évités. Le développement de logiciels est un métier qu'il faut maîtriser et, au bout du compte, les outils changent rarement. C'est pourquoi ces livres sont si importants.

Tous ces programmeurs JAVA et C #, tsk, je parie que la plupart d’entre eux n’ont même jamais vu un épisode de Star Trek!


1

J'ai entendu un dicton d'un mentor:

"Un bon conseil vient avec une raison pour que vous sachiez quand ce n'est plus un bon conseil." Donc, dans les termes du livre, un livre qui explique pourquoi faire X sur Y vous permettra de savoir quand cet avis n’est plus valable. Un livre "Fais-le toujours, fais-le", comme certains des cours intensifs du langage X n’est pas si bon.

J'en ai vu un appelé "learn unix in 24 hours", eh bien le livre faisait environ 8 cm d'épaisseur, je doute que beaucoup de gens puissent même lire chaque page en 24 heures :)

Rappelez-vous que ce qui est en vogue aujourd'hui pourrait être bafoué demain. Tous les éléments suivants ont déjà été considérés comme courants (en vogue hier), mais ne le sont plus:

  • Aller à
  • Entrée unique sortie unique
  • Notation hongroise
  • Approche cascade

Et il y a quelques choses qui étaient autrefois complètement anathèmes mais qui sont maintenant acceptées:

  • La récursivité comme outil de résolution de problèmes (radical au début du BASIC)
  • Allocation de mémoire au moment de l'exécution avec malloc / new
  • Utilisation de la STL C ++
  • Langues récupérées pour les systèmes temps réel

Sachez pourquoi, et vous saurez quand d'anciennes hypothèses ont été remplacées par une nouvelle réalité, de même que les conseils.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.