Aller au menu - Aller au contenu

Python 3.1, une nouvelle version dans la branche 3.x

Revenir à la liste des news
Participer à la discussion

Image

Informations

Contributeur(s) : Alphare, Barbatos, bloom1, delroth, Etienne-02, fry3000 du 72, Greyae, j3rOm3, Monsieur_JaKy, Ppjet6, Zopieux et ZouL
Publié : le 27/06/2009 à 20:18:40
Catégorie : Programmation
Visualisations : 18 491

Licence : Creative Commons BY SA

Python 3.1, une nouvelle version dans la branche 3.x

Python est un langage de programmation utilisé dans divers champs d'application. De la création d'interfaces graphiques au développement de serveurs en passant par le scripting d'applications déjà existantes, il est réputé pour sa gratuité, sa portabilité, sa syntaxe simple ainsi que pour sa facilité d'apprentissage. De Google à la NASA en passant par Simple IT, ses fonctionnalités en font aujourd'hui un langage réputé et souvent utilisé par les grandes ou les petites entreprises. Il commence également à percer dans le domaine de l'enseignement, remplaçant le langage de programmation Scheme comme premier langage appris aux étudiants du très fameux MIT et sera bientôt intégré dans les cours de mathématiques portant sur l'algorithmique de seconde dans les lycées français.

Le 3 décembre dernier, le langage Python a été séparé officiellement en deux branches :
  • Les versions numérotées 2.x.y qui sont rétro-compatibles : cela signifie qu'un programme écrit pour Python 2.4 fonctionne toujours avec Python 2.6 (à quelques exceptions près) ;
  • Les versions numérotées 3.x.y qui sont issues d'une refonte totale du langage Python pour le rendre plus logique et moins magique sur certains points. Cependant, un programme écrit pour Python 2.6 ne fonctionnera pas avec Python 3.0.
Depuis la sortie de Python 3.0 (qui a été détaillée dans une news sur le Site du Zéro), une version dite de bugfix est sortie le 14 février : Python 3.0.1. Cette version se contente de corriger les bugs de la 3.0 sans rajouter de nouvelles fonctionnalités. Aujourd'hui, la version 3.1 du langage Python vient de sortir : c'est une version mineure, qui reste dans l'esprit de Python 3.0 tout en rajoutant un lot d'améliorations importantes pour les développeurs.

Voyons maintenant plus en détail ce que cette version apporte, puis un petit récapitulatif des discussions et débats importants qui ont eu lieu durant le développement de cette nouvelle version.

Améliorations et nouvelles fonctionnalités


Un des grands thèmes de Python 3.1 a été l'amélioration des performances presque désastreuses de la version 3.0, notamment lors des opérations manipulant des fichiers. Ce fut un des axes majeurs du développement de Python 3.1, mais ce n'est bien entendu pas le seul : voyons plus en détail toutes les nouveautés de Python 3.1.

Réécriture du module io


Le module io est une nouveauté de Python 3.0 permettant de gérer les entrées-sorties (input-output en anglais, abrégé I/O) d'un programme de manière plus orientée objet que dans les versions 2.x du langage Python. La première implémentation de ce module, dans Python 3.0, était écrite en langage Python, permettant ainsi aux développeurs de tester ce module plus facilement et de comprendre son fonctionnement sans avoir à lire le code de l'interpréteur Python. Cependant, Python a montré ses limitations pour cette tâche au niveau de la vitesse : en effet, les performances étaient de 5 à 8 fois inférieures à celles de Python 2.6, rendant Python 3.0 presque inutilisable pour tout ce qui manipule beaucoup les fichiers.

Dans Python 3.1, il a été décidé d'écrire à nouveau toute la couche I/O de Python 3.0 en C tout en gardant la même interface et le même comportement que la version Python. Cette tâche difficile fut accomplie et l'I/O de Python 3.1 est maintenant plus rapide que celle de Python 2.6 ! Notons tout de même que l'implémentation Python de la couche I/O a été conservée en parallèle dans le module _pyio pour permettre de vérifier le comportement de la couche C et faciliter l'évolution du module (on peut tester sur la version Python puis recoder en C ensuite).

Pour plus d'informations :

Améliorations des performances globales de l'interpréteur


Python est, à l'instar de Java, un langage semi-compilé. Cela signifie qu'entre un fichier source Python et ce qui sera exécuté, deux étapes ont lieu :
  • La compilation du code source qui transforme un langage structuré (Python) en une suite d'instructions appelée bytecode.
  • L'exécution du bytecode précédemment obtenu, qui se fait instruction par instruction.

C'est cette deuxième phase qui nous intéresse ici. La méthode la plus simple (et celle qui était en vigueur avant Python 3.1) est celle de la boucle d'évaluation dont le principe est le suivant : tant que l'on n'est pas à la dernière instruction du bytecode, on exécute l'instruction courante et on passe à la suivante. Sous la forme d'un schéma, cette boucle donne ceci :

Image utilisateur


Dans Python 3.1, une nouvelle option a été ajoutée à la compilation permettant de changer le fonctionnement de l'exécution du bytecode. Appelée --with-computed-gotos, elle passe d'une boucle d'évaluation à une autre méthode qui est nommée l'indirect threading. Son fonctionnement est résumé par le schéma ci-dessous :

Image utilisateur

Cette technique mise en oeuvre dans Python 3.1 par Antoine Pitrou est plus performante que la boucle d'évaluation pour une raison simple : dans le cas de l'indirect threading, on a un branchement (ou saut) pour chaque instruction du bytecode, alors que dans le cas de la boucle, on a deux branchements pour chaque instruction. Cela a une grande influence sur les performances étant donné que les processeurs actuels essaient en permanence de prédire les branchements pour optimiser la vitesse d'exécution : avoir moins de branchements possibles l'aide donc à mieux prédire et optimiser la suite des événements. Du côté de Python, cela se traduit par une hausse de plus de 20% dans les performances de l'interpréteur, et ce sur n'importe quel programme Python. Cependant, cette option n'est pas utilisée par défaut car certains compilateurs produisent du code peu efficace pour l'indirect threading et ralentissent plus qu'autre chose l'évaluation du bytecode. Ce sera donc le rôle des créateurs de paquets de choisir s'ils souhaitent activer cette optimisation ou non.

Pour plus d'informations :

Un affichage plus esthétique des nombres flottants


Le stockage des nombres flottants (c'est le nom qu'on donne en informatique aux nombres à virgule) en mémoire est un sujet épineux qui entraîne bon nombre de problèmes. En effet, si on prend un nombre comme \pi qui a un nombre de décimales infini, il est impossible de le représenter exactement sous forme d'octets. Les ordinateurs se limitent donc le plus souvent à 4, 8 ou 12 octets (selon la précision nécessaire pour le programmeur) pour représenter ces nombres. Ainsi, des imprécisions peuvent parfois apparaître et donner lieu à des résultats pour le moins étonnants. Par exemple :
Code : Python Console
1
2
>>> 0.2
0.20000000000000001
Ici, on demande à Python d'afficher la représentation sous forme de chaîne de caractères du nombre 0.2, et on se rend compte qu'il trouve effectivement une des représentations possibles de 0.2, mais ce n'est pas la plus esthétique à l'œil. Avec Python 3.1, si on refait la même expérience, on obtient le résultat suivant :
Code : Python Console
1
2
>>> 0.2
0.2
Ce qui est effectivement le résultat attendu. Cette meilleure représentation des nombres flottants vient de l'utilisation d'un algorithme inventé par Guy Steele et John White et implémenté de manière efficace par David Gay qui permet de trouver toutes les représentations d'un nombre flottant et d'en choisir ensuite la plus courte, qui est le plus souvent celle à laquelle on s'attend. Il faut cependant noter que cette amélioration n'augmente pas la précision des nombres flottants mais modifie seulement leur affichage.

Pour plus d'informations :

Une nouvelle structure de données : collections.odict


Python inclut de base une structure de donnée très utile : le dictionnaire (raccourci en dict , aussi appelé hashtable). C'est un tableau associatif, qui associe donc des clés à des valeurs. Par exemple, ceci est un dictionnaire :
Code : Python
1
{"clé1": "valeur1", "clé2": {"clé3": "valeur3"}}
Les dictionnaires en Python sont non ordonnés : c'est-à-dire que si l'on décide de parcourir de bout à bout un dictionnaire, on ne peut pas être sûr de l'ordre dans lequel on va rencontrer les différentes clés. Cependant, on aimerait parfois conserver cet ordre (car on en a besoin dans l'utilisation qu'on fait de la structure de données). Ainsi, Armin Ronacher a proposé le 15 juin 2008 l'inclusion par défaut d'une nouvelle structure de données dans Python, appelée odict .

Cet ajout a été effectué dans Python 3.1, avec une implémentation de la structure de données en Python dans le module standard collections . Cependant, un débat a encore lieu concernant odict : en effet, Python propose une fonctionnalité qui s'appelle les keyword args et qui s'utilise de cette façon :
Code : Python
1
2
3
4
5
6
7
def fonction(**kwargs):
    # kwargs est un dictionnaire (de type dict) contenant l'association
    # nom/valeur des arguments passés à la fonction.

# Exemple d'appel avec des keyword arguments.
# kwargs vaudra {"x": 42, "y": 1337, "test": "salut !"}
fonction(x=42, y=1337, test="salut !")
La question est de savoir si kwargs devrait devenir un odict ou rester un dict standard. Il a été décidé que tant que odict est implémenté en Python, kwargs restera un dict, mais si un jour une implémentation en C de odict est presque aussi rapide que celle de dict , il est tout à fait possible que kwargs devienne un odict étant donné que ce changement ne causerait aucun problème de compatibilité.

Pour plus d'informations :

Disparition de contextlib.nested


Les context managers sont des objets Python un peu spéciaux, dans le sens où ils permettent de simplifier la gestion des exceptions en se fermant automatiquement en cas d'erreur. Par exemple, si une erreur a lieu pendant que vous modifiez un fichier en Python, sans context manager il y a des chances que votre fichier reste ouvert. Le tutoriel sur les fonctionnalités avancées de Python (de wgmpgp et Natim) en parle sommairement dans sa dernière partie. Cependant, quand on voulait gérer les erreurs de deux fichiers en même temps avec Python 3.0, la seule solution était la suivante :
Code : Python
1
2
with contextlib.nested(open('fichier1'), open('fichier2')) as (f1, f2):
    # Opérations sur f1 et f2

Une modification de la syntaxe dans Python 3.1 permet maintenant de simplifier ce code comme ceci :
Code : Python
1
2
with open('fichier1') as f1, open('fichier2') as f2:
    # Opérations sur f1 et f2

D'autres syntaxes telles que with (open('fichier1'), open('fichier2')) as (f1, f2): ont également été proposées mais finalement refusées au profit de celle qui est en place dans Python 3.1.

Pour plus d'informations :

Cycle de développement de cette version


Voyons maintenant en détail comment cette version de Python a été développée en observant la chronologie des événements importants s'étant déroulés entre la sortie de Python 3.0 et celle de Python 3.1.

27 Janvier 2009 : lancement du projet Snakebite


Snakebite est un réseau de 37 serveurs sous différentes architectures et différents systèmes d'exploitation qui a vocation à servir d'aide aux développeurs pour maintenir un interpréteur Python fonctionnant sur le plus de machines possibles. Soutenu par différentes entreprises comme Microsoft, Sun, Google, HP ou MSU qui ont données des licences ou du matériel pour le projet, il fera fonctionner différents buildbots (ce sont des programmes qui récupèrent les dernières versions de différents projets, les compilent, les testent automatiquement et renvoient les résultats) pour les projets en rapport avec Python en priorité (PyPy, Jython ou IronPython sont par exemple cités), et peut-être d'autres ensuite. En résumé, même si ce projet lancé par Trent Nelson n'est pour le moment pas encore en fonctionnement, c'est probablement l'avenir du développement de nombreux projets Python-related.

Pour plus d'informations :

8 février 2009 : annonce de la chronologie des versions non finales


La PEP 375 a été publiée par le release manager (celui qui s'occupe d'annoncer les sorties des versions et décide des priorités des nouvelles fonctionnalités en fonction des dates de sorties) de la version 3.1, Benjamin Peterson, et annonce deux versions alpha, une version beta puis deux versions release candidate avant la sortie finale le 27 Juin.


13 février 2009 : début du débat sur yield from


La PEP 380 a été une des améliorations de Python les plus débattues durant le cycle de développement de Python 3.1. Cette proposition d'amélioration permet de renvoyer les valeurs successives d'un sous-générateur dans un générateur : en très simplifié, yield from gen est équivalent à for x in gen: yield x . Cependant, l'implémentation de cette fonctionnalité a nécessité de nombreuses modifications dans la sémantique des générateurs avec l'introduction de nouvelles exceptions comme GeneratorExit et n'a donc pas été retenue pour Python 3.1. Elle sera cependant probablement intégrée dans Python 2.7 et Python 3.2.

Pour plus d'informations :

23 mars 2009 : début du débat sur les systèmes de packaging de Python


Partie à l'origine d'une demande d'inclusion d'un module à la bibliothèque standard, cette discussion a été un des axes majeurs des PyCon US (une semaine de conférences sur le langage Python) notamment lors de l'habituel language summit où les plus gros contributeurs à Python se réunissent pour parler de divers sujets préparés à l'avance. En effet, Python ne propose en standard aucun moyen simple d'installer ou de désinstaller des modules externes depuis internet à la manière d'un gestionnaire de paquet, ce qui pose problème lorsque l'on souhaite utiliser une version plus à jour que celle de la distribution Linux qu'on utilise. Il existe bien différentes alternatives comme setuptools ou pip (qui sont toutes deux matures et utilisent les mêmes sources pour installer les paquets), mais elles ne se sont que très peu démocratisées du fait de leur absence de la bibliothèque standard de Python. La solution choisie a été d'améliorer l'outil préinstallé avec Python, distutils, pour lui faire supporter toutes les fonctionnalités de ses concurrents. Cependant c'est un travail de longue haleine qui ne prendra sûrement pas forme avant un moment.

Pour plus d'informations :

28 mars 2009 : Unladen Swallow


Tirant son nom de la question posée par le vieux de la scène 24 dans Sacré Graal ! des Monty Python, le projet Unladen Swallow vise à améliorer les performances de Python d'un facteur 5 ou plus, et ce en utilisant ce que l'on appelle un Just in Time compiler, qui transforme le bytecode Python en code machine pendant l'exécution, le rendant directement exécutable par le processeur de l'ordinateur. Se basant sur le projet LLVM (Low-Level Virtual Machine) qui travaille sur la réalisation d'un JIT multiplateforme et réutilisable, les ingénieurs de Google ont lancés ce projet fin mars 2009 et ont dors et déjà une version apportant des hausses de performances de l'ordre de +25% par rapport à l'intepréteur Python classique.

Pour plus d'informations :

30 mars 2009 : choix du DVCS qui remplacera Subversion


La discussion enclenchée le 7 novembre 2008 sur le changement de VCS de Python pour passer de Subversion à un DVCS est arrivée à son terme le 30 mars 2009 quand Guido van Rossum, créateur de Python, a tranché sur son choix de système pour la suite du développement de Python. Le choix ayant à la base été réduit à trois systèmes (Git, Mercurial et Bazaar) fut tout de même très difficile du fait des différents avantages et inconvénients de chacun de ces programmes, qui pourraient influer directement sur la qualité du développement de Python. C'est finalement Mercurial qui a été choisi pour remplir cette tâche, pour la simple et bonne raison qu'il est un des plus simple à prendre en main pour un développeur habitué à Subversion et que Bazaar est trop lent pour gérer de gros projets comme l'interpréteur Python. La transition à Mercurial n'a pas encore totalement été effectuée et devrait se terminer fin 2009 par le retrait du dépôt public Subversion.

Pour plus d'informations :

1er avril 2009 : démission du BDFL


Pour la traditionnelle blague du premier avril, le BDFL (Benevolent Dictator for Life, Dictateur Bienveillant à Vie, surnom de Guido van Rossum, le créateur de Python) a décidé d'annoncer qu'il prenait sa retraite après 20 ans de développement relatif à Python, et qu'il nommait Barry Warsaw (un des core-developers de Python) pour le remplacer à cette tâche. Son titre fut modifié de BDFL à BDEVIL (Benevolent Dictator Emeritus Vacationing Indefinitely from the Language), et Barry Warsaw se donna le nouveau titre de FLUFL (Friendly Language Uncle For Life), insistant pour être appelé « Uncle Barry » par la suite. Tout cela s'étant déroulé pendant les PyCon US où la majorité des acteurs du développement de Python étaient rassemblés, il va sans dire que ce fut un joli coup.

Pour plus d'informations :

1er juin 2009 : retrait de ipaddr dans Python 3.1


ipaddr est un module Python créé par des ingénieurs de Google pour faciliter les opérations sur les adresses IP, et dont l'introduction dans la bibliothèque standard de Python (stdlib) avait été décidée le 3 mai dernier. Cependant, après la sortie de la première version RC, un débat est apparu sur le modèle qu'utilisait cette bibliothèque pour représenter les adresses IP et les réseaux, qui ne plaisait pas à certains développeurs (mais que d'autres trouvaient naturel). Son retrait a été demandé à cause de ce consensus, mais retirer un module de la bibliothèque standard n'est normalement pas réalisable après la sortie de la première release candidate qui est sensée être compatible avec la version finale. Ainsi, le débat s'est peu à peu transformé pour discuter plus précisément de la cohésion des décisions prises par les core-developers de Python et les tests qui sont effectués avant l'introduction d'une nouvelle fonctionnalité. Pour finir, le BDFL a tranché en demandant le retrait de la bibliothèque de la stdlib, citant comme argument que « si quelqu'un souhaite vraiment l'utiliser avec Python 3.1, il a toujours le choix d'installer le module externe comme avant », mais ce fut une décision exceptionnelle qui n'aurait normalement pas du être prise.

Pour plus d'informations :

Conclusion


Python est un langage de programmation qui se démocratise de plus en plus, que ce soit chez les amateurs que dans les grandes entreprises. Cette version 3.1 rend l'interpréteur plus rapide et y rajoute plusieurs fonctionnalités manquantes et demandées par les utilisateurs. Cependant, peu de bibliothèques lourdes telles que NumPy (pour le calcul scientifique), la PIL (pour traiter des images) ou SQLAlchemy (pour utiliser des bases de données facilement) sont déjà disponibles pour les versions 3.x de Python, rendant son utilisation plus rare que celle des version 2.x. Mais cette tendance tend à s'inverser, et de grosses bibliothèques telles que PyQt fournissent déjà une version utilisable pour Python 3.0. Ce n'est donc à priori qu'une question de temps et de motivation des développeurs pour que les autres s'y mettent et que Python 3.x remplace définitivement Python 2.x dans l'avenir du langage.

Références

85 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2  3 
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page Précédente  1  2  3 
Hors ligne zulon # Posté le 28/06/2009 à 14:27:16
Avatar

Citation : angelsafrania
Commencer en info par du Pyton c'est pas bien !
Il faut commencer par les bases style le C, C++ et puis après on peut voir les autres langages !

Je suis d'accord avec Tuxicomane, quelle argumentation ! Moi aussi je peux mettre des points d'exclamation pour faire valoir mon point de vue ! Regarde !

Je suis d'accord, commencer par Python c'est pas forcément la meilleure chose à faire. Mais commencer par du C l'est encore moins. Quand tu veux apprendre l'algorithmique, tu t'en fous complètement des détails sous-jacents concernant la mémoire, la taille des entiers ou le reste.
ÀMA commencer par un langage strict, fortement et statiquement typé tel qu'OCaml aurait été un meilleur choix, mais je ne suis pas ministre de l'éducation hélas.
Hors ligne delroth # Posté le 28/06/2009 à 14:31:22
Lead developer de fflancer
Avatar

études : EPITA

@zulon: Je pense que c'est plus la simplicité de la syntaxe de Python qui a influencé le choix que ses capacités intrinsèques. Et sur ce point, il faut avouer qu'on trouve difficilement aussi simple que Python (très proche de l'anglais, concis, sans trop de blabla inutiles, délimité visuellement par l'indentation, etc.).
 
Hors ligne zulon # Posté le 28/06/2009 à 14:34:31
Avatar

"très proche de l'anglais"
Qualité essentielle pour enseigner à des lycéens Français ;) .
Hors ligne delroth # Posté le 28/06/2009 à 14:35:15
Lead developer de fflancer
Avatar

études : EPITA

Ils ont aussi retenu Linotte. Curieusement je pense que tout le monde préfèrera Python.
 
Hors ligne robocop # Posté le 28/06/2009 à 14:36:46
Avatar

Ils vont pas mettre ocaml zulon, car il est déjà utilisé en prépa, et les étudiants en garde généralement, à ce que j'ai pu entendre, un mauvais souvenir.
 
Hors ligne zulon # Posté le 28/06/2009 à 14:36:59
Avatar

D'ailleurs hum, je vois pas trop en quoi Python en proche de l'anglais. Il y a des identifiants anglais, c'est sûr, mais à part ça… ?
(linotte c'est une blague, dommage que son auteur ne l'ait pas compris)

