Partage
  • Partager sur Facebook
  • Partager sur Twitter

C with class?

    26 mars 2017 à 16:54:40

    Bonjour existe t'il un moyen de faire du c objet proprement ?

    Je n'aime pas du tout le c++ due à sa syntaxe que je dirais merdique..

    Mon projet est assez gros et à besoin d'être structuré et se passer du système d'objet est juste du suicide ..

    Une solution?

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2017 à 17:12:00

      BenoitDobrecourt1 a écrit:

      Bonjour existe t'il un moyen de faire du c objet proprement ?

      Je n'aime pas du tout le c++ due à sa syntaxe que je dirais merdique..

      Mon projet est assez gros et à besoin d'être structuré et se passer du système d'objet est juste du suicide ..

      Une solution?


      Bonjour,

      une conception orientée objet n'a pas besoin d'un langage orienté objet pour être implémentée. Il n'y a rien que tu ne puisses implémenter en C++ que tu ne pourrais pas implémenter en C, ce sont deux langages différents qui utilisent donc des techniques d'implémentations différentes ; si le C++ ne te convient pas et que tu préfères le C utilise le C proprement mais n'essaye pas de faire du C++ avec du C car là ça sera réellement «merdique».

      Il y a des approches et techniques qui permettent de «faire de l'objet» en C. Regarde par exemple les projets GObject, GLib2, GTK+3, GObject est la fondation qui définit un système de type «à la façon de ce qu'on pourrait appeler des classes et des objets». Ce sont des projets de grande envergure, stables et utilisés en prod. Cela alourdit énormément tes projets, sans (apparemment) de grosses pertes de perf ; ton code si tu le veux propre devient extrêmement verbeux, et a pour principale effet délétère de foutre un tout petit peu le bordel dans la résolution d'aliasing de pointeurs. Ces projets n'introduisent pas uniquement «une approche objet» dans l'implémentation mais également des notions comme le comptage de référence ; il faut être à l'aise avec les notions de responsable d'objets.
      Tu ne trouveras pas d'équivalent au polymorphisme tel qu'on peut le rencontrer dans les langages orientés objet, même si  la dernière mouture de C introduit la notion de généricité.

      Bref, ça fonctionne, ça fonctionne même plutôt bien mais c'est à prendre avec des pincettes si tu te lances dans un projet avec un équipe. Si tu es le seul sur le projet il va falloir ne pas avoir peur de lire la doc.

      • Partager sur Facebook
      • Partager sur Twitter
      First solve the problem. Then, write the code. ~ John Johnson
      Anonyme
        26 mars 2017 à 19:36:12

        Si tu n'aimes pas le C++, mais que tu tiens à faire de l'orienté objet, tu peux te tourner vers Java.

        Mais n'essaie pas de faire du C orienté objet, ça a beau être techniquement "possible", tu aura énormément de mal et il y a de grandes chances que le résultat obtenu soit particulièrement instable, si tu n'a pas les notions expliquées par @PicoDev.

        Ensuite, comme beaucoup de monde, je ne trouve pas que le C++ soit "merdique". Mais tu peux ne pas aimer

        • Partager sur Facebook
        • Partager sur Twitter
          27 mars 2017 à 12:54:00

          Je pense passer au python pour les partie pas trop critique du programme et interfacer avec C
          • Partager sur Facebook
          • Partager sur Twitter
            27 mars 2017 à 13:05:52

            Ça dépend de ton projet, mais pourquoi ne pas le faire directement en python si c'est ton langage de prédilection ?

            • Partager sur Facebook
            • Partager sur Twitter
            First solve the problem. Then, write the code. ~ John Johnson
              27 mars 2017 à 13:23:33

              Dison que la sécurité du programme en python laisse à désiré .
              • Partager sur Facebook
              • Partager sur Twitter
                27 mars 2017 à 13:35:42

                C'est-à-dire ? Le fait que tu distribues des sources ?
                • Partager sur Facebook
                • Partager sur Twitter
                First solve the problem. Then, write the code. ~ John Johnson
                Anonyme
                  27 mars 2017 à 16:47:36

                  Les sources des algorithmes comme RSA ou Argon2I sont disponibles gratuitement et librement (exemple, libsodium).

                  Pourtant ça n'en baisse pas la sécurité.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 mars 2017 à 20:56:41

                    Attention, le C est au contraire beaucoup plus dangereux en termes de sécurité que le python ou le Java.

                    Tu peux faire un peu n'importe quoi en C, même un scanf, voire un printf est dangereux. "print" de python ne l'est pas.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 mars 2017 à 21:01:05

                      Il ne parle pas de cette sécurité ... il parle de garder son code secret.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      First solve the problem. Then, write the code. ~ John Johnson
                      Anonyme
                        27 mars 2017 à 21:03:11

                        Un code compilé peut toujours donner l'accès à ses sources en ASM, et il existe aujourd'hui même pas mal de désassembleurs faits pour reconstruire le code source. Bref, sécurisation par obscuration est (comme toujours) inutile.

                        Et comme l'a pointé @Scorbutics, il est sans doute beaucoup plus risqué de faire un code en C qu'en python ou un langage plus haut niveau.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 mars 2017 à 21:54:20

                          Plus risqué ... mouais ... les risques sont différents, on ne se tire pas dans la même partie du corps :)

                          Il sera toujours plus facile de lire un code python que de désassembler un binaire … mais bon ça c'est de la paranoïa d'arrière garde.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          First solve the problem. Then, write the code. ~ John Johnson
                            1 avril 2017 à 15:00:06

                            Il y à bien un moyen de proteger son programme ecrit en python ou autre langage non?
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              2 avril 2017 à 14:22:11

                              Ce que tu entends par "protéger" est toujours vague et indescriptible.

                              Si tu parles d'obfuscation, ça ne servira très vraisemblablement à rien.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 avril 2017 à 17:29:02

                                Pour faire de l'objet en C: https://github.com/CObjectSystem/COS (boudiou, je vois que le projet est toujours vivant, ou du moins sa doc).

                                Pour le coup, non seulement tu vas avoir du polymorphisme, mais aussi l'étape suivante: le multi-dispatch qu'aucun langage OO maintream n'offre (encore) nativement.

                                Après... si tu n'aimes pas la syntaxe, pourtant simple pour le côté OO, du C++, là, tu vas avoir mal aux yeux.

                                • 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.

                                C with class?

                                × 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