OVH Cloud OVH Cloud

Python / C++

10 réponses
Avatar
Loïc Joly
Bonjour,

J'ai lu à plusieur reprises que le C++ et Python peuvent assez bien
fonctionner ensemble pour former un environnement de développement assez
intéressant.

Je n'y connais absolument rien en Python, et j'aimerai savoir quelles
sont ses caractèristiques qui lui peuvent lui donner des avantages sur
le C++ dans certains types de programmation.

Merci,

--
Loïc

10 réponses

Avatar
Bruno Desthuilliers
Loïc Joly wrote:
Bonjour,

J'ai lu à plusieur reprises que le C++ et Python peuvent assez bien
fonctionner ensemble pour former un environnement de développement assez
intéressant.

Je n'y connais absolument rien en Python, et j'aimerai savoir quelles
sont ses caractèristiques qui lui peuvent lui donner des avantages sur
le C++ dans certains types de programmation.



En vrac : langage 'multi-paradigme' (procédural, objet, fonctionnel),
avec toutefois une nette orientation objet, syntaxe claire et lisible,
types de données de haut niveau (listes, tuples, hash) en natif, gestion
des exception, typage dynamique fort - permettant une grande généricité,
gestion de la mémoire (par comptage de références), modulaire (modules
et packages), simple d'emploi, très expressif (par rapport à C++,
compter un rapport de 1 à 5, voire 1 à 10 selon le type de programmes),
riche bibliothèque en standard et beaucoups de bibliothèques externes de
bonne qualité, aisément extensible en C ou C++, aisément embarquable
dans du C ou du C++...

Il semble qu'un schéma courant soit de commencer à l'utiliser pour le
prototypage, avec en tête de tout réécrire en C++, pour finalement de ne
convertir en C ou C++ que les parties les plus critiques en terme de
performances !-)

Python n'est bien sûr pas adapté pour de la programmation système ou
quoique ce soit de bas niveau. Par contre, il excelle comme 'glue' entre
des composants (bibliothèques et/ou programmes) écrits dans des langages
de plus bas niveau. Cela permet d'utiliser les outils adaptés selon les
besoins : C ou C++ pour les parties sensibles, Python pour la logique.

Mais le mieux serait probablement de tester ? Si tu maîtrise déjà un
langage comme C++, tu devrais être productif en Python en quelques
heures. Attention, surtout en venant de C++, tu risque d'avoir la
(fausse) impression que Python est plus un jouet qu'un langage. Il n'en
n'est rien, il suffit de voire des applis comme Zope pour s'en convaincre.

Bruno

Avatar
Fabien SK
On Sat, 20 Sep 2003 12:38:39 +0200, Loïc Joly wrote:

Je n'y connais absolument rien en Python, et j'aimerai savoir quelles
sont ses caractèristiques qui lui peuvent lui donner des avantages sur
le C++ dans certains types de programmation.


Avantages:
- Beaucoup plus rapide à mettre en oeuvre
- Très facile à (re-)lire
- Une bibliothèque standard couvrant de nombreux domaines
- Extensible avec des bibliothèques écrites dans d'autres langages
si nécessaire (problèmes de perfs, la lib existe en C ou C++) avec swig
ou boost:python

Inconvénient:
- Pas aussi rapide que du C++; parfois utiliser des bibliothèques en
langage natif ne suffit pas
- A mon avis, le typage dynamique est un problème pour les gros projets

Avatar
Jiba
On Sat, 20 Sep 2003 12:38:39 +0200
Loïc Joly wrote:

Bonjour,

J'ai lu à plusieur reprises que le C++ et Python peuvent assez bien
fonctionner ensemble pour former un environnement de développement asse z
intéressant.

Je n'y connais absolument rien en Python, et j'aimerai savoir quelles
sont ses caractèristiques qui lui peuvent lui donner des avantages sur
le C++ dans certains types de programmation.


les avantages de Python sont suffisamment nombreux pour que je n'aie jamais appris C++ ;-)
Il y a la portabilité, la facilité d'apprentissage, le fait que ce soit un logiciel libre,...
l'un des avantages décisifs restent la vitesse avec laquelle on peut prog rammer en Python : en clair ce que tu mettras 1 semaine à faire en C++ tu le feras en 1 jour en Python...

Jiba

Avatar
Philippe Guglielmetti
les avantages de Python sont suffisamment nombreux pour que je n'aie jamais
appris C++ ;-)

