Le livre «Structure et interprétation des programmes informatiques» est-il une bonne lecture pour les programmeurs Java? [fermé]

14

Cela peut être subjectif et probablement fermé, mais je voulais quand même savoir si c'était vraiment utile de lire Structure et interprétation des programmes informatiques.

Structure et interprétation des programmes informatiques

Le livre n'utilise pas Java. Non pas que je veuille apprendre Java. Je suis juste curieux de savoir s'il sera utile de lire pour être un meilleur programmeur et quelles sont les choses que je peux gagner du livre ou leurs autres alternatives à ce livre sont-elles plus adaptées aux programmeurs Java?

ashishjmeshram
la source
32
Pour commencer, essayez de ne pas vous positionner comme un "programmeur java". Ou en tant que "programmeur quelle que soit la langue". C'est une impasse. Soyez juste un programmeur à la place. Et puis, SICP va être extrêmement utile. Probablement, la lecture la plus utile.
SK-logic
3
C'est très difficile, c'est pourquoi vous le lisez.
Jonathan Henson
4
Commencez par le premier chapitre, allez page par page, travaillez tous les exemples, ne progressez pas avant d'avoir compris chaque page et chaque exemple. Le corrigé est en ligne.
Jonathan Henson
2
@JonathanHenson et quand vous arrivez à la fin, arrêtez
jk.
3
Oui, vous devez apprendre Scheme. Cependant, l'une des raisons pour lesquelles le livre utilise Scheme est que vous pouvez apprendre l'intégralité de Scheme en environ une journée si vous n'avez jamais programmé auparavant ou environ 10 minutes si vous en avez. Après tout, SICP est un livre pour débutants complets, il ne suppose absolument aucune connaissance en programmation.
Jörg W Mittag

Réponses:

23

Eh bien, je ne sais pas si ce livre vous aidera, mais quand j'ai travaillé moi-même sur ce livre il y a environ 20 ans, cela a définitivement amélioré mes compétences en programmation (indépendamment de tout langage de programmation). Et je suppose qu'un programmeur Java en particulier obtiendra de nouvelles informations qu'il / elle n'obtiendra pas en s'en tenant uniquement à Java.

Joel Spolsky 2005 a écrit un bel article sur Java et SICP qui pourrait vous intéresser:

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Doc Brown
la source
+1 Meilleure réponse possible à ce qui équivaut presque à une question de recommandation de livre.
Joshua Drake
13

Je pense que la structure et l'interprétation des programmes informatiques est un excellent livre à lire. Cependant, il y a quelques problèmes avec cela.

Le plus gros problème de mon expérience est que, bien que le livre ne nécessite absolument aucune connaissance en programmation et soit conçu pour compléter les débutants, il est conçu pour compléter les débutants qui étudient au MIT . Ainsi, alors qu'il ne suppose aucune connaissance de programmation, il ne suppose un peu de domaine des connaissances, par exemple dans les domaines du génie électrique, la physique et les mathématiques. Remarque: ceux-ci n'ont rien à voir avec les concepts enseignés, ils sont juste nécessaires pour comprendre les exercices et les exemples .

Des gens plus grands que moi l'ont expliqué beaucoup mieux, dans un article intelligemment intitulé La structure et l'interprétation du programme d'informatique . Heureusement, ils ne sont pas seulement des pleurnichards, ils ontplutôtécrit leur propre livre: How to Design Programs . Si vous pensez à lire SICP, vous voudrez peut-être lire HtDP d'abord: il couvre à peu près le même terrain que SICP, mais il suppose seulement des connaissances de domaine de niveau secondaire moyen. (En fait, il est écrit pour être enseigné aux élèves du secondaire.)

Après avoir terminé HtDP, vous pouvez toujours revenir en arrière et lire SICP, car maintenant un peu de connaissance du domaine manquant ne sera plus aussi dangereux car vous avez déjà vu le concept.

Remarque: il existe un brouillon pour une deuxième édition de HtDP , que vous voudrez peut-être lire à la place de la première édition. Le matériel sur la programmation impérative a été supprimé et va être couvert dans le deuxième volume non encore écrit Comment concevoir des composants , mais vous pouvez les prendre soit de la première édition, soit du SICP, soit des deux.

Jörg W Mittag
la source
Puis-je suggérer une alternative au SICP: Concepts, techniques et modèles de programmation informatique
Eden
@Eden: CTM est très bon, je suis d'accord. Je ne le considère pas comme un livre pour l'enseignement de la programmation, cependant, comme SICP, HtDP et Concrete Abstractions. Mais il appartient définitivement à la liste des "livres qui font de vous un meilleur programmeur"!
Jörg W Mittag
5

D'après ma compréhension du SICP , il est plus axé sur les domaines de la programmation fonctionnelle, y compris la programmation récursive, et une forte introduction à CS - ce qui est un peu difficile à saisir pour les nouveaux programmeurs. Un autre point, il est préparé et instruit pour le MIT, et quelques bons principes fondamentaux dans le domaine de l'ingénierie, les mathématiques, la physique sont également nécessaires pour trouver ce livre utile.

Je conseillerais un bon ensemble de livres où chacun se concentre sur différents aspects du génie logiciel:

  • Code complet 2 - se concentre sur les processus de génie logiciel.
  • Code propre - se concentre sur le codage dans les petits. Comment écrire des classes et des fonctions.
  • Programmeur pragmatique - se concentre sur le travail au sein d'une équipe de production de logiciels.