robocop : C'est probablement la manière dont c'est enseigné, mais vu que je n'ai pas (encore) reçu cet enseignement, je peux pas juger.
Hors ligne delroth # Posté le 28/06/2009 à 14:42:21
Lead developer de fflancer
Avatar

études : EPITA

Citation : zulon
D'ailleurs hum, je vois pas trop en quoi Python en proche de l'anglais. Il y a des identifiants anglais, c'est sûr, mais à part ça… ?

Code : Python
1
2
3
4
5
def pgcd(a, b):
    if a % b == 0:
        return b
    else:
        return pgcd(b, a % b)

C'est super lisible, même pour quelqu'un qui ne connait pas la programmation (si on excepte le % qui n'est pas forcèment implicite). Autre exemple :
Code : Python
1
2
for i in range(100):
    print(i)
 
Hors ligne Tuxicomane # Posté le 28/06/2009 à 14:44:28
Avatar

Ville : Murray hill, n.j.
Pays : États-Unis

Citation : zulon
robocop : C'est probablement la manière dont c'est enseigné, mais vu que je n'ai pas (encore) reçu cet enseignement, je peux pas juger.
Mouais, quelque chose me dit que ça risque d'être pareil avec Python :-°

Unix is simple. It just takes a genius to understand its simplicity. -- Dennis M. Ritchie.
--
FDN, le FAI dont tu es le héros :)
--
Les zér0s m'étonneront toujours.
Préfère m'envoyer un mail plutôt qu'un MP. Mon adresse est dans mon profil. Merci !
 
Hors ligne zulon # Posté le 28/06/2009 à 14:47:09
Avatar