Il y a la portabilité, la facilité d'apprentissage, le fait que ce soit un
logiciel libre,...

l'un des avantages décisifs restent la vitesse avec laquelle on peut
programmer en Python :

en clair ce que tu mettras 1 semaine à faire en C++ tu le feras en 1 jour
en Python...


Dès fois, mais pas toujours. Python est un très bon langage "interprété",
vachement utile pour vite faire un p'tit truc.
Mais dans la même veine que VisualBasic, tout se passe à l'exécution, ce qui
a quelques inconvénients quand même, notamment au niveau de la performance.
Je ne connais pas de "gros" projet en Python, ça m'intéresserait de voir
comment ça se débrouille...
--
Philippe Guglielmetti - www.dynabits.com

Avatar
Martinez Jerome
Jiba wrote:


les avantages de Python sont suffisamment nombreux pour que je n'aie jamais appris C++ ;-)


tout comme plein de developpeurs Visual Basic n'ont jamais éprouvé le
besoin de passer au C++...
Tout comme des utilisateurs Windows n'ont jamais éprouvé le besoin de
passer a Unix...

J'associe Python a un VB très évolué.
Il y a de gros (!) projets en VB, ou en Python.
Python, c'est bien pour faire du prototypage car rapide a developper.
Pour de la production, hum!

Il y a la portabilité,


c++ est portable

la facilité d'apprentissage,


Gloups, la c'est vraie que C++ l'est moins... Mais pas tant que ca.

le fait que ce soit un logiciel libre,...


C++ aussi (g++...)


l'un des avantages décisifs restent la vitesse avec laquelle on peut programmer en Python : en clair ce que tu mettras 1 semaine à faire en C++ tu le feras en 1 jour en Python...


Ou tu auras perdu du temps, car tu devras le refaire car un truc ne sera
pas dispo en python, ou python sera trop lent.


PS : le seul "gros" projet que je connais en Python est Bittorent.
Marche bien



Jiba


Avatar
Christophe de VIENNE
Philippe Guglielmetti wrote:
Je ne connais pas de "gros" projet en Python, ça m'intéresserait de voir
comment ça se débrouille...


<HS>

BOA, wxGlade... ça marche pas mal du tout.

</HS>

A+

Christophe

Avatar
Jean-Marc Molina
Bonsoir,

c++ est portable


Il est dit portable mais dans la pratique c'est une autre affaire. On peut
très bien programmer du C++ non portable, spécifique à une plate-forme sans
s'en rendre compte. Je pense aux développeurs Windows par exemple (surtout)
et Unix (sans doute). J'en sais quelque chose je suis brièvement passé de
Windows à Unix en pensant que tout était pareil :)

En Python ou Java, on a pas le choix, l'application développée est forcément
portable, c'est intrinsèquement lié aux langages. Après c'est à la machine
virtuelle qui se charge d'exécuter les scripts de faire le boulot !
Problèmes rencontrés par Sun il y a quelques années mais on en parle de
moins en moins (heureusement ^^).

Gloups, la c'est vraie que C++ l'est moins... Mais pas tant que ca.


Disons qu'il y a beaucoup de concept à assimiler si on considère C++ comme
un langage C/C++ (grave erreur mais qui ne l'a fait pas ? moi le premier -
je viens du C) ou un langage purement objet (qui ne l'est pas - comme
Java/Smalltalk)... Il n'est ni l'un ni l'autre, C++ c'est un petit peu de
tout... Mais quel pied ! ^^

C++ aussi (g++...)


Langage de programmation libre à code source ouvert.
Ce sont les EDIs ou éditeurs qui sont des logiciels utilisés pour
développer, coder, programmer, ramer parfois voir couler :)

pas dispo en python, ou python sera trop lent.


Il existe tout un tas de wrapper et des technos comme COM/DCOM/COM++/GOMala
aident beaucoup (OpenGL & Cie, même faire du Java en Python... C'est dire
!).
Si tu jetes un coup d'oeil au répertoire Python de Google je peux te
garantir que tu trouveras de tout et de rien, voir plus qu'en C++ !

