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 :

Méthodologie de programmation dans un langage quelconque ?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut Méthodologie de programmation dans un langage quelconque ?
    Bonjour,

    Un bon programme doit répondre impérativement à plusieurs critères, en fonction de mes lectures diverses et variées sur le sujet voici ce que j'ai retenu (les principales) :
    - Tout ce qui est petit est mignon (philosophie linux) :
    cela signifie qu'un bon programme doit être découpé avec la plus fine granularité au niveau des fonctions afin que celles ci soient le plus indépendantes possibles et éviter la programmation spaghetti
    - La robustesse :
    cela signifie que les données en particuliers les données d'entrées doivent être tester au maximum afin de garantir le bon procédé de l'algo
    - L'interopérabilité :
    cela signifie que le programme doit être le plus souple possible afin d'être utiliser par d'autre programmes, d’où l'importance de la norme POSIX.2 par exemple
    - La modularité :
    cela signifie que le programme doit être découpé en modules, et ces modules doivent le plus possible indépendant les uns des autres (rejoint le premier point, philosophie linux)
    - Les commentaires
    cela signifie que le programme doit être impérativement commenté afin que une autre personne puisse comprendre et reprendre le travail à l'endroit ou on l'a laissé

    Je pense que ce sont les points vraiment essentiels.
    Il peut y en avoir d'autres mais je ne vois pas.

    Je me rends compte au fur et à mesure que j'apprends un langage quelconque, par exemple, powershell, bash, python, c .... de l'importance de la documentation en particulier comment les fonctions sont implémentés.
    Ainsi j'aimerai savoir s'il existe un site web qui répertorie l'ensemble des fonctions d'un langage et son implémentation (code source) pour touts les langages, ou bien, un en particulier, pour un langage en particulier.
    J'ai remarqué également que dans la littérature française sur les sujets de scripting ou de programmation qu'on ne donne jamais les sources, c'est à dire, la référence à la documentation, par exemple get-help pour powershell ou le man pour bash.
    A l'inverse dans la documentation anglaise on précise bien à chaque fois nos sources.
    Je trouve cela vraiment dommage car ça n'encourage pas du tout à l'autonomie ni à l'auto-formation.
    Par exemple actuellement je cherche comment faire un retour chariot en python dans la fonction input mais je ne sais pas ou chercher l'info car y a pas de man en python pour telle et telle fonction.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    souvent chaque langage de programmation à son site avec la documentation officielle, faites simplement une recherche avec le nom du langage :
    https://search.lilo.org/?q=python

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    J'ai déjà essayer ceci mathieu.
    J'ai taper dans ma bar google = "python documentation", le premier lien = https://docs.python.org/fr/3/
    Le souci c'est que je suis Perdu la dedans !
    Pourtant j'ai trouvé des trucs intéressant ici :
    fonction native > input, il y a le prototype de la fonction = input() input(prompt). Bizarre comme prototype tout de même !
    fonction native > print, il y a le prototype de la fonction = print(*objects, sep=' ', end='\n', file=None, flush=False)
    J'ai pas trouvé le code source de ces 2 fonctions natives.
    J'ai pas trouvé comment faire un simple retour à la ligne aussi bien avec la fonction print qu'avec la fonction input.
    Je comprends pas pourquoi y a pas l'équivalent d'un man pour un langage de programmation donné en ligne de commande.
    Ce serai vraiment utile au cas ou on est une coupure internet par exemple.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par zephyre Voir le message
    J'ai pas trouvé comment faire un simple retour à la ligne aussi bien avec la fonction print qu'avec la fonction input.
    dans le 1er message vous parliez d'un retour chariot qui peut se faire avec la fonction "chr" par exemple
    https://docs.python.org/fr/3/library/functions.html#chr
    si vous voulez faire un retour à la ligne, ça dépend de l'interface de sortie que vous utilisez.

    Citation Envoyé par zephyre Voir le message
    Je comprends pas pourquoi y a pas l'équivalent d'un man pour un langage de programmation donné en ligne de commande.
    Ce serai vraiment utile au cas ou on est une coupure internet par exemple.
    sur mon ordinateur j'ai la commande "pydoc" qui fonctionne en étant déconnecté d'internet.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Je ne connais pas la différence entre un retour chariot et un retour à la ligne mathieu.
    Pour moi c'est blanc bonnet et bonnet blanc.
    Comment trouver la fonction chr à partir de la documentation python ?
    Comment fonctionne pydoc ?
    J'ai cherché dans la documentation officielle mais y a aucun exemple avec des fonctions, si j'ai bien compris ça fonctionne par module ?
    Ce qui veut dire qu'il faut déjà connaitre dans quelle module est la dite fonction.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Citation Envoyé par zephyre Voir le message
    Je ne connais pas la différence entre un retour chariot et un retour à la ligne mathieu.
    Clique ici pour savoir.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 332
    Points : 4 153
    Points
    4 153
    Par défaut
    Bonjour,

    Le retour chariot fait référence aux machines à écrire qui lors d'un retour chariot avançait également le papier d'une ligne. Avec l'informatique, c'est deux opérations conjointes se sont séparées en deux codes l'un pour le retour en début de ligne et l'autre pour avancer d'une ligne. Le retour en début de ligne s'appelle également retour chariot (RC) même si dans beaucoup de cas il doit être associé au saut de ligne (NL) pour reproduire l'équivalent du "mouvement" des machines à écrire.

    Dans la définition d'un bon programme, il me semble manquer le bon fonctionnement, les performances et la faible consommation de ressources. Les autres éléments font partie de ce qui contribue (ou pas) à l'adéquation du programme au problème à résoudre.

    Mignon n'est pas un critère de qualité de même que petit mériterait d'être un peu quantifié. Quand on diminue la taille des fonctions, on augmente certes la fiabilité de chacune, mais aussi la fragilité d'intégration.

    L'interopérabilité peut être un objectif assigné (exigence) mais ne saurait être considéré comme une composante implicite. Par exemple, en crypto l'interopérabilité (telle que définie dans le post) est souvent à éviter.

    Pour avoir un bon programme, il y a également le choix de la bonne chaîne de développement (élément souvent négligé), la documentation technique (qui ne saurait se réduire aux seuls commentaires), les campagnes de tests et de métrologie.

    Et j'en oublie certainement beaucoup.

    Définir des règles et principes universels est un exercice dangereux car il tend à projeter une analyse d'un domaine d'expérience à tous les autres. Mais l'informatique n'est pas monolithique, et les recettes pertinentes dans un emploi peuvent s'avérer inutiles voire dommageables dans un autre. Par exemple, il y a certes des points communs entre le développement d'un logiciel de gestion et celui d'un automate à réactions en temps réel mais il y a beaucoup plus de points incompatibles. Je ne crois pas qu'on puise employer au pied levé un très bon développeur de gestion pour du temps réel industriel, et réciproquement.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par zephyre Voir le message
    Ainsi j'aimerai savoir s'il existe un site web qui répertorie l'ensemble des fonctions d'un langage et son implémentation (code source) pour touts les langages, ou bien, un en particulier, pour un langage en particulier.
    oui si vous voulez apprendre le langage Python ça s'appelle des tutoriels de langage Python tout simplement.
    Mais j'arrive pas trop bien à comprendre ces questionnements...quel est le ou les problèmes à résoudre ?
    Vous travaillez en entreprise et sur quel projet ?

    Citation Envoyé par zephyre Voir le message
    Par exemple actuellement je cherche comment faire un retour chariot en python dans la fonction input mais je ne sais pas ou chercher l'info car y a pas de man en python pour telle et telle fonction.
    très bien mais quel est l'intérêt de faire ça ? Est-ce votre chef de projet qui vous demande de faire ça ?

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2020
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Mat.M
    oui si vous voulez apprendre le langage Python ça s'appelle des tutoriels de langage Python tout simplement.
    Mais j'arrive pas trop bien à comprendre ces questionnements...quel est le ou les problèmes à résoudre ?
    Vous travaillez en entreprise et sur quel projet ?
    Bonjour Mat.M,
    Je ne suis pas très fan des tutos.
    Bien que ça peut aider au début c'est une arme à double tranchant, je m'explique.
    Pour faire une tache simple les tutos sont génials.
    Le souci c'est que pour résoudre un problème, le jour ou y a pas de tuto à son sujet vous ne savez plus quoi faire.
    Ainsi il est préférable de lire la documentation pour résoudre des problèmes plus vaste et comprendre vraiment un langage.
    Je te donne un exemple que j'ai le plus souvent constaté en bash :
    Tu trouves foison de tutos sur internet qui t'explique comment personnalisé ton prompt (PS1).
    Hors tout est dans man bash.
    Et de plus généralement les explications ne sont pas complètes par rapport au man.
    Y a rien de mieux que la documentation officielle.
    En plus tu gagnes en autonomie et apprends beaucoup plus de chose.
    C'est un peu comme ce que disait Socrate :
    Si vous voyez quelqu'un mourir de faim, vous préférez lui donner un poisson (tuto), ou, lui apprendre à pécher (documentation).

    Citation Envoyé par Mat.M
    très bien mais quel est l'intérêt de faire ça ? Est-ce votre chef de projet qui vous demande de faire ça ?
    Non c'est juste pour moi, pour un petit programme et améliorer son esthétisme.
    Comme je sais faire un retour chariot en langage C avec la fonction printf, je me demandais comment la faire également en python.

    Citation Envoyé par mathieu
    dans le 1er message vous parliez d'un retour chariot qui peut se faire avec la fonction "chr" par exemple
    https://docs.python.org/fr/3/library/functions.html#chr
    si vous voulez faire un retour à la ligne, ça dépend de l'interface de sortie que vous utilisez.
    Je viens de lire la doc de cette fonction "chr", je cite :
    exemple, chr(97) renvoie la chaîne de caractères 'a', tandis que chr(8364) renvoie '€'. Il s'agit de l'inverse de ord().
    ça ne dit nullement que ça fait un retour à la ligne puisque ça n'exécute pas ?
    Personnellement j'ai testé avec un code source tout simple, le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    print("Bonjour")
    chr(13)
    chr(13)
    chr(13) # n'affiche pas de CR (carriage return = retour chariot)
    chr(97) # n'affiche pas la lettre 'a'
    print("Aurevoir")
    Y a aucun retour chariot qui s'affiche à l'exécution.
    13 est le code décimal (D en hexa) d'après wikipédia = https://fr.wikipedia.org/wiki/Table_...de_(0000-0FFF) pour le CR (carriage return = retour chariot).
    J'ai utilisé une calculatrice, 97 en décimal corresponds bien au caractère 'a', c'est en hexa dans la doc wikipedia.
    En revanche j'ai pas pu vérifier pour le symbole = '€", son code décimal est d'après la doc que tu as envoyé 8364 soit en hexa 20AC.
    Et la je n'ai pas pu trouver 20AC dans la table Unicode que je t'ai envoyé (wikipedia).
    Ainsi je pense que ça n'exécute pas.

    Une dernière chose je ne trouve pas le code source d'une fonction quelconque.
    Hors je croyais que python est un langage open source ? Donc on devrait pouvoir trouver le code source des fonctions non ?

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par zephyre Voir le message
    Une dernière chose je ne trouve pas le code source d'une fonction quelconque.
    si vous ne cherchez pas et que vous attendez qu'on fasse tout, vous n'allez pas avancer.
    dans la documentation dont on discutait il y a 5 jours, j'ai cliqué sur "Amélioration et intégration", j'ai vu que ce n'étais pas ça. je suis revenu et cliqué sur "Installation et utilisation de Python", ensuite "2.2. Compiler Python", et là je vois un lien "source".
    j'ai n'avais jamais cherché les sources donc je ne savais pas que c'était là et j'ai mis moins d'une minute pour trouver ces sources.
    ensuite j'ai décompressé les fichiers et en 3 minutes j'ai trouvé le code C qui défini la fonction python "chr".

    Citation Envoyé par zephyre Voir le message

    Personnellement j'ai testé avec un code source tout simple, le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    print("Bonjour")
    chr(13)
    chr(13)
    chr(13) # n'affiche pas de CR (carriage return = retour chariot)
    chr(97) # n'affiche pas la lettre 'a'
    print("Aurevoir")
    Y a aucun retour chariot qui s'affiche à l'exécution.
    et donc, vous avez essayé quoi d'autre depuis le moment où vous avez posté ce message ?
    en relisant la documentation de la fonction "chr", ça commence par "Renvoie la chaîne représentant ...". et donc vous faites quoi avec cette chaine ? "Bonjour" est aussi une chaine de caractères et pourtant votre code l'affiche. quelle est la différence entre ces 2 chaines ?

    là encore, si vous ne partez pas en exploration pour comprendre ce qu'il se passe, vous n'allez pas avancer.

  11. #11
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 056
    Points : 9 394
    Points
    9 394
    Par défaut
    J'invite à tester ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    print("1 Hello World\nBonjour")
    print("2 Hello World"+chr(13)+chr(10)+"Bonjour")
    print("3 Hello World"+chr(13) +"Bonjour")
    print("4 Hello World"+chr(10) +"Bonjour")
    Attention, il faut regarder attentivement le résultat, on peut vite passer à côté de la subtilité.

    Retour Chariot : Comme son nom l'indique, c'est un retour, un retour-en-arrière. On n'avance pas, on recule.
    Pour avancer d'une ligne, ce n'est pas le Retour-Chariot qui est utile, mais le Line-Feed (Line-Feed=Saut de Ligne) Ceci n'est pas propre à Python, c'est général. C'est vrai aussi bien en Python qu'en C qu'en n'importe quel langage.
    Ici, la seule difficulté, c'est de savoir si le mot clé, c'est chr, ou chr$ ou caract() ou un autre truc du genre.

    La doc de Python est incomplète ? J'ai souvenir de mon premier compilateur C, acheté il y a longtemps. Il fallait PAYER pour acheter un compilateur C, et on recevait un jeu de disquettes, et 3 classeurs de 500 pages chacun pour la documentation (support papier). On payait, et on recevait un outil documenté.
    Quand on ne paye rien du tout pour avoir un outil comme Python, on en a pour son argent. On ne paye rien, on reçoit gratuitement un truc qui fait très bien le job si on fait l'effort de se former, on ne va pas en plus exiger d'avoir une documentation complète qui nous prendrait par la main pour nous emmener d'un niveau proche de 0 à un niveau expert !
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  12. #12
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut
    Bonjour Zephyre,

    Concernant la documentation :
    Le monde de l'informatique (Hardware et Software) sont toujours en évolution. Comme le précise Tbc92, de nombreux éléments sont plus ou moins disponibles gratuitement ce qui n'est pas très compatible avec la notion de stabilité et de qualité. Le développement des environnements Libres (avec toutes les licences associées), fait reposer les applications sur un grand nombre de personnes et sociétés. La documentation, comme la fiabilisation, est une étape importante mais aussi très couteuse qui sera de moins en moins pris en charge si les moyens ne sont pas présents. L'autre point est aussi que la documentation est chronophage et donc assez peu compatible avec l'évolution rapide des technologies.
    Au bilan, on peut le regretter ou non, tu trouveras souvent beaucoup plus d'information sur les forums (moins fiables mais plus fournies), ou directement dans le code que dans les documents officiels qui décrivent le noyau (stable) ou les fonctions "anciennes".

    Méthodologie :
    Tu confonds les instructions et la méthodologie. Comme l'obtention d'un permis de conduire ne fait pas de toi un conducteur aguerri, une documentation t'explique seulement les outils. A toi de faire ton expérience en fonction de ton besoin mais aussi de tes compétences. Il n'existe pas vraiment de méthode "standard" (sauf, peut-être pour les cas très simples). Ton adaptation constituera ton expérience.

    Les tutos (dont tu n'es pas fan ) et les forums reflètent justement un petit bout d'expérience partagé (merci aux contributeurs ). Ils ne peuvent qu'être le complément de tes propres recherches et tentatives. Comme le précise Mathieu, ils ne t'apporteront pas souvent LA solution, mais un un petit (ou gros) caillou pour que tu trouves ton chemin...et la meilleure solution à ton problème.

    Évidemment, tu as raison, Internet est une mine d'or, mais il faut déplacer et tamiser des tonnes et des tonnes pour trouver quelques poudres...ou la pépite du siècle !

    Bien l'bonjour chez vous,
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

Discussions similaires

  1. Réponses: 18
    Dernier message: 20/10/2011, 12h41
  2. Réponses: 8
    Dernier message: 04/05/2011, 16h14
  3. Implémentation d'OCL dans les langages de programmation
    Par Tristan Zwingelstein dans le forum UML
    Réponses: 8
    Dernier message: 18/01/2010, 21h02
  4. creation d'un logiciels a partir d'un programme dans un langage
    Par ayoub89 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 14/07/2009, 08h18
  5. Réécrire un programme dans un autre langage/Licence ?
    Par VinnieMc dans le forum Licences
    Réponses: 1
    Dernier message: 15/03/2007, 11h32

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