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

Python Discussion :

Mésusage du mot ’tableau’ en Python.


Sujet :

Python

  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut Mésusage du mot ’tableau’ en Python.
    J’ai un dictionnaire Larousse français-anglais , anglais-français.
    J’ai aussi regardé ici: http://www.wordreference.com/fr/

    À ma connaissance, et après recherche dans ces dictionnaires, il n’y a aucun mot anglais traduisant le mot ’tableau’ qui désigne une structure de données dans les docs Python.

    Dans l’autre sens:
    - la traduction de ’list’ est ’liste’
    - la traduction de ’array’ est ’gamme, collection, ordre’.
    Étant donné que d’autres langages ont des variables nom array traduit par ’tableau’, remarquons qu'en Python la classe de nom array du module array permet de créer des instances d’un type très contraint: une telle structure de donnée est de type liste mais tous ses éléments doivent être du même type.
    - je ne connais aucune autre structure de données de base en Python dont le nom soit susceptible d'avoir pour traduction ’tableau’.


    Le mot ’tableau’ n’a donc aucune justification dans le cadre délimité du langage Python seul.




    De plus, elle n’amène que de la confusion car il est convenu d’appeler ’tableaux’ les ndarray de la bibliothèque Numpy:

    ce sont des structures de données qui assurent la représentation de ce qui, dans le domaine de la présentation visuelle de données, s’appelle des tableaux à double entrée, des tableaux à triple entrée, etc.

    Ces tableaux ont un indiçage direct (i,j,k,l) qui permet d’accéder directement à un élément et non pas au travers d’une cascade [i][j][k][l] signifiant “élément d’indice l de l’élément d’indice k de l’élément d’indice j de l’élément d’indice i“



    Le terme tableau désigne en PHP un machin à tout faire:
    Un tableau en PHP est en fait une carte ordonnée. Une carte est un type qui associe des valeurs en clés. Ce type est optimisé pour différentes utilisations ; il peut être considéré comme un tableau, une liste, une table de hashage, un dictionnaire, une collection, une pile, une file d'attente et probablement plus.
    http://php.net/manual/fr/language.types.array.php

    En Perl le mot ’tableau’ désigne des tableaux simples (indicés par des entiers) et des tableaux dits associatifs (ce sont en fait des dictionnaires à clés chaînes).



    En Python, réservons donc le mot tableau aux tableaux Numpy, et à d’autres structures de données dans d’autres bibliothèques si cela se justifie.
    Il serait bon que le langage Python se préserve des imprécisions existant dans d’autres langages.

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Le contenu de cet article est sensé, mais ...
    Beaucoup de gens viennent à Python après d'autres langages plus conventionnels et le plus souvent continuent à pratiquer parallèlement ces autres langages.
    Même dans ces autres langages le mot 'tableau' est une traduction (approximative faute de mieux) de l'anglais array.
    Je situe l'abstraction au niveau mathématique:
    Un 'tableau' (unidimensionnel) est une suite finie d'éléments (souvent de même nature) et correspond donc à une application de {0,1, ...,n-1} dans un certain ensemble regroupant 'des objets de même nature'.
    Pour la notion de tableau 'multidimensionnel' remplacer {0,1, .. ,n-1} par {0,1, ...,n-1}^k k<=2.

    Une liste python définit donc un tableau unidimensionnel sans équivoque. Vu que dans ce langage la liste est la collection 'mutable' type, la représentation des tableaux multidimensionnels pose des problèmes de convention. Les tableaux à 2 dimensions (matrices) sont donc représentés par des listes de listes, encore faut-il préciser si les sous-listes correspondent aux lignes ou aux colonnes.
    Pour tout ce qui est numérique, numpy existe et le mieux est de s'en servir pour des raisons de cohérence et d'efficacité.
    De toutes façons on ne pourra jamais obtenir l'éradication du mot 'tableau' du forum python.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 676
    Par défaut
    Salut,

    array = tableau remonte à la programmation d'algorithmes numériques en Fortran des années 70s. La définition de Zavonen est donc proche de ce qu'on entendait par là à l'époque.

    Pour le reste, l'informatique recouvre des pratiques qui se ré-inventent trop vite pour que le vocabulaire employé ait quelque chance de se stabiliser...
    Ce qui est souvent déroutant pour ceux qui aiment bien qu'on appelle chat un chat...
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre chevronné
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Je pense aussi que les noms choisis en python viennent du fait que les objets ont été codés en C. Une Liste python est une Liste doublement chaînée C.

    J'imagine que dans un tableau Numpy la mémoire alloué est contiguë.

    Par contre j'ai une question. Un dictionnaire Python est-il un arbre ?
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 676
    Par défaut
    ???

    Citation Envoyé par vincent.mbg Voir le message
    Je pense aussi que les noms choisis en python viennent du fait que les objets ont été codés en C. Une Liste python est une Liste doublement chaînée C.
    Je ne comprends pas trop ce que vous voulez dire: les objets Python ont une implémentation en C ou en Java ou en.... mais côté noms: list, dict, uple n'ont pas d'équivalents dans le C 'standard'.

    Par contre j'ai une question. Un dictionnaire Python est-il un arbre ?
    http://svn.python.org/view/python/tr...&pathrev=66801
    Ils sont construit à partir de hash tables

    Pour Numpy, je ne sais pas.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    À mon sens, un tableau est une structure de données qui associe une valeur à une clef. En l'occurrence, une liste associe une valeur quelconque à une clef numérique. Je pense donc que l'on peut parler de tableau.

    Citation Envoyé par eyquem Voir le message
    Le terme tableau désigne en PHP un machin à tout faire
    PHP n'est pas un exemple de cohérence. Il suffit de voir les différences de nommage et de convention d'appels (ordre des paramètres dans une même famille de fonctions, par exemple).

  7. #7
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Je pense aussi que les noms choisis en python viennent du fait que les objets ont été codés en C.
    Le terme de liste (chaînée) est lié au langage LISP, second langage évolué après fortran (Mac Carthy-list processor) qui traitait presque exclusivement des listes en 1960 alors que C n'était même pas dans les limbes (naissance 13 ans plus tard). Aujourd'hui même la liste n'est pas un type de données primitif de C, mais fait par contre partie de la bibliothèque standard de C++.
    À mon sens, un tableau est une structure de données qui associe une valeur à une clef.
    Pour moi cette structure est plutôt un dictionnaire (python) ou map ou mapping (C,C++).
    Un tableau est une collection d'objets de même nature occupant un bloc de mémoire unique de sorte que l'accès à la donnée d'indice i à partir de l'adresse du début de bloc s'obtient par simple 'offset' de i*s où s est la taille d'un objet.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 676
    Par défaut
    Oh c'est beaucoup plus vieux.

    Listes et fonction récursives sont le propre des langages fonctionnels mais ils héritent du lambda calcul inventé dans les années 30/40 a peu près en même temps que la machine de Turing.
    Les modèles de Lisp et Fortran dérivent respectivement du lambda calcul et de la machine de Turing.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    mais ils héritent du lambda calcul inventé dans les années 30/40 a peu près en même temps que la machine de Turing.
    Mais l'une et l'autre ne sont que des notions théoriques. Le lambda-calcul utilise la notation fonctionnelle classique. La première 'incarnation' du lambda calcul c'est LISP. Il revient à LISP d'avoir adopté la notation polonaise rendant ainsi la structure de liste universelle, et faisant en sorte que programmes et données relèvent de la même syntaxe simple à base de listes chaînées. L'idée de Mac Carthy étant de mettre en pratique la thèse d'Alonzo Church.
    Je ne connais aucun rapport entre Fortran et le lambda-calcul (ce qui ne veut pas dire qu'il n'y en ait pas).
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 676
    Par défaut
    De nos jours ces notions théoriques ferait partie d'un document de conception.... dont la réalisation pourra éventuellement être faite lorsqu'on aura de quoi.... Et c'est bien dans ce type de document qu'on définit ce que sont listes et autres.
    Je ne connais aucun rapport entre Fortran et le lambda-calcul (ce qui ne veut pas pas qu'il n'y en ait pas).
    Rassurez vous, moi non plus!
    Je faisais un parallèle entre fortran/turing par opposition a Lisp/Church
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre chevronné
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    ???
    Je ne comprends pas trop ce que vous voulez dire: les objets Python ont une implémentation en C ou en Java ou en.... mais côté noms list, dict, uple n'ont pas d'équivalents dans le C 'standard'.
    Désolé, je me suis mal exprimé, je voulais dire que je pensais qu'ils avaient fait une liste chaînée pour implémenter la pylist quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct py_list {
         py_list * next ;
         py_list * prev ;
         [...]
    } py_list ;
    J'ai regardé les sources mais j'ai du mal à suivre, il y a beaucoup de macro. Je me rends compte que le concept de la py_list n'est peut-être pas aussi simple.
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 676
    Par défaut
    Citation Envoyé par vincent.mbg Voir le message
    J'ai regardé les sources mais j'ai du mal à suivre, il y a beaucoup de macro. Je me rends compte que le concept de la py_list n'est peut-être pas aussi simple.
    Hmm...
    Je dirais que le concept est "simple" mais que dans le contexte objet que propose Python, ce "simple" demande une réalisation sophistiquée.

    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Tableau en python :(
    Par Shinyshine dans le forum Général Python
    Réponses: 4
    Dernier message: 27/07/2010, 23h15
  2. Problème de passage de tableau de Python vers Fortran 90
    Par P.Math dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 31/03/2010, 11h01
  3. manipulation de tableau (like python)
    Par geekrider dans le forum Ruby
    Réponses: 1
    Dernier message: 10/09/2009, 16h28
  4. Traiter Un Tableau sous Python
    Par anass_59 dans le forum Bibliothèques tierces
    Réponses: 5
    Dernier message: 18/06/2009, 15h35
  5. Liste des mots clés de Python
    Par rambc dans le forum Général Python
    Réponses: 2
    Dernier message: 03/03/2009, 08h55

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