Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Pensez-vous que Python 3.x était une erreur ?
54 % de développeurs estiment qu'il fallait une étape de transition

Le , par Olivier Famien

43PARTAGES

6  0 
Pensez-vous que Python 3.x était une erreur ?
Python, qui est un langage de programmation très apprécié des développeurs, suscite depuis sa version 3.x de vifs débats dans le monde informatique. Et pour cause ; l’implémentation de sa version 3.x rompt en terme de compatibilité avec les précédentes versions 2.x et inférieures.

Dans les faits, plusieurs corrections ont été apportées au langage avec la version 3.x. À partir de cette version, l’interpréteur de la version 3.x génère des erreurs lorsqu’il doit exécuter du code écrit avec la version 2.x. Cette rupture factuelle a eu pour conséquence immédiate d’inciter certains développeurs à abandonner la version 2.x pour la nouvelle itération. D’autres par contre préfèrent pour une raison ou une autre continuer de travailler sous la version 2.x.

Aussi, pour mieux comprendre les raisons profondes des défenseurs et pourfendeurs de chaque version, une étude a été menée sur l’année 2013 et reconduite en 2014.

6752 personnes ont été interrogées en 2014. Les résultats obtenus ont été en partie comparés à ceux de l’année 2013 et pour d’autres exposés directement. Dix points ont été abordés dans l’étude. En voici un extrait.

1. Avez-vous déjà écrit du code avec python 2.x ou 3.x


Interprétation :
- python 2.x : en 2013 comme 2014, 97 % des personnes interrogées ont écrit du code
- Python 3.x : en 2013, 60 % des interrogées ont écrit du code avec cette version. En 2014, nous avons eu une progression de 12 %.

2. Avec quelle version de python écrivez-vous présentement (2014) du code : 2.x ou 3.x


Interprétation :
- python 2.x : en 2013, 78 % des sondées écrivaient du code python avec cette version. Une baisse de 10 % a été observée en 2014 pour cette même version.
- Python 3.x : en 2013, 22 % des interrogées écrivaient du code avec la version 3.x. En 2014, nous avons eu une progression de 10 %.

3. Lorsque vous commencez un projet personnel, quelle version utilisez-vous ?


Interprétation :
- 50 % des interrogées en 2014 débutaient leur projet personnel avec python 2.x contre 50 % pour ceux utilisant la version 3.x

4. Quelle version de python utilisez-vous régulièrement ?


Interprétation :
- Python 3.4 : 43 % des interrogées écrivaient régulièrement du code en 2014 avec cette version.
- Python 2.7 : 81 % des interrogées utilisaient régulièrement cette version en 2014 pour écrire du code en 2014.

5. Pensez-vous que Python 3.x était une erreur ?


Interprétation :
- 12 % des interrogées en 2014 pensent que python 3.x était une erreur.
- 34 % des interrogées en 2014 pensent le contraire.
- 54 % estiment qu’il fallait une étape de transition.

D’autres visuels sont disponibles à cette page. Pour une analyse complète des résultats de l'étude, vous pouvez également consulter cette page.

Source : Blog Randy Oslon

Et vous ?

Que pensez-vous des résultats de cette étude ? Les trouvez-vous pertinents ?

Quelle version de python préférez-vous ? Pourquoi avez-vous opté pour cette version ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de tyrtamos
Expert éminent https://www.developpez.com
Le 18/02/2015 à 8:07
Bonjour,

Citation Envoyé par Olivier Famien Voir le message
Que pensez-vous des résultats de cette étude ? Les trouvez-vous pertinents ?
On peut discuter pendant longtemps de ce qu'il aurait fallu faire lors du lancement de Python 3, mais pour moi, ça n'a qu'un intérêt limité. On peut toujours regretter qu'une transition plus douce n'ait pas été choisie, mais je ne suis pas sûr qu'elle aurait été techniquement possible, ni qu'elle aurait eu moins de conséquences sur les codes.

Citation Envoyé par Olivier Famien Voir le message
Quelle version de python préférez-vous ? Pourquoi avez-vous opté pour cette version ?
Je suis passé à Python 3 en 2014: ça m'a consommé pas mal de temps, mais j'en suis ravi: la rupture partielle de compatibilité a permis de résoudre plein de problèmes irritants de Python 2, à commencer par les encodages.

Et puis le petit code "2to3" permet d'alléger cette conversion, même si elle ne résout pas tous les problèmes. Par exemple, pour moi qui travaille avec PyQt4, il y a des modifications spécifiques qui ne sont pas traitées. Et avec Python 2, je ne pourrais pas passer à PyQt5 (qui oblige Python 3).

