Partage
  • Partager sur Facebook
  • Partager sur Twitter

Changer le paradigme d'un langage de programmation

^^

Sujet résolu
    12 septembre 2017 à 21:43:38

    Bonjour,

    Suite à certaines envies, je me demandais si il n'y avait pas moyen de changer le paradigme d'un langage de programmation (ou en ajouter un). Je sais, ça peut paraître complètement stupide, voir irréalisable, car un langage est ce qu'il est, et si on veut autre chose comme paradigme, on change de langage, et pas son paradigme, mais... voilà :D je me posais juste la question.

    Imaginons que je veuille faire de l'événementielle, ou de l'objet en C pour gérer des évènements (fermeture, ouverture, souris,...), je sais qu'il existe des bibliothèques et du travaille déjà tout fait, mais ce n'est pas le langage en lui même que l'on modifie dans ces cas là :(.

    Voilà... Merci d'avoir lu, et désoler si je pose des question quelque peut farfelue, n'hésitez pas à me le dire pour que je m'améliore :pirate:

    • Partager sur Facebook
    • Partager sur Twitter
    Le doute est le commencement de la sagesse
      13 septembre 2017 à 13:07:57

      Lu'!

      Il faudrait que tu organises un peu tes idées. Soit tu modifies le langage, mais ce n'est plus le même langage (même s'il est apparenté), soit tu ajoutes de l'outillage grâce au langage, mais ce n'est plus une modification du langage.

      • Partager sur Facebook
      • Partager sur Twitter

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

        13 septembre 2017 à 13:45:46

        Donc, on ne sait pas changer le paradigme d'un langage. Il reste ce qu'il est, sinon c'est en créer un autre. C'est ça ?

        J'imagine alors que ça ce passe au niveau du compilateur, auquel on ajoute des fonctionnalité qui au final orientera le langage vers un autre type de paradigme !?

        Et pour les langages qui sont multi paradigme, c'est la même chose ?

        Merci :D

        • Partager sur Facebook
        • Partager sur Twitter
        Le doute est le commencement de la sagesse
          13 septembre 2017 à 13:58:35

          Geralt de Riv a écrit:

          Donc, on ne sait pas changer le paradigme d'un langage. Il reste ce qu'il est, sinon c'est en créer un autre. C'est ça ?

          Non, ça veut simplement dire que pour intégrer le paradigme, soit tu changes le langage, soit tu utilises les possibilités existantes du langage pour ajouter le paradigme.

          • Partager sur Facebook
          • Partager sur Twitter

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

            13 septembre 2017 à 14:12:34

            Ha ok. Merci pour ton aide :)
            • Partager sur Facebook
            • Partager sur Twitter
            Le doute est le commencement de la sagesse
              13 septembre 2017 à 15:13:25

              A noter qu'il y a des langages un peu particuliers, par exemple la famille des Lisp qui permettent de faire des modifications poussées sur le langage lui-même.

              Par exemple il me semble qu'en Common Lisp, le paradigme objet a été ajouté au langage sous forme d'une simple bibliothèque au début, elle fait maintenant partie du langage.

              C'est permis par les Macros (rien à voir avec les directives préprocesseur du C) qui permettent d'étendre le langage de manière assez poussée. On peut ajouter des éléments à la syntaxe du langage, chose que des fonctions toutes bêtes ne permettent pas.

              C'est typique des Lisp, mais on trouve ça dans d'autres langages comme Rust par exemple.

              -
              Edité par LoupSolitaire 13 septembre 2017 à 15:15:08

              • Partager sur Facebook
              • Partager sur Twitter

              Blond, bouclé, toujours le sourire aux lèvres...

                20 septembre 2017 à 12:56:14

                Je ne connais pas Lisp, ca à l'aire d'être un langage assez intéressant, mais je ne comprend pas comme ce langage, pourrait "s'auto-ajouter" des fonctionnalitées ?! Alors, c'est le langage sur la machine qui change, ou le langage dans un projet qui change ?!
                • Partager sur Facebook
                • Partager sur Twitter
                Le doute est le commencement de la sagesse
                  20 septembre 2017 à 16:49:47

                  Le langage ne change pas vraiment, vu que ces macros en font partie. C'est comme quand on déclare des fonctions, sauf qu'on déclare des nouveaux éléments de syntaxe, des trucs qui seraient pas faisables avec des fonctions.

                  Par exemple dans un langage comme Python ou il n'y a pas de switch case, s'il y avait des macros on pourrait définir le switch case dans son code et s'en servir ensuite. Exactement comme quand on définis une fonction et qu'on s'en sert après.

                  Bon, après je vais pas pouvoir expliquer le truc de manière très poussée parce que j'ai pas eu l'occasion de trop creuser le sujet, je trouve juste que ça a un côté fascinant, et comme c'est peu connu, je partage l'info :)

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Blond, bouclé, toujours le sourire aux lèvres...

                    21 septembre 2017 à 19:37:32

                    Et bien...Ce langage m’intéresse ! Et tes explications sont très pertinente :)

                    Après plusieurs recherches, je pense que je vais me mettre à faire du Lips :D

                    Merci beaucoup, je passe le sujet en résolut, c'est exactement le type de réponse que j'attendais ! Merci aussi à toi Kssas ' Peuk pour les informations ^^

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Le doute est le commencement de la sagesse
                      21 septembre 2017 à 20:24:26

                      Geralt de Riv a écrit:

                      Après plusieurs recherches, je pense que je vais me mettre à faire du Lips :D

                      Attention parce que c'est toute une famille, il y a plein de Lisp : Common Lisp et Scheme par exemple, qui sont un peu les Lisp "classiques". Racket est pas mal pour débuter (c'est un ensemble d'outils et de bibliothèques pour le langage Scheme, il y a même un IDE pas mal foutu : DrRacket).

                      Sinon tu as Clojure qui est un Lisp sur la machine virtuelle Java, pratique quand tu as besoin (ou envie) d'utiliser des bibliothèques Java, mais que t'aime pas Java !

                      Et tu vas sans doute être pas mal perturbé par le nombre d'implémentations pour le même langage.

                      Pour Common Lisp tu as SBCL, CMUCL, CLISP, ABCL...

                      Pour Scheme : Racket, Chez Scheme, CHICKEN, GNU Guile...

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Blond, bouclé, toujours le sourire aux lèvres...

                      Anonyme
                        21 septembre 2017 à 20:29:37

                        Geralt de Riv a écrit:

                        un langage est ce qu'il est, et si on veut autre chose comme paradigme, on change de langage, et pas son paradigme

                        Je suis assez d'accord avec ça... En général on connaît un langage très bien, et il est très rare qu'on est besoin d'en modifier son comportement naturel pour arriver à ce qu'on veut. Tu as sûrement dû entendre parler de cette expression : "Ton imagination t’emmène où tu veux".

                        Après si tu as un doute sur un paradigme, tu peux prendre des langages qui mixent plusieurs paradigmes. Lisp et python sont tous deux des langages utilisant la programmation fonctionnelle et orienté objet. Maintenant Lisp accepte la programmation par contrainte, pas python, mais des librairies python existent pour travailler sous ce mode de programmation.

                        Bref, prend un langage connu, avec beaucoup de librairies... et ce type de langage est très nombreux dans le monde de la programmation. Pas besoin de transformer la nature d'un langage.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 septembre 2017 à 18:10:36

                          Je suis assez d’accord, mais alors pourquoi avoir créer plus d'une cinquantaine (même plus) de langages, qui ont presque tous une "famille" bien remplie :

                          • Famille du C
                          • Famille des Lisp
                          • Famille des langages qui se finissent par ML (généralement des langages balisé)
                          • Famille .NET
                          • ...

                          Personnellement, je n'ais pas la réponse xD Je dirais que c'est parce qu'ils possède de nombreux point communs qui leurs permettent "de perduré tout en étant soudé" si vous voyez ce que je veux dire...

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Le doute est le commencement de la sagesse
                          Anonyme
                            22 septembre 2017 à 18:50:31

                            Geralt de Riv a écrit:

                            Je suis assez d’accord, mais alors pourquoi avoir créer plus d'une cinquantaine (même plus) de langages, qui ont presque tous une "famille" bien remplie

                            Pour que chacun puisse choisir son style, sa façon de voir les choses... tout simplement ! Pour que certains algorithmes soient plus faciles à pratiquer avec certains langages plutôt que d'autres... pour d'autres raisons propres au développeur.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 septembre 2017 à 18:50:48

                              Il y a les caractéristiques différentes qui sont liées à des besoins différents, les goûts personnels des programmeurs et l'évolution des connaissances et des techniques sur les langages de programmation qui font ça.

                              Il y a plusieurs paradigmes qui ont été implémentés de plusieurs manières par différents langages, des syntaxes différentes, des compromis entre facilité, rapidité de développement et performances...

                              Récemment avec des langages comme Go et Rust, on progresse encore. Rust a l'air, à mes yeux au moins, d'être un gros bond en avant par rapport au C et C++ par exemple.

                              Après il y a d'autres langages récents que j'ai pas eu l'occasion d'étudier comme Nim et Swift.

                              Geralt de Riv a écrit:

                              Famille des langages qui se finissent par ML (généralement des langages balisé)

                              Attention à ne pas confondre XML et HTML avec les langages de programmation ML comme Ocaml par exemple : https://fr.wikipedia.org/wiki/ML_(langage) 

                              -
                              Edité par LoupSolitaire 22 septembre 2017 à 18:52:32

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Blond, bouclé, toujours le sourire aux lèvres...

                                22 septembre 2017 à 21:07:57

                                oldProgrammer a écrit:

                                Pour que chacun puisse choisir son style, sa façon de voir les choses... tout simplement !


                                Je me demande pourquoi je n'y avais pas pensé xD

                                LoupSolitaire a écrit:

                                Récemment avec des langages comme Go et Rust, on progresse encore. Rust a l'air, à mes yeux au moins, d'être un gros bond en avant par rapport au C et C++ par exemple.


                                C'est vrai que Rust à l'aire sacrément ... nouveau. Je ne m'y suis intéressé que peu très pour moment, mais d'après ce qu'on en dit... pas mal du tout en terme de rapidité et de gestion de Threading
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Le doute est le commencement de la sagesse
                                Anonyme
                                  22 septembre 2017 à 21:31:41

                                  Attention à ne pas tomber dans le panneau de l'efficacité, il y a plusieurs manières d'être efficace.

                                  • Par le langage plus ou moins bas niveau
                                  • Par la vitesse de développement, souvent les langages haut niveau
                                  • Par les deux, un mix entre langage plus ou moins bas niveau et langage haut niveau

                                  Je choisis souvent le troisième cas, pourquoi ?

                                  1. Je peux en situant un goulot d'étranglement, optimiser à l'aide d'un langage bas niveau
                                  2. Ne pas me prendre la tête avec les aléas des langages bas niveau quand le besoin ne s'en fait pas sentir
                                  3. Garder la simplicité et la vitesse de développement suffisamment importante

                                  Il faut vraiment juger un langage et son paradigme à ses besoins. Par exemple les deux langages avec lesquels je travaille le plus souvent sont

                                  • cython (interfaçage python/C, voir python/C++)
                                  • f2py (interfaçage python/fortran)
                                  • rubyinline (interfaçage ruby/C)
                                  • crystal (sur linux exclusivement, très proche du C niveau performance)

                                  Et j'en connais d'autres, mais le principal, c'est que souvent ces langages ont une syntaxe similaire qui se retrouve facilement en comparant à d'autres langages. De toute façon je reste sur ma position, connaître un langage sur le bout des doigts, et faire des variantes avec pour comprendre différents paradigmes.

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Changer le paradigme d'un langage de programmation

                                  × 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