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 :

Perplexité du débutant autodidacte


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut Perplexité du débutant autodidacte
    Bonjour,

    [1:] est bien un slice qui supprime le premier élément d'une liste.
    Comment son usage se justifie-t-il dans une boucle comme la suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    numbers = [3, 2, 5, 8, 4, 7, 9, 1, 6, -12]
    minimum = numbers[0]
     
    for i in numbers[1:] :  # <---
        if i < minimum:
            minimum = i
     
    print('Le minimum est', minimum)
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for i in numbers[0:] :
    donne le même résultat.

    Merci pour votre explication.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    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 215
    Par défaut
    Je suis un bricoleur en Python, donc ma réponse n'est pas forcément bonne.
    De manière générale, quand une nouvelle variable apparaît, il est assez sain de l'initialiser : minimum = number0[0]
    C'est fait, minimum a une valeur, et on peut maintenant comparer numbers[1] avec minimum.

    Dans la 2ème proposition, minimum apparaît pour la première fois quand on compare numbers[0] avec minimum ; autrement dit, on compare numbers[0] avec un truc qui n'existe pas encore.

    Dans certains langages, ça peut se passer correctement. Peut-être que ça se passe correctement avec la version actuelle de Python, et que ça ne marchera plus dans une nouvelle version ?
    Par sécurité, un bon programmeur va préférer initialiser minimum (minimum=numbers[0]) avant de l'utiliser.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par vincent.steiner Voir le message
    [1:] est bien un slice qui supprime le premier élément d'une liste.
    Oui et non (je pense que tu as compris mais mal formulé). Le slice ne supprime rien (sinon la liste serait dénaturée après utilisation), il extrait juste une sous-partie.

    Citation Envoyé par vincent.steiner Voir le message
    Comment son usage se justifie-t-il dans une boucle comme la suivante...alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for i in numbers[0:] :
    donne le même résultat.
    Oui, même résultat (et dans ce cas, même plus besoin de slice => for i in numbers). Mais ce n'est pas parce que le résultat (visible) est identique que ça se passe pareil en interne.
    Dans ton 2° cas tu compares numbers[0] alors qu'il a déjà été traité.

    Citation Envoyé par tbc92 Voir le message
    De manière générale, quand une nouvelle variable apparaît, il est assez sain de l'initialiser : minimum = number0[0]
    C'est même obligatoire (impossible en Python de créer une variable sans en même temps lui donner une valeur)...

    Citation Envoyé par tbc92 Voir le message
    Dans la 2ème proposition, minimum apparaît pour la première fois quand on compare numbers[0] avec minimum ; autrement dit, on compare numbers[0] avec un truc qui n'existe pas encore.
    Je pense que dans sa seconde proposition, la ligne 3 minimum = numbers[0] n'a pas disparu. Le PO veut juste savoir la différence entre for i in numbers[1:] et for i in numbers[0:] dans un contexte où ce qui a été écrit en amont ne change évidemment pas. Et la réponse c'est juste "une itération de plus".

    Citation Envoyé par tbc92 Voir le message
    Dans certains langages, ça peut se passer correctement. Peut-être que ça se passe correctement avec la version actuelle de Python, et que ça ne marchera plus dans une nouvelle version ?
    Non, si la variable "minimum" n'existe pas, Python indique qu'il ne peut pas effectuer la comparaison et renvoie une exception NameError

    En revanche, ce qui a changé entre P2 et P3 c'est que sous P2, on pouvait initialiser minimum à None (qui est l'initialisation neutre) et comparer quand-même les éléments avec ce minimum. P2 acceptait la comparaison if i < minimum bien que "i" contienne un int alors que minimum contient un NoneType.
    Sous P3 ce n'est plus possible. Celui qui veut utiliser None doit alors ensuite le tester spécifiquement (et surtout en premier)
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    numbers = [3, 2, 5, 8, 4, 7, 9, 1, 6, -12]
    minimum = None
     
    for i in numbers:
        if minimum is None or i < minimum:
            minimum = i
     
    print('Le minimum est', minimum)

    Citation Envoyé par tbc92 Voir le message
    Par sécurité, un bon programmeur va préférer initialiser minimum (minimum=numbers[0]) avant de l'utiliser.
    Ce n'est même pas une question de sécurité, c'est carrément une question de logique. Quel que soit le langage (y compris les langages qui acceptent des variables sans qu'elles soient initialisées comme par exemple le C), on ne peut pas utiliser une variable si on ne lui a pas mis auparavant une valeur à utiliser. D'où ce précepte C (valable aussi en Python): ne jamais regarder le contenu d'une variable sans l'avoir remplie auparavant. Et cet autre précepte (moins obligatoire mais qu'on peut quand-même citer): ne jamais remplir deux fois une variable sans l'avoir lue (ou avoir eu possibilité de la lire) au-moins une fois entre temps.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in numbers[1:] :  # for i in [2, 5, 8, ...]
    for i in numbers[0:] :  # for i in [3, 2, 5, 8, ...]
    numbers[0] c'est 3, ça n'est pas strictement plus petit que lui même.
    les seuls à être strictement inférieur à minimum c'est 2, 1 et -12 (et le dernier trouvé en parcourant la liste c'est -12), donc on obtient le même résultat dans les deux cas.

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    C'est même obligatoire (impossible en Python de créer une variable sans en même temps lui donner une valeur)...
    Pas tout à fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Python 3.8.10 (default, Mar 15 2022, 12:22:08) 
    [GCC 9.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> a = int()
    >>>
    Bon, évidemment:
    Ceci s'explique par le fait que, stricto sensu, il n'y a pas de variable en Python (dans le sens; petite-boîte-contenant-une-valeur-pouvant-varier).

    Notez que l'on peut créer une variable référence à la volée. Donc la créer lors de son utilisation.
    https://docs.python.org/3/whatsnew/3.8.html

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour,

    Pas compris ce que tu voulais dire puisque ici tu donnes bien une valeur , simplement elle n'est pas explicite dans ton code
    int(), str(), list() retournent des objets vides mais pas None
    D'autres constructeurs et des fonctions(procédures) ne retournent "rien", mais ici aussi python va assigner l'objet None donc une certaine valeur

    Citation Envoyé par VinsS Voir le message
    pas de variable en Python (dans le sens; petite-boîte-contenant-une-valeur-pouvant-varier).
    pas bien compris...
    - il faut juste ajouter "une référence vers une petite boîte..." donc ne change pas grand chose pour le commum des pythonneux
    - une variable en python est toujours un objet qui est une "petite-boîte-contenant-une-valeur-pouvant-varier"

    Citation Envoyé par VinsS Voir le message
    Notez que l'on peut créer une variable référence à la volée. Donc la créer lors de son utilisation.
    https://docs.python.org/3/whatsnew/3.8.html
    Tu parles de morse ? en fait il n'y a pas de différence avec une boucle for, on assigne explicitement une valeur à une variable (ici locale au block for/if/while)

    ------------


    Sve@r a bien précisé "créer" une variable ! Sans parler de creer, il y a une syntaxe particulière en python de plus en plus employée avec les types
    "machin" est bien déclarée comme une variable mais pas créée

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Bon, évidemment:
    Ben voilà, en écrivant a=int() tu donnes (affectes) bien une valeur à la variable "a". Ce n'est pas parce que tu appelles l'objet int() sans lui spécifier toi de valeur particulière que celui-ci n'en contient quand-même pas une (par défaut dans la méthode __init__).

    Citation Envoyé par papajoker Voir le message
    machin: str.
    "machin" est bien déclarée comme une variable mais pas créée
    Exact, l'instruction n'est pas refusée (ce qui m'étonne). Mais ensuite print(machin) renvoie quand-même un NameError (et là je suis tout de suite plus rassuré vis à vis de mes certitudes)
    Si on rajoute qu'en plus les annotations (le : type mis après) n'est suivi d'aucune obligation (bien qu'ayant spécifié "str" tu as tout à fait le droit d'écrire ensuite machin=3.1416) je me demande l'action réelle de cette instruction. Peut-être est-elle traitée comme un pass...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    je dirais qu'en fait, c'est de savoir comment on interprète/parle de None, est une valeur ou non...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def truc():
        pass
    variable = truc()
    print(type(variable), variable)
    dans la doc
    L'objet Python None, exprimant l'absence de valeur.
    Donc on a un objet avec une valeur(None) mais cette valeur "exprime" : pas de valeur

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papajoker Voir le message
    je dirais qu'en fait, c'est de savoir comment on interprète/parle de None, est une valeur ou non...
    Jusqu'à présent on ne parlait pas de None qui effectivement joue un peu le rôle de cheveu dans la soupe.

    Alors None est un peu particulier. Déjà on ne le compare pas de la même façon que le reste. La PEP8 indique qu'il faut utiliser "is" => if var is None (vs if var == None).
    Par ailleurs, comme je l'ai dit plus haut, la gestion du None a un peu changé entre P2 et P3. Par exemple None < 5 est autorisé sous P2 mais ne l'est plus sous P3.
    On peut donc pas vraiment parler de "valeur" au sens numérique du terme (interdit par exemple de demander None+1) mais son existence permet quand-même la création d'une variable "neutre" justement pour respecter cette obligation d'affecter une valeur quand on veut créer une variable.

    Citation Envoyé par papajoker Voir le message
    Donc on a un objet avec une valeur(None) mais cette valeur "exprime" : pas de valeur
    Exactement. Mais cela n'est pas vraiment plus compliqué à comprendre que les entiers naturels, ensemble inventé à l'origine pour compter les choses ; mais dans lequel est arrivé ensuite le 0, élément permettant d'indiquer qu'il n'y a rien à compter.
    En informatique, le "rien" n'est pas possible (impossible de dire "je veux que cette variable ne contienne rien") mais est parfois nécessaire. Donc il a bien fallu trouver un symbole signifiant "rien" (NULL en C, NUL en SQL, et None en Python).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    me demande l'action réelle de cette instruction
    Déclarer un type va aider l'autocomplétion dans mon éditeur mais aussi aider à comprendre le type de la variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Personne():
        def nom(self): return "moi"
     
    class Enfant(Personne):
        pass
     
    conteneurs = [Personne(), Enfant(), Enfant()]  # dans un autre fichier 
     
    # dans autre fichier (main)
     
    i : Personne
    for i in conteneurs:
        i.nom()
        print(type(i), i)
    - codeur : visualise le type retourné (ici par liste) , oui, le nom de la variable peut donné un très gros indice sur le type
    - editeur: autocomplétion sur variable i qui me propose .nom() # commente la déclaration et i est de type inconnu

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par papajoker Voir le message
    - codeur : visualise le type retourné (ici par liste)
    - editeur: autocomplétion sur variable i qui me propose .nom() # commente la déclaration et i est de type inconnu
    Je parlais de l'action dans le moteur Python lui-même, pas l'action que ça produira dans les neurones d'un autre lecteur ou dans les options ergonomiques d'un éditeur Python assez intelligent pour comprendre le code qu'il est en train d'éditer
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    tout à fait
    Note Le moteur d'exécution Python n'applique pas les annotations de type pour les fonctions et les variables. Elles peuvent être utilisées par des outils tiers tels que les contrôleurs de type, les IDE, les analyseurs de code, etc.
    Citation Envoyé par papajoker Voir le message
    une syntaxe particulière en python de plus en plus employée avec les types
    J'ai simplement écrit que l'on peut la rencontrer (ici une "bizarre" déclaration pour python). Si utile ou non d'utiliser les annotations de type, cela fait encore débat dans la communauté bien que acté

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Mais cela n'est pas vraiment plus compliqué à comprendre que les entiers naturels, ensemble inventé à l'origine pour compter les choses ; mais dans lequel est arrivé ensuite le 0, élément permettant d'indiquer qu'il n'y a rien à compter.
    Mouais, si on lit les axiomes de Peano qui les définissent j'en suis pas si sûr.

    Citation Envoyé par Sve@r Voir le message
    En informatique, le "rien" n'est pas possible (impossible de dire "je veux que cette variable ne contienne rien") mais est parfois nécessaire. Donc il a bien fallu trouver un symbole signifiant "rien" (NULL en C, NUL en SQL, et None en Python).
    Avec Python, la notion de variable est scotchée à l'association entre une étiquette (un nom ou chaîne de caractères) et un objet. Après que l'objet soit True, False, None ou "123"... ce sera toujours un(e référence à un) objet.

    Ce qui renvoie au pattern de conception de l'objet null qui n'est pas rien.

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

  14. #14
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Mouais, si on lit les axiomes de Peano qui les définissent j'en suis pas si sûr.
    Ce n'est pas parce qu'un brillant mathématicien a redéfini le "0" sous une forme purement mathématique qu'il peut changer la façon dont il est arrivé dans notre perception des choses. Même Euclide ne connaissait pas le zéro, lui qui disait "est unité ce selon quoi chacune des choses existantes est dite une" associant alors les nombres à l'existence des choses et n'associant rien à la non-existence. Aristote, lui, il disait carrément que le vide n'existait pas.
    Ce sont les Babyloniens qui vont les premiers utiliser le zéro (vers le IIIe siècle après J.-C., donc grosso-modo 600 ans après Euclide, à peu près le même écart qu'il y a entre la découverte de l'Amérique et celle de la mécanique quantique), non pas comme un nombre ni même un chiffre, mais en tant que marqueur signifiant l'absence. Par exemple, si l'on voulait transposer le nombre 507 par écrit, on écrivait 5 7 ; il y avait cinq centaines, aucune dizaine et sept unités. Pour se rappeler cette absence et éviter un confusion avec le nombre 57, les scribes (et non les mathématiciens) inventèrent un marquage prenant la forme d'un double chevron incliné pour signifier cette absence.
    Ensuite ce sont les indiens, aidés par leur philosophie selon laquelle le vide et l'infini sont l'essence de l'univers, vont établir que x-x=0, faisant alors entrer ce "marqueur" dans la famille des nombres pouvant subir une opération mathématique.
    Alors oui, une fois qu'on l'a admis on peut s'amuser à le redéfinir mathématiquement, mais seulement après. Les mathématiques n'ont jamais précédé la réalité. Le cercle trigonométrique n'est certainement pas arrivé avant l'invention de la roue.

    Citation Envoyé par wiztricks Voir le message
    de l'objet null qui n'est pas rien.
    Je n'ai pas dit que null c'était rien (j'ai même carrément dit le contraire quand j'ai dit qu'en informatique le "rien" n'existe pas), j'ai dit qu'il "représentait" le rien. Ce n'est pas la même chose.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    Ce n'est pas parce qu'un brillant mathématicien a redéfini le "0" sous une forme purement mathématique qu'il peut changer la façon dont il est arrivé dans notre perception des choses.
    C'est pas comme si les choses que nous utilisons en informatique étaient autre chose que des abstractions...
    Après, on peut toujours se poser la question de savoir comment on en est arrivé là (je n'avais pas compris que c'était le sujet) et les articles de wikipedia sont un bon début.

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

Discussions similaires

  1. [N-Tier] Débutant - Besoin d'aide sur un petit projet à visée autodidacte
    Par glamdrick dans le forum Autres
    Réponses: 3
    Dernier message: 11/02/2015, 11h31
  2. Réponses: 17
    Dernier message: 11/11/2008, 12h17
  3. Réponses: 0
    Dernier message: 01/08/2008, 00h18
  4. Débutant autodidact access
    Par papy50 dans le forum Modélisation
    Réponses: 1
    Dernier message: 02/07/2007, 10h10
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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