La seule chose qui me gène vraiment, c'est le retard de certains fournisseurs. Il était prévu 5 ans de transition pour passer à Python 3, et nous les avons maintenant largement dépassés.
Malgré cela, je constate:
- que les Python installés par défaut sur les "Unix" (Linux et Mac OS X) en sont encore à Python 2
- que mon hébergeur web chez lequel j'ai une application Python qui tourne en CGI en est encore à Python 2.5, ce qui m'oblige à gérer le même code dans les 2 versions.
- que certains modules externes ont encore du mal à passer à Python 3, et que certains risquent d'en mourir...

Bref, Python 3 existe, et continue à progresser (3.3, 3.4, 3.5, ...): ce serait vraiment dommage d'en rester à Python 2 dans les prochaines années...
4  0 
Avatar de VinsS
Expert éminent https://www.developpez.com
Le 19/02/2015 à 15:09
Il existe une convention de versionnement communément admise, et c'est le cas dans l'univers Python, qui nous dit que le numéro majeur de version est incrémenté lorsqu' apparaissent des changements rétro-incompatibles. Je m'étonne donc du désappointement de développeurs découvrant qu'il leur faudra réécrire du code lors du passage à une nouvelle version majeure.

On est censés savoir ce qu'implique une rétro-incompatibilité et, en Python du moins, nous sommes adultes consentants.

Le cas de Python n'est pourtant pas si contraignant que cela. Que doivent penser les développeurs C++ utilisant le framework Qt ? Les changements introduit avec la version 5 nécessite une réécriture beaucoup plus coûteuse en temps et je n'ai pourtant pas eu l'impression que ces changements aient fait autant de vagues que le passage à Python 3.

Et puis il y a la question des librairies tierces. Ces librairies qui, après six ans, n'ont toujours pas été portées sous Python 3 doivent simplement être considérées comme abandonnées. C'est soit l'occasion d'aller voir ce qui existe ailleurs, soit de découvrir qu'il n'est pas si compliqué que cela de forker un code et de publier sa version compatible Py3. Je n'y vois que des aspects enrichissants.

Python 3 n'est nullement une erreur, c'est une étape logique dans une progression régulière. Progression souhaitée par les développeurs. Le Tout-à-l'Unicode enfin !

Et une étape transitoire ?

C'est quoi une étape transitoire ?

Ça ?
En 2018 tous les pays de la zone Euro devront adopter la circulation automobile à gauche.
Il est toutefois prévu une période d'adaptation, nous commencerons par les camions.
Sans rire, des gens ont réellement pensé possible une version à mi-chemin 2-3 ?

Notons tout de même qu'à l'intérieur de la version 2 existe un module de transition: __future__.

Je pense que Python à encore de beaux jours devant lui. D'ailleurs, tant qu'on est dans un forum bistrot, personne n'a de nouvelles de Python 4 ?

Vincent
4  0 
Avatar de mangobango
Membre averti https://www.developpez.com
Le 18/02/2015 à 11:17
Rien que pour la gestion de l'Unicode, Python 3 valait le coup

Bon, perso j'ai l'analyse inverse (pour changer). Il a manqué -à mon humble avis- d'incitations à passer à Python 3. En prolongeant la durée de vie de Python 2.x, cela a encouragé à se recroqueviller dans la zone de confort que représentait Python 2.x. En intégrant des rétro-portages de fonctionnalités de la 3.x vers la 2.x on n'a pas créé une rupture propre, en permettant aux plus frileux de se rabattre encore une fois sur la 2.x (beaucoup de libs utilisant du code compatible avec les deux versions) plutôt que d'embrasser pleinement la 3.x.

Mais peut-être que sans cette transition - trop douce à mon goût - Python 3 n'aurait jamais pris

Daniel
3  0 
Avatar de Theta
Membre éclairé https://www.developpez.com
Le 18/02/2015 à 14:05
Il est vrai que ces deux versions utilisées en parallèle causent du tort au langage. Pas mal de ressources n'ont pas fait le passage à la version 3 du coup ça peut inciter des dev à rester sur la version 2, et donc retarder encore la disparition de la version 2, c'est un cercle vicieux.

Cela dit je préfère encore ça aux langages qui sous couvert de rétro-compatibilité gardent ad-vitam des comportements inélégants.
3  0 
Avatar de tyrtamos
Expert éminent https://www.developpez.com
Le 19/02/2015 à 13:16
Bonjour,