Citation : delroth
C'est super lisible, même pour quelqu'un qui ne connait pas la programmation (si on excepte le % qui n'est pas forcèment implicite).

Je dis pas que ce n'est pas lisible, loin de là. Mais on est assez loin du langage naturel, c'est là où je veux en venir.
Hors ligne Artefact2 # Posté le 28/06/2009 à 15:50:31
Attention, je mords
Avatar

Ville : Reims
Pays : France métropolitaine

Citation : delroth
Ils ont aussi retenu Linotte. Curieusement je pense que tout le monde préfèrera Python.


Linotte :o

Dommage, ils auraient du faire une version "lycéen moyen" :

"a est 1 nbr ki vo 2"

:-°

Citation : delroth
Citation : zulon
D'ailleurs hum, je vois pas trop en quoi Python en proche de l'anglais. Il y a des identifiants anglais, c'est sûr, mais à part ça… ?

Code : Python
1
2
3
4
5
def pgcd(a, b):
    if a % b == 0:
        return b
    else:
        return pgcd(b, a % b)

C'est super lisible, même pour quelqu'un qui ne connait pas la programmation (si on excepte le % qui n'est pas forcèment implicite). Autre exemple :
Code : Python
1
2
for i in range(100):
    print(i)


Tu as oublié de mentionner la syntaxe et l'indentation imposée par le langage. Pourtant ça c'est bien du temps perdu quand on veut faire de l'algo à la base.

Image utilisateur
Image utilisateur
 
Hors ligne mota # Posté le 28/06/2009 à 16:57:17
Berserkr qui mord
Avatar

études : Epitech

Citation : delroth
@zulon: Je pense que c'est plus la simplicité de la syntaxe de Python qui a influencé le choix que ses capacités intrinsèques. Et sur ce point, il faut avouer qu'on trouve difficilement aussi simple que Python (très proche de l'anglais, concis, sans trop de blabla inutiles, délimité visuellement par l'indentation, etc.).


C'est vrai que la syntaxe est particulierement claire aidee par l'indentation relativement stricte.

Pour l'apprentissage de l'algo de base au lycee, donc avec une syntaxe volontairement tres restreinte, ca passe.

Neanmoins, pour quelqu'un qui veut reelement se lancer dans le developpement, je pense que python n'est clairement pas un langage de novice, quand on veut l'utiliser pleinement.

Il engendre des concepts d'une complexite relativement avancee et sa syntaxe peut vite devenir imbuvable pour peu qu'on s'amuse deux minutes (bon, c'est pas encore du perl, mais on n'est pas trop eloinge).

M'est avis qu'un langage 100% procedural (tel que le C) permet de decouvrir a la fois les mecanismes (relativement simples) de la gestion de la memoire en ayant un outil a la fois simple, mais qui permet de faire des choses incroyablement complexes.

Il est vrai que comprendre les pointeurs et leur utilite n'est pas une des choses les plus annodines a faire, mais une fois cela fait et le langage bien compris, on peut s'attaquer a des notions plus evoluees telles que l'objet ou le fonctionnel.

J'ai un ami qui est prof particulier d'une eleve de seconde (ou premiere, je ne sais plus) qui fait du scheme au lycee, cela me semble un choix pas trop mauvais, aussi, dans l'apprentissage de l'algorithmique.

It's me !
 
Hors ligne M-Dolly # Posté le 28/06/2009 à 18:37:06
Avatar

Excellente news.

Avec tous ces changements ça doit être assez compliqué pour quelqu'un qui commence en Python : d'une part il y a une version 2.x.y qui va dans un future proche disparaître mais très bien documentée avec en plus beaucoup d'aide sur les forums et beaucoup de cours en ligne, et d'autre part la version 3.x.y qui a encore un bon avenir devant elle mais avec des cours quasiment inexistants -en français du moins.

Il est vrai que c'est un langage simple mais le fais de vouloir se mettre à jours (version la plus récente) et apprendre/débuter dans le domaine semble incompatible : il faut constamment faire des va et vient entre la nouvelle doc et le cours plus ancien. Ce n'est pas pratique en fait.

Il ne faut pas tout dramatiser non plus les différences ne sont pas énormes quand on commence à étudier le langage et nous devons nous dire que c'est une étape de transition dans l'histoire de Python. Je conseillerais donc aux novices d'attendre un peut pour commencer à l'apprendre (quelques mois) cependant ça ne devrais pas trop gêner un expérimenté.

Citation : mota

Neanmoins, pour quelqu'un qui veut reelement se lancer dans le developpement, je pense que python n'est clairement pas un langage de novice, quand on veut l'utiliser pleinement.

Entièrement d'accord avec toi mota , par exemple le php est beaucoup plus adapté avec une communauté très nombreuse, solidaire et active (je n'ai pas dis compétente).
Hors ligne muaddib # Posté le 28/06/2009 à 18:48:10
Ubuntu User
Avatar

études : EISTI

Très bonne news, même si je dois avouer que je n'ai pas lu l'intégralité avec une attention égale...

Au passage, je suis très sceptique sur l'apprentissage de Python en seconde. Certe il est marrant de bidouiller avec de la prog et il est certain que j'aurais été plus attentif en cours si cela avait été au programme lorsque j'étais moi même en seconde. Cependant, n'est-il pas plus important que tout les élèves de seconde sachent employer correctement la langue de molière? (j'entend par là lire et écrire "parfaitement", même si l'on n'est jamais à l'abri d'une faute dans un rapport de 250 pages :p ). Je me demande souvent ce qui passe dans la tête du ministre de feu l'instruction publique, renommé récemment éducation nationale (non je suis pas réac'euh :D )

N'oubliez pas de faire une recherche avant de poster dans les forums. Google et le moteur de recherche du SdZ sont vos amis ;)
Image utilisateur

 
Hors ligne Dhu # Posté le 28/06/2009 à 18:48:38
I accidentally...
Avatar

Ville : Saint martin-d'hères
Pays : France métropolitaine

Citation : Antilles
Citation : mota
Neanmoins, pour quelqu'un qui veut reelement se lancer dans le developpement, je pense que python n'est clairement pas un langage de novice, quand on veut l'utiliser pleinement.

Entièrement d'accord avec toi mota , par exemple le php est beaucoup plus adapté avec une communauté très nombreuse, solidaire et active (je n'ai pas dis compétente).

Flame war incoming.

Owned by the -->;
La seule chance qu'on ait de gagner la guerre, c'est qu'en face ils soient aussi cons qu'ici...
Talents Cachés 2009
 
Hors ligne Quaero # Posté le 28/06/2009 à 18:53:21
Avatar
Flux RSS

Mais je croyais que la réforme prévue pour la seconde avait été annulée. Vous êtes certains que c'est pour l'année prochaine ?
 
Hors ligne delroth # Posté le 28/06/2009 à 19:18:16
Lead developer de fflancer
Avatar

études : EPITA

Citation : Quaero
Mais je croyais que la réforme prévue pour la seconde avait été annulée. Vous êtes certains que c'est pour l'année prochaine ?

Si c'est pas pour l'année prochaine, c'est pour l'année suivante. Mais non, il ne me semble pas que ça ait été annulé, et ça n'est pas non plus l'avis des gens sur DLFP.
 
Hors ligne Quaero # Posté le 28/06/2009 à 20:17:18
Avatar
Flux RSS

delroth-> Je suis en troisième (je passe en seconde), et mes profs m'ont dit que la réforme avait bien été annulée. Je viens de vérifier sur divers sites ici, et . La réforme sera appliquée lors de la rentrée 2010. Donc le projet d'intégrer un peu d'algorithme en seconde sera sûrement en place à cette même rentrée, à moins que ce n'est aucun lien.
 
Hors ligne didjo # Posté le 28/06/2009 à 22:43:27
Avatar

Ouah ! Le langage Python en seconde ?
Arf ! Malheureusement je viens de finir ma première -_-' !
Mais vous êtes bien sûr de ça ?
Ils avaient parler de tout remanier au lycée et de ne fait que 23 à 25 heures de cours par semaine alors que nous on est entre 32 et 35 alors je ne vois pas vraiment où ils comptent mettre ça OO !

Nous détruisons le monde, et fatalement, le monde nous détruira ...
 
Hors ligne nicknick63 # Posté le 29/06/2009 à 00:20:22
Avatar
Flux RSS

Ville : Clermont-ferrand
Pays : France métropolitaine

Citation
Citation : mota
Neanmoins, pour quelqu'un qui veut reelement se lancer dans le developpement, je pense que python n'est clairement pas un langage de novice, quand on veut l'utiliser pleinement.

Entièrement d'accord avec toi mota , par exemple le php est beaucoup plus adapté avec une communauté très nombreuse, solidaire et active (je n'ai pas dis compétente).

Ou pas.
Le PHP a un typage en carton, une syntaxe hasardeuse, des incohérences, etc. Je ne développe pas plus, car il suffit de parcourir le forum pour avoir des dizaines d'exemples qui prouvent qu'il est loin d'être adapté à la découverte de la programmation.
Après, est-ce que Python l'est plus, je serai moins catégorique là dessus. Ça dépend surtout de ce qu'on veut faire.
 
Hors ligne bloom1 # Posté le 29/06/2009 à 05:11:34
Python 3.1 c'est le bien
Avatar

À quand un tuto sur Python 3 en français qui a du bon sens ? J'en ai trouvé un sur le Net sauf qu'il est bourré de fautes...

Image utilisateur
Image utilisateur
Archive-Host is the best!
Cliquez pour voir la chose la plus magnifique...
Secret (cliquez pour afficher)
Image utilisateur


Secret (cliquez pour afficher)
 
Hors ligne vince9251 # Posté le 29/06/2009 à 15:31:21
Avatar

Ville : Sceaux
Pays : France métropolitaine

Ouais il parait que le SDZ a suprimmer un tuto sur le python il faut en remettre un c'est un language tellement interessant meme si il est peu utiliser!
Hors ligne M3t4Linux # Posté le 29/06/2009 à 15:31:42
Avatar

Oui, j'ai hâte de voir dans la rubrique "programmation" des tutos officiel un tuto digne de ce nom sur python

ça manque cruellement

On commence à vieillir quand on finit d'apprendre :)
Ne pas réussir n'est pas un échec mais un apprentissage :D
Image utilisateur
Image utilisateur


 
Hors ligne M3t4Linux # Posté le 29/06/2009 à 15:45:54
Avatar

vince9251 +1
Oui, je viens de voir qu'un gros tutos a été supprimé...
C'est dommage :-(

Il disparaisse un par un, manque de mise à jour je suppose??

On commence à vieillir quand on finit d'apprendre :)
Ne pas réussir n'est pas un échec mais un apprentissage :D
Image utilisateur
Image utilisateur


 
Hors ligne delroth # Posté le 29/06/2009 à 19:53:36
Lead developer de fflancer
Avatar

études : EPITA

Et juste car j'ai réussi l'Exploit, je le mentionne : http://www.gcu.info/2009/06/la-mue-du-serpent-a-plume/ .

Qui aurait un jour pensé voir une news du SdZ linkée sur GCU avec comme texte « une très bonne news ... » ? :D
 
Hors ligne xcombelle # Posté le 30/06/2009 à 00:52:59

Très bonne news
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news