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

Humour Informatique Discussion :

Un code n'est pas écrit pour être optimal mais d'abord pour répondre à ses besoins

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 320
    Points : 27 370
    Points
    27 370
    Billets dans le blog
    1
    Par défaut Un code n'est pas écrit pour être optimal mais d'abord pour répondre à ses besoins
    Un code n'est pas écrit pour être optimal mais d'abord pour répondre à ses besoins,
    illustration par six profils de développeurs sur une suite de Fibonacci

    Pour les professionnels du domaine du développement logiciel, écrire du bon code nécessite de respecter certaines règles, certaines conventions, certaines bonnes pratiques. Un code qui est mal documenté voire pas du tout, un code qui n'est pas modulaire est souvent considéré par le commun des programmeurs comme étant du mauvais code. Cependant, dans bien des situations, ces critères se voient être relégués au second plan. Aussi, voici six profils de développeurs qui ont écrit des codes pour gérer une suite de Fibonacci.

    Développeur 1 : L'étudiant débutant

    Le premier de la liste est le débutant en programmation, pour le meilleur code qui puisse être est un code récursif. Il applique ce que le prof lui a appris en classe. Son code n'est pas destiné à d'autres programmeurs et peut être lui même ne va jamais le réutiliser. Il ne se fatigue donc pas à commenter son code ou à produire de la doc.

    Nom : Capture d’écran 2015-10-03 à 21.10.18.png
Affichages : 10550
Taille : 30,0 Ko

    Développeur 2: Le programmeur au Hackaton

    Pour lui l'objectif c'est de réussir à faire une bonne démo. Il se contente d'une simple structure conditionnelle pour s'assurer que son code prend en compte tout ce qui était prévu dans le cadre de sa démo; de toute façon ce n'est pas le code qui intéresse le public ou le jury mais plutôt le résultat qui s'affiche à l'écran.

    Nom : Capture d’écran 2015-10-03 à 21.12.05.png
Affichages : 10521
Taille : 44,4 Ko

    Développeur 3: le programmeur dans une startup

    Le troisième type de développeur quant à lui est indécis dans son code, il hésite encore quant au fichier devant contenir code. La plus grande partie de son code est à écrire, un jour peut être, si l'entreprise fait long feu. Il a autant de TODO dans son code que de nouvelles idées qui lui passent par la tête. Il ne va pas se fatiguer à les implémenter avant d'obtenir le premier financement de qui voudrait bien croire et financer son projet.

    Nom : Capture d’écran 2015-10-03 à 21.14.58.png
Affichages : 11055
Taille : 116,4 Ko

    Développeur 4: le programmeur dans une grande compagnie

    Le quatrième est un parano du code bien documenté et tout aussi customisé. Il prend le soin de décrire la moindre variable utilisée dans le code et surtout veille à utiliser ses propres types redéfinis pour plus de sécurité. Il s'assure ainsi que personne ne pourra réutiliser son code ailleurs que dans sa boite mais aussi et surtout il montre à son chef qu'il est un bon petit disciple qui respecte toutes les règles.

    Nom : Capture d’écran 2015-10-03 à 21.16.37.png
Affichages : 10479
Taille : 140,5 Ko

    Développeur 5: le programmeur Docteur en Maths

    L'avant dernier de la liste lui, est un pro des fonctions, son code doit être le plus modulaire possible. Il veut que son code reflète toutes les étapes de son raisonnement quant il résolvait le problème dans son brouillon. Il écrit donc des fonctions pour chaque partie ou sous partie, pour la lisibilité, c'est déjà ça.

    Nom : Capture d’écran 2015-10-03 à 21.18.13.png
