IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Peut-on bien programmer si l'on ne maîtrise pas bien l'algorithme et les structures de données ?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Homme Profil pro
    Data Lover
    Inscrit en
    Décembre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Lover
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 96
    Points : 101
    Points
    101
    Par défaut Peut-on bien programmer si l'on ne maîtrise pas bien l'algorithme et les structures de données ?
    Bonsoir à tous !
    Je voudrais savoir s'il est possible d'être un bon programmeur, si on a jamais appris, ou si on a pas bien compris ou bien maîtriser l'algorithme et les structures de données ? Ou bien, est ce qu'on peut être bon en java, par exemple, et créer des grands programmes pour les grandes entreprises, si on ne connait l'algorithme et les structures de données ? Merci de me donner vos points de vue !

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 607
    Points : 188 574
    Points
    188 574
    Par défaut


    Tout dépend ce que tu veux programmer : pour un petit site Web, pour un grand site sans complexité algorithmique, aucunement besoin de compétences particulières en structures de données, en algorithmes. Par contre, si tu veux faire quelque chose comme UTrip, tu n'y arriveras pas sans un bagage certain. C'est la même chose pour beaucoup d'applications : ces connaissances théoriques ne seront pas si utiles (elles ne te permettront pas de faire plus de choses), sauf qu'elles te permettront de mieux réfléchir à ton code, de produire une application plus rapide. Dès que tu envisages des fonctionnalités bien plus avancées, plus intelligentes, par contre, tu retomberas vite sur des algorithmes un tant soit peu intelligents.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre habitué Avatar de Massiliya
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    Mars 2017
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 174
    Points : 152
    Points
    152
    Par défaut
    Bonjour
    Compte à moi je pense que l'élément de base de tout développement c'est de maîtriser l'algorithme pour avoir un esprit informatique permettant de modéliser les différents problèmes.
    En ayant cet esprit informatique vous pouvez facilement apprendre n'importe quel langage avec le temps et à force de l'utiliser.
    A+
    While the grass grows, the steer starves

  4. #4
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par master4 Voir le message
    Je voudrais savoir s'il est possible d'être un bon programmeur, si on a jamais appris, ou si on a pas bien compris ou bien maîtriser l'algorithme et les structures de données ?
    Non.

    Pour commencer dès lors que tu as des contraintes sur les performances, tu dois comprendre ce qui se passe sous le capot du matériel jusqu'à ton logiciel. Comprendre les algorithmes et leurs alternatives. Ça se produit dès que ton jeu de données grossit un peu, ou que tu as besoin de nombreux calculs par seconde, ou que ton périphérique est peu puissant ou limité en énergie (IoT), ou si tu travailles à l'échelle d'un centre de données.

    Par ailleurs tu as tout un tas de problèmes qui demandent des algorithmes spécialisés. Optimisation, reconnaissance visuelle, traitements audios, etc. Tu peux tenter d'apprendre sur le tas mais c'est déjà difficile pour quelqu'un qui a les bases informatiques et mathématiques correspondantes. Et ton temps n'est pas extensible. Et, non, tu n'auras pas toujours des biblios pour ça (mauvais langage, mauvaise licence, inadaptée à ton cas, dépendances, pas fiable, ...)

    En revanche tu peux apprendre. Tu peux tout assimiler en dix ans en veillant simplement à progresser régulièrement. Trouve-toi un bon bouquin sur le sujet et tente d'implémenter les algorithmes et structures principales. Et penche-toi un peu sur les deux premières années de maths d'une filière scientifique (algèbre linéaire, analyse de Fourier, etc) et les problèmes de concurrence. Oui, j'ai eu besoin de tout ça dans mon travail.

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 184
    Points : 11 548
    Points
    11 548
    Par défaut
    Citation Envoyé par master4 Voir le message
    Je voudrais savoir s'il est possible d'être un bon programmeur, si on a jamais appris, ou si on a pas bien compris ou bien maîtriser l'algorithme et les structures de données ?
    Je partage l'avis de tous ici, la réponse est non dans 95% de cas et pour les 5% restant c'est ce que dourouc05 explique : un site Web simple ou un programme qui fait des choses très simples.

    Citation Envoyé par master4 Voir le message
    est ce qu'on peut être bon en java, par exemple, et créer des grands programmes pour les grandes entreprises, si on ne connait l'algorithme et les structures de données ?
    On a beau maîtriser un langage sur le bout des doigts si on n'arrive pas (ou que l'on a du mal) à résoudre le moindre problème alors soit c'est le blocage assuré soit le programme devient en effet gigantesque tellement il devient bancal (multiplication des sources de bugs, redondance de code, lenteur, etc...)


    Après, démarrer l'algorithmie c'est loin d'être une montagne a abattre ! Un algorithme c'est simplement l'art de poser à plat un problème et d'en faire le tour pour le résoudre efficacement. Bien souvent un algorithme c'est mettre par écrit ce que toi tu ferais dans ta tête pour résoudre un problème et c'est pas plus compliqué que ça. C'est sur que si tu t'attaques au traitement du signal ou de l'image là il te faut tout de suite des notions de mathématique poussées mais tu n'es pas obligé de démarrer par ça.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #6
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par master4 Voir le message
    Je voudrais savoir s'il est possible d'être un bon programmeur, si on a jamais appris,compris (...) maîtriser l'algorithme et les structures de données
    non.

    un bon programmeur (que ce soit au sens entreprise ou perso) a forcément des bases d'algorithmie et connait les structures de données des langages qu'il utilise, sans quoi ce n'est pas un "bon" programmeur

    quant à être programmeur tout court, en entreprise personne n'embauchera quelqu'un qui ne sait faire que cliquer sur la souris et aligner 3 balises de HTML, pas pour faire de la programmation dans tous les cas, mais ça n'empêche pas forcément de travailler dans l'informatique (je pense à certains "webmaster" qui se contentent de charger du contenu dans phpmyadmin par exemple, ou encore les "community managers" etc.)

    avis perso.

  7. #7
    Membre actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Points : 275
    Points
    275
    Par défaut
    Bonjour,

    Ma réponse sera directe mais franche : NON !

    Sans quoi la qualité du produit final serait tellement négligée que ça deviendrait ingérable (instabilités et bugs, exigences fonctionnelles pas stables / non respectées par rapport au cahier des charges, failles de sécurité, maintenance impossible, ...)

    Sur des produits qui manipulent des données de clients (médical, transactions bancaires, données personnelles, ...), je ne serais pas rassuré de savoir que sans protection / avec des failles, mes données dans ton application peuvent être visibles ou accessibles par tous !

    Il faut un minimum de formations / connaissances / appétences pour l'algorithmie et la gestion des données pour être appelé développeur / programmeur (etc ... on va pas jouer avec les mots).

    A quoi serviraient les formations en enseignement supérieur sinon développer le bagage nécessaire pour proposer un code de qualité, respectant un maximum de bonnes pratiques de développement, garantissant à la fois qualité, sécurité et performances ?

    Rien ne t'empêche par contre de te former (soit via les études, soit en tant qu'autodidacte) mais c'est un monde douloureux pour les personnes qui ne suivent pas l'évolution technologique / ne se forment pas pour être "Time To Market" (en réalité avec les besoins du marché) et qui ne respectent pas la voie du "bon programmeur" !

    Les structures de données sont utiles pour :
    - l'organisation logique de tes données, découpées selon le besoin du produit pour représenter des "objets temporels". Exemple : un client a un nom, prénom, âge, adresse.
    - faciliter l'accès et la manipulation de tes données de manière performante (dans le cas du bigdata par exemple)
    - visualiser / représenter le métier de ton produit au travers d'un schéma (base de données structurées)
    - stocker de la donnée pour la réutiliser de manière ponctuelle (dans ton application) ou de manière plus pérenne / régulière (base de données)
    - ...

    L'algorithmie te sera utile pour :
    - utiliser judicieusement le code le plus simple possible, le plus maintenable possible, le plus performant possible pour réaliser une tâche précise
    - exploiter des "designs patterns" / patrons de conception afin de bénéficier de bonnes pratiques de développement / d'architecture du code
    - structurer ton code afin d'identifier tous les cas d'utilisation et de gérer proprement les cas d'exceptions / d'erreurs qui peuvent faire échouer ton application
    - représenter le fonctionnel dans le technique et donc partager les deux visions
    - apprendre à bien coder
    - ...

    Ce sont donc effectivement deux éléments essentiels pour tout développeur dans le monde informatique.
    Je ne connais pas de développeur qui ne sache ni manipuler les données (structures ou données brutes), ni employer l'algorithmie dans son métier.

    Un développeur est censé concevoir / réaliser / maintenir un applicatif (en plus de plein d'autres choses :-) ).
    - Un applicatif c'est souvent un frontend (IHM / partie cliente / Interface graphique) => ce n'est plus uniquement du HTML et du CSS mais de plus en plus du code (Javascript, Angular, Frameworks frontend et compagnie) d'où le métier de développeur FRONTEND
    - Un applicatif c'est surtout un backend (Serveur / Coeur applicatif / ...) => c'est surtout des technos de développeur !
    - On demande de plus en plus aux développeurs d'avoir une vision d'ensemble du système, donc des compétences de développeur frontend, backend ET de gestionnaire de bases de données ! Donc si tu ne connais pas les structures de données, tu ne peux pas représenter correctement dans ta tête l'exploitation et la forme des données qui transitent entre ta base et ton application ! Les données, c'est le métier de l'entreprise, vues dans une application ! C'est essentiel de le connaître !

    Je serais heureux de t'apporter encore plein d'autres arguments pour te convaincre que si tu as choisi la voie du développeur, il te faut apprendre et maîtriser ces éléments (structures de données et algorithmie) pour progresser et en faire ton métier. Sans cela, tu te confronteras constamment à des développeurs qui sont à l'aise avec cela, et tu auras extrêmement de mal à trouver un emploi dans l'informatique.

    Cordialement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function googleIsYourF*ck*ngFriend(String url, String maQuestion){
        goTo(url);
        reponse = find(maQuestion);
        if(isAcceptable(reponse)){
            clickOn(By.xpath("//button[@id='resolvedButton']"));
        }
        sendMessage("Merci");
    }
    
    googleIsYourF*ck*ingFriend("http://www.google.fr", "ma question");

  8. #8
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 438
    Points
    4 438
    Par défaut
    Bonjour

    l'algorithmique(algos de base) et les structures de données marchent cote à cote ...
    Cela semble à priori théorique ,mais en fait ,dans tous les langages et leurs API ,tu vas rencontrer leur implémentation(code) toutes prêtes à être utilisées (décrite dans la doc du langage utilisé)...
    C'est en vue d'utiliser efficacement ton langage et son API que l'apprentissage théorique de l'algorithmique et des structures de données est indispensable ...

Discussions similaires

  1. Comment bien programmer en PHP ?
    Par Community Management dans le forum Langage
    Réponses: 257
    Dernier message: 01/12/2014, 16h48
  2. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 15h43
  3. [Conventions] Bien programmer un site complet en PHP
    Par jpean.net dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2007, 15h16
  4. Bien programmer une classe avec sa gestion d'erreur
    Par chris81 dans le forum Framework .NET
    Réponses: 8
    Dernier message: 13/02/2007, 19h13
  5. Comment bien programmer en C ?
    Par lastrecrue dans le forum C
    Réponses: 14
    Dernier message: 12/07/2006, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo