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

Affichage des résultats du sondage: Quel est le meilleur langage pour assimiler les concepts de la POO?

Votants
35. Vous ne pouvez pas participer à ce sondage.
  • C++

    3 8,57%
  • C#

    4 11,43%
  • D

    0 0%
  • Delphi

    1 2,86%
  • Eiffel

    1 2,86%
  • Groovy

    0 0%
  • Java

    11 31,43%
  • Lisaac

    1 2,86%
  • Python

    4 11,43%
  • Ruby

    0 0%
  • Simula

    0 0%
  • Smalltalk

    6 17,14%
  • Visual Basic

    1 2,86%
  • WLangage

    0 0%
  • autre(précisez)

    3 8,57%
Discussion :

Quel langage pour apprendre la POO?

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 47
    Points : 53
    Points
    53
    Par défaut Quel langage pour apprendre la POO?
    Bonsoir, quel langage conseillerez vous à une personne qui désire se mettre sérieusement à la POO?
    N'hésitez pas à argumenter

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Le meilleur langage pour assimiler le paradigme OO pur c'est le Smalltalk.
    Cependant, est-ce vraiment ça que tu veux ?

    Sinon tu pourrais apprendre Python ou du Ruby qui sont plus « simples » d'accès.

  3. #3
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Smalltalk. Dans Smalltalk, quasiment tout est un objet, presque toutes les actions (sauf deux) sont des méthodes, etc. C'est l'endroit idéal.

    Si Smalltalk t'intéresse moins, Python a un bon modèle objet et le langage est facile et pratique.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Il y a aussi Objective-C.
    J'avais oublié celui-ci.

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par GnuVince Voir le message
    Python a un bon modèle objet et le langage est facile et pratique.
    pas convaincu du tout par la POO de chez Python... (même si elle est vraiment mieux que celle de Perl )


    perso, je considère que C++ est un bon choix car il reprend pas mal de notions que l'on trouve dans les différents langages à objets (mais peut-être y en a-t-il trop ?)

  6. #6
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    perso, je considère que C++ est un bon choix car il reprend pas mal de notions que l'on trouve dans les différents langages à objets (mais peut-être y en a-t-il trop ?)
    Pas du tout d'accord, C++ ajoute juste une couche objet un langage impératif déjà existant... Il est trop facile de faire de l'impératif en pensant faire de l'objet...

    Non, pour faire de l'objet pur, le mieux est sans doute Smalltalk, mais faut pas trop espérer s'en servir en entreprise après...

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par Woufeil Voir le message
    Pas du tout d'accord, C++ ajoute juste une couche objet un langage impératif déjà existant... Il est trop facile de faire de l'impératif en pensant faire de l'objet...
    j'ai dit apprendre à faire de la POO... pas un pseudo C encapsulé dans des classes (que certains considèrent comme du C++)

    si l'on reçoit un cours de POO en C++, et que le prof ne fait pas cette erreur, je pense sincèrement qu'on est ensuite apte à passer sur n'importe quelle autre langage objet
    exemple d'un cours d'introduction à la POO avec C++ http://www.ensta.fr/~bmonsuez/Cours/doku.php?id=in204

  8. #8
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    j'ai dit apprendre à faire de la POO... pas un pseudo C encapsulé dans des classes (que certains considèrent comme du C++)

    si l'on reçoit un cours de POO en C++, et que le prof ne fait pas cette erreur, je pense sincèrement qu'on est ensuite apte à passer sur n'importe quelle autre langage objet
    exemple d'un cours d'introduction à la POO avec C++ http://www.ensta.fr/~bmonsuez/Cours/doku.php?id=in204
    Il a été un peu méchant avec la programmation modulaire dans le cours introductif : l'exemple avec les compteurs est pas très convaincant, parce que je vois pas pourquoi la programmation modulaire ne permet pas de réaliser son exemple (voir OCaml).

    Par contre ce qui est bien c'est que les références utilisées pour le cours sont récentes, donc le prof est à jour vis-à-vis du C++.

  9. #9
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par HanLee Voir le message
    Il a été un peu méchant avec la programmation modulaire dans le cours introductif : l'exemple avec les compteurs est pas très convaincant, parce que je vois pas pourquoi la programmation modulaire ne permet pas de réaliser son exemple (voir OCaml).
    je pense qu'il a voulu dire qu'avec des "modules C" ce ne serait pas possible

    un truc dans ce style

    Code c : 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
    21
    22
    23
    24
     
    /* fichier compteur.c */
    int cpt;
     
    void initialize() {
       cpt = 0;
    }
     
    int value() {
       return cpt;
    }
     
    // ...
     
    /* main.c */
    #include "compteur.h"
     
    int main(int argc, char** argv) {
       initialize();
     
    // ...
     
       return 0;
    }

    Citation Envoyé par HanLee Voir le message
    Par contre ce qui est bien c'est que les références utilisées pour le cours sont récentes, donc le prof est à jour vis-à-vis du C++.
    pas trop dur pour lui d'être à jour sur C++ ^^

  10. #10
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Moi je vote pour Java.

  11. #11
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par publicStaticVoidMain Voir le message
    Moi je vote pour Java.
    merci d'argumenter... car en l'état ta réponse ne sert à rien

  12. #12
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    je pense qu'il a voulu dire qu'avec des "modules C" ce ne serait pas possible
    Bah, je vois pas trop pourquoi une programmation modulaire empêcherait d'utiliser une simple structure pour réaliser ce compteur ?

    Et on peut toujours masquer au besoin l'implémentation du compteur en ne manipulant que des pointeurs.

  13. #13
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par HanLee Voir le message
    Bah, je vois pas trop pourquoi une programmation modulaire empêcherait d'utiliser une simple structure pour réaliser ce compteur ?
    disons que la "sûreté" d'utilisation ne serait pas assurée

    Code c : 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
    21
     
    type struct {
       int limit;
       int valeur;
    } str_cpt;
     
    typedef str_cpt* compteur;
     
    compteur creerCompteur(int N) {
        compteur* res = malloc(sizeof(str_cpt));
        res->limit = N;
        return res;
    }
     
    int incrementerCompteur(compteur cpt) {
        if (cpt->valeur == cpt->limit)
          return -1;
     
       cpt->valeur++;
       return cpt->valeur;
    }

    comparé à

    Code C++ : 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
     
    template<class T,T N> class Compteur {
        protected:
           const T limit;
           T valeur;
     
        public: 
           Compteur : limit(N), valeur(0) { }
     
           T incrementer() {
               if (valeur == N)
                   return -1; // a améliorer, mais c'est l'idée ;)
     
               valeur++;
               return valeur;
           }
    };


    y a pas photos, je crois bien

  14. #14
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    C'est sûr, mais on est bien d'accord que l'exemple du cours est mauvais .

    Tu peux réaliser l'encapsulation en ne mettant que la déclaration anticipée de la structure dans le .h, puis en déplaçant la définition de la structure dans le fichier .c.

    Après, les problèmes dus à la manipulation par pointeurs, c'est la faute du C .

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    [...]
    si l'on reçoit un cours de POO en C++, et que le prof ne fait pas cette erreur, je pense sincèrement qu'on est ensuite apte à passer sur n'importe quelle autre langage objet[...]
    Effectivement, si tu reçois un bon cours de paradigme OO alors le fait qu'il soit en C++ n'est pas un mauvais. Mais c'est vrai pour tous les langages ce que tu dis: quand le cours de POO est bon, le langage n'est nullement important.

    Python, Ruby, Java, C++, Objective-C, Delphi, Smalltalk, Ocaml, Eiffel, Ada, quelle différence si le cours est bon ?

    Mais je ne pense pas que c'était la question à prime abord. Le langage qui « fit » (excusez l'anglicisme) le mieux dans la pensée OO est Smalltalk parce que c'est lui qui l'a inventé cette pensée (enfin peu ou prou).

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 95
    Points
    95
    Par défaut
    En ce qui me concerne on m'avait conseillé de commencer par Java ou Python, plus simples à aborder que le C++ donc sans doute meilleurs pour se concentrer uniquement sur l'aspect 'objet' du langage...

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Points : 56
    Points
    56
    Par défaut
    ca dépend si c'est pour utiliser ou pour apprendre.

    pour apprendre, sans hésitations Smalltalk ; tout y est objet, même les blocs, les classes etc.

    à utiliser, par contre, mieux vaut s'orienter vers Java, Python, voir C++ selon les besoins.

  18. #18
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    merci d'argumenter... car en l'état ta réponse ne sert à rien
    Java a beaucoup d'avantages par rapport aux autres langages OO
    • Simple et facile à prendre en main
    • Elimination des pointeurs que l'on retrouve beaucoup en C++ et C
    • Java a introduit un nouveau concept qui est les interfaces ce qui permet de remplacer le multi héritage en C++ par exemple.
    • L'allocation mémoire est automatique.
    • En java, on est sur qu'il n'y aura pas de problème de désallocation de mémoire grace au Garbage collector
    • En java, tout est objet donc plus facile à modéliser.
    • portabilité : Program once, Run anywhere
    • etc



    Voici en gros les avantages de Java

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par publicStaticVoidMain Voir le message
    En java, tout est objet donc plus facile à modéliser.
    Hum, as tu déjà essayé Ruby ou Smalltalk ?
    En java, seul les objets sont objets.. en Smalltalk, même une classe est objet instance d'une méta-classe.
    En java, les types ne sont pas des objets, en Smalltalk, pas de types...

    bref, java est loin d'être tout objet.

  20. #20
    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 Romain B. Voir le message
    Hum, as tu déjà essayé Ruby ou Smalltalk ?
    En java, seul les objets sont objets.. en Smalltalk, même une classe est objet instance d'une méta-classe.
    En java, les types ne sont pas des objets, en Smalltalk, pas de types...

    bref, java est loin d'être tout objet.
    On peut également ajouter le fait que les types primitifs ne sont pas des objets (int, char...). (peut être que c'est ce que tu as voulu dire avec : les types ne sont pas des objets)

    Je pense que si un langage permet de faire tous les principes de bases de la POO, c'est à dire :
    - de l'encapsulation
    - de l'héritage
    - du polymorphisme
    - notion de classe

    Après ça roule.

    De toute façon, un cours de programmation orienté objet ou de conception orienté objet ne va en général pas trop insister sur les spécificité du langage. Les cours utilisent en général très peu les bibliothèques standards (juste pour un peu d'affichage) mais utilisent énormément les principes de POO du langage.

    Un langage comme C++ "peut" éventuellement amener des difficultés avec des mots clefs comme virtual (bien qu'une fois assimilée, ce ne soit pas vraiment une difficulté)

Discussions similaires

  1. Quel langage/framework apprendre pour l'avenir?
    Par Ketaz dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 10/07/2014, 21h51
  2. Quel langage pour mieux comprendre la POO?
    Par vg-matrix dans le forum Débuter
    Réponses: 5
    Dernier message: 08/01/2010, 20h17
  3. [POO] Quel langage pour imprimer sur une imprimante spécifique
    Par popovitch130 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 21/03/2009, 19h44
  4. Quel livre pour apprendre le langage Assembleur ?
    Par argon dans le forum Assembleur
    Réponses: 1
    Dernier message: 11/06/2008, 18h46
  5. [Débutant] Quel (récent) langage pour apprendre ?
    Par Le Parrain dans le forum Débuter
    Réponses: 51
    Dernier message: 26/08/2006, 13h16

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