Bonjour à tous,
J'ai commencé la programmation il y a déjà longtemps, mais je n'ai que très récemment osé plonger dans python sérieusement en commençant un premier projet il y a 2 semaines à peine.
J'ai fait et je fais toujours du Java, du C++, du PHP, du JavaScript, du SQL, du lua…
J'ai commencé le C++ en 1999 et à l'époque je ne comprenais rien aux pointeurs (bon j'ai une excuse, ja'vais 11 ans). Eh oui, encore un bouqin où les pointeurs étaient avant le chapitre 10.
Ensuite je suis surtout passé à Java (dès 2001, coucou les applets), puis JavaScript (dès 2003, j'ai vu les débuts d'AJAX) ensuite PHP (dès 2005) parce que c'était clairement plus facile. Aujourd'hui je suis pas mal revenu à C++ quand je ne fais pas du web parce que, pour certaines choses en tout cas, les inconvénients de Java me pesaient.
En python, cette obligation d'indenter dès le départ un code m'a longtemps rebuté. Personnellement je trouve que la présentation du code devrait toujours être gérée automatiquement sans qu'on ait à s'en soucier. Or en python c'est impossible, et ça me gêne de devoir penser à indenter correctement mon code en même temps que je réfléchis à ce qu'il doit faire (le code doit d'abord marcher correctement avant d'être beau à voir).
Par contre, passé cet apriori négatif, je dois dire que je suis impressionné. J'ai codé en quelques jours un début d'application qui m'aurait sûrement pris la tête pendant 5 fois plus de temps en C++. Et je me dis que j'ai été con de m'y refuser pendant si longtemps juste à cause, finalement, d'un petit détail.
En tout cas, j'accroche totalement aux listes/dictionnaires/ensembles par compréhension, et par extension aux générateurs. Parser un fichier ini en 2 lignes, on a rarement fait mieux…
J'aime bien aussi la distinction string vs bytes. Les mecs qui ont conçu python 3 ont tout compris aux problèmes récurrents des encodages qui empoisonnent la vie de pas mal de gens.
J'accroche moins au duck typing, mais bon, ça, c'est un peu comme en PHP donc je ne me sens pas trop désorienté, à ceci près qu'en python c'est quand même nettement mieux pensé (on peut faire moins de choses et c'est sans doute mieux, on peut surtout faire moins n'importe quoi). La seule chose qui m'a un peu surpris en la matière, c'est la non conversion implicite vers str (p.ex. "a"+1 qui déclenche une erreur).
Un truc chiant quand on aborde un nouveau langage alors qu'on en connaît déjà plusieurs autres, c'est de parcourir la doc pour voir ce que la bibliothèque standard propose. ET effectivement, le coup de trim renommé en strip parmi d'autres m'a fait chercher inutilement pendant un certain temps, un moment donné je me suis même demandé comment était-ce possible qu'ils l'aient oublié.
Heureusement, la liste des modules sur docs.python.org est pas mal bien faite, et help et dir dans l'interpréteur rendent bien service.
Un avantage certain du pyton quand on débute avec, c'est qu'on a déjà plein de choses inclus dans la boîte, alors qu'en C++ on doit chercher une lib externe pour à peu près tout.
Tu veux parser/générer du XML ou du JSON ? En C++, galère,; compresser/décompresser du zip ? pareil; requêter un webservice ou communiquer en réseau avec des protocoles de couche 4-7; encore mieux… il y a toujours forcément 36000 libs qui existent qui font toutes à peu près pareil mais pas exactement et jamais tout à fait comme tu veux.
En bonus, j'ai l'impression que le python est plus en vogue sur le marché du travail que le C++ en ce moment. Donc moi aussi je voterais pour que tu commences par python.
Tu disais que tu voulais faire des jeux. Eh bien, en python tu as pygame, un port de la SDL, c'est déjà pas mal pour commencer il me semble; à moins de vouloir faire un jeu 3D tu peux déjà t'amuser un moment.