Les langages interprétés comme Python ou PHP restent très puissants et très
rapides. Peut-on parler de performance pour un logiciel avec une interface
graphique ? C'est au niveau des traitements qu'on le regrette parfois. Je
pense à Java qui est mi-compilé mi-interprété. Mais ça reste très rapide et
on peut même faire des jeux tout en 3D avec Java ! Sans compter que les
processeurs sont de plus en plus puissants. D'après moi les langages
interprétés, de scripts, sont nés suite aux nombreuses heures, voir jours,
de compilation que certains projets nécessitaient. Je me souviens encore de
projets C++ qui mettaient plus de 30 minutes à se recompiler complètement
(il y a 2 ans sur des 1GHz je crois). C'est tout l'intérêt des langages
scripts. Autre exemple développer un plugin pour une application genre
3DSMAX ou Adobe Photoshop. Avec C++ il faut compter 5 minutes pour tester
une simple ligne ! Il faut compiler le plugin et lancer le logiciel, quand
on parle de 3DSMAX... Ça prend des plombes ! Avec un langage script, c'est
instantané ! Il existe même un moyen pour compiler du Python ou du PHP pour
atteindre les performances de Java, il suffit d'avoir un bon serveur Web ou
d'avoir un interpréteur embarqué dans l'application (quand il faut vraiment
avoir de bonnes performances). A titre d'exemples il existe même des
interpréteurs C++, pas besoin de compiler ! Eh oui :).

Je connais surtout Python comme langage embarqué pour développer des jeux
vidéos (style LUA/Unreal Script).
Je pense que vous pourrez trouver une liste d'applications développées en
Python sur python.org ou le répertoire Google.

JM

--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)

Avatar
Loïc Joly
Jean-Marc Molina wrote:

Bonsoir,


c++ est portable



Il est dit portable mais dans la pratique c'est une autre affaire.


Notre code C++ tourne sans problèmes sous Win32, Linux et Irix (sauf en
64 bits, mais on y travaille). Et l'effort demandé n'est pas très
important une fois qu'on a bien encapsulé les besoins propres à un
système par des appels indéterminés.

On peut
très bien programmer du C++ non portable, spécifique à une plate-forme sans
s'en rendre compte. Je pense aux développeurs Windows par exemple (surtout)
et Unix (sans doute). J'en sais quelque chose je suis brièvement passé de
Windows à Unix en pensant que tout était pareil :)

En Python ou Java, on a pas le choix, l'application développée est forcément
portable, c'est intrinsèquement lié aux langages.


Ah bon ? Que fait ce genre de code sous Linux (extrait de
fr.comp.lang.python) :


import win32com.client
o = win32com.client.Dispatch("Excel.Application") o.Visible = 1
o.Workbooks.Open ( ... )

Ou encore :
mutex = CreateMutex ( None, 1, 'monmutexbienamoi' )
if (GetLastError ( ) == ERROR_ALREADY_EXISTS):
print 'Attente de disponibilité de la ressource'
sleep(10)
else:
attendre = False
print 'Ressource disponible, je poursuis'

Je veux bien croire que les particularités d'une plate-forme sont plus
isolées, mais elles existent tout autant dans l'un que dans l'autre.

--
Loïc


Avatar
Laurent DELEPINE
Jean-Marc Molina wrote:

. Autre exemple développer un plugin pour une application genre
3DSMAX ou Adobe Photoshop. Avec C++ il faut compter 5 minutes pour tester
une simple ligne ! Il faut compiler le plugin et lancer le logiciel, quand
on parle de 3DSMAX... Ça prend des plombes !


C'est marrant, la compilation de mes programmes de tests ne me prend que
quelques secondes.


A+

LD

Avatar
Bruno Desthuilliers
Philippe Guglielmetti wrote:

les avantages de Python sont suffisamment nombreux pour que je n'aie jamais


appris C++ ;-)

Il y a la portabilité, la facilité d'apprentissage, le fait que ce soit un


logiciel libre,...

l'un des avantages décisifs restent la vitesse avec laquelle on peut


programmer en Python :

en clair ce que tu mettras 1 semaine à faire en C++ tu le feras en 1 jour


en Python...

Dès fois, mais pas toujours. Python est un très bon langage "interprété",


<précision>Byte-compiled, comme Java... </précision>

vachement utile pour vite faire un p'tit truc.
Mais dans la même veine que VisualBasic, tout se passe à l'exécution, ce qui
a quelques inconvénients quand même, notamment au niveau de la performance.


les perfs ne sont effectivement pas le point fort de Python. Ce n'est en
rien un problème pour un bon nombre d'applications. Là où ça devient
effectivement un pb, il est toujours possible de recoder la partie
critique en C ou en C++.

Je ne connais pas de "gros" projet en Python, ça m'intéresserait de voir
comment ça se débrouille...


Zope ?

bruno