Installer GMP (C++)

Bonjour, je viens d'installer code blocks (j'ai jamais touché à C++ avant) et j'aimerais utiliser la bibliothèque GMP il paraît que c'est bien. Du coup je vais sur le site officiel : https://gmplib.org/ .Mais bon une fois là je sais pas quoi faire (impossible de trouver un tuto clair j'ai beau chercher...) Je peux téléecharger une tonne de fichiers dont je sais pas quoi faire apès mais c'est tout...

Je précise que je suis un noob complet en info donc n'hésitez pas à m'expliquer des trucs qui paraissent débiles :)
«1

Réponses

  • Tu as quel OS exactement ? Si c'est linux/unix alors ça va, gmp est fait pour être utilisé sur cet OS. Mais si c'est windows, tu devrais utiliser à la place MPIR : http://www.mpir.org/
    C'est exactement la même interface que gmp.

    Sous linux, il y a des shell scripts à exécuter pour configurer et installer, ./configure puis install je pense. En tout cas, il faut lire les fichiers README et INSTALL.

    Sous windows (mpir), si tu utilises le compilateur Microsoft Visual studio, il y a des projets déjà tout faits, il faut juste choisir quelle version on veut builder [construire].

    [Pourquoi ne pas prendre le mot français ? ;-) AD]
  • Ok merci pour ta réponse ; je suis sous windows et j'utilise le compilateur code blocks (je suppose que c'est ça mon compilateur ?) J'ai plutôt intérêt à prendre visual c++ ?

    Au fait c'est quoi un shell, je vois ce mot souvent ?
  • Code Blocks est un environnement de développement assez basique (IDE : http://fr.wikipedia.org/wiki/Environnement_de_developpement), ce n'est pas un compilateur.

    Il semble qu'il soit possible d'utiliser GMP sur windows : http://fr.openclassrooms.com/informatique/cours/la-cryptographie-asymetrique-rsa/gmp-arithmetic-without-limitation
    Judoboy a écrit:
    J'ai plutôt intérêt à prendre visual c++ ?

    Tu as plutôt intérêt à apprendre le C++ si tu n'en as encore jamais fait avant de te lancer dans l'utilisation d'une librairie externe.
  • Ah génial le lien que je voulais, je suis déjà en train de passer pas mal de temps sur open classrooms pour apprendre les bases. Bon je vais regarder ça d'un peu plus près je reviendrai dans quelques dizaines d'heures !
  • On peut utiliser gmp sous windows c'est vrai, mais il faut installer le logiciel MinGW (et msys), qui simule un environnement de base de unix sous windows. J'avais fait ca il y a plusieurs années avant de découvrir mpir. Ca marchait, sauf que je voulais utiliser le compilateur ms visual c++ alors que dans msys ca utilise gcc (le compilateur gnu c) alors j'avais abandonné car il ne faut pas mélanger les compilateurs comme ca.

    Mais bon, ensuite j'avais découvert mpir, et c'est exactement la même chose de gmp, mêmes noms de fonctions, etc., sauf qu'au lieu de mettre #include "gmp.h" en haut des sources on met #include "mpir.h".
  • J'ai déjà utilisé MinGW et Msys pour compiler une lib linux en Fortran. Quand on peut éviter de mélanger des dll compilés avec différents compilateurs c'est mieux, mais je ne suis pas sûr que ça pose si souvent que cela des problèmes. En l'occurrence je n'en ai pas eu dans ce cas, mais j'ai pour habitude de recompiler moi-même les librairies que j'utilise donc je suis rarement confronté à ce potentiel problème.

    A priori je ne m'embêterais pas et je suivrais les conseils de sylvainc2.
  • GMP peut aussi s'utiliser en C (sans C++) si je lis bien.

    Comme environnement de développement en C (seulement) mon préféré est Pelles-C.

    J'imagine qu'installer cette librairie est comme installer n'importe quelle librairie.
    Sous Windows, j'imagine qu'on peut l'utiliser sous forme de DLL ou inclure le code des fonctions à utiliser directement dans le programme qu'on veut écrire (utilisation d'un fichier .lib).

    PS:
    Autrement, il existe une autre librairie du même type: miracl ( http://www3.cs.stonybrook.edu/~algorith/implement/shamus/implement.shtml )
  • Je ne sais pas ce que tu cherches à faire, mais si c'est juste pour utiliser GMP, avec Julia tu feras en 3 jours ce que tu ferais en 6 mois en C (pour l'apprentissage du langage). Et tu auras un tas d'autres librairies utiles à ta disposition, faciles à installer et à utiliser.
  • Euh c'est quoi julia ? Le but c'est de faire un peu de C++ pour découvrir le langage (et la programmation en général) en gros. Tant qu'à faire en faisant des maths c'est bonus.

  • Est-ce une bonne idée de commencer la programmation par le C++ quand on a jamais programmé?

    Le C++ (et Java) c'est en tout dernier que je les ai utilisés (je ne suis pas fan mais je comprends leur intérêt)
    après un parcours tortueux: basic->fortran->pascal->assembleur->C->(C++ et Java)
  • FdP a écrit:
    Est-ce une bonne idée de commencer la programmation par le C++ quand on a jamais programmé?

    C'est même une très bonne idée en fait contrairement à ce que beaucoup de gens pensent. Commencer par Java est aussi excellent.

    Au contraire, commencer par le C quand on se destine plus tard à coder en orienté objet (C++ par exemple) est une cata totale pour certaines personnes qui ne s'adaptent pas vite.

    Passer du C++ au C se fait facilement, l'inverse est très faux. Quant à passer du Java au C++ je l'ai fait, ça ne pose pas de souci, il ne faut pas croire qu'il faut 6 mois d'intense entraînement pour apprendre à gérer correctement la mémoire en C++.

    Et surtout, c’est à force de programmer qu'on apprend, et aussi à force de lire du code des autres, en se renseignant sur telle ou telle technique (design patterns, lazy evaluation, smart pointer, RAII, ...).
    FdP a écrit:
    J'imagine qu'installer cette librairie est comme installer n'importe quelle librairie.
    Si par installer une librairie tu entends la rendre opérationnelle dans ton IDE préféré, alors c'est très dépendant des librairies. Rare sont les librairies qui "s'installent" avec un exe, ou alors dont tu disposes des dll pour ton architecture (windows 64 bits par exemple plutôt que 32 bits). Souvent il faut jouer avec des make, recompiler, voire même utiliser des outils pour émuler un environnement de compilation Linux (ce qui semble être le cas ici avec GMP).
  • Le C c'est ça:
    Mais bon une fois là je sais pas quoi faire (impossible de trouver un tuto clair j'ai beau chercher...) Je peux téléecharger une tonne de fichiers dont je sais pas quoi faire apès mais c'est tout...
    j'utilise le compilateur code blocks (je suppose que c'est ça mon compilateur ?) J'ai plutôt intérêt à prendre visual c++ ?
    Tu as plutôt intérêt à apprendre le C++ si tu n'en as encore jamais fait avant de te lancer dans l'utilisation d'une librairie externe.
    etc, etc...

    Julia, tu l'ouvres et si tu veux utiliser du GMP tu y vas d'entrée :
    julia> BigInt(3)^2000
    1747871251722651609659974619164660570529062487435188517811888011810686266227275489291486469864681111075608950696145276588771368435875508647514414202093638481872912380089977179381529628478320523519319142681504424059410890214500500647813935818925701905402605484098137956979368551025825239411318643997916523677044769662628646406540335627975329619264245079750470862462474091105444437355302146151475348090755330153269067933091699479889089824650841795567478606396975664557143737657027080403239977757865296846740093712377915770536094223688049108023244139183027962484411078464439516845227961935221269814753416782576455507316073751985374046064592546796043150737808314501684679758056905948759246368644416151863138085276603595816410945157599742077617618911601185155602080771746785959359879490191933389965271275403127925432247963269675912646103156343954375442792688936047041533537523137941310690833949767764290081333900380310406154723157882112449991673819054110440001
    
    Tu veux installer la librairie Toto ?
    julia> Pkg.add("Toto")
    
  • Certes Béru, je n'ai jamais dit que le C++ était facile (la conversation ne porte pas sur le C à vrai dire). En revanche, j'affirme tout haut que dans le but d'apprendre le C++, il ne faut surtout pas démarrer avec un livre sur le C pur mais bien un livre sur le C++.
  • L'intérêt que je vois au C++ est qu'il permet de simplifier la compréhension du code source des gros projets surtout quand plusieurs personnes doivent intervenir sur ce code source et qu'on ne peut plus demander d'explications aux développeurs qui ont conçu le programme et qu'on doit se fier à la documentation du programme (pas celle de l'utilisateur). :-D

    Mais autrement, à quoi cela sert-il? Développer plus vite? Une autre façon de voir les choses? Je ne sais pas vraiment.
  • Le C++ ne sert pas à simplifier la compréhension ... Là n'est pas son avantage. Si tu ne sais pas tu n'as qu'à demander sur un forum d'infos, ici je n'ai pas envie de répondre à ce qui semble être un troll. D'autant plus qu'on dérive du problème initial de judoboy.

    Edit : la vraie question est, à quoi sert la programmation orientée objet ?
  • Pour compléter ce que dit Skyffer, il y a quelques temps la copie d'un élève a fait le tour du Net.
    La question posée était "Quelle est la différence entre un langage de bas niveau et un langage de haut niveau"
    Réponse "Le nombre de lignes est inversement proportionnel à la vitesse d'exécution" (et j'ajouterai à titre personnel "et à la possibilité de comprendre le code".
    [Pardon, c'est HS, mais c'était trop tentant].

  • et:

    et on revient à ma question précédente: débuter en programmation en faisant du c++?

    PS:
    La mémoire RAM des ordis est devenue peu chère et les processeurs de plus en plus puissants, il devient inutile d'être trop regardant sur la taille des exécutables produits et de la vitesse d'exécution du code. C'est grâce à cela que Java a pu émerger. :-D
  • "Quelle est la différence entre un langage de bas niveau et un langage de haut niveau"
    Réponse "Le nombre de lignes est inversement proportionnel à la vitesse d'exécution"
    Julia va plus vite que C pour certaines choses : voir les benchmarks ici (pour Julia 0.2, la version en cours est 0.4).
  • FdP arrête de sortir énormité sur énormité stp. Visiblement tu ne connais rien de la programmation au niveau professionnel.

    Entre "J'imagine qu'installer cette librairie est comme installer n'importe quelle librairie", puis "L'intérêt que je vois au C++ est qu'il permet de simplifier la compréhension du code", et "débuter en programmation en faisant du c++?" et enfin la perle toute catégorie "il devient inutile d'être trop regardant sur la taille des exécutables produits et de la vitesse d'exécution du code. C'est grâce à cela que Java a pu émerger".

    On prend le contraire de chacune de tes phrases et on obtient à peu près un truc juste 8-)

    C'est une excellente idée de débuter directement en C++ si on veut apprendre ce langage, plutôt que de démarrer avec du C ... ou pire encore.

    Quant à l'utilité du C++, ça sert pas grand chose, c'est bien pour ça que tous tes logiciels (exceptés ton Maple et peut-être un autre soft) sur ton ordi sont codés avec. Petite précision, Java a émergé grâce aux systèmes embarqués et aux Java Server Pages, sûrement pas parce que la puissance des ordis a augmentée ... D'ailleurs sur les ordis personnels (i.e. non serveur et non système embarqué) Java n'a émergé que dalle oui, il n'y a quasiment aucun soft codé en Java, et heureusement ! La machine virtuelle trouverait vite ses limites si tous tes logiciels préférés étaient en Java.
  • On n'est pas un peu hors sujet ?
    Question 1 utiliser GMP
    Question 2 faire l'apprentissage de la programmation
    Question 3 (subsidiaire) choisir C ou C++ ou autre.
    Question 4 (non évoquée) pourquoi vouloir faire des calculs avec des très grands nombres.
  • La question est : comment utiliser GMP sur windows.

    La question n'est pas de savoir si GMP est bien, si le C est bien, si le C++ est bien, pourquoi faire des calculs avec des grands nombres.

    Si judoboy se pose l'une de ces questions il n'y aura aucun souci pour lui répondre.
  • On n'est pas un peu hors sujet ?
    Le phorum n'est pas un site de questions/réponses, on peut discuter tant qu'on pourrit pas le fil. J'ai parlé de Julia en me disant que peut-être Judoboy pensait que le C/C++ était nécessaire pour utiliser GMP, alors que des langages de haut niveau (Julia et R à ma connaissance, probablement d'autres) fournissent une "interface" à GMP comme à bien d'autres librairies C.
    Pour Java il suffit de jeter un oeil à Wikipédia pour voir que FdP simplifie bien des choses.
    Par ailleurs je fais encore du hors-sujet mais mieux vaut faire du Scala que du Java.

  • Pourquoi? Tu pourrais mieux "vendre" le C++ que tu ne l'as fait :-D
    Le peu de temps où j'ai travaillé dans l'industrie pour une SSII, je n'ai codé qu'en C, c'est un fait et c'était il y a plus de dix ans.
    Pourtant cela devait être le langage de programmation du futur, celui qui rendrait obsolète d'avoir des logiciels pré-installés sur son ordi. :-D
    (et la compatibilité des logiciels entre ordinateurs fonctionnant sous des OS différents, c'était censé être le point fort de Java si je me souviens bien)

    PS:
    La baisse des coûts de la mémoire RAM et l'augmentation de la puissance des processeurs ne peut pas ne pas avoir une incidence sur la façon de programmer et des outils utilisés pour le faire. Qui se souvient des overlay? B-)-


    PS2:
    La vidéo qui montre l'installation de GMP sous Windows est très claire.

    PS3:
    Je crois que cet extrait résume ce que je pense de C++:

    http://en.wikipedia.org/wiki/Overlay_(programming)
  • FdP tu ne dois pas lire correctement les posts.

    Je ne cherche pas à vendre le C++, et je me suis bien gardé de dire que le C++ était meilleur qu'autre chose.

    Je réaffirme haut et fort que SI on veut apprendre le C++, alors il faut directement commencer le C++ et non pas le C. Pourquoi ? Il n'y a qu'à voir à quoi ressemble le code C++ de quelqu'un qui vient d'apprendre le C, comparé à quelqu'un qui vient d'apprendre le Java. Dans un cas on aura des pointeurs de fonction à gogo, pas de polymorphisme, ... Dans l'autre cas on aura des interfaces claires (classes abstraites), des design patterns bien employés, l'utilisation de la std, une pensée objet, ... La première fois que j'ai vu un code C++ par quelqu'un venant du C, j'ai eu à débugger un main de 3000 lignes :-) Avec des bugs venant de la non maîtrise de la POO.

    Va sur un forum d'infos si tu veux savoir pourquoi on utilise le C++ dans l'industrie. Je ne suis pas là pour vendre le C++, même si je sais pourquoi je l'utilise et pourquoi beaucoup d'industries l'utilisent.

    Je ne sais pas pour quelle plateforme tu codais mais je ne connais presqu'aucun logiciel (je ne parle pas d'utilitaires mais bien de logiciels) codé en C, les SSII ne sont vraiment pas une référence en terme de programmation, c'est souvent des projets bâclés, codés à l'arrache, et une fois livrés au client après moi le déluge ... Par ailleurs les SSII développent rarement des soft en tant que telle (autre que des softs à usage interne uniquement où on peut faire un peu ce qu'on veut), ce ne sont pas des pure players de l'édition de logiciels.

    Entre ce que Java devait être et ce que Java est il y a une grosse différence. Moi aussi j'ai cru il y a 10 ans que Java allait tout écraser sur son passage. J'ai changé d'avis.

  • Oui je travaillais sur un logiciel de l'industrie à usage interne comme tu dis(d'une multinationale, possédant une documentation très sommaire, visiblement ce n'était pas une priorité) , qui avait déjà bien une quinzaine d'années et probablement des couches successives de rustines logiciels. On a mis près de 6 mois pour se rendre compte qu'on ne pouvait pas faire les modifications demandées (et presque autant pour comprendre comment ça marchait) sans toucher à l'architecture complète du programme :-D
    Il fallait un coupable, j'étais en période d'essai...(Dans tous les boulots que j'ai pu faire je n'ai jamais vu des gens être traités aussi mal devant leur collègues que dans l'informatique). 8-)

    Quand j'ai vu les ressources consommées par Java, moi j'ai espéré que ce truc tomberait vite aux oubliettes. B-)-
    (il a surement été remplacé par un truc plus gourmand en ressource depuis, mais je ne suis plus tellement l'actualité du développement professionnel depuis une dizaine d'années)

    PS:
    Pour faire du reverse code, le Java c'est cool :)
  • Vous connaissez mieux que Java pour faire des applis web ?
  • Du côté client à peu près n'importe quoi est mieux que Java (qui utilise encore des applets alors que tous les navigateurs les bloquent par défaut ?). Javascript est très utilisé. Avec HTML5 on peut déjà faire beaucoup.

    Du côté serveur Java est effectivement très utilisé (encore que je ne connais pas sa part de marché), et je l'ai signalé :
    skyffer3 a écrit:
    Java a émergé grâce aux systèmes embarqués et aux Java Server Pages

    Mais il y a beaucoup d'autres alternatives que Java. Cependant, le web n'est pas du tout mon domaine, donc je préfère ne pas trop m'avancer sur ce sujet.

    A nouveau, le débat n'est pas de dire si le C++ est bien, ou si Java est mieux que le reste. Là où j'insiste, c'est pour casser l'idée (qu'ont d'ailleurs beaucoup de profs en info quand je vois certains élèves sortir d'école) qu'il faut démarrer par le C en vue d'apprendre le C++. Ca paraît plus logique mais c'est une mauvaise approche, l'inverse est beaucoup mieux. Il faut démarrer directement par un langage objet en vue d'acquérir au plus vite une véritable pensée objet et des réflexes objet que n'ont pas ce qui ont démarré par du C et qui ne sont pas spécialement doués pour la programmation.

    Le débat n'est pas non plus de savoir si la POO (programmation orientée objet) est mieux, c'est un long débat, mais j'ai mon avis là dessus.
  • Je suis désolé que tu aies perdu ton job FdP, je ne m'en réjouis pas même si sur ce fil je suis en désaccord avec beaucoup de tes affirmations. Les gens ne sont pas mal traités en info, c'est dans les SSII que les "consultants", i.e. des développeurs prestataires, sont éventuellement très mal considérés.
  • Oui oui je ne parlais pas des applets, c'est des usines à gaz ces trucs.
  • Salut à tous
    La question 4 de goto2 me semble très importante.
    Pour avoir une idée de la complexité de la fonction nextprime de GMP entre autres...
  • Consultant en informatique hmmm pas évident.... Un ami qui a laissé tomber les maths pour faire du business en informatique au Luxembourg préfère faire appel à des consultants en Thaïilande ou autre pays asiatique, qui lui fournissent un code excellent pour quelques pièces jaunes.
  • @jumeaux : nous avons vu ton post http://www.les-mathematiques.net/phorum/read.php?15,992905,992905#msg-992905
    la question 4 ne concerne pas ce sujet, tu peux faire un up sur ton sujet, mais si personne n'a répondu c'est peut-être car personne ne connaît la réponse

    @SN : je veux bien te croire, je n'ai jamais eu affaire directement à des consultants asiatiques, mais je connais des gens qui le font, et j'ai souvent entendu dire qu'au contraire, ils sont très loin de fournir un code "au standard" de l'industrie européenne, et dès que le problème est complexe (en termes d'algorithmie, d'architecture, ou autres), il faut passer par des ingénieurs formés en Occident.
  • Pourquoi ces profs' n'enseignent pas le C++ directement selon toi?



    Je ne l'ai pas pris de la sorte rassure toi. Je n'étais pas consultant mais salarié mais en effet, pendant mon court passage dans ce monde des SSII, en 2000, mi 2001, j'ai vu un consultant se faire éjecter par un chef de projet en se faisant humilier devant tout le plateau, c'était un vendredi, le lundi ce consultant n'était plus sur le plateau. J'ai jamais vu cela avant ni après.
    (dans la société qui m'employait j'ai vu le représentant du personnel, traiter comme une m... un autre salarié devant les autres salariés présents à ce moment-là)
  • FdP a écrit:
    Pourquoi ces profs' n'enseignent pas le C++ directement selon toi?

    Eux-mêmes ont appris comme ça ? :-P

    Honnêtement je n'en sais rien, je sais juste que j'arrive à faire tout de suite la différence entre quelqu'un imprégéné du C qui code en C++ et quelqu'un qui a vraiment appris le C++.

    Les profs qui commencent par enseigner le C passent ensuite au C++ en disant (je caricature à peine) : regarder, vous mettez votre code dans des classes, et ça fait du chocapic, euh non, et ça fait du C++ (:D

    En tout cas c'est l'impression que ça donne quand je lis certains codes.

    Il n'y a rien de compliqué à démarrer directement au C++, en introduisant très rapidement le concept de la programmation orientée objet. Je rejoins Christophe C sur au moins un point, il ne faut pas croire que les élèves (qui soit dit en passant sont généralement majeurs) sont idiots et que c'est difficile pour eux. Mais si on leur fait croire que la POO c'est magique et très compliqué, c'est sûr ils ne vont jamais comprendre sa puissance et l'utiliser correctement.

    Edit: Pire encore, le temps passé sur du C à étudier les string char* sans faire de l'objet, sera du temps en moins pour comprendre vraiment les concepts de la POO. Or c'est ça qui compte vraiment, le reste s'apprendra tout seul.
  • Ok merci Skyffer3. Je suis curieux d'en savoir sur la complexité de ladite fonction [www.les-mathematiques.net]
  • De mon point de vue, c'est interessant de faire de la programmation comme en C mais en utilisant la STL et les iostream du C++ pour eviter les pointeurs. Apprendre la POO tout de suite, ca necessite plus d'abstraction, on s'eloigne de la machine, or je trouve que c'est bien d'apprendre un langage proche de la machine.
  • Ta solution est encore pire que tout, tu apprends le C mais sans pointeurs, ou bien tu apprends le C++ mais sans objets. Autant apprendre un langage de script à ce compte là. Le C++, ce n'est pas du C sans pointeurs, et le C, ce n'est pas du C++ sans classes. Par ailleurs la STL est résolument tournée objet, avec les algorithmes opérant dessus, les templates, ...

    Le jour où les gens comprendront que le C++ est un autre langage que le C, et non une simple surcouche. Le mode de pensée est très différent, et on n'apprend pas le C++ en faisant du C.

    Je vous laisse croire ce que vous voulez, plus la peine que j'intervienne sur ce fil, le débat sera sans fin tellement cette mentalité est ancrée. Et puis nous ne sommes pas sur un forum d'infos.

    Edit : je ne conteste pas le fait que ça peut être bien d’apprendre un langage proche de la machine, mais 1) la question portait sur le fait d'apprendre ou non directement le C++ en vue d'apprendre le C++, 2) le C++ est un langage très proche de la machine (accès direct à la mémoire, accès à l'API de l'OS, accès au GPU, ...).

    Edit 2 : La POO je l'ai apprise avec Java quand j'avais 13 ans, ne mettons pas des barrières qui n'existent pas, la POO c'est un autre mode pensée, qui n'est pas pour autant plus compliquée quand c'est bien expliqué. Mais c'est sûr que les profs qui démarrent le cours de C++ avec 6 mois de C ne seront pas forcément les mieux placés pour bien expliquer la POO et son intérêt. Et généralement ces profs abordent les classes en 3 heures, après avoir fait 6 mois de C. Il ne faut pas s'étonner que ça paraisse abstrait.
  • Ben non, justement un langage compile c'est beaucoup plus rapide qu'un langage de script. Et la STL peut s'utiliser sans comprendre la programmation orientee objet, en donnant acces au debutant a des types de donnees qui en C demandent de bien maitriser les pointeurs. Les template je ne considere pas ca comme de la programmation orientee objet, mais plutot comme une facon propre de reutiliser le meme code avec des types differents (par rapport a faire des define par exemple). Sinon, la POO a ses avantages, mais je pense qu'il faut deja comprendre un langage avec moins de concepts et moins d'abstractions avant de faire de l'oriente objet. En particulier si on s'interesse aux constantes multiplicatives dans les O() d'un algorithme, car la taille des structures de donnees est essentielle pour ne pas sortir des caches, et maitriser la taille des structures de donnees en POO c'est beaucoup plus delicat qu'avec un struct.
  • Je suis obligé d'intervenir à nouveau :
    parisse a écrit:
    maitriser la taille des structures de donnees en POO c'est beaucoup plus delicat qu'avec un struct
    Tu connais les différences entre une struct et une classe ? Tu serais surpris.

    Le fait d'apprendre le C ou le C++ n'a rien, mais alors rien à voir, avec le fait de maîtriser la
    parisse a écrit:
    constante multiplicative dans les O() d'un algorithme

    Sur ce forum on voit d'excellents matheux, et c'est tant mieux c'est un forum de maths. On assiste même parfois à de beaux fils d'informatique théorique. Mais sur l'info pratique, les réponses ne sont vraiment pas à la hauteur des réponses sur les questions mathématiques.
  • Bonjour,

    Je soutiens Skyffer sur le C et le C++ (le C/C++ n'existe pas) sans réserve.

    Cordialement,

    Rescassol
  • Bonjour,
    Quannd on compare ou qu'on distingue le C et le C++, cette comparaison porte sur les langages ou sur la façon de s'en servir ?
    Techniquement, donc, mathématiquement, il me parait incontestable que la différence entre C et C++ est l'ajout de la notion de classe (en simplifiant, l'ajout des mots-clé new et delete, la surcharge des opérateurs etc.). Je sais, il y a aussi quelques autres finesses.
    Quans vous parlez du C++ vous faites allusion aux librairies qui s'y rattachent, et vous parlez aussi de la façon de l'utiliser (POO ou pas), deux points qui n'ont rien à voir avec la langage lui-même.
  • skyffer3: techniquement parlant, il n'y a pas grandes differences entre struct et class en c++ (sauf controle d'acces aux donnees dans une classe). Mais je doute fort qu'un programmeur OO utilise le mot-clef struct lorsqu'il manipule des methodes virtuelles (je n'ai d'ailleurs jamais teste si mon compilateur préféré le permet). struct existe en C, et est utilise pour des structures de données en C++ qui n'utilisent pas (ou peu) les concepts orientés objets et c'est comme cela que je l'entendais.
    Un programmeur C++ qui n'a jamais fait de C et pas été confronté aux pointeurs ne prendra probablement pas conscience du cout sur la taille des données que nécessite les méthodes virtuelles (un pointeur, 64 bits sur une architecture 64 bits, ca peut doubler le sizeof de la classe). Or ceci est fondemental si on fait des calculs modulaires sur de grosses matrices ou des polynomes de grand degre (par exemple inverse de matrice 500x500 ou calcul de bases de Groebner). Si on optimise ce genre de calculs (ce que je fais pas mal dans giac), on voit que le temps réel d'exécution dépend bien plus des accès memoires que des opérations arithmétiques (il faut juste faire un peu attention aux divisions), en particulier si la taille des données sort du cache L1. On est bien loin des manuels qui ne comptent souvent dans le O() que les opérations arithmétiques sur les données et négligent les accès mémoire.
  • parisse a écrit:
    Un programmeur C++ qui n'a jamais fait de C et pas été confronté aux pointeurs

    En vertu de quoi un programmeur C++ n'aurait jamais été confronté aux pointeurs sous prétexte qu'il n'a pas appris le C ?
    parisse a écrit:
    ne prendra probablement pas conscience du cout sur la taille des données que nécessite les méthodes virtuelles

    En vertu de quoi un programmeur C++ ne serait pas conscient de cela ?

    C'est sûr que si ton postulat de base c'est qu'un programmeur C++ ne sait pas coder en C++ et ne comprend rien au fonctionnement interne du langage, et donc ne sait pas optimiser son code ...
  • Bof, inutile que j'insiste, je sais ce que je vois dans le cadre de mon travail, entre ceux qui sont bloqués sur le C et entre ceux qui font du C++ propre (et ça ne les empêche pas d'être parfaitement conscient de ce qui coûte ou pas quand ils optimisent un code).
  • Pourquoi pas dire tout simplement "je distingue ceux qui font de la POO et les autres" ?
    Le langage utilisé n'a pas grand-chose à voir là dedans, simplement, le C++ simplifie la logique POO.
    Le bon sujet de discussion serait à mon avis : quels sont les avantages de la POO (à l'occasion on pourra aussi lister les innconvénients).
    Question subsidiaire : est-ce que les deux techniques sont exclusives ?
  • @goto2 : je me cite (message sur la première page)
    skyffer3 a écrit:
    la vraie question est, à quoi sert la programmation orientée objet ?

    Mais un forum de maths n'est pas le lieu pour ça, on a juste digressé un peu sur ce fil.
  • goto2 a écrit:
    Pourquoi pas dire tout simplement "je distingue ceux qui font de la POO et les autres" ?

    Dans ce fil je parle de la pertinence ou non d'apprendre le C en vue d'apprendre le C++. Je ne parle pas de la POO en tant que telle.
    Et j'affirme qu'il est très peu pertinent d'apprendre le C dans le but d'apprendre le C++ dans la foulée. Il faut démarrer le C++ en tant que langage indépendant du C.

    Mais j'ai déjà dit tout ça sur ce fil en long et en large, libre aux autres de croire ce qu'ils veulent.
  • Il me semble, mais je peux me tromper, que la préoccuparion de Judiboy est d'apprendre la programmation.
    La programmation, c'est d'abord l'écriture d'un algorithme, cela signifie écrire dans sa langue maternelle et avec la logique indispensable, la suite des opérations successives qui, à partir de données, vont permettre d'arriver à un résultat.
    Si on ne veut pas utiliser son langage maternelle, ce qui peut paraître trop scolaire, on peut rediger un ordinogramme, c'est aussi valable.

    Ceci étant fait, on doit "traduire" tout cela de façon que l'ordinateur le comprenne. Pour cela, des gens on écrit des langages. Il en existe des quantités, de toute sorte, des compilés, des interprétés, des simples, des sophistiques, des spécialisés, des génaralistes etc.
    Il n'y a pas un langage meilleur qu'un autre, sinon, on le saurait. Les langages les plus puissants sont, c'est assez logique, les plus difficiles à apprendre.

    Si on veut apprendre à programmer, tout simplement, un langage simple est le meilleur conseil qu'on peut donner. A l'opposé, si on veut apprendre à programmer des choses très évoluées, et ceci très rapidement, le C++, avec toutes ses librairies est ce qui plaira le plus aux employeurs de SSII.
    Une situation intermédiaire consiste à apprendre tout simplement à écrire de code, de façon que ça marche et surtout qu'on ait les résultats attendus.
  • goto2 a écrit:
    Il me semble, mais je peux me tromper, que la préoccuparion de Judiboy est d'apprendre la programmation.

    Ce n'est pas ce que j'avais compris.
    judoboy a écrit:
    Le but c'est de faire un peu de C++ pour découvrir le langage

    Ce sont d'autres intervenants qui se sont mis à supposer qu'il fallait que judoboy apprenne un autre langage.

    Moi tout ce que je dis, c'est que si judoboy veut apprendre le C++, alors judoboy a raison de démarrer directement un (bon) cours de C++ qui mette l'aspect sur la POO dès le début.

    Ce fil s’éternise pour rien ...
Cette discussion a été fermée.