Parce qu'il est facile à apprendre
Parce que Python est un langage de choix, c'est-à-dire à usage général
Python permet de créer des fonctions avec moins de lignes de code
Python est un langage polyvalent
Python dispose de l'un des gestionnaires de paquets les plus matures : PyPI
Python est un langage couramment utilisé dans la science des données
Python est multiplateforme et open source
Autres (précisez)
Sans avis
J'ai découvert Python tardivement à l'occasion de la réalisation de scripts de manipulation de fichier et de communication. J'avais beaucoup entendu parler de ce langage comme étant abscons et difficile à apprendre, et c'est par simple curiosité je m'y suis mis et j'ai été bluffé par la vitesse à laquelle j'ai pu coder mes scripts sans aucunes connaissance préalable ! Avec Python on apprends très très vite car tout est logique.
Après il y a le côté universel et multi-plateforme, la pléthore de librairies éprouvées de grandes qualité et immédiatement disponibles (le langage à 30 ans !) mais aussi les performances très très proche du code natif et n'en déplaise aux défenseurs de PHP le Python est 4 fois plus rapide à l’exécution.
Jette un oeil à Go : c'est un langage qui s'apprend vite quand on vient de Python, qui est compilé en un exécutable autonome (gros avantage sur Python à mon avis) dont les performances peuvent soutenir une comparaison avec C, et qui intègre nativement une abstraction pour la concurrence (les goroutines).
Pour le big data je sais pas, mais pour les data science Python est clairement un leader. Typiquement Python est utilisé comme wrapper sur des libs écrites en C ou C++ : numpy, igraph, tensorflow, sql... donc on peut avoir de bonnes perf si on l'utilise comme glue pour combiner des briques optimisées. C'est d'ailleurs un domaine où ce langage excelle.
Ce que je lui reproche c'est la galère à redistribuer une application développée avec (lourdeur d'un virtual env, dépendances qui pètent au runtime, ...). Cela dit grâce à Docker (et Jupyter) ça va mieux... sous Linux du moins!
Je connais go tkt, mais comme tu le dis juste après, ce qui fait la force de python c'est le reste (numpy, scipy...).
Dans un programme python on peut aussi mettre des bouts de code en C ou en opencl aussi.
Sinon oui go est un langage conçue des le départ pour la gestion des processeurs multicœurs. Ce langages à pas mal de concepts nouveau et intéressant.
Perso la délimitation des blocs de code par l'indentation et non par des accolades m'a toujours complètement rebuté. je trouve ca illisible.
Pourtant je pense que python est un langage intéressant à maitriser
C'est fantastique apprendre Python jusqu'à temps que vous essayez de vous trouver un travail dont vous pouvez développer dans ce langage.
Je reste persuadé qu'il vaut mieux apprendre à programmer en python qu'en C :
https://www.developpez.net/forums/bl...rendre-python/
Pour l'EDI, je trouve pycharm très réussi (et gratuit !).
Python est vraiment polyvalent (math, science, script, web, 3D).
En revanche, les IHM sont un peu difficiles à programmer. J'ai choisi tkinter et ça ne marche pas sur Mac
- https://github.com/pldeschamps/eisenhowermatrix
- https://www.developpez.net/forums/d1...ionne-mac-osx/
C'est vrai que pour déployer une application python sur Android ou iOS, il faut s'accrocher : je n'ai même pas essayé (Kivy).
J'ai eu un excellent niveau Php et depuis un an et demi j'ai officiellement laissé tomber Php pour Python + Django (Django = le pendant de Symfony mais pour Python).
Plus facile à tous les niveaux et mieux à tous les niveaux sauf un : la rapidité.
Mais en 2017 c'est négligeable : avant que ton PC rame pour servir des pages Web, il va s'en passer du temps...
Je te laisse regarder les stats 2017 sur stackoverflow.
Python est le langage le plus demandé en moyenne sur 64,000 développeurs.
Et, stat encore plus amusante, c'est le langage le mieux payé en France !
Pour Windows : installe Python 3.6 précompilé, et PyCharm (le pendant de PhpStorm mais pour Python).
A partir de là suis un tutoriel Python et voilà c'est parti !
J'ai refait le jeu Sokoban sous shell en Python + orienté objet en 2011 : une journée pour faire ça en Python. C'est un langage extrêmement facile à apprendre, et si tu fais du Php, tu verras : il est plus simple, et tu vas vraiment t'amuser.
Pour la note, j'ai ré-écrit un gros parser de fichier Php (1600 lignes) sur lequel j'avais stoppé de coder car devenu trop complexe et incompréhensible pour moi : en Python en une journée, j'ai tout ré-écrit, 1000 lignes de code (presque la moitié) et je suis allé beaucoup plus loin et j'ai même pu terminer mon parser jusqu'au bout (merci PyCharm pour la facilité du trace en pas à pas).
Au fait petite question : pourquoi Python est le plus utilisé en langage scientifique ? Parce qu'il n'y a pas de limite pour la gestion des entiers. C'est pas une blague : si Python n'a plus de place sur 32 bits il passe à 64, puis 128, et ensuite alloue autant de mémoire que nécessaire.
Et puis tu as des expressions qui sont presque de l'anglais naturel :
mavariable = "olivier" if answer is not None else "thibault"
(sisi c'est bien du Python)
Je conseille donc Python à tout le monde sans aucune exception.
Le seul hic concernant Django ? Bah c'est qu'il force les bonne pratiques, et que quand tu veux mettre ton site en production, tu lance "collectstatic" qui récupère tous les fichiers statiques, et Django ne veut plus jamais les servir : à toi me mettre un frontal (nginx est ton ami) qui, si ce sont des URLs qui commencent par "/static/", doit les renvoyer sans passer par Django, sinon, les fait suivre à Django. Donc ce sont de très bonnes pratiques, mais cela coupe Django de tous les débutants car il te faut un serveur dédié (2 €/mois sur amazon cloud), et surtout savoir configurer un frontal. C'est vraiment la seule ombre noire que je trouve à Python.
J'ai fait la démo d'exemple montre en main en 10 minutes : kivy
Je sais que sur le 3.6 il y a eu énormément de boulot là dessus, avec des yield ou autres choses prévues pour ça (multicœurs). Pour le partage d'objets je ne sais pas.
Tu installe Python que tu veux (je conseille 3.6)
Puis PyCharm. Tu l'installe, tu fais project -> new -> django et il va tout te récupérer et tout t'installer. Le serveur Web est lui même lancé par PyCharm et il est en Python : non seulement tu n'as rien d'autre à installer, mais tu vois tout ce qui se passe, pas besoin de log ou autre, et tu peux même faire tu pas à pas.
Nginx + gunicorn
Dès que tu veux de la rapidité tu as Cython, qui permet d'écrire en C pur, avec lequel tu génère un .po ou un .dll (pour windows) et dans Python tu déclare puis appelle tes librairies.
C'est bien plus puissant qu'en Php, crois moi !
Python a énormément de choses pré-livrées avec.
Exemples :
- any() est une fonction où tu passe un tableau et si n'importe laquelle des valeurs est vraie, il renvoie "vrai" sinon c'est "faux"
- all() est une fonction où tu passe un tableau et si toutes les valeurs sont vraies, il renvoie "vrai" sinon c'est "faux"
Tout est déjà pré-construit : système de fichiers, gestion des PDFs, des mp3, des wav, traitement des fichiers image, bref, en Python, il faut faire comme cela : d'abord on cherche si une librairie n'est pas déjà écrite, et puis si elle n'est pas faite, on fait le code.
PyCharm est ton ami.
C'est que tu es tombé sur du code qui ne suit pas le principe du zen de Python qui est à la fois marrant mais très vrai.
Python est un des rares langages qui n'a pas de limite en terme de gestion des entiers.
Et il gère en natif les nombres complexes :
a=complex(2,3)
b=complex(4,3)
print(a+b, a-b, a*b, a/b)
Tu en connais d'autres de langages qui gèrent ça en natif ?
Là je ne comprends pas. Tu compile du Python ?
T'as jamais débogué en Java, ou fait un point d'arrêt sur un site écrit en Symfony toi....
Tu peux me dire en quoi tu code, et que tu considère "mieux" ? Je suis très intéressé...
J'en suis à plus de 40k€ avec ma société, de développements Python pur, portage Python ou sites Python/Django
+1e54
PyQt semble très bien.
Je vais regarder, on peut générer un apk autonome avec ce truc ? si oui sa m'a l'air super intéressant.
https://kivy.org/docs/guide/packaging-android.html
je crois que c'est possible d’après la doc, pour l'instant j'ai pas trop le temps mais j'essayerais à l'occasion pour voir.
Oui il y'a eu de nouvelle instructions, les yields pour lé générateurs ou asyncio pour faire des taches asynchrone on peut même allouer de la ram avec malloc (comme en c)
Mais pas de bol, les yields et les taches asynchrones fonctionne comme les threads en python, ils sont mono coeurs
donc sa n'apporte rien d’intéressant dans notre cas.
Justement c'est mal barré car dans Python, tous n'est qu'objet
on peut uniquement partager des structures basique de la bibliothèque types_c (int float, tab...etc)
Python a beaucoup d'avantages mais il ne faut pas exagérer non plus.
Ce n'est pas complètement vrai. Python est beaucoup utilisé pour scripter ou prototyper mais les bibliothèques qui sont derrière sont généralement en Fortran, C ou C++. Et il existe d'autres alternatives valables comme matlab, R, julia...
Quant à la gestion des entiers en précision multiple, c'est un mauvais exemple : déjà je ne crois pas que ce soit le principal problème en calcul scientifique et ensuite il existe d'autres solutions comme GMP en C.
L'anglais n'a rien de naturel, et je ne vois pas en quoi ton exemple serait moins naturel en C/C++ : mavariable = (answer ? "olivier : "thibault");
En Fortran/C/C++, openmp permet de paralleliser efficacement une boucle avec un simple pragma. Et on peut contrôler le partage de données très finement si on veut.
C aussi permet d'écrire du C pur... Et des outils comme swig permettent très facilement d'écrire une interface pour plein de langages à partir d'un code C ou C++.
C++ : http://en.cppreference.com/w/cpp/numeric/complex
J'adore Python, mais là je pense que tu t'avances trop. À ma connaissance, le seul "grand" langage interprété (çad Python, Ruby, Perl) plus rapide que PHP7 est Javascript (grâce entre autres au moteur v8).
Bien évidemment, il n'y a pas que la vitesse dans la vie, et il ne me viendrait jamais à l'idée d'utiliser PHP pour autre chose qu'une appli web alors que Python est une sorte de nouveau Perl, adaptable à toutes sortes de développement, du plus simple au plus complexe.
Tu es vraiment en train de jouer à qui a la plus grosse entre un langage de script et un langage compilé?
Python est utilisé car il permet de faire simplement beaucoup choses, mais n'importe quelle personne un minimum pragmatique ne va pas se plier en 4 et utiliser Python pour quelque chose hors de son périmètre. Je comprend bien l'attrait de tout faire en Python, surtout que c'est souvent rendu possible par le langage, mais utiliser les bons outils pour les bonnes tâches c'est pas genre un des 1ers trucs qu'on apprend en tant que dev ?
xpost : je répondais a SimonDecoline
Bah, ça dépend du qu'est-ce qu'on veut coder? et quand est-ce qu'il faut le livrer ?
Pour ma part, s'il n'y a pas d'obligation de résultat et/ou pas de pression de livraison, je choisirais direct le c/c++ où je reste maître de tout (indentation, gestion de mémoire, ...). Si je dois coder une appli. qu'il faut livrer rapidement et que ça doit faire ce qui a été demandé sans trop de contrainte de perf. aucune chance pour d'autres langages, va pour python.
Partager