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. #21
    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 publicStaticVoidMain Voir le message
    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
    Attention à ce que tu dis. Ça ne fait pas sérieux parfois.
    • A priori, Java n'est pas plus simple ou moins simple que les autres langages. À mon avis, Ruby ou Python sont même plus agréable, et Smalltalk aussi.
    • Les pointeurs existent toujours. Ce que tu veux dire c'est qu'on ne peut faire de l'arithmétique ou les modifier directement. En fait, c'est en C++ ou tu peux faire des objets sans utiliser de pointeurs. Toujours est-il que cet état de fait en Java est celui qui est employé presque partout maintenant.
    • Ce n'est pas Java qui a introduit le concept d'interface. En fait, Java n'a quasiment rien inventé. Il a repris des bonnes idées. Ce qui est déjà bien. En plus, l'héritage multiple possède des avantages non négligeables. Et donc on pourrait dire que c'est un désavantage de Java. Ne pas autoriser l'héritage multiple est surtout une simplification du langage à la base. Cependant, si tu suis une méthodologie objet, le fait de ne pas avoir la possibilité de faire de l'héritage multiple peut être un sérieux problème conceptuel. J'admets que cela peut toujours se régler a posteriori, mais en brisant la procédure « naturelle » qui va de la réalité vers le modèle. Si tu dois hériter de deux « surclasses » (une croisement voiture/hydroglisseur par exemple) pourquoi privilégierais-tu l'un de deux (l'hydroglisseur ou la voiture) ?
    • L'allocation automatique existait bien avant Java, et dans Smalltalk particulièrement qui était un des premiers à l'implémenter.
    • Idem bien sûr du Garbage Collector.
    • En Java, tout n'est pas objet. Ne serait-ce que les int par exemple. Alors qu'en Smalltalk TOUT est objet, y compris les structures de contrôles (les if/then/else suivent le principe des messages). De plus la syntaxe de Smalltalk explicite clairement l'idée de passage de message (comme en Objective-C). Pour comprendre et apprendre (ce qui va de paire) les notions OO, Smalltalk est donc mieux approprié que Java.
    • La portabilité est vrai pour tous les langages qui sont cités ici : Python, Ruby, Smalltalk.

    En fait, Java est parti avec la syntaxe de C pour essayer de s'attirer les développeurs de C++, mais son réel maître à penser c'est Smalltalk.
    Même Eclipse est inspiré de l'environnement de Smalltalk ! Toutes les notions de refactoring n'ont rien de nouveau pour ceux et celles qui connaissent cet illustre ancêtre.

    Si tu veux donner un avantage de Java sur Smalltalk, il va falloir chercher ailleurs. Dans ton etc. peut être. Il me semble qu'en dehors de Java, tu ne connais pas beaucoup le reste. Qu'est ce que Java peut apporter par rapport à Smalltalk ou à Eiffel ? (dans l'optique apprentissage du paradigme OO bien sûr)

  2. #22
    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 millie Voir le message
    [...]
    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é)
    Je ne pense pas que virtual soit plus génant que abstract. Ce qui serait plus génant c'est l'utilisation de « : » pour dire extends. Mais bon, la syntaxe est loin d'être le problème quand on apprend un paradigme.

    Ceci peut sembler déroutant au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    result := a > b
        ifTrue:[ 'greater' ]
        ifFalse:[ 'less' ]
    mais ça a l'avantage de continuer à forcer la réflexion en paradigme OO.

  3. #23
    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 Garulfo Voir le message
    Je ne pense pas que virtual soit plus génant que abstract. Ce qui serait plus génant c'est l'utilisation de « : » pour dire extends. Mais bon, la syntaxe est loin d'être le problème quand on apprend un paradigme.

    Quand je disais que virtual pouvait être génant, c'était pas en temps que notation pour dire abstract (virtual mamethode() = 0) mais comme étant une notation qui peut casser le polymorphisme lorsque virtual n'est pas mis.
    Ce n'est pas non plus surhumain, mais quand on voit comment que des débutants ont déjà du mal avec le C++, ajouter ces choses en plus n'aident pas forcement.

  4. #24
    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 Garulfo Voir le message
    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).
    Pauvre Simula 67...

    Pour publicStaticVoidMain, je rajouterais en plus de ce qu'a dit Garulfo (que je plussoie fortement) que les pointeurs (ou plutot l@arithmetiaue des pointeurs) ne sont que tres tres rarement necessaire en C++...

  5. #25
    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
    Pauvre Simula 67...
    il n'est pas resté sur le papier

    sinon on peut parler de Algol 60



  6. #26
    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 Woufeil Voir le message
    Pauvre Simula 67...[...]
    C'est la raison de mon « peu ou prou. »
    Je suppose qu'on pourrait probablement trouver même un autre langage encore plus expérimental que tout le monde ou presque a oublié et qui lançait l'idée OO.

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 101
    Points
    101
    Par défaut
    Salut !!

    Peu importe le langage si tu comprends déja les notions de classes, de méthodes, d'objets etc...

    La programmation objet, c'est avant tout une façon de programmer. Moi perso, j'ai bien compris son fonctionnement grâce au Csharp et à pas mal d'exercices sympas

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