Est-il obligatoire de se renseigner sur les structures de données si vous voulez être un programmeur Java/C++? [fermé]


Alors ai-je vraiment besoin d'en apprendre davantage à leur sujet ? N'y a-t-il pas un moyen intéressant d'en apprendre davantage sur les piles, les listes liées, les tas, etc. ? Je l'ai trouvé ennuyeux sujet.

**Lors de la publication de cette question, il a montré un avertissement. Ne suis-je pas autorisé à poster une telle question ? Admins veuillez clarifier et je vais le supprimer: /

Avertissement : La question posée semble subjective et est susceptible d'être fermée.

D'accord..- Je l'obtenir Alors, quelle est LA meilleure façon de les apprendre ? À quel livre dois je me référer ? Ce site web ?

Author: weltschmerz, 2010-05-07

16 answers

Il est obligatoire de se renseigner sur les structures de données si vous voulez être programmeur. Les structures de données sont votre pain et votre beurre - si vous ne comprenez pas des choses comme le comportement, les utilisations et la complexité d'exécution ('big-O') d'au moins les structures de base (tableaux, listes chaînées, piles, files d'attente, arbres (binaires / n-ary, varietes auto-équilibrées), tables de hachage,tas, graphiques) et les algorithmes qui s'exécutent dessus (insert / locate / delete), circonstance.

Chaque métier a ses outils; ce sont les nôtres. Les structures de données sont les fondements les plus fondamentaux de presque tous les algorithmes que vous allez apprendre. Sauf si vous voulez être un programmeurcargo cult , vous devez comprendre comment ils fonctionnent.

S'il existe ou non des moyens intéressants d'en apprendre davantage est une question entièrement distincte... :)

 62
Author: tzaman, 2010-05-07 07:59:16

J'irais même jusqu'à dire que la plupart de la programmation tourne autour de la manipulation de structures de données, c'est le fondement de l'informatique après tout: vous obtenez des données, vous les traitez, vous donnez éventuellement une sortie. Toutes les données résident généralement dans des structures de données et le choix de structures inappropriées aura plus d'impact, plus le projet sera important.

 8
Author: Gnudiff, 2010-05-07 08:00:06

Au fur et à mesure que vous acquérez plus d'expérience, vous constaterez que les algorithmes et les structures de données sont inestimables pour votre développement quotidien, et en fait assez intéressants.

En apprenant à leur sujet maintenant, vous apprendrez:

  • Quelle structure de données est appropriée pour quel contexte, c'est-à-dire quand utiliser une liste chaînée unique, quand utiliser une pile, quand utiliser une file d'attente, quand utiliser un arbre
  • Quels algorithmes sont appropriés dans quel but, tels que la recherche en profondeur d'arbre ou largeur-première recherche.
  • Complexité spatiale et temporelle des algorithmes, par exemple pourquoi un quicksort est-il parfois la meilleure solution, et parfois un heapsort.
  • Dans l'ensemble, cela vous apprendra les débuts et les fondements de l'informatique, même si vous n'avez plus jamais à implémenter une pile, vous connaîtrez le type de pensée et de considération qui y est associé. Si vous devez alors implémenter votre PROPRE structure de données( et il y a de fortes chances que vous le fassiez, assez souvent), vous saurez quoi faire et quoi ne pas le faire.
 7
Author: Joris Timmermans, 2010-05-07 15:22:47

Si vous voulez être un programmeur réussi, la structure de données est un must. Comment programmerez-vous si vous ne connaissez pas les structures de données et les algorithmes?

 4
Author: fastcodejava, 2010-05-07 08:15:15

Que cela vous plaise ou non, toute la programmation est construite autour de structures de données. Vous n'aurez peut-être jamais à en écrire un, mais vous devrez choisir lequel utiliser plusieurs fois. Ce n'est pas vraiment une exigence pour la programmation en général, mais si vous voulez exceller dans le domaine, la compréhension des bases est un must.

Tout le monde peut construire un hangar sans connaissance des matériaux ou des techniques de construction. Vous pouvez même travailler dans une maison en plaçant des briques et du mortier sous les ordres de quelqu'un d'autre, mais si vous voulez construire une maison vous-même, vous devez comprendre les matériaux et les techniques.

