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

Contribuez Discussion :

[ALGO] Notation en algorithmique


Sujet :

Contribuez

  1. #61
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Si je crée un compilateur capable de compiler ce pseudo code, alors ca devient "magiquement" du code. Et donc tu te sentirais obligé de créer un nouveau pseudo langage, pour décrire ton algorithme ?
    En fait, je pense que koala01, voulais faire référence aux spécificités des langages de programmations (comme le i++ par exemple).

    J'ai l'impression que tout le monde est en train de s'énerver et se fatiguer sur des choses qui n'ont pas d'importance, à l'origine lorsque j'ai crée ce thread, c'était pour savoir la façon dont les gens décrivaient leurs algorithmes afin de savoir comment dans un article ou une Q/R de faq on pourrait les présenter.

    Ici, j'ai l'impression que vous croyez tous que l'on cherche à créer un langage universel pour décrire l'ensemble des algorithmes, un langage qui serait universel et normalisé, ... . Alors que ça n'est absolument pas la question et que ça n'était pas mon intention.

    Sur le point d'être compréhensible par tous, là n'est pas la question, il faudrait que l'algorithme soit compréhensible par le plus grand nombre. On ne pourra jamais écrire quelque chose qui sera compréhensible par tout le monde, mais on peut y contribuer en utilisant une notation compréhensible de tous. Un exemple simple peut-être l'utilisation à outrance des quantificateurs mathématiques (quelque soit, il existe, ...), ceci est facilement compréhensible pour qui a un bagage mathématique suffisant, mais pour les autres, ça ressemble à des hiéroglyphes.

  2. #62
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par PRomu@ld
    Ici, j'ai l'impression que vous croyez tous que l'on cherche à créer un langage universel pour décrire l'ensemble des algorithmes, un langage qui serait universel et normalisé, ... . Alors que ça n'est absolument pas la question et que ça n'était pas mon intention.
    C'est vrai, je me suis un peu emporté... désolé.

    Donc, pour répondre a ta question originelle, je prefere decrire mes algos en utilisant un "subset" d'un langage connu et polyvalent: typiquement Pascal/Basic ou C/java/c#.

    le "subset" etant la suppression de tout ce qui est spécifique au langage, c'est a dire qui n'a pas d'équivalents (ou est ambigü) dans les langages similaires:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // valide
    int i;
    for(i=0; i<=100; i++) {
        xxx
    }
     
    // non valide: spécifique python
    for i in range(100):
        xxx
     
    // non valide: ambiguité dans l'evaluation
    for(; i++<=100; ) {
        xxxx
    }
    voila... promis je vais prendre mes cachets et rester zeeennnnnnn...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #63
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    j'veux pas dire... Je suis pas intervenu depuis le début de ce thread, mais je trouve que vous coupez les cheveux en ... mille...



    Il me semble que la seule "règle" à appliquer est que ce soit lisible par un non-spécialiste.

    Donc :

    une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR i = 0 à i < 10
     
    FIN POUR
    Me convient

    (j'admet qu'on peut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POUR i égal 0 à i inférieur à 10
    )

    Pour une assignation initiale :

    me semble correct

    Pour une assignation en cours de programme

    ou

    Me convient

    Pour une égalité :

    me semble clair

    Pour un tableau :

    ou

    me semble compréhensible.

    Pour une structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    structure TOTO
     {
       entier a
       reel    b
      }
    me semble également compréhensible,

    et pour une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (entier) Fonction ( entier a, reel b, chaine c)
    avec les commentaires appropriés au-dessus me semble comprenable par tout un chacun...

    Il me semble vraiment que c'est chercher midi à 14h que de vouloir modéliser (ah.... XML/normes quand tu nous tiens !!! )
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  4. #64
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    j'veux pas dire... Je suis pas intervenu depuis le début de ce thread, mais je trouve que vous coupez les cheveux en ... mille...
    C'est bien ce que je me dis.

    Citation Envoyé par souviron34
    Il me semble vraiment que c'est chercher midi à 14h que de vouloir modéliser
    Citation Envoyé par PRomu@ld
    Ici, j'ai l'impression que vous croyez tous que l'on cherche à créer un langage universel pour décrire l'ensemble des algorithmes, un langage qui serait universel et normalisé, ... . Alors que ça n'est absolument pas la question et que ça n'était pas mon intention.

  5. #65
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par souviron34
    Il me semble vraiment que c'est chercher midi à 14h que de vouloir modéliser (ah.... XML/normes quand tu nous tiens !!! )
    D'abord, C'est meme pas moi qu'a commencé...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #66
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par PRomu@ld
    Ici, j'ai l'impression que vous croyez tous que l'on cherche à créer un langage universel pour décrire l'ensemble des algorithmes, un langage qui serait universel et normalisé, ... . Alors que ça n'est absolument pas la question et que ça n'était pas mon intention.
    Euh.......

    Je te rappelle ton premier post :

    Citation Envoyé par PRomu@ld
    ...Ce qu'il faut absolument, c'est uniformiser les structures de contrôles, les affectations, les tests, les appels de fonctions, les élements de tableaux, les utilisations des pointeurs, ...

    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #67
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Oui, uniformiser les articles et les questions de la faq, pas pour en créer une norme, en fait mon objectif à la base était simple : faire en sorte que l'ensemble des algorithmes que l'on pouvait écrire sur le site aient à peut près la même tête, pour en faciliter la lecture. ensuite qu'il y ait des différences d'écriture comme l'utilisation ou pas du FAIRE n'est que secondaire.

    En fait, ceci est surtout important sur la page source du site (en tout cas de mon point de vue), si sur la même page, tu as une dizaine de notations différentes, il y a un problème de cohérence.

    D'ailleurs au passage, tu n'as extrait qu'une partie de ce que j'ai écrit. pour moi le plus important était ici :

    Ce que je propose, c'est que l'on discute des notations que nous allons tous utiliser dans les FAQ, les articles et les sources.
    A aucun moment je n'ai parlé de normalisation et de contacts éventuels avec l'ANSI, l'AFNOR ou l'ISO.

  8. #68
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par PRomu@ld
    en fait mon objectif à la base était simple : faire en sorte que l'ensemble des algorithmes que l'on pouvait écrire sur le site aient à peu près la même tête, pour en faciliter la lecture.
    Je propose d'elire un unique redacteur qui sera chargé de ré-ecrire tous les algos du site.

    PS: je vote pour PRomu@ld
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #69
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Excusez mon absence momentanée...

    mon intervention sur le theme du
    Citation Envoyé par moi-meme
    Ah, non, le pseudo code est indépendant de tout langage de programmation, sinon, c'est du code, et non plus du pseudo code
    avait pour but de faire remarquer que, quitte à utiliser une notation propre à un langage, autant à ce moment là parler non plus d'algorithme ou de pseudo code mais de parler, tout simplement de code...Pour la simple et bonne raison que, si on se met à introduire une écriture dépendante du langage, on court toujours le risque que l'un des lecteurs de l'algorithme ne soit pas particulièrement habitué à la notation utilisée - meme si on a bien plus de chance de trouver quelqu'un qui ne comprenne pas la notation "COBOL" que quelqu'un qui ne soit pas habitué à la post-incrémentation C - et, d'un autre coté, qu'une personne ne soit tentée, pour un seul et meme algorithme, d'utiliser des notations venant du C ou du VB, et, pour faire bonne mesure de l'ancien basic (je laisse à chacun le plaisir d'imaginer ce que cela pourrait donner )...

    Le tout ayant de manière générale le résultat de rendre la compréhension de l'algorithme des plus hasardeuse...Et principalement pour ceux pour qui l'algorithme sera d'office des plus obscure: les non initiés
    @PRomu@ld=>
    De fait, quand j'écris
    Et on en revient au problème: l'algorithme doit etre compréhenible par tous,(snip)
    je voulais effectivement dire qu'il doit etre compréhensible par le plus grand nombre, et que l'introduction de spécificités d'un langage particulier - aussi compréhensible puisse-t-il sembler à ceux qui maitrisent le langage - représente d'office un frein pour ceux qui ne connaissent pas le langage en question.

    @ pseudocode==>
    Ce n'est pas parce que le C, le java, le basic ou le VB sont fortement utilisés que tu peux avoir la certitude que n'importe qui lisant ton algorithme sera en mesure de comprendre ce qui est représenté en utilsant une spécification de l'un de ces langages.

    C'est la raison pour laquelle l'algorithme doit, à mon sens, utiliser la langue de la personne qui l'écrit (et dont on peut estimer que ce sera celle de celui qui le lira), veiller à lever toutes les ambiguités, et faire appel au maximum à des notations qui peuvent etre retrouvées en dehors du cercle fermé des programmeurs:

    • le != venu du C sera avantageusement remplacé par <>,
    • la différence entre le egal et le vaut sera correctement marquée,
    • les termes utilisés seront francais par préférence à toute autre langue,
    • les spécificités d'un langages seront évitées à moins qu'elles ne soient pas pires qu'une autre possibilité (ea: le cas entier tableau[10] Vs entier tableau(10) Vs soit tableau est un tableau de 10 entiers)


    Le pire de l'histoire, (non souviron, il ne s'agit pas, à mon niveau, du moins de fournir une norme, simplement d'attirer l'attention sur le fait qu'un algorithme peut aussi intéresser un non initié ) c'est que, encore une fois, on est d'accord sur le fond, meme si, sur la forme il y a quelques divergences...

    Mais, le fond reste quand meme toujours le meme: comment etre suffisemment précis pour éviter les mé-compréhensions de la part d'un non initié ...

    Je crois que, sur ce theme, la plupart des points de vue se regoignent
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #70
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Je préfere me limiter au consensus général, comme par exemple la définition de wikipedia

    Citation Envoyé par wikipedia

    Pseudocode:

    Pseudocode is a compact and informal high-level description of a computer programming algorithm that uses the structural conventions of programming languages, but omits detailed subroutines, variable declarations or language-specific syntax. The programming language is augmented with natural language descriptions of the details, where convenient.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #71
    Membre régulier Avatar de O( N )
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2006
    Messages : 126
    Points : 120
    Points
    120
    Par défaut Bonsoir a tous
    Désolé pour ma question de commencer à proposer quelquechose ( 2 pages de plus, çà fait plaisir !)

    ... et pour mon retard à mettre mon grain de sel aussi promis je m'y met un peu plus

    1) J'ai lu plus haut le problème de la détection des blocs d'instructions.

    Certes si l'on écrit de manière algorithmique comme l'on écrit un programme dans un langage,
    on retrouvera ce genre de problème comme
    2) les ambiguïtés dans l'écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     if (a=b=c) then ...
     else ...
    3) la dissociation des symboles (!= et <>) ainsi que
    4) les explications commentées.

    Voilà mes propositions (que j'avais déjà indiqué en premier lieu)

    J'ai une notation qui ne fait pas de référence, il me semble, à un langage de programmation connu. (en tout cas par moi)

    1) Pas de problèmes de bloc :
    conditions => TaFonction(TesParamètres)
    Dans tes paramètres, il peut y avoir un appel à une autre fonction. exemple :
    (i < k) => iter(i,j, k) = iter(i+1,uneAutreFonction(j),k)

    UneAutreFonction peut par exemple effectuer j = j * 2.
    avec l'appel à iter (0,1,2) j'obtiens 4 et iter correspond à la fonction 2 puissance k. ici k = 2 => 2 puissance 2 =

    Dans cet exemple je fais une boucle, donc on pourrait tout aussi bien l'écrire comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    j = 1
    POUR i = 0 A k FAIRE
     j = j * 2
    FINPOUR
    Ma manière qui ne m'appartient pas et dont je ne suis pas le créateur est peut-être moins lisible toutefois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    INIT : MaBoucle(i,j, k) = MaBoucle(0,1, k)
     
    (i < k) et (i>0) => MaBoucle(i,j, k) = MaBoucle(i+1,Fois2(j),k)
    (i = k) =>MaBoucle(i,j, k) = j
     
    (i>0) => Fois2(i) = i * 2 // La condition n'est pas importante ici.
    2) Pas de problèmes d'ambiguïté :
    l'affectation correspond à un remplacement comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (i < 0) => MaFonction(i) = MaFonction(-i) // ici je fais l'affectation de la variable (paramètre) i par la valeur -i
    (i>= 0) => MaFonction(i) = i // ici un return caché, notion importante lors de l'initiation à la programmation.
    Donc pas de symbole particuliers comme = ou <- ou ...
    et pas d'ambiguïté entre = et == puisque == n'existe pas dans cet notation...

    pas de problèmes pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    j = 1;
    while (i++<k) {
      j * = 2;
    }
    return j;
    // De même pour ...
    j = 1;
    while (++i<k) {
      j * = 2;
    }
    return j;
    est remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    (i < k ) => MaFonction(i,j,k) = MaFonction((i+1),j*2, k)
    (i >= k) => MaFonction(i,j,k) = j
    de même pour ...
    ((i+1) < k ) => MaFonction(i,j,k) = MaFonction((i+1),j*2, k)
    ((i+1) = k) => MaFonction(i,j,k) = MaFonction((i+1),j,k)
    ((i+1) > k) => MaFonction(i,j,k) = j
    3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // utile pour l'exemple uniquement
    (k>0) et (i>0) et (non (i = k)) => MaFonction(i,k) = MaFonction(i+(k-i),k)
    (k>0) et (i>0) et (i = k) => MaFonction(i,k) = i
    4)
    Comme je l'ai dit précédemment (je me répète , c'est l'âge, je dois me faire vieux )
    la notation algorithmique doit au possible être indépendante d'un langage quelconque ainsi que d'une langue, sa fonction principale est le partage et non les problèmes d'un langage et d'une langue.

    Pour le langage c'est les parties précédentes
    Pour la langue c'est les parties du code dont il est pratique ,par simplification et/ou par lisibilité, de mettre dans une langue, comme par exemple les commentaires ou l'écriture des conditions.

    La seule chose à faire : traduire !
    Si j'appelle ma fonction exponentielle car celà est plus parlant pour le site francophone,
    je peux toutefois avoir dans mes commentaires une référence afin que
    tous ceux ne parlant pas la belle langue de molière puisse toutefois comprendre le charrabia
    écrit dans les conditions (un anglais ne sait pas nécessairement que OR et le OU représente la même idée)
    comme dans les appels aux fonctions dont le nom est écrit dans ma langue maternelle
    (puissance en français, power en Anglais, ... en ...).

    A quoi sert la référence ici ?
    On lie à une référence une langue demandée par exemple je veux l'algorithme en Tchèque d'où
    une traduction des mots qui auront été liés à la langue au départ pour simplifier son écriture (par l'auteur).

    Donc au minimum des notions mathématiques (les opérateurs de comparaisons) et de logique (et AND Y ...)
    avec des simplifications de lecture (ce n'est pas f(i) mais FOIS2(i))

    Voila déjà quelques petites zidées
    Si y a d'autres problèmes pour la notation, je me ferais un plaisir de l'aborder en essayant de voir si cette notation l'enlèverait (déjà) et facilement (ensuite) ...
    Puisque l'idée est d'avoir quelque chose de simple et efficace pour partager nos idées ...

    (Et à tous ceux qui penserait se décourager ou ne pas être capable ...
    Le problème n'est pas dans le fait de se tromper mais dans le fait de ne pas essayer !)

    @+ tous
    Dans la vie il faut se cultiver ! Je suis développeur,
    je cultive des bogues.

    Citer c'est avouer qu'on a les mêmes idées que d'autres
    sans être capable de faire des phrases soit même ! - moi

  12. #72
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par O( N )
    Dans cet exemple je fais une boucle, donc on pourrait tout aussi bien l'écrire comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    j = 1
    POUR i = 0 A k FAIRE
     j = j * 2
    FINPOUR
    Ma manière qui ne m'appartient pas et dont je ne suis pas le créateur est peut-être moins lisible toutefois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    INIT : MaBoucle(i,j, k) = MaBoucle(0,1, k)
     
    (i < k) et (i>0) => MaBoucle(i,j, k) = MaBoucle(i+1,Fois2(j),k)
    (i = k) =>MaBoucle(i,j, k) = j
     
    (i>0) => Fois2(i) = i * 2 // La condition n'est pas importante ici.
    Et vous trouvez ca plus clair ??????

    Meme le "Haskell" est plus lisible que ca.

    Si le prix a payer pour "l'independance vis a vis d'un langage" est d'ecrire les algo de cette façon, je laisse tomber l'algorithmie et je passe directement au copier/coller de snipets de code.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #73
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par pseudocode
    Et vous trouvez ca plus clair ??????
    Je suis du même avis, ça me semble absolument pas clair. Ca ressemble vaguement à une notation pour langage fonctionnel... ce qui n'est pas du tout adapté à des programmes impératifs (ici, ça va bien que la fonction soit simple et s'écrive simplement de manière impérative sinon, c'est la croix et la bannière).

    Et, si dans ta boucle tu avais besoin de 5 arguments, tes fonctions en auraient autant... Ce qui rendrait le code encore plus illisible.
    Je ne répondrai à aucune question technique en privé

  14. #74
    Membre régulier Avatar de O( N )
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2006
    Messages : 126
    Points : 120
    Points
    120
    Par défaut Lisibilité ;)
    Certes, du point de vue de la lisibilité,
    ce n'est pas abordable clairement...

    D'un côté les conditions (permettant de voir tous les cas possibles et
    aidant en ce sens à cerner les limites et certains bogues sémantique de l'algorithme créé.),
    de l'autre côté des appels de fonctions avec une possiblité d'avoir beaucoup de paramètres.

    Je vois l'algorithmique, dans ce cas ci, comme une approche vers les mathématiques sans en être

    Cette notation respecte le fait de pouvoir ne pas être traduite quelquesoit la langue parlée et donc
    tend vers une certaine idée de langage universel.

    Si vous voulez être compris par tous, il faut un langage qui ne soit enfermé à quelque chose et puisse se partager
    (le dessin, des exemples sous forme de trace d'exécution...)

    D'un autre côté on écrit dans un langage connu par beaucoup et donc
    beaucoup pourront le lire mais ce n'est pas un algorithme,
    c'est tout simplement une nouvelle manière de coder,
    auquelle nous aurons certainement les mêmes problèmes à rencontrer que le langage auquel on fait référence.

    En proposant cette simplicité, on ne résoud pas certains problèmes cités précédemment... on les masque seulement.

    J'ai beaucoup de respect pour vos idées mais je ne suis pas d'accord du tout. (pas taper, pas taper )
    Pourquoi tenter les idées d'hier et pensant que notre approche sera meilleur que nos prédécesseurs,
    qui étaient peut-être (sans doute même) meilleur que nous !

    Je vous propose des difficultés de lecture mais la notation comme un langage est une initiation.
    Nous devons être clair dans cette notation, pas d'ambiguïté ... aussi, il faut transformer certains problèmes.

    Il est utopique de croire être compréhensible de tous, par contre instaurer un langage indépendant de certains problèmes rencontrés apporteraient une non ambiguïté dans sa lecture. Qu'il soit difficile à lire est comme lire un programme de C avec des joyeusetés comme les pointeurs et les opérateurs d'incrémentations mélangés. On passe tous par là

    Je ne crois pas que de recréer une forme dérivée d'un langage
    de programmation apportera la solution, il faut regarder autrement les problèmes des langages.
    Soit on les contourne (sans les masquer), soit on les résoud (déjà tenté par nos prédécesseurs)
    soit on les enlève (en essayant l'indépendance à ces problèmes, sous quelque forme que ce soit )

    Si on recré un nouveau langage dérivé d'un autre, on ne répond pas à la question initiale,
    on revit les instants , certes trés intéressants, qu'on vécut ceux qui ont créer
    de nouveaux langages de programmation.

    La question initiale est d'avoir une notation commune, pas un truc facile à lire (du genre l'algorithmique pour les NULLES ).
    L'algorithmique à été un apprentissage pour moi. J'y ai trouvé beaucoup de plaisir et de déception aussi.
    J'ai connu au moins trois formes d'écriture disctinctes et deux d'entre elles étaient là pour nous préparer à un langage de programmation que nous allions apprendre par la suite. Donc la notation avait les mêmes freins et ambiguïtés pour coller au langage qui serait aprés étudier.

    Sinon merci pour vos réponses car on est riche de ses erreurs ... (avec vous tous, je risque d'être riche )
    Dans la vie il faut se cultiver ! Je suis développeur,
    je cultive des bogues.

    Citer c'est avouer qu'on a les mêmes idées que d'autres
    sans être capable de faire des phrases soit même ! - moi

  15. #75
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    [MODE=HUMOUR]

    Citation Envoyé par O( N )
    ... (avec vous tous, je risque d'être riche )
    pourquoi pas moi aussi

    [/MODE=HUMOUR]
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  16. #76
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par O( N )
    Cette notation respecte le fait de pouvoir ne pas être traduite quelquesoit la langue parlée et donc tend vers une certaine idée de langage universel.
    Esperanto ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Faut il développer, harmoniser les notations en algo
    Par Zavonen dans le forum Contribuez
    Réponses: 14
    Dernier message: 03/02/2007, 17h21

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