J'avoue que je suis très étonné par les réactions violentes de certains concernant ce passage à Python 3.

Ce n'est pas un problème si gros qu'il entraine l'abandon du langage! L'utilisation du petit script "2to3" permet de déblayer 90% des modifs, et les 10% qui restent sont faciles à faire (un logiciel de type "recherche et remplacement multi-fichiers" est une aide intéressante).

En contrepartie de ce petit travail, Python 3 a fait beaucoup de progrès sur de nombreux sujets, ce qui rend les développements suivants plus faciles. La quantité de modules d’extension est extrêmement grande dans de très nombreux domaines. Pour ma part, je fais beaucoup de graphiques (PyQt4) en multiplateforme, et les programmes obtenus sont beaux et rapides au point que les utilisateurs ne savent pas que c'est du Python. Et il est toujours possible de développer un module en C ou C++ pour les parties critiques.

Je suis aussi surpris par certaines remarques. Les threads ne fonctionneraient pas? Ah bon? Pourtant, je les utilise couramment et sans problème dans les 2 versions de Python depuis des années.

Je ne suis pas "marié" avec Python, et je regarde périodiquement l'offre des principaux langages (hors C et C++): je n'en vois pas beaucoup d'autres qui soient en même temps aussi complets ni aussi pratiques en facilité de développement.