Les structures de données sont les matériaux de programmation. Les algorithmes sont des techniques. Utiliserez-vous des structures de données? Vous utiliserez les plus simples au quotidien, chacun si souvent que vous devrez résoudre un problème où une structure de données spécifique est requise, et bien que vous puissiez réussir à ne pas construire vos propres briques, vous devrez comprendre si vous avez besoin de briques ou d'un mur en béton pour vos besoins.

 3
Author: David Rodríguez - dribeas, 2010-05-07 08:01:59

Si vous voulez des preuves de l'importance des structures de données, jetez un œil au processus d'embauche de Google . Quoi que vous pensiez de Google en tant qu'entreprise, il est indéniable qu'ils ont de très bonnes personnes qui travaillent pour eux. Leur processus d'entretien est configuré pour déterminer les connaissances des candidats sur les structures de données et les algorithmes. Parce que quand il s'agit de cela, c'est ce qui est au cœur de la programmation, peu importe la langue dans laquelle vous travaillez ou le domaine dans lequel vous êtes programmation pour.

Si vous planifiez une carrière en tant que programmeur professionnel, vous devez connaître les principes fondamentaux, pas seulement comment lancer du code qui "fonctionne". Sinon, votre jouer.

 3
Author: KeithB, 2010-05-07 13:13:18

Est-il obligatoire d'apprendre l'arithmétique pour être ingénieur?

 2
Author: Crashworks, 2010-05-07 08:11:30

Si vous prenez l'attitude de "est-il obligatoire en ce qui concerne tout des blocs de construction des langages de programmation, vous n'êtes probablement pas taillé pour être un programmeur. Indépendamment de "obligatoire" ou non, vous devriez toujours être à la recherche de nouveaux concepts à apprendre et voir si cela améliorera votre style/norme de codage.

Mais en réponse à votre question: oui.

 2
Author: Mahmoud Al-Qudsi, 2010-05-07 15:44:05

Je dirais qu'il est obligatoire à un moment donné de votre développement d'avoir une compréhension ferme. Je ne suis pas nécessairement sûr que le cours standard Data Structures soit le meilleur moyen d'apprendre. Parfois, la meilleure façon de les apprendre est "J'ai un problème X. Pour une raison quelconque, mon algorithme prend beaucoup de temps pour résoudre X. Comment puis-je accélérer cela?"

Un livre que je recommande fortement est Programming Pearls. Il a de très bonnes analyses, soutenues par de nombreux exemples d'où le monde réel les motivations pour les solutions venaient de. Il présente les problèmes d'une manière intéressante et n'enseigne jamais en vous donnant une liste de structures de données.

 2
Author: Jimmy, 2010-05-07 15:54:52

