MyPy permet d'ajouter du typage statique à Python tout en restant compatible.
La version 0.3 est compatible avec la PEP 484
Guido fait maintenant parti des développeurs de MyPy (avec d'autres employés de Dropbox), le dépôt est sous l'arborescence python sur github. C'est dire l'importance qu'est entrain de prendre ce projet.
Pour l'instant la page du projet met surtout en avant l'intérêt en terme de debug et maintenance, mais parions que cela peut également donner des pistes pour améliorer les performances…
La PEP insiste pour confirmer que Python restera un langage dynamique et que les auteurs n'ont aucune envie de le rendre obligatoire, même par convention.
Annonce : http://mypy-lang.blogspot.fr/2016/02/mypy-03-released.html
Site : http://www.mypy-lang.org/
Pep : https://www.python.org/dev/peps/pep-0484/
Dépôt : https://github.com/python/mypy
# C'est intégré dans Python 3.5
Posté par Sébastien Douche . Évalué à 1.
Python 3.5 possède le type hinting :
https://docs.python.org/3/whatsnew/3.5.html#whatsnew-pep-484
Le projet mypy est l'inspiration de cette fonctionnalité. D'ailleurs Guido a pas mal bossé avec Jukka Lehtosalo.
[^] # Re: C'est intégré dans Python 3.5
Posté par serge_sans_paille (site web personnel) . Évalué à 4.
Je trouve que ce travail autour du type hinting dans Python révèle une forme de schizophrénie assez amusante, surtout quand on lit ça dans la PEP
Le côté offline me fait un peu rire, car c'est par nature incompatible avec le côté dynamique de Python. Petit exemple tiré par les cheveux :
et son copaing
un analyseur /offline/ verra
a
comme unint
, mais à l'exécution, l'annotation pointera sur le /builtin/float
. L'expérience Pythran [0](http://pythonhosted.org/pythran] m'a convaincu que toute approche statique avec Python sera bâtarde. Pylint et consort me laissent d'ailleurs le même goût dans la bouche, « pas dans l'esprit » :-/[^] # Re: C'est intégré dans Python 3.5
Posté par flan (site web personnel) . Évalué à 4.
C'est sûr qu'on trouvera toujours des cas tirés par les cheveux (ou pas), qui mettent à mal le type hinting, l'inférence de type, et toutes ces notions issues du typage statique.
Parfois, ces choses (qui ne sont pas possibles avec un langage à typage statique) sont bien pratiques, nous sommes d'accord. Cependant, je suis persuadé qu'il est possible de les limiter à quelques cas bien précis et bien délimités, avec 99% du code qui pourrait être en typage statique (avec toutes les garanties que cela apporte).
En tout cas, c'est comme ça que j'essaie de construire mon code, ça augmente certes le nombre de variables (vu que je me force à ne pas utiliser des types différents avec la même variable) mais ça augmente la sécurité (vu que l'inférence de type de Pycharm fonctionne beaucoup mieux).
[^] # Re: C'est intégré dans Python 3.5
Posté par wilk . Évalué à 3.
On trouve aussi l'inverse où on triche avec un langage à typage statique… Y a pas de miracle ! C'est pour ça que je trouve intéressant ce consensus où on essaye maintenant d'apporter plus de souplesse dans les langages statiques et plus de "sécurité" dans les langages dynamiques.
[^] # Re: C'est intégré dans Python 3.5
Posté par reno . Évalué à 2.
Plus de souplesse dans les langages statiques? Tu penses à quoi?
[^] # Re: C'est intégré dans Python 3.5
Posté par wilk . Évalué à 2.
Je pense au Go par exemple, les interfaces, l'inférence de type, la compilation quasi instantanée…
[^] # Re: C'est intégré dans Python 3.5
Posté par groumly . Évalué à 3.
C'est pas souple l'inference de type, ca t'evite juste de taper le nom du type partout, mais sinon ca reste toujours le meme typage rigide
Linuxfr, le portail francais du logiciel libre et du neo nazisme.
[^] # Re: C'est intégré dans Python 3.5
Posté par reno . Évalué à 3.
Pas vraiment d'accord, il a raison: dans certains cas tu changes le type de retour d'une fonction et tu n'as pas besoin de changer l'appelant car il utilise l'inférence de type, donc cela peut etre considere comme une souplesse.
Après le "maintenant" c'est plutôt vieux l'inférence de type..
Et je ne vois pas le rapport avec la compilation rapide, au contraire c'est plutôt grâce à un typage 'simpliste'(pas de génériques??) que Go est rapide a compiler..
[^] # Re: C'est intégré dans Python 3.5
Posté par xcomcmdr . Évalué à 2.
en C# par exemple.
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
# Python est bien vivant
Posté par flan (site web personnel) . Évalué à 3.
Avec la transition (assez longue) vers Python 3, quelques Cassandre avaient prédit la fin de Python.
On voit qu'au contraire, le langage est bien vivant. C'est d'ailleurs un des langages interprétés avec le plus d'implémentations concurrentes.
Certes, les versions Java (Jython) et C# (IronPython) sont mortes, mais on se retrouve avec quelques projets qui sont bien vivants :
C'est également le signe que pas mal de gens attendent plus de perfs de la part de cpython, pour l'utiliser dans des domaines pour lesquels il n'était pas prévu à la base, avec deux problèmes qui reviennent fréquemment : la gestion de la mémoire et le GIL (global interpreter lock, qui empêche d'utiliser à fond plusieurs coeurs).
[^] # Re: Python est bien vivant
Posté par serge_sans_paille (site web personnel) . Évalué à 5.
Et j'ajoute nombrilistiquement :
Un autre problème qui revient souvent (c'est affiché par la roadmap de pypy et j'en ai discuté avec le coredev de pyston) c'est la frontière en le code interprété et l'API C, qui empêche d'avoir une vue globale du code à optimiser.
[^] # Re: Python est bien vivant
Posté par flan (site web personnel) . Évalué à 2.
oui, désolé, j'y ai pensé au début, mais je ne me souvenais plus du nom exact et j'ai oublié de le retrouver à la fin du message :(
[^] # Re: Python est bien vivant
Posté par flan (site web personnel) . Évalué à 2.
Autre projet : PY14, pour convertir du Python en C++ 14 (https://github.com/lukasmartinelli/py14/blob/master/README.md)
Le projet n'a pas l'air encore très abouti, cependant.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.