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

Débats sur le développement - Le Best Of Discussion :

[Débat] C++ vs Java


Sujet :

Débats sur le développement - Le Best Of

  1. #1401
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par Uther Voir le message
    J'aurais tendance à être d'accord mais comme on travaille rarement seul, et que le niveau de chacun est très variable, il est souvent préférable de viser ce qui sera le plus simple et clair pour tout le monde, directement.
    Personnellement, c'est comme pour vous, quand j'ai à mettre les mains dans du Java, je galère... C'est une question de point de vue.

    Citation Envoyé par Uther Voir le message
    JOui mais le fait que les interface soient des classes abstraites pures élimine les cas complexes que peut provoquer l'héritage multiple.
    Héritage virtuel => solution.

    Citation Envoyé par Uther Voir le message
    JCe qui me gène surtout c'est que ça détourne une utilisation existante d'un opérateur pour faire autre chose. En toute logique, un opérateur se devrait de retourner un résultat sans interagir avec autre chose que ces opérandes devrait
    Je suis le premier a trouver ça sympathique.
    Oui, assez subjectif. J'aurais compris que tu trouves un opérateur comme <<|||||||||******----+++<< peut pratique, mais << ça va je trouve

    Citation Envoyé par Uther Voir le message
    JJe suis pas un expert C++ loin de la, mais il me semble que comme en C, tant que l'on ne sort pas de l'espace mémoire de l'application il ne se passe rien non?
    Tu peux avoir pleins de pépins. Mais quand tu utilises un std::vector ou similaire, tu as une gestion des erreurs (y compris les indices trop grands, ou quoi) avec exceptions, par exemple.

    Citation Envoyé par Uther Voir le message
    JQuant au pointeurs intelligents, il ont beau exister. A ce que j'ai lu les pointeurs de la STL sont loin d'être suffisants pour gérer tous les problèmes et comme ce n'est pas intégré au langage, c'est loin d'être naturel à utiliser.
    Enfin j'ai quand même l'impression que le pointeurs classiques sont toujours utilisés un peu partout.
    On fait de notre mieux pour répandre les bonnes pratiques d'aujourd'hui en C++, après c'est aux programmeurs C++ de se former au mieux. Par contre, tout le monde est d'accord ici je pense pour dire (à nouveau) que le C++ donne plus de libertés, mais avec les risques qui viennent avec.

  2. #1402
    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 Uther Voir le message
    Je suis pas un expert C++ loin de la, mais il me semble que comme en C, tant que l'on ne sort pas de l'espace mémoire de l'application il ne se passe rien non?
    Pour une application standard dans un OS standard, tu ne peux pas sortir de la mémoire virtuelle à cause de la MMU (hors mode noyau).
    L'OS ne fait qu'intercepter l'accès à des adresses virtuelles non légales et te renvois un Segmentation Fault sous UNIX et une boite d'erreur sous Windows.
    Je ne répondrai à aucune question technique en privé

  3. #1403
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Alp Voir le message
    Héritage virtuel => solution.
    Non justement... mais c'est encore une fois une différence de philosophie.

    A mon avis l'héritage virtuel par défaut apporte vraiment beaucoup à la vision "objet" de Java, et je trouve cela bien plus utile que l'héritage multiple...

    a++

  4. #1404
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 570
    Points : 15 535
    Points
    15 535
    Par défaut
    Pour une application standard dans un OS standard, tu ne peux pas sortir de la mémoire virtuelle à cause de la MMU (hors mode noyau).
    L'OS ne fait qu'intercepter l'accès à des adresses virtuelles non légales et te renvois un Segmentation Fault sous UNIX et une boite d'erreur sous Windows.
    On est d'accord mais on peut bien pourrir sa propre application si on a une adresse incorrecte mais légale, non?

    Tu peux avoir pleins de pépins. Mais quand tu utilises un std::vector ou similaire, tu as une gestion des erreurs (y compris les indices trop grands, ou quoi) avec exceptions, par exemple.
    Je parlais des tableaux/pointeur. Il me semble bien que comme en C, il n'y a pas de contrôle fait dessus, non?

    Oui, assez subjectif. J'aurais compris que tu trouves un opérateur comme <<|||||||||******----+++<< peut pratique, mais << ça va je trouve
    J'avais posté mon message non terminé par erreur
    Ce n'est pas la lisibilité de la chose qui me gène mais le fait que ce n'est pas cohérent avec le fonctionnement normal d'un l'opérateur.
    Il me semble qu'en toute logique un opérateur devrait simplement retourner un résultat sans interagir avec autre chose que ces opérandes et rester sans effet de bord (sauf évidement pour les opérateurs d'affectation)

    On fait de notre mieux pour répandre les bonnes pratiques d'aujourd'hui en C++, après c'est aux programmeurs C++ de se former au mieux. Par contre, tout le monde est d'accord ici je pense pour dire (à nouveau) que le C++ donne plus de libertés, mais avec les risques qui viennent avec.
    Ce que je trouve gênant c'est que les outils pour mettre en œuvre ces bonnes pratiques(comme les pointeurs intelligents) ne fassent pas partie du langage ni même de la bibliothèque standard.
    Sur le fait que C++ est plus souple et aussi plus risqué, je pense que tout le monde est d'accord.

  5. #1405
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par Uther Voir le message
    Je parlais des tableaux/pointeur. Il me semble bien que comme en C, il n'y a pas de contrôle fait dessus, non?
    Si on utilises des pointeurs bruts, non.

    Citation Envoyé par Uther Voir le message
    J'avais posté mon message non terminé par erreur
    Ce n'est pas la lisibilité de la chose qui me gène mais le fait que ce n'est pas cohérent avec le fonctionnement normal d'un l'opérateur.
    Il me semble qu'en toute logique un opérateur devrait simplement retourner un résultat sans interagir avec autre chose que ces opérandes et rester sans effet de bord (sauf évidement pour les opérateurs d'affectation)
    C'est assez restreint comme vision Question de point de vue encore, même si je comprends tout à fait le tien.

    Citation Envoyé par Uther Voir le message
    Ce que je trouve gênant c'est que les outils pour mettre en œuvre ces bonnes pratiques(comme les pointeurs intelligents) ne fassent pas partie du langage ni même de la bibliothèque standard.
    Sur le fait que C++ est plus souple et aussi plus risqué, je pense que tout le monde est d'accord.
    C'est en cours ! C++0x (prochaine version de la norme C++) comprend énormément de nouveautés ! On en parle pas mal côté C++ de DVP si tu veux y jeter un coup d'oeil.
    Les grands compilateurs ont déjà intégrés certaines de ces nouveautés d'ailleurs (VC++, GCC, Intel C++).

  6. #1406
    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 : 39
    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 Alp Voir le message
    C'est en cours ! C++0x (prochaine version de la norme C++) comprend énormément de nouveautés ! On en parle pas mal côté C++ de DVP si tu veux y jeter un coup d'oeil.
    Les grands compilateurs ont déjà intégrés certaines de ces nouveautés d'ailleurs (VC++, GCC, Intel C++).

    et comeau ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #1407
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Comeau je ne sais pas, pas de version gratuite et pas essayé
    Tu l'as ? Il implémente une partie du draft 0x ?

  8. #1408
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Si il y a un point positif du C++ qui a été perdu(et qui ne sera probablement pas récupéré par la suite) en Java c'est bien la surcharge des opérateurs. En haskell c'est pas trivial à moins d'être du domaine certains opérateurs ne sont pas du tout explicite notamment le $(sans l'explication de Alp quasi impossible de deviner les intentions de code)

    Pour l'histoire des pointeurs au dessus c'est un peu fort de café parce qu'en C++ contrairement à JAVA ce n'est pas objet un pointeur ou un tableau du coup les exceptions faut oublier... Peut-être aussi que le compilateur est plus permissif que JAVA sur les indices de tableaux.

    Aussi ce qui manque au C++, peut-être un option existe mais pas à ma connaissance, par rapport à JAVA c'est les exceptions obligatoires à traiter signalées par le compilateur.

    Quand au bas niveau qu'on reproche au C++ il ne faudrait pas oublier que c'est aussi possible en JAVA...
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  9. #1409
    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 hegros Voir le message
    Si il y a un point positif du C++ qui a été perdu(et qui ne sera probablement pas récupéré par la suite) en Java c'est bien la surcharge des opérateurs. En haskell c'est pas trivial à moins d'être du domaine certains opérateurs ne sont pas du tout explicite notamment le $(sans l'explication de Alp quasi impossible de deviner les intentions de code)[...]
    Tu n'a pas tort pour Haskell, mais ceci est souvent vrai pour tout opérateur. Ainsi un débutant en C++ n'a aucune chance de deviner les sens de & et de * si on ne lui dit pas. D'autant que ce dernier se confond avec la multiplication. De très nombreux étudiants montrent des difficultés à comprendre que << et >> sont les opérateurs de manipulation de flots et que ce ne sont pas cout ou cin, lorsqu'ils voient la syntaxe pour la première fois. Et que dire de « ?: » ? Bien sûr quand on connait la programmation et qu'on a l'explication ça devient simple.

    La surcharge n'a pas que des bons côtés. C'est aisé d'avoir un programme illisible avec des opérateurs surchargés lorsque les choix de ces derniers sont mauvais. La surcharge de [] peut faire des miracles cependant. C'est donc un risque avec des avantages, comme l'arithmétique des pointeurs.

  10. #1410
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    De très nombreux étudiants montrent des difficultés à comprendre que << et >> sont les opérateurs de manipulation de flots et que ce ne sont pas cout ou cin, lorsqu'ils voient la syntaxe pour la première fois. Et que dire de « ?: » ? Bien sûr quand on connait la programmation et qu'on a l'explication ça devient simple.
    Tu connais le dicton il n'y a pas de mauvais élèves il n'y a que de mauvais enseignement/enseignant.

    De plus je ne reviendrais pas sur ce qui a déjà été dis concernant l'utilisation massive de ces opérateurs de flots c'est depuis longtemps intégré sur les systèmes d'origine unix.

    Le ? ce n'est pas un opérateur surchargeable en C++ il me semble de plus c'est déjà intégré depuis le C comme opérateur ternaire( i>0 : quelquechose ? autrechose)

    Et effectivement la surcharge a ses +/- quand c'est illisible (comme l'exemple avec haskell) il faut un commentaire c'est tout
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  11. #1411
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 570
    Points : 15 535
    Points
    15 535
    Par défaut
    De plus je ne reviendrais pas sur ce qui a déjà été dis concernant l'utilisation massive de ces opérateurs de flots c'est depuis longtemps intégré sur les systèmes d'origine unix.
    Ce qui est anormal c'est que justement a l'origine il ne s'agit pas d'opérateurs de flot mais d'opérateurs de décalage de bit, dont l'usage est détourné pour les faire ressembler à des opérateurs de flots Unix alors que leur fonctionnement n'a rien a voir.

    Vu que c'est un cas courant et intégré à la bibliothèque standard, c'est connu de tous et donc pas vraiment problématique. Mais ce genre de détournement sur un programme lambda n'est a mon avis pas souhaitable.

  12. #1412
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Citation Envoyé par Uther Voir le message
    Ce qui est anormal c'est que justement a l'origine il ne s'agit pas d'opérateurs de flot mais d'opérateurs de décalage de bit, dont l'usage est détourné pour les faire ressembler à des opérateurs de flots.
    Vu que c'est un cas courant et intégré à la bibliothèque standard, c'est connu donc pas vraiment problématique, mais ce genre de détournement sur un programme lambda n'est a mon avis pas souhaitable.
    Seulement, dire cela, c'est vouloir refaire l'histoire...

    On peut, effectivement, estimer à la lumière des nouvelles techniques de conceptions et de langages plus récents, que le choix de << et >> n'était pas *forcément* judicieux.

    Mais d'un autre coté, il est vraiment difficile, y compris pour un débutant, de confondre l'opérateur de décalage de bit << ou >> avec l'opérateur de flux similaire...

    Le premier va fonctionner avec nombres des deux coté alors que le deuxième va travailler avec un flux à gauche et... n'importe quoi à droite.

    Si C++ était moins "typé" qu'il ne l'est, effectivement, le problème pourrait se poser, mais ici, ce n'est pas le cas
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  13. #1413
    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 hegros Voir le message
    Tu connais le dicton il n'y a pas de mauvais élèves il n'y a que de mauvais enseignement/enseignant.

    De plus je ne reviendrais pas sur ce qui a déjà été dis concernant l'utilisation massive de ces opérateurs de flots c'est depuis longtemps intégré sur les systèmes d'origine unix.

    Le ? ce n'est pas un opérateur surchargeable en C++ il me semble de plus c'est déjà intégré depuis le C comme opérateur ternaire( i>0 : quelquechose ? autrechose)

    Et effectivement la surcharge a ses +/- quand c'est illisible (comme l'exemple avec haskell) il faut un commentaire c'est tout
    Tiens je ne connais pas ce dicton. Ça doit être un truc que se passe les mauvais étudiants pour se rassurer avant de venir dire des âneries sur les forums

    Bon blague à part ça je ne parlais pas de surcharge de « ? »... je disais que l'opérateur ternaire « ?: » est illisible pour un débutant. Je ne sais pas ce que tu as compris de mon message, mais il me semble que tu l'as lu de travers ; à moins que je ne me soit mal exprimé. Je disais simplement que tout opérateur est obscur lorsqu'on le voit pour la première fois. La première fois qu'un enfant voit un +, c'est obscur pour lui. Certains ont une sémantique qui se transmet dans plusieurs langages, d'autres non. Le * (pointeur) en C/C++ n'est pas vraiment en rapport avec la multiplication. D'ailleurs Bjarne Stroutrup aurait voulu intégrer le « -> » comme indication d'un pointeur. Mais ça ne s'est jamais fait. Ça aurait été peut-être plus explicite, mais uniquement une fois expliqué par quelqu'un qui connait.

  14. #1414
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Tiens je ne connais pas ce dicton. Ça doit être un truc que se passe les mauvais étudiants pour se rassurer avant de venir dire des âneries sur les forums

    Cela veut dire tout simplement qu'il y a des professeurs qui ne savent pas enseigner, ils créent des mauvais étudiants à l'image de leurs mauvais enseignements c'est tout et c'est valable pour le C++ et le JAVA il n'y a qu'à voir sur le forum d'où le il n'y a que de mauvais professeurs au final


    Bon blague à part ça je ne parlais pas de surcharge de « ? »... je disais que l'opérateur ternaire « ?: » est illisible pour un débutant.
    Etant débutant je ne me souviens pas avoir trouvé cet opérateur illisible il faut dire que j'avais un bon professeur pour me l'enseigner parce qu'il y en a qui rendent effectivement tout illisible et ambigu dés qu'ils ouvrent leur bouche

    On sort du sujet mais effectivement trop de professeurs connaissent très bien leur matière de génie logiciel et de technique mais ne savent que très peu de chose en enseignement hors connaître l'enseignement est plus important que connaître le matière à enseigner lorsqu'on est professeur malheureusement en pratique on rencontre le plus souvent l'inverse
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  15. #1415
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par Uther Voir le message
    Ce qui est anormal c'est que justement a l'origine il ne s'agit pas d'opérateurs de flot mais d'opérateurs de décalage de bit, dont l'usage est détourné pour les faire ressembler à des opérateurs de flots Unix alors que leur fonctionnement n'a rien a voir.
    Rien n'empêche en C++ de surcharger ces opérateurs (<< et >>) pour faire du décalage de bit c'est cela la puissance des opérateurs c'est qu'on leur donne le sens que l'on veut finalement.

    En plus vous avez pris un exemple particulier l'objet cout comparez à l'objet out en JAVA qui est son équivalent il y a bien une différence.

    En JAVA le principe de l'encapsulation est violé puisqu'on écrit system.out.printl("une chaine") alors qu'en C++ on résouds cela avec la surcharge de l'opérateur << et une fonction ami de ostream et de ce fait on ne viole pas l'encapsulation.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  16. #1416
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par hegros Voir le message
    trop de professeurs connaissent très bien leur matière de génie logiciel et de technique mais ne savent que très peu de chose en enseignement hors connaître l'enseignement est plus important que connaître le matière à enseigner lorsqu'on est professeur malheureusement en pratique on rencontre le plus souvent l'inverse
    j'aurais plutôt dit l'inverse, par expérience :

    trop de professeurs connaissent très bien leur matière de génie logiciel et de technique mais ne savent que très peu de chose dans l'application réelle de ces techniques or connaître l'application réelle d'une technique est au moins aussi sinon plus important que connaître la technique lorsqu'on est professeur malheureusement en pratique on rencontre le plus souvent l'inverse...




    "des têtes bien pleines, mais pas forcément bien faites"....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  17. #1417
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    j'aurais plutôt dit l'inverse, par expérience :

    trop de professeurs connaissent très bien leur matière de génie logiciel et de technique mais ne savent que très peu de chose dans l'application réelle de ces techniques or connaître l'application réelle d'une technique est au moins aussi sinon plus important que connaître la technique lorsqu'on est professeur malheureusement en pratique on rencontre le plus souvent l'inverse...




    "des têtes bien pleines, mais pas forcément bien faites"....

    Oui il y a aussi ce cas là mais je parlais du cas de celui qui est très bon en thèorie et très bon en pratique pour sa matière (le développement logiciel) mais qui ne sait pas l'enseigner. L'enseignement c'est une matière aussi à part qui demande à elle aussi théorie et pratique
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  18. #1418
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 570
    Points : 15 535
    Points
    15 535
    Par défaut
    Rien n'empêche en C++ de surcharger ces opérateurs (<< et >>) pour faire du décalage de bit c'est cela la puissance des opérateurs c'est qu'on leur donne le sens que l'on veut finalement.
    Pour moi quelque chose qui brise la logique naturelle d'un langage est plus "dangeureux" que "puissant"?
    Surcharger un opérateur '+' me parait logique entre des objets pour lesquels il fait sens d'avoir une addition (des dates, chaines, ...).
    Modifier le sens d'un opérateur en autre chose est au contraire pour moi une mauvaise idée.
    Le cas du cout n'est en pratique pas gennant car il fait partie de la lib standard. On l'apprend dès le son premier "Hello World" en C++, même si beaucoup de gens ne se rendent compte qu'il s'agit en fait d'une surcharge que bien plus tard(quand il s'en rendent compte). Mais dans son propre code, si on fait n'importe quoi avec la surcharge, on peut vite arriver a faire du code trompeur.
    En JAVA le principe de l'encapsulation est violé puisqu'on écrit system.out.printl("une chaine") alors qu'en C++ on résouds cela avec la surcharge de l'opérateur << et une fonction ami de ostream et de ce fait on ne viole pas l'encapsulation.
    Pourais tu expliciter s'il te plait car je ne vois pas vraiment ce que viens faire l'encapsulation la dedans, ni vraiment pourquoi elle serait plus violée par un langage que par l'autre.

  19. #1419
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par Uther Voir le message
    Pourais tu expliciter s'il te plait car je ne vois pas vraiment ce que viens faire l'encapsulation la dedans, ni vraiment pourquoi elle serait plus violée par un langage que par l'autre.
    Pour afficher une chaîne sur la sortie standard soit une console windows ou unix.

    En C++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << "ma chaine sur la sortie standard";
    On a surchargé l"opérateur << de la classe de l'objet cout moyennant une fonction amie.


    En Java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("ma chaine sur la sortie standard");
    C'est la méthode println de l'objet out qui doit être appelée qui est un attribut de System accessible de l'extérieur en cela on a brisé un principe élémentaire de la POO à savoir l'encapsulation(out est une donnée membre public).


    Vous preniez pour exemple l'objet particulier cout alors qu'en java son équivalent n'est pas mieux cependant comme dis plus haut c'est un cas particulier pour out et pour cout
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  20. #1420
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 570
    Points : 15 535
    Points
    15 535
    Par défaut
    Cet objet étant déclaré comme static final, il ne peux pas être modifié, même pas par héritage, donc il me semble au contraire très bien encapsulé.

Discussions similaires

  1. [Débat] Technologie .NET vs JAVA
    Par neo.51 dans le forum Débats sur le développement - Le Best Of
    Réponses: 1047
    Dernier message: 14/01/2019, 16h15
  2. [Débat] .NET vs JAVA/J2EE
    Par tssi555 dans le forum VB.NET
    Réponses: 5
    Dernier message: 10/12/2008, 07h54

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