Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lecture & portage de code métier C++ vers Java

Lecture & portage de code métie C++ vers Java

    27 juillet 2016 à 15:56:02

    Bonjour à tous ,

    Je souhaite savoir si c'est nécessaire de faire une formation C++ pour pouvoir lire du code métier C++ et le reproduire en Java (.... ou C#) ? Si oui, quelle niveau est requis ? 

    Je tiens à  préciser que le code est fait en partie par des dev senior et expert et que je n'ai jamais fais de projet en C++ et d'ailleurs je ne l'apprécie pas trop.

    Merci pour vos retours.

    -
    Edité par bfpoo 28 juillet 2016 à 8:33:35

    • Partager sur Facebook
    • Partager sur Twitter
    Love OOA.
      27 juillet 2016 à 15:58:33

      Question trop vague. Si tu veux porter le code d'une interface faite avec Qt, ca ne sera pas trop complexe. Si tu veux porter le code de boost.hana, cela risque d'etre complexe (voire impossible, il y a des concepts du C++ qui n'existe pas en Java/C#).

      Donc : ca depend...

      -
      Edité par gbdivers 27 juillet 2016 à 16:09:55

      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2016 à 16:22:55

        Dans un premier temps, il s'agit de code métier/fonctionnel. Donc pas d'IHM.

        Par la suite, la question se pose pour le code MFC ? Mais c'est une autre question. 

        • Partager sur Facebook
        • Partager sur Twitter
        Love OOA.
          27 juillet 2016 à 16:54:51

          Lu'!

          Si tu souhaites faire ce portage juste parce que tu as la flemme de maintenir le code d'origine parce qu'il n'est pas dans un langage que t'aimes (ben déjà en tant que développeur t'es mal barré si tu t'accroches aux églises des langages), alors c'est une perte de temps plus que colossale (et une perte nette en stabilité).

          Dans tous les cas, porter du code métier, c'est pour ainsi dire toujours du portage de code non-trivial. S'il a été fait par des dév expert en C++, il est fort possible que tu rencontres par-ci par-là des constructions avancées et si tu n'as pas le bagage pour les comprendre, tu vas méchamment lutter.

          Sans parler de la base de tests à porter également. Et les chances d'introduire des bugs subtiles de partout.

          -
          Edité par Ksass`Peuk 27 juillet 2016 à 16:55:51

          • Partager sur Facebook
          • Partager sur Twitter

          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            28 juillet 2016 à 0:37:42

            Salut,

            Pour pouvoir porter du code d'un langage à un autre, il faut, au minimum

            • maitriser le langage de destination, afin de pouvoir trouver les meilleures solutions d'implémentation
            • avoir un bagage concernant le langage source au moins équivalent à celui de ceux qui l'ont codé, sous peine de tomber sur des constructions que tu ne comprendra pas

            Ceci étant dit, je souscris pleinement à tout ce que  Ksass ` Peuk a écrit.

            Et, pour terminer, j'aurais tendance à dire qu'il y a deux grands axes de réflexions à envisager :

            • Soit, tu n'a pas été engagé pour faire évoluer ce code métier, et tu auras donc sans doute intérêt à mettre en place une forme de binding du projet vers ton langage favoris (à charge pour toi de le maintenir à jour)
            • Soit tu as été spécifiquement engagé pour faire évoluer le code métier, et dans ce cas là, tu as deux solutions:
              • Te mettre sérieusement au langage d'origine, afin d'arriver à en assimiler les finesses, ou
              • démissionner, parce que cet emploi n'est vraiment pas pour toi

            -
            Edité par koala01 28 juillet 2016 à 0:38:29

            • Partager sur Facebook
            • Partager sur Twitter
            Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
            Anonyme
              28 juillet 2016 à 11:59:20

              Hello !

              bfpoo a écrit:

              Je souhaite savoir si c'est nécessaire de faire une formation C++ pour pouvoir lire du code métier C++ et le reproduire en Java (.... ou C#) ? Si oui, quelle niveau est requis ?

              Je tiens à  préciser que le code est fait en partie par des dev senior et expert [...]

              Je dirais que tout dépend de ce que fait le code à traduire. Par contre, si tu connais bien ce que fait ce code, il serait peut-être plus simple de recoder les fonctionnalités que celui-ci véhicule.

              Par ailleurs, tu peux aussi écrire un wrapper qui te permettrait en fait de définir un point d'entrée vers le code C++ depuis ton code C#/Java. Mais dans ce cas je pense qu'il est plus simple (voire générique) que le code pour lequel on définit un point d'entrée (ici celui à traduire) soit accessible depuis une librairie dynamique (une .dll sous Windows par exemple). Toutefois, passer par un wrapper a un certain coût puisque d'abord tu appelles des fonctions en Java/C# par exemple puis ensuite ces appels entraîneront d'autres appels de code C++.

              bfpoo a écrit:

              [...] je n'ai jamais fais de projet en C++ et d'ailleurs je ne l'apprécie pas trop.

              Pour ce qui est de la traduction, j'ai envie de dire que c'est mort direct. ;) En effet si le C++ n'est pas un langage qui t'intéresse, lire du code C++ peut rapidement devenir barbant ; à fortiori le langage est bien connu pour être l'un des plus difficiles à appréhender (et là je me base sur ce que j'entends çà et là).

              -
              Edité par Anonyme 28 juillet 2016 à 14:37:24

              • Partager sur Facebook
              • Partager sur Twitter
                28 juillet 2016 à 15:40:47

                Je crois que vous vous emballez sur la qualité du C++. Les projets qui utilisent les MFC et qui sont en C++ que je qualifie de "moderne" (i.e. avec du RAII inside) doivent se compter sur les doigts d'une main AMA. Je soupçonne plutôt le genre de C++ qui a poussé les créateurs de Java à faire ce qu'ils ont fait (suffit de voir comment JNI s'utilise pour appeler du Java depuis le C++ pour se douter du genre de C++ qu'ils pratiquaient) -- et je comprends le ressentiment que l'on peut avoir à l'égard du C++ quand on a toujours cru ce qu'il ne faut surtout ne jamais faire en C++ : gérer la mémoire et les autres ressources à la main.

                On peut comprendre le désir de passer à autre chose. Ne serait-ce qu'en C++ exception-safe (i.e. "moderne" dans mon vocabulaire), si tant est que l'on en connait l'existence.

                Après, comme mes petits camarades l'ont dit : si un code métier complexe marche, le traduire dans autre chose, c'est casse-gueule. Même quand il y a a redire sur la qualité du code.

                /me qui a fortement envie d'avoir un jour d'avance.

                -
                Edité par lmghs 28 juillet 2016 à 15:43:17

                • Partager sur Facebook
                • Partager sur Twitter
                C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

                Lecture & portage de code métier C++ vers Java

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown