OVH Cloud OVH Cloud

Extensions C et autres petites interrogations

5 réponses
Avatar
Pierre-Alain Flavier
Bonjour ,

Je commence l'étude de Python et en analysant les caractéristiques
principales, je me pose quelques questions.
L'une des principales caractéristiques mise en avant est la possibilité
d'extension du langage par des bibliothèques externes. Là où le bas blesse,
il me semble, c'est que ses extensions sont des modules C, langage sur le
déclin. N'y a-t-il pas d'autres moyens d'écrire des extensions dans un autre
langage (java par exemple) et si non, est-ce prévu à terme ?
Si ce n'est pas le cas, je crains qu'à moyen terme, Python périclite quelque
peu...
Mon autre interrogation porte sur la double implémentation : l'une
interprétée et l'autre directement générée en bytecode Java. C'est pas un
peu tiré par les cheveux ? Il faut à chaque fois se demander s'il vaut mieux
interpréter ou générer ?
Enfin, dernier point, la compatibilité ascendante est-elle réellement
garantie si le langage évolue tout le temps comme indiqué. Et comment est on
informé des dernières évolutions (si le langage est gratuit mais qu'il faut
payer pour être au courant des évolution, c'est un peu l'arnaque...)

5 réponses

Avatar
William Dode
On 26-09-2005, Pierre-Alain Flavier wrote:
Bonjour ,

Je commence l'étude de Python et en analysant les caractéristiques
principales, je me pose quelques questions.


N'oublie pas de mettre en pratique rapidement, c'est encore le meilleur
moyen de répondre à tes questions.

L'une des principales caractéristiques mise en avant est la possibilité
d'extension du langage par des bibliothèques externes. Là où le bas blesse,
il me semble, c'est que ses extensions sont des modules C, langage sur le
déclin. N'y a-t-il pas d'autres moyens d'écrire des extensions dans un autre
langage (java par exemple) et si non, est-ce prévu à terme ?


Tu peux aussi écrire des extensions en python tout simplement. Mais
aussi me semble-t-il dans un tas d'autres langages, il suffit de
chercher en fonction du langage qui t'intéresse. Par exemple au hasard
pycaml. Oubien des langages conçus pour : pyrex. Plus à la mode en c#...


Si ce n'est pas le cas, je crains qu'à moyen terme, Python périclite quelque
peu...


Comme tous les langages un jour ou l'autre. Mais ça fait une 30aine
d'années que ça fonctionne bien comme ça (des extensions en C), pourquoi
voudrais-tu que ça s'arrête ?

Mon autre interrogation porte sur la double implémentation : l'une
interprétée et l'autre directement générée en bytecode Java. C'est pas un
peu tiré par les cheveux ? Il faut à chaque fois se demander s'il vaut mieux
interpréter ou générer ?


Ca rejoint ta question précédente, en fonction des outils qui t'intéressent
tu vas utiliser une implémentation ou une autre (c, java, .net...)
Python est finalement indépendant de l'implémentation, gage de pérénité
pour l'avenir. Il y a même un python implémenté en python : pippy...

Enfin, dernier point, la compatibilité ascendante est-elle réellement
garantie si le langage évolue tout le temps comme indiqué. Et comment est on
informé des dernières évolutions (si le langage est gratuit mais qu'il faut
payer pour être au courant des évolution, c'est un peu l'arnaque...)


La compatibilité ascendante n'est pas garantie mais reste excellente à
quelques très rares détails près. De plus le caractère ouvert du source
fait qu'on n'est jamais réellement obligé de changer de version.
Chaque version est fournie avec un ChangeLog complet et une
documentation pour passer d'une version à l'autre.

Par exemple pour la dernière :
http://python.org/doc/2.4.1/whatsnew/whatsnew24.html
Et plus précisément :
http://python.org/doc/2.4.1/whatsnew/node15.html

Les divers forums comme celui-ci sont un bon moyen pour être tenu au
courrant gratuitement (si tenté que le temps qu'on y passe est
gratuit !)

L'arnaque serait de vouloir tout avoir sans rien donner.

--
William Dodé - http://flibuste.net

Avatar
Laurent Pointal
Un sacré Trolleur, Pierre-Alain Flavier a écrit par ici:
Bonjour ,

Je commence l'étude de Python et en analysant les caractéristiques
principales, je me pose quelques questions.
L'une des principales caractéristiques mise en avant est la possibilité
d'extension du langage par des bibliothèques externes. Là où le bas blesse,
il me semble, c'est que ses extensions sont des modules C, langage sur le
déclin.


Son utilisation a beau décliner (et avec de bonnes raisons pour des
applications de haut niveau), dès que l'on redescend près de la machine,
dès qu'il y a différents langages à lier entre eux, dès qu'on doit
bidouiller... on en reviens au C. De plus, le nombre de programmeurs qui
connaissent le C reste quand même très très important.

N'y a-t-il pas d'autres moyens d'écrire des extensions dans un autre
langage (java par exemple) et si non, est-ce prévu à terme ?


Pas à ma connaissance. Si tu veux Java+Python, regarde attentivement
Jython [1], JPype[2], et JEP[3].
Pour faciliter l'intégration de librairies, il y a aussi Pyrex[4].
Pour les autres langages, j'ai une série de liens[5].

Si ce n'est pas le cas, je crains qu'à moyen terme, Python périclite quelque
peu...


:-) C'est un troll ?
Quand j'ai regardé Python vers 1997, je me suis posé la question de sa
pérenité... ça fait maintenant plusieurs années que ça ne se pose plus.

Sauf à avoir un jour le support d'une grosse boîte qui fasse un gros
tintamarre commercial auprès des directeurs informatiques (genre Java
par Sun ou C# par Microsoft), tu n'auras certes pas une communauté aussi
importante que pour Java ou C#... mais pas négligeable tout de même et
en régulière progression (voir l'activité sur comp.lang.python).

Mon autre interrogation porte sur la double implémentation : l'une
interprétée et l'autre directement générée en bytecode Java. C'est pas un
peu tiré par les cheveux ? Il faut à chaque fois se demander s'il vaut mieux
interpréter ou générer ?


Où sont tes sources ?

Pour C-Python (pour Jython je ne sais pas), une partie du code est
compilée natif (le noyau, le modules d'extension compilés en C). Tout le
reste est parsé, du byte-code généré, et c'est le byte-code qui est
interprété. Et ce n'est pas du byte-code java, mais du byte-code Python.

Enfin, dernier point, la compatibilité ascendante est-elle réellement
garantie si le langage évolue tout le temps comme indiqué.


A part deux modules liés à la sécurité (rexec et bastion je crois),
jusqu'ici le langage a conservé la compatibilité ascendante pour les
modules interprétés. Certains modules ou certaines fonctions sont notés
obsolètes (ex. la majeure partie des fonctions du module string sont
remplacés par des méthodes de la classe str), mais sont encore présents
et utilisables par les anciens codes.

Et comment est on
informé des dernières évolutions (si le langage est gratuit mais qu'il
faut payer pour être au courant des évolution, c'est un peu
l'arnaque...)


Python Software Foundation[6].
Vu tes propos, toi tu es plutôt habitué à C# et Java...


En tout cas, soit tu as fait vraiment très très rapidement le tour de la
question, soit tu es un sacré trolleur.

A+

Laurent.


[1]http://www.jython.org/
[2]http://jpype.sourceforge.net/
[3]http://jepp.sourceforge.net/
[4]http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/
[5]http://perso.limsi.fr/pointal/python.html#liens-intautlang
[6]http://www.python.org/psf/

Avatar
nico
Pierre-Alain Flavier wrote:

Là où le bas
blesse, il me semble, c'est que ses extensions sont des modules C, langage
sur le déclin.



Si ce n'est pas le cas, je crains qu'à moyen terme, Python périclite
quelque peu...


T'as pas fini de troller ?

Avatar
F. Petitjean
Bonjour ,

Je commence l'étude de Python et en analysant les caractéristiques
principales, je me pose quelques questions.
C'est bieb de se poser des questions mais un des gros avantages de

Python est sa gestion d'un mode interactif qui permet de faire afficher
tout objet déjà défini. Je vous conseille de systéùatiquement lancer un
module ou script en cours d'écriture sous la forme :
python -i NomDuScriptModule.py

L'une des principales caractéristiques mise en avant est la possibilité
d'extension du langage par des bibliothèques externes.
Si vous « commencer l'étude de Python » laissez de côté ces aspects «

avancés » du langage.

il me semble, c'est que ses extensions sont des modules C, langage sur le
déclin. N'y a-t-il pas d'autres moyens d'écrire des extensions dans un autre
langage (java par exemple) et si non, est-ce prévu à terme ?
Si ce n'est pas le cas, je crains qu'à moyen terme, Python périclite quelque
peu...
Quand on s'appelle « Pierre-Alain » on devrait faire un effort pour ne

pas écrire de tels propos trollifères/trollogènes un lundi (un vendredi,
je ne dis pas).
Mon autre interrogation porte sur la double implémentation : l'une
interprétée et l'autre directement générée en bytecode Java.
C'est bizarre cette histoire de « bytecode Java »; vous ne mélangeriez

pas par hasrad avec Jython. Le python officiel n'a aucune dépendance
vis-à-vis de Java. (et cela se voit : ce n'est pas une usine à gaz).
peu tiré par les cheveux ? Il faut à chaque fois se demander s'il vaut mieux
interpréter ou générer ?
Le silence est d'or ... Et on s'autorise à penser dans les milieux

autorisés ... (c) Michel Colucci dir Coluche.
Enfin, dernier point, la compatibilité ascendante est-elle réellement
garantie si le langage évolue tout le temps comme indiqué.
Attention Python est un langage dynamique, et malgré tout, il est plus

facile pour ma part de suivre les évolutios du langage et d'adapter les
quelques scripts que j'ai écrit que de mettre au goût du jour (1) une
suite de programmes écrites dans un langage « sur le déclin ».
Et comment est on
informé des dernières évolutions (si le langage est gratuit mais qu'il faut
payer pour être au courant des évolution, c'est un peu l'arnaque...)
Alors là, vous nous sortez un troll de compétition. (2) S'il vous plaît, la

prochaine fois, faites cela le vendredi.


Note

(1) Du code FORTRAN (qui l'eût cru ?); codé par des stagiaires et VSNE
sans aucune expérience ni méthodologie (mélange infâme de f77 et f90, à
base de copier/coller).

(2) La preuve, pour l'instant, en est que vous n'avez répondu à aucun
des intervenants qui ont bien voulu vous répondre.

Avatar
Vincent Hiribarren
F. Petitjean wrote:

Alors là, vous nous sortez un troll de compétition. (2) S'il vous plaît, la
prochaine fois, faites cela le vendredi.
[...]

(2) La preuve, pour l'instant, en est que vous n'avez répondu à aucun
des intervenants qui ont bien voulu vous répondre.


Euh non...

La question et les interventions ont eu lieu le même jour. Sur Usenet,
il n'est pas impossible qu'un interlocuteur prenne une semaine avant
d'intervenir à nouveau... s'il veut bien intervenir.

On ne fait pas de la messagerie instantanée ou de l'IRC ici ! :-)