Une description plus détaillée des livres mentionnés ci-dessus et d'autres une fois peut être trouvée à partir des références suivantes:

  1. Comment être programmeur avec 10 livres simples
  2. Meilleurs livres pour les programmeurs débutants

N'hésitez pas à ajouter à la liste car ce n'est pas l'idéal :)

Edit: En choisissant les livres mentionnés ci-dessus et en déterminant la priorité de la façon de les lire, cela se résume vraiment à l'objectif de ce que vous essayez principalement de faire ou d'apprendre.

Yusubov
la source
7
Je suis d'accord avec les suggestions dans le contexte (implicite) - mais votre réponse serait encore meilleure si elle mentionnait réellement ce que vous n'aimez pas (ou n'aimez pas) au sujet du SICP.
Joris Timmermans
4
Comparaison des pommes et des oranges - tous les livres que vous mentionnez sont d'excellents livres sur le génie logiciel. Le SICP concerne davantage l'informatique - ce qu'est la programmation informatique conceptuellement.
Nate
1
Cette réponse ressemble trop à une réponse à une question de liste de lecture recommandée. Ce que je ne crois pas correspond bien à l'objectif des sites Stack Exchange: meta.stackexchange.com/questions/113678/…
Joshua Drake
@Nate, ce n'est pas des pommes et des oranges à comparer, c'est tout de CS. Même si, chacun des livres partage des sujets communs.
Yusubov
2
@MadKeithV, je suis d'accord avec vos commentaires. J'ai mis mes réflexions sur le SICP en première ligne.
Yusubov
4

Je vais sortir sur un membre ici et dire - probablement pas une bonne lecture pour la plupart des gens - quelle que soit la langue.

Comme Knuth, c'est un bon livre à lire. Cependant, même en supposant que vous êtes un diplômé du MIT, il faudra encore une bonne partie de l'année pour lire correctement, et c'est avec l'aide de professeurs et d'AT.

Y a-t-il d'autres livres sur le génie logiciel que vous pourriez lire à cette époque qui seraient plus utiles? Y a-t-il d'autres langues que vous pourriez apprendre à l'époque?

modifier Juste pour développer un peu: le
génie logiciel est de l'ingénierie, c'est une question d'optimisation. Votre tâche consiste à maximiser vos connaissances pour un budget temps + coût donné.
SICP est une introduction de haut niveau à la programmation via un langage fonctionnel. La raison pour laquelle il utilise un langage fonctionnel est qu'il est plus facile de décrire un grand nombre de concepts mathématiques de la programmation dans des langages fonctionnels que dans des langages procéduraux et beaucoup plus facile à lire que la logique formelle.

Il y a aussi une certaine posture, c.-à-d. "Vous n'êtes pas vraiment un programmeur à moins que vous ne lisiez SICP", ou Knuth, ou que vous puissiez programmer en assembleur Lisp, ou C ou x86. C'est normalement facile à réfuter; c'est à dire. vous ne pouvez pas être un vrai programmeur à moins de connaître les travaux de Cantor sur la théorie des ensembles et les équations de Maxwell et d'être familier avec la mobilité des trous dans les semi-conducteurs.

Martin Beckett
la source
Il y avait d'autres livres sur ma liste de souhaits comme Code Complete 2, Code propre, programmeurs pragamatiques, refactoring, etc.
ashishjmeshram
5
C'est pourquoi je les lirais en premier
Martin Beckett
7
J'ai débattu de la baisse de cette réponse, mais j'ai décidé qu'un commentaire était mieux: je suis d'accord que SICP n'est pas une bonne lecture pour la plupart des gens, surtout au début, mais je crois qu'un grand développeur devrait être capable de gérer ce livre et apprendra beaucoup de lui. Les grands développeurs ne sont pas «la plupart des gens». C'est un bon livre de filtres.
Joris Timmermans
4
Je suis en désaccord (jusqu'à un certain point) - un développeur bien équilibré qui a SICP à son actif peut toujours en apprendre davantage sur l'environnement Unix, etc. Je préfère embaucher un développeur sans expérience de plate-forme mais SICP et les recycler, plutôt que quelqu'un qui ne le fait pas pas le SICP.
Joris Timmermans
1
@MadKeithV - Oui et pour la même raison, j'embauche des doctorants en mathématiques / physique sans expérience en codage. Mais si vous travaillez à plein temps en tant que programmeur, et en particulier en tant que débutant, il existe des livres plus simples qui sont peut-être meilleurs (valeur / temps) que Knuth ou SICP ou qui lisent les articles de Turing.
Martin Beckett
1

Envisagez-vous d'être un "programmeur JAVA" pour le reste de votre vie? Ensuite, il y a probablement de meilleurs livres à lire. Si vous voulez être un bon programmeur en général, c'est une excellente lecture. Voici pourquoi. Il y a certains outils dont tout bon programmeur a besoin dans sa boîte à outils. L'une est une connaissance approfondie des structures de données et des algorithmes (si vous ne me croyez pas, allez interviewer Microsoft, Google, Amazon, etc.), les algorithmes qui l'accompagnent sont l'analyse de la complexité, la récursivité et une bonne compréhension des pointeurs ne le fait pas blesser. En ce qui concerne l'analyse d'algorithmes, les processus récursifs et le paradigme fonctionnel en général, je ne peux pas penser à un livre meilleur ou plus difficile que SICP.

Jonathan Henson
la source