(non: ce n'est pas un troll! )
2  0 
Avatar de Thorna
Membre éprouvé https://www.developpez.com
Le 18/02/2015 à 18:03
En sous-titre de l'article :
54 % de développeurs estiment qu’il fallait une étape de transition
En résultat (provisoire) du sondage :
6,25% des répondants pensent qu'il fallait une version de transition
Bien sûr, le nombre de réponses n'est pas identique dans les 2 cas (6000 et quelques contre moins de 20 mais ça ne se voit pas !), mais le résultat est suffisamment différent pour qu'on puisse conclure qu'on ne peut rien conclure, sans d'avantage de précisions !
- Comment ont été interrogées les 6700 personnes ? Comment ont-elles été choisies ?
- Comment répondent les gens ici ? Selon quels critères ?
Outre le sujet lui-même, dont le contenu est très intéressant, l'intérêt ou la fiabilité des résultats d'un tel type de sondage semblent à prendre réellement avec des pincettes...

Citation Envoyé par yahiko Voir le message
Non, vraiment, cette façon de faire table rase à chaque version majeure fait que Python ne sera jamais pris sérieusement dans le monde professionnel.
Ha ha ha !
1  0 
Avatar de mothsART
Membre régulier https://www.developpez.com
Le 18/02/2015 à 20:20
Changer d'API n'est jamais un choix simple et je trouve que la transition à été dans l'ensemble plutôt bien négocié.
Traroth2 le dit bien : difficile de faire plus doux quand on casse tout.

Savoir abandonner des vieilleries et faire le pas sur du neuf est gage de sérieux, non?

En plus, python c'est l'adage "only one way to do it" donc incompatible avec des anciennes et des nouvelles façon de faire.
J'estime qu'un dev actuel n'est pas isolé, il doit régulièrement comprendre et retoucher le code d'un tiers...
Pour ce faire, une API concise est source de productivité! Quand je vois l'évolution de C++, qui garde tout, et qui s'enterre vivant...

Après, d'autres langages, comme PHP en sont déjà à la version 5 (en 2040, il passeront peut-être la 6 qui manque cruellement) et que la communauté autours ne s'évapore pas pour autant, je ne vois vraiment pas le soucis.

Enfin, je comprend "robertledoux" sur son mécontentement. Maintenant, je pense que les core-devs ont du faire des choix pragmatiques.
Réécrire from scratch 20 ans de dev, c'est pas une mince affaire.
Les threads sont remplacés par du multi-processing lorsqu'il y a un vrai besoin de paralléliser. Pour les puristes, ça peut paraître crade mais dans 95% des cas, ça reste acceptable.
Je persiste à dire que les soucis de verrou globale du GIL n'est pas si pénalisant qu'il n'y parait.

Enfin, Cpython, même si il reste l'implémentation de "référence", est loin d'être le seul interpréteur. Pypy, par exemple, est beaucoup plus propre, utilise du JIT, n'a pas de GIL, fait du sandboxing, dispose de plusieurs type de Garbage collector etc.

A mon sens, les soucis inhérent à Cpython dont tu parles sont difficile à régler justement en C.
Il faudrait un vrai langage taillé pour la concurrence : pourquoi pas Rust (une fois stable)?
1  0 
Avatar de noirbizarre
Membre régulier https://www.developpez.com
Le 19/02/2015 à 16:25
Citation Envoyé par VinsS

Il existe une convention de versionnement communément admise, et c'est le cas dans l'univers Python, qui nous dit que le numéro majeur de version est incrémenté lorsqu' apparaissent des changements rétro-incompatibles. Je m'étonne donc du désappointement de développeurs découvrant qu'il leur faudra réécrire du code lors du passage à une nouvelle version majeure.

On est censés savoir ce qu'implique une rétro-incompatibilité et, en Python du moins, nous sommes adultes consentants.

Le cas de Python n'est pourtant pas si contraignant que cela. Que doivent penser les développeurs C++ utilisant le framework Qt ? Les changements introduit avec la version 5 nécessite une réécriture beaucoup plus coûteuse en temps et je n'ai pourtant pas eu l'impression que ces changements aient fait autant de vagues que le passage à Python 3.
+1!! La rétrocompatibilité est plutôt l'exception que la règle.
Python a géré la transition vers Python 3 depuis la version 2.5 de Python. Je ne vois pas ce qu'il faut de plus comme étape transitoire.

Citation Envoyé par yahiko

Non, vraiment, cette façon de faire table rase à chaque version majeure fait que Python ne sera jamais pris sérieusement dans le monde professionnel.
N'importe quoi !!!
Ruby ne gère pas la rétrocompatibilité et est massivement utilisé.
PHP, Perl... ne gèrent pas la rétrocompatibilité et sont utilisés.
C, C++... il n'y a pas de rétrocompatibilité et c'est utilisé en entreprise.
.Net ne gère pas une rétrocompatibilité totale, mais c'est utilisé.
Il n'y a bien que Java qui essaie de faire croire qu'il y a une vrai rétrocompatibilité, mais en pratique ce n'est pas vraiment le cas puisque pour une même version, sur des JVMs différentes il y a déjà des incompatibilités.

Python, pas utilisé dans le monde professionnel ?!?!?
Ça me fait bien rire: toutes les boites qui travaillent de la donnée, du spatial, du matriciel, qui font du machine learning, ... utilisent Python.
Ils choisissent Python, non pas pour la rétrocompatibilité, mais pour l’écosystème et l'outillage qu'il tire, pour la facilité d'apprentissage puis de maintenance.
Il ne doit y avoir que les banques qui prennent en compte cet argument, parce que Oracle leur a dit "venez chez nous, vous payerez un bras pour du support et une illusion de rétrocompatibilité" !
Le problème sur les chiffres de l'informatique, c'est que les banques représentent la plus grosse partie du marché, que les recruteur et les SSII veulent leur part du gâteau et qu'au lieu de leur dire "vous savez, depuis les années 2000, on sait faire mieux", elle disent "oui oui, tout ce que vous voudrez" !
Les méthodes de comptages sont souvent très discutables (du nombre de recherches sur Google à un sondage sur un panel d'entreprises non représentatives).

Aucune SSII ne m'a jamais proposé de mission sur des stacks à base de Python: "Il n'y a pas de marché", "C'est un langage de script"... Bref, j'en ai entendu de toutes les couleurs.
Maintenant je me débrouille sans eux, et, à ma grande surprise (je suis naïf, je sais), toutes les boites sont en galère parce qu'elles cherchent des devs Python et qu'il en manque beaucoup!!!
Même les SSII qui m'avaient dit "Python=No Go" m'ont recontacté pour ça, toutes sans exception!
Bref, Python en entreprise, ça existe et il y en a de plus en plus.
1  0 
Avatar de earhater
Membre éclairé https://www.developpez.com
Le 18/02/2015 à 12:30
Il est vrai que ce qui tue le langage c'est qu'on l'a en double ... Peut être une étape de transition puis l'abandon de python 2.x ?
0  0 
Avatar de yahiko
Rédacteur/Modérateur https://www.developpez.com
Le 18/02/2015 à 14:03
S'il y a bien une chose de pénible avec Python c'est bien ces histoires de non rétrocompatibilité entre les versions majeures (2.x vs 1.x et maintenant 3.x vs 2.x).

Ce n'est peut-être pas si grave en milieu éducatif et universitaire, mais ce genre de gouvernance est prohibitif pour les entreprises et fait perdre à Python le crédit qu'il pourrait pourtant avoir si les évolutions étaient plus respectueuses de l'existant.
1  1