Qui n'a pas un jour rêver de profiter de la syntaxe claire et simple de python et de la vitesse du C++.
Avec shedskin, c'est possible, ce programme convertit votre code python en code C++.
Voilà une super bonne nouvelle pour la communauté des utilisateurs de python, un espoir de compilation grâce au formidable travail de l'équipe de shedskin.
Grâce à ce petit programme vous pourrez convertir vos codes python en C++ puis les compiler et augmenter les performances de 20 à plus de 200.
Pour plus de détails, voir en Annexe, en bas de ce tutoriel, un extrait de la documentation officielle (en)
Tout d'abord télécharger la dernière release de shedskin : http://sourceforge.net/projects/shedskin/files/
Exécuter le programme d'auto extraction choisissez le dossier où extraire shedskin.
Allez dans le répertoire d'extraction ouvrez le bat nommé init.bat. Une fenêtre s'ouvre
Placez votre fichier python .py dans le dossier d'en dessous nommé shedskin.
Pour convertir py -> C++ tapez dans la commande, en supposant que votre script Python s'appelle monpy.py :
shedskin monpy.py
Shedskin doit bien être marqué dans la console !
La conversion débute et vous indique si votre code ne comporte pas d'erreurs.
Les fichiers monpy.cpp, monpy.hpp et pythot.ss.py sont créés, ils serviront à la compilation.
Maintenant tapez juste après avoir converti votre code :
make run
. Tout simplement.
La compilation est en cours puis le programme se lance.
Tapez seulement
make
pour seulement compiler.
Voilà c'est compilé. Votre exe se trouve dans le répertoire shedskin : shedskin-0.2\shedskin.
Il nécessite libpcre-0.dll et gc.dll.
Shed Skin translates pure, but implicitly statically typed, Python programs into C++. The static typing restriction means that variables can only ever have a single, static type. So, for example,
a = 1 a = '1' # bad
is not allowed. However, as in C++, types can be abstract, so that, for example,
a = A() a = B() # good
where A and B have a common base class, is allowed.
The typing restriction also means that the elements of some collection (list, set, etc.) cannot have different types (because their subtype must also be static). Thus:
a = ['apple', 'b', 'c'] # good b = (1, 2, 3) # good c = [[10.3, -2.0], [1.5, 2.3], []] # good
are allowed, but
d = [1, 2.5, 'abc'] # bad e = [3, [1, 2]] # bad f = (0, 'abc', [1, 2, 3]) # bad
are not allowed. Of course, dictionary keys and values may be of different types:
g = {'a': 1, 'b': 2, 'c': 3} # good h = {'a': 1, 'b': 'hello', 'c': [1, 2, 3]} # bad
In the current version of Shed Skin, mixed types are also permitted in tuples of length two:
a = (1, [1]) # good
In the future, mixed tuples up to a certain length will be allowed.
None may only be mixed with non-scalar types (i.e., not with int or float):
l = [1] l = None # good m = 1 m = None # bad def fun(x = None): # bad: use a special value for x here, e.g. x = -1 pass fun(1)
Integers and floats can often be mixed, but it is better to avoid this where possible, as it may confuse Shed Skin:
a = [1.0] a = [1] # wrong - use a float here, too
Shed Skin will only ever support a subset of all Python features. The following common features are currently not supported:
Some other features are currently only partially supported:
self.class_attr # bad SomeClass.class_attr # good
var = lambda x, y: x+y # good var = some_func # good var = self.some_method # bad [var] # bad