bonjour,
Je cherche un conseil, sur le choix d'un deuxième langage ?
Je suis sous Mandrake9.2 est j'ai déjà fait une initiation concluante en C, mais je voudrai savoir si je pousse plus en avant l'exploration où bien je passe directement au C++.
J' apprend python un language qui me convient bien (synthaxe, bloc indender, objet, etc), qui sera mon language principal, mais comme on peut écrire des modules en C où C++ pour une question de rapiditée la question se posse ?
Merci,
# encore plus loin
Posté par vincent LECOQ (site web personnel) . Évalué à 0.
[^] # Re: encore plus loin
Posté par TImaniac (site web personnel) . Évalué à 2.
Cerise sur le gâteau : une bibliothèque écrite en Python pourra être réutilisée en C# qui a des possibilités d'interaction forte avec le langage C, et ceci de manière portable (ce qui est rare pour être noté).
# Objet
Posté par nakan (site web personnel) . Évalué à 5.
[^] # Re: Objet
Posté par bushido . Évalué à 2.
Ne pourrai-je utiliser le python pour programmer en objet, et garder le C pour le reste.
Bien que le reste ? je ne sais pas ce que cela pourrai être.
[^] # Re: Objet
Posté par Matthieu Moy (site web personnel) . Évalué à 2.
Rien que pour la manipulation des string et des fichiers, je suis content d'avoir le ++ derrière le "C" (même si je préfèrerais encore programmer dans un autre langage mais ça, c'est une autre histoire).
[^] # Re: Objet
Posté par bushido . Évalué à 1.
J'y vois plus clair maintenant, je compte continuer avec Python pour bien apprendre à programmer, puis faire du C++ car on pourrai faire du C avec, donc pourquoi se priver "deux language en un" et garder un language objet comme Python.
# Ça dépend !
Posté par Mikaël Cordon . Évalué à 2.
Ben en fait, le choix peut se faire sur différents plans ; mais ce sera toujours en fonction de ce que tu souhaites faire...
Si tu cherches à faire du code optimisé et performant (genre des gros calculs scientifiques) sûrement que le C sera mieux que C++
Si tu cherches à faire du code modulaire, clair (lisible), maintenable facilement, et pas forcément performant sûrement que le C++ conviendra mieux.
Maintenant, je suis sûr d'une chose, c'est que les performances dépendent énormément des algorithmes et structures de données utilisés (et quasiment indépendant du langage utilisé) : un programme C optimisé avec de mauvais algos, se fera battre à plates coutures par le même programme en Java avec de bons algos...
Je ne sais pas si j'ai fait avancer le schmilblick, mais voilà mon point de vue :)
[^] # Re: Ça dépend !
Posté par gpe . Évalué à 5.
Et le même programme en C avec de bons algos battra celui java...
[^] # Re: Ça dépend !
Posté par TImaniac (site web personnel) . Évalué à 1.
[^] # Re: Ça dépend !
Posté par gpe . Évalué à 3.
Et puis les optims à la volée c'est vraiment efficace? Le temps qu'il passe à faire l'optim à la volée ne bouffe-t'il le temps gagné sur l'éxecution de l'optim? (je précise que je n'y connais rien en JIT)
[^] # Re: Ça dépend !
Posté par TImaniac (site web personnel) . Évalué à 2.
Tu peux mais 90% des gens s'en balances et font urpmi/yum/apt-get install machintruc et c'est un binaire générique qui arrive sur leur machine.
Le temps qu'il passe à faire l'optim à la volée ne bouffe-t'il le temps gagné sur l'éxecution de l'optim?
Evidemment que cela peut prendre du temps, en général d'ailleur on le sent à la première exécution, il y a justement cette première étape de "pré-compilation" en code natif. Enfin si l'algo en question est souvent réutiliser après je te laisse deviner les gains de perfs.
Si les langages qui font appellent à JIT sont plus lent, ce n'est pas à cause de cela, c'est plutôt pour d'autres raisons : gestion mémoire, vérification des références, etc.
Enfin dans tous les cas c'était juste histoire de montrer que le langage ne fait pas tout, il faut aussi tenir compte du boulot du compilo.
# Les deux.
Posté par jerome (site web personnel) . Évalué à 3.
Il y a compilateurs, bibliothèques par centaine, débuggeurs, profilers, environnements de développement plus ou moins convis, etc, le tout plus ou moins sexy.
D'ailleurs, tu peux utiliser les deux en relation avec python. Nan, franchement, faut que tu fasses ton choix en fonction de la bibliothèque que tu veux utiliser, de la conception du code que tu imagines, etc.
# Java ou C++
Posté par Obsidian . Évalué à 4.
Après, tout dépend, là encore, de ce que tu comptes faire. Visiblement, tu comptes te tourner vers la programmation objet. Donc :
- Si tu souhaites simplement disposer d'un langage sympa pour faire quelques concepts objets, faire des scripts, et t'en servir pour écrire les outils qu'il te manque à un moment donné, Python est très à la mode.
- Si tu comptes en faire ton métier et trouver un boulot avec, Java a la côte en ce moment en entreprise.
- Si les concepts compliqués de prime abord ne te font pas peur, que tu préfères avoir un langage complet à un langage simple, et que tu veuilles trouver quelque chose qui soit l'équivalent du C dans le milieu objet, à savoir quelque chose qui te permette de générer des exécutables qui ne reposent pas sur un environnement ou une machine virtuelle, et que tu comptes tirer profit de la puissance de ta machine, alors le C++ est fait pour toi.
En ce qui me concerne, c'est le C++ que j'utilise professionnellement.
[^] # Re: Java ou C++
Posté par bushido . Évalué à 2.
-le C, c'est assez facile il devait te servir de base, ou de référence pousse un peu plus avant le C.
-Python est un langage sympa pour faire quelques concepts objets, faire des scripts, et t'en servir pour écrire les outils qu'il te manque à un moment donné.
Pour la programmation objet, le Python ne ferait-il pas l'affaire, car je ne veux pas en faire mon métier mais juste un loisir et peut-etre participer modestement à quelques petit proget.
[^] # Re: Java ou C++
Posté par Obsidian . Évalué à 3.
Je crois que dans cette situation, le mieux est encore de faire ce qu'il te plaît. Essaye les trois langages pendant deux à trois semaines chacun, puis fais ton choix.
Personnellement, je ne fais pas de Python, mais ce langage a bonne réputation, surtout dans la communauté du libre. Un certain nombre de projets Python ont été développés à présent et tu devrais y trouver ton bonheur.
# que choisir C où C++
Posté par lmg HS (site web personnel) . Évalué à 3.
- Nul besoin de faire de l'OO en C++ pour profiter du C++. La généricité est un apport non négligeable. De même que les std::string, les références et autres abstractions qui le rendent d'ailleurs bien plus simple pour les débutants. Un des exemples à ce sujet est la comparaison des codes qui permettent de lire, stocker et trier un nombre quelconque de chaines de tailles quelconques (non fixées à la compilation) (tout en ayant au final un code sûr et non sujet aux buffers overflow, et autres joyeusetés)
- Cette remarque précédente n'empêche pas que coder en C++ comme en C est une fort mauvaise approche qui donne pas particulièrement de bonnes choses.
- Cela n'empêche pas non plus que le C++ est plus vaste et plus complexe. Bien plus complexe.
- Concernant les perfs, C++ n'est pas lent plus que le C. C'est le code et le design de l'application qui vont ralentir, accélerer (cf std::sort vs qsort) l'exécution, ou de rien changer (une indirection reste une indirection). Pour le domaine de calcul scientifique en particulier, depuis quelques temps déjà, des benchmarks montrent un C++ qui rivalise avec le C et le fortran tout en permettant une expressivité plus "mathématique".
A noter toutes fois, que tous les compilos ne sont pas égaux devant le C++. Tous n'optimisent pas aussi bien.
- Il existe des bibliothèques comme boost.python qui facilitent l'interaction du C++ avec Python -- je ne l'ai pas encore essayée personnellement.
[^] # Re: que choisir C où C++
Posté par Nicolas Bernard (site web personnel) . Évalué à 2.
Oui et non...
- Si tu fais du C et que tu le compile en tant que C++, c'est vrai.
- De même, certaines des fonctionnalités de C++ sont gérées à la compilation.
- Par contre, d'autres (polymorphisme, gestion de la mémoire, etc) nécessitent l'inclusion de code qui est exécuté quand le programme tourne, et donc le ralentissent. Ceci dit, ce code étant particulièrement optimisé, il est normalement plus rapide que celui que tu écrirais si tu essayais de faire un pseudo polymorphisme en C, par exemple (pour la gestion de la mémoire, j'ai plus de doutes...).
[^] # Re: que choisir C où C++
Posté par lmg HS (site web personnel) . Évalué à 1.
Je pense que l'on se rejoint assez en fait.
Indirections vs liaisons tardives (mise en oeuvre du polymorphisme d'héritage) c'est un peu le même combat -- voir le draft n1359 pour des exemples de chiffres. Pour la mémoire, je ne suis pas persuadé non plus que par défaut il y ait une différence sur les types POD.
Toujours est-il, pour ce qui est des performances, voilà de la lecture pertinente: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1359.pdf(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.