Affichages : 10469
Taille : 88,4 Ko

    Développeur 6: Tom le chat

    Il se moque de la suite de Fibonacci et de tous les problèmes qui peuvent préoccuper les autres programmeurs. Il se contente lui de faire en sorte de garder ses chatons ensemble. Il ne connait qu'un seul commentaire quel que soit la portion de code qu'il veut commenter, et pourtant il n'est pas le pire programmeur de la liste.

    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
                        public static final int UNIT = 1 ;
                            public static final int UNITED = 2 ;
                            //meowwwwwwww meow
                            public int meow(int KITTENS_OF_THE_WORLD) {
                                //MEOW
                                if (KITTENS_OF_THE_WORLD < UNITED) {
                                    return KITTENS_OF_THE_WORLD ;
                                } else {
                                     //meowwwwwwww
                                     //meowwwwwwwwwwwwwwwww
                                     return meow(KITTENS_OF_THE_WORLD - UNIT)
                                        + meow(KITTENS_OF_THE_WORLD - UNITED)  ;
                                }
                            }    
    

    Source : Imgur

    Et vous ?

    Selon vous, quel est le meilleur code présenté par ces 6 profils de développeurs ?

    Pensez-vous qu'un code se doit avant tout de répondre à un besoin ?

    Voir aussi

    Forum Humour Informatique

    la Rubrique Humour

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 646
    Points : 11 135
    Points
    11 135
    Par défaut
    Tu as oublié de posté le code du chat (le plus important de tous quand même) ?

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 320
    Points : 27 370
    Points
    27 370
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Tu as oublié de posté le code du chat (le plus important de tous quand même) ?
    En fait je ne peux ajouter que 5 images apparemment, le code du chat est la 6ème image.
    Mais je confirme, c'est le plus important en effet

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 646
    Points : 11 135
    Points
    11 135
    Par défaut
    Par contre, je crois qu'il y a une petite erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int KITTENS_OF_THE_WORLD
    ce n'est pas plutôt un unsigned long?

  5. #5
    Membre éclairé
    Ingénieur de recherche
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur de recherche

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Points : 825
    Points
    825
    Par défaut
    Mouais... l'idée est amusante, mais les commentaires sont assez condescendants, c'est dommage.

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 700
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 700
    Points : 15 043
    Points
    15 043
    Par défaut
    Citation Envoyé par Victor Vincent Voir le message
    Un code n'est pas écrit pour être optimal mais d'abord pour répondre à ses besoins
    Un code a des besoins qui lui sont propres ? Je serais curieux de savoir lesquels...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2009
    Messages
    1 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 030
    Points : 4 203
    Points
    4 203
    Par défaut 1 et 5 pour moi
    C'est marrant comme article ^^

    Alors, même si je suis un développeur expérimenté, ayant travaillé dans plusieurs grosses boîtes, je suis plutôt comme l' "étudiant débutant" du premier exemple.
    J'essaie toujours d'avoir le moins de code possible, pour favoriser la lisibilité, et par feignantise aussi. Par contre, je commente pas mal et surtout, je réfléchis (parfois trop je l'admets) ^^.

    Il m'arrive rarement de mettre des propositions dans le code, car les décideurs ne codent pas.

    J'essaie aussi de décomposer le code le plus possible, pour structurer et éventuellement réutiliser, mais je ne suis pas maniaque non plus à ce niveau là.

    Donc en gros :

    1) et 5), mais en modéré. Efficace pour l'évolutivité et la maintenabilité. Par contre, ce n'est pas forcément le plus productif. Mais bon, en informatique, les 35h on ne connaît pas.

  8. #8
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Je ne suis pas fan de Haskell mais il a des atouts indéniables...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fib 0 = 0
    fib 1 = 1
    fib n = fib(n-1) + fib(n-2)

  9. #9
    Membre à l'essai
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 12
    Points
    12
    Par défaut Il manque le prof d'algorithmique !
    En effet toutes les méthodes proposées sont en O(en).
    Ce qui est cher payé.

    Les codes précédents demandent 2.269.806.339 appels à fibonacci pour calculer fibonacci(45)=1134903170.
    Cet algorithme en demande 87 (pour le même résultat, il va de soi).
    C'est la Mémoïsation.

    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
    16
    17
    18
    19
    20
    long fibonacci(int x) {
        if(x<0) {
            throw new IllegalArgumentException("x="+x+" < 0");
        }
        // Création du tableau de mémoïsation
        long[] farray = new long[x];
        // Initialisation du dit tableau, avec un décalage de 1 car en informatique les tableau commence à l'index 0.
        farray[0]=1;
        farray[1]=1;
        // Appel au calcul avec un décalage de 1 (voir ci-dessus)
        return fibonacciRecursivity(x-1,farray);
    }
        
    long fibonacciRecursivity(int x, long[] farray) {
        if(farray[x]==0) {
            farray[x] = fibonacciRecursivity(x-1,farray)+fibonacciRecursivity(x-2,farray);
        }
        return farray[x];
    }
    Quand à l'occupation mémoire :
    • fibonacci(164)=7278316983633677837,
    • fibonacci(165) dépasse un entier signé sur 64 bits,

    donc au plus nous pouvons calculer 164 valeurs.
    Un tableau de 164 long n'est pas cher payé .
    Nous pouvons aussi remplir tout au début le tableau des 164 valeurs (325 appels) puis avoir un temps de calcul en O(1) pour le reste du temps.

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Points : 327
    Points
    327
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    Je ne suis pas fan de Haskell mais il a des atouts indéniables...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fib 0 = 0
    fib 1 = 1
    fib n = fib(n-1) + fib(n-2)
    A la syntaxe près, c'est quasiment le même code que l'étudiant débutant (si on le nettoie un tout petit peu), non?

    Pour le docteur en maths, on peut faire nettement mieux que la formule de Binet. Les termes de la suite de fibonacci sont les coefficients du développement en série entière de x / (1-x-x^2). En J, c'est 5 opérateurs...

    Ca se lit "inverse de (%) 1-x (-.) - (-) x^2 ( x: ) en Taylor (t.)"

    @emazoyer : la formule de Binet (la solution du docteur en maths de l'exemple, si on oublie le calcul de la multiplication et de la puissance comme des additions déguisées...), n'est pas exponentielle, mais O(1): on écrit Fib(n)= floor(Phi^n/sqrt(5)), (en pratique il n'y a pas besoin de la seconde partie de la formule) et ça coute tout au plus une exponentielle. C'est plus rapide qu'un calcul direct avec mémoisation (qui est O(n))

    Francois

  11. #11
    Membre à l'essai
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 12
    Points
    12
    Par défaut Mea culpa
    @fcharton2
    Tout à fait, mea culpa, j'ai oublié l'option prof de math dans ma remarque.

    Math : O(1).
    Mémoïsation simple : O(n)
    Mémoïsation à l'initialisation : 325 appels à l'intialisation puis 1 opération pour chaque appel (difficile de faire mieux ).

    Je voulais simple indiquer que tout appel consécutifs à des méthodes utilisant les mêmes calculs devrait interpeler tout informaticien.
    Dans ma vie d'informaticien j'ai amélioré un export d'une heure en export de 2 mn en transformant une méthode en O(n3) en O(n).
    Et sans modifier l'algorithme en soi (cas du mathématicien), simplement en évitant l'oubli des valeurs déjà calculées.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 0
    Points : 0
    Points
    0
    Par défaut
    Une version avec mémoïsation en Haskell pourrait être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fibs :: [Integer]
    fibs = 0: scanl (+) 1 fibs
    
    fib :: Int -> Integer
    fib = (fibs !!)

  13. #13
    Membre averti

    Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Points : 327
    Points
    327
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par emazoyer Voir le message
    Je voulais simple indiquer que tout appel consécutifs à des méthodes utilisant les mêmes calculs devrait interpeler tout informaticien.
    Tout à fait d'accord... En général, quand une fonction est définie par une récurrence, le seul cas où il est intéressant de la calculer de manière bêtement récursive (ie sans conserver les calculs intermédiaires), c'est quand la récurrence ne fait intervenir qu'un terme f(n)= H(f(n-k)). Dès qu'on a plus d'un facteur (comme ici f(n)=f(n-1)+f(n-2), deux termes...), le calcul récursif devient déraisonnable. Et ce n'est pas de l'optimisation prématurée : pour peu qu'on calcule une valeur un peu élevée, l'algorithme naïf a toutes les chances de ne pas fonctionner du tout (soit qu'il fera exploser la pile, soit parce que le temps deviendra déraisonnable).

    Note au passage qu'ici, il n'est pas nécessaire de garder en mémoire toutes les valeurs passées. Les deux dernières suffisent. Plus généralement, si la récurrence fait intervenir des termes n-1, ... n-k, k termes suffisent. Là encore, si on avait à calculer de grandes valeurs de la suite, cela ferait une différence.

    Francois

  14. #14
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par fcharton2 Voir le message
    A la syntaxe près, c'est quasiment le même code que l'étudiant débutant (si on le nettoie un tout petit peu), non?
    Oui, c'est équivalent. Haskell a simplement une très élégante syntaxe pour ça. Pour ce cas-ci je ne pense pas qu'on puisse faire plus simple.

  15. #15
    MikeRowSoft
    Invité(e)
    Par défaut
    Citation Envoyé par Victor Vincent Voir le message
    Et vous ?

    Selon vous, quel est le meilleur code présenté par ces 6 profils de développeurs ?

    Pensez-vous qu'un code se doit avant tout de répondre à un besoin ?
    Aucuns codes ici présent n'est le meilleur.

    Oui, il faut répondre à un besoin, même humoristique.

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 551
    Points
    10 551
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    Oui, c'est équivalent. Haskell a simplement une très élégante syntaxe pour ça. Pour ce cas-ci je ne pense pas qu'on puisse faire plus simple.
    En langage listing (Prolog) ou interprété (Lisp, SML) le code est quasi similaire

  17. #17
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Points : 2 528
    Points
    2 528
    Par défaut
    Je ne vois pas de contradiction entre répondre à un besoin donné et être optimisé. Il va de soi que l'optimisation se détermine en fonction du contexte.

    En l'occurrence, difficile de faire plus optimisé que le code de hackathon, qui retourne en dur les valeurs d'une suite de Fibonacci. Par contre, c'est difficile à appliquer dans un contexte d'utilisation réel. En réalité, cette approche équivaut à la mémoïsation, mais un cran plus loin encore : c'est l'être humain qui fait le calcul initial. Ou pour le dire autrement : la mémoïsation reprend le principe du code "hackathon", mais le rend exploitable dans un cas général, tout en conservant (quasiment) l'optimisation des perfs.

  18. #18
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2009
    Messages
    1 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 030
    Points : 4 203
    Points
    4 203
    Par défaut
    Citation Envoyé par fcharton2 Voir le message
    Tout à fait d'accord... En général, quand une fonction est définie par une récurrence, le seul cas où il est intéressant de la calculer de manière bêtement récursive (ie sans conserver les calculs intermédiaires), c'est quand la récurrence ne fait intervenir qu'un terme f(n)= H(f(n-k)). Dès qu'on a plus d'un facteur (comme ici f(n)=f(n-1)+f(n-2), deux termes...), le calcul récursif devient déraisonnable. Et ce n'est pas de l'optimisation prématurée : pour peu qu'on calcule une valeur un peu élevée, l'algorithme naïf a toutes les chances de ne pas fonctionner du tout (soit qu'il fera exploser la pile, soit parce que le temps deviendra déraisonnable).

    Note au passage qu'ici, il n'est pas nécessaire de garder en mémoire toutes les valeurs passées. Les deux dernières suffisent. Plus généralement, si la récurrence fait intervenir des termes n-1, ... n-k, k termes suffisent. Là encore, si on avait à calculer de grandes valeurs de la suite, cela ferait une différence.

    Francois
    Merci pour la petite piqure de rappel. Pour moi, la mémoïsation tombe sous le sens (je ne connaissais pas le nom par contre), et je l'ai toujours pratiquée. Il faut juste veiller à ne pas saturer la mémoire.
    Pour la complexité, il faudra peut-être que je réapprenne à la calculer. Je fais tout à l'instinct pour le moment.

  19. #19
    Membre actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Points : 271
    Points
    271
    Par défaut
    Il ne faut pas oublié que le développeur ne fait pas tout le temps ce qu'il a envie.
    Ayant passé par les case Étudiant -> Grosse Boite -> SS2I

    Étudiant : Faux, personnellement mes profs m'ont appris à code sur papier et à commenter
    mais étant novice et "con", je n'en voyais pas l'utilité, et je suis encore novice

    Dans les Grosses Boites : on as souvent le temps de factorisés, de redéfinir ses classes, d'implémenter de la généricité ...

    Quant-au SS2I : les clients demandes un produit fonctionnel pour pas cher, donc faut s'adapter


    C'est ce que j'ai pu apprendre de mes différentes boites.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Points : 153
    Points
    153
    Par défaut
    Je commente jamais mon code dans le sens où j'effectue un nommage très précis des variables/classes/fonctions.

    A partir de là le commenter chaque ligne est assez ridicule.

Discussions similaires

  1. Pb de type de champs dans une requête
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/05/2005, 16h19
  2. [type de retour dans une proc]
    Par viny dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 19/03/2005, 15h35
  3. Vérification du type de données dans une procédure stockée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 12h20
  4. BC6 inserer un enreg de type date/heure dans Access2003
    Par o_live dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/06/2004, 12h13
  5. Quel type de BDD dans mon cas
    Par zoubidaman dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 10/06/2004, 19h00

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