Oui 99% des livres sur les structures de données sont ennuyeux et les exercices artificiels. Ils se sentent comme ils sont juste problèmes de serveur aucun but pratique :( Ce livre est la seule exception à la règle que j'ai rencontrée. Vous aurez un jeu RPG naïf mais fonctionnel à la fin du livre: Structures de Données pour les Programmeurs de jeux

Lisez le livre ci-dessus et vous résoudrez votre problème de poulet et d'œuf et verrez que vous ne pouvez vraiment pas faire grand-chose sans structures de données après tout.

 1
Author: daveangel, 2010-05-07 11:46:13

Eh bien, cela peut sembler un peu gênant mais je ne dirais pas qu'il estOBLIGATOIRE d'apprendre des Structures de données pour être un développeur régulier. Grave!!! Bien sûr, si vous étudiez alors dur , cela vous donnera beaucoup d'idées et de connaissances sur plusieurs aspects de la programmation et c'est toujours bon. Mais obligatoire ... eh bien, je pense que c'est juste trop. TRÈS BON serait suffisant.

Permettez-moi d'expliquer pourquoi. Ce n'est pas si souvent, pour aujourd'hui, d'écrire du code de structures de données parce que - avouons-le - ce serait réécrire, RÉINVENTER ce que nous savons déjà depuis tant d'années! Ce que je dirais qu'il est OBLIGATOIRE, c'est d'étudier uniquement leur théorie générale et les API/bibliothèques qui sont déjà couramment utilisées (et testées et optimisées) comme l'API Collections en Java. Vous devez connaître par cœur les différences entre une Liste et un Ensemble (en Java par exemple) et leurs capacités et leur utilisation appropriée, mais vous n'avez pas besoin de savoir exactement comment elles sont implémentées - en vérifiant chaque méthode privée et attribut - pour traiter les problèmes de codage les plus courants, au jour le jour. Vous ferez très bien sans tous les "tripes" des structures de données pour les choses générales. Nous faisons face à différents défis maintenant.

Mais ne vous méprenez pas - ni penser que je suis fou ou naïf! Bien sûr, il y a des situations dont vous aurez besoin pour vous implémenter une sorte de structure de données personnalisée (peut-être votre propre BalancedBinaryTreeMap!). Vous avez obtenu d'être prêt à tout.

Je ne fais que discuter à propos, qu'ils soient obligatoires ou non. Encore une fois, je ne pense pas que ce soit obligatoire mais c'est en effet très bon. Acclamation.

 1
Author: Bill_BsB, 2010-05-07 12:16:47

Je suppose que vous pourriez apprendre la programmation sans en apprendre beaucoup sur les structures de données ou les algorithmes. Pour faire un exemple équivalent, pensez - y comme si un charpentier savait construire des choses, mais ne connaissait pas les mesures et autres. Serait - il capable d'obtenir une carrière en menuiserie? Peut-être, mais disons qu'il avait besoin de connaître le matériel exact dont il aurait besoin pour mener à bien un projet. Il serait probablement viré parce qu'il ne sait pas quel type de matériel ou de mesures utiliser.

Donc avec les structures de données et les algorithmes, vous pouvez dire que c'est la capacité de donner des mesures exactes d'une application et de savoir quel type de performance vous en sortirez.

 1
Author: Daniel, 2010-05-07 15:13:48

Comme un musicien apprenant des échelles, les structures de données font partie des outils du métier du logiciel. Bien sûr, vous pouvez travailler comme programmeur sans le savoir, mais vous vous handicapez. Si j'interviewe deux personnes pour un poste et que l'une d'elles comprend et utilise des structures et que l'autre ne peut même pas expliquer ce qu'est une pile, mon choix est assez clair.

Si vous voulez être jugé comme un programmeur compétent et employable, vous devez apprendre votre métier.

 1
Author: Larry, 2010-05-07 15:41:39

Est-il obligatoire de les apprendre?

Non, vous pouvez programmer sans eux, tout comme il n'est pas obligatoire de diviser votre code en fonctions.

Cela étant dit, si vous voulez être un programmeur efficace qui peut écrire au moins du code décent sans que votre voiture soit embêtée par vos collègues, vous voulez au moins être en mesure de faire une sélection décente de classes de bibliothèque.

Chaque programmeur doit comprendre le compromis entre une LinkedList et un Tableau, ou pourquoi les recherches binaires et les arbres binaires sont utiles pour les données triées. Ce n'est pas seulement une question de performance - c'est aussi une question d'exactitude car vous ne pouvez pas simplement mettre quoi que ce soit dans un ensemble d'arbres.

Cela signifie-t-il que vous devez savoir comment implémenter votre propre arborescence AVL, construire des structures de données super intelligentes, etc.? Pas nécessairement. C'est une question de combien vous voulez savoir ce qui se passe "sous le capot" et si vos tâches l'exigent.

Je ne suis pas un grand fan de la structure de données profonde et des questions d'algorithmes dans entretiens parce que la grande majorité des développeurs n'ont pas besoin de mettre en œuvre ces choses, juste pour utiliser des éléments de bibliothèque. Je préfère poser des questions liées à l'emploi dans les entretiens. Cependant, acceptez que si vous n'apprenez pas ces choses, vous seriez confronté à une bataille plus difficile pour obtenir d'autres emplois.

 1
Author: Uri, 2010-05-07 15:54:21
 1
Author: peSHIr, 2017-05-23 12:09:17

Aucun corps ne devrait vous forcer à apprendre tout ce que vous ne voulez pas apprendre.

Si vous êtes le genre de personne qui est obligé d'être le meilleur qu'il/elle peut être à ce qu'il/elle fait, et vous aimez ce que vous faites pour gagner votre vie, vous apprendrez tout ce qu'il y a à savoir de votre propre chef.


@happysoul: Vous devriez vous demander POURQUOI l'apprentissage des structures de données vous ennuie. En outre, il serait utile si vous identifiez également ce qui ne vous ennuie pas.

Si vous aimez au moins en apprendre davantage sur algorithmes, je suis sûr que nous pouvons tous suggérer un mariage parfait des deux qui serait excitant à apprendre!

Ma recommandation pour le meilleur combo algorithme/structure de données pour l'expérience d'apprentissage la plus amusante: graphs.

 0
Author: polygenelubricants, 2010-05-07 08:08:30