Python : la base

Python : le langage

Le langage de programmation Python et ses très nombreuses extensions (et tout cela en “Open Source” = gratuit pour votre usage personnel), constituent un des outils les plus apprécié par le domaine scientifique et principalement celui du traitement des données.

Ce site n’a nullement la prétention d’enseigner le langage, ni de “debugger” un problème. Il y a des dizaines de sites, de manuels et d’internautes bien plus calés que moi-même dans ce domaine. Ici, on va aller à l’essentiel pour le domaine traité…

Que faut-il pour démarrer ?

Tout d’abord, il faut savoir qu’il existe historiquement plusieurs “Python”… 

Remarque : n’oubliez jamais la règle…
Quand il y 4 standards, quelqu’un décide que c’est inadmissible et fabrique un nouveau standard “unique” qui inclura le contenu des 4… Et à partir de ce moment, vous avez 5 standards !”  

Donc, je me focalise généralement sur UN outil, j’apprends à le maîtriser et ne cherche pas forcément la “nième fantastique évolution que l’on essaie de me vendre” 🙂

Personnellement, j’ai choisi 

  • d’utiliser Python 3.x sous Windows 10/64 bits
  • de faire “fonctionner” mes programmes avec un “command file” (de facto, un raccourci sur l’écran)
  • et pour “développer”, d’installer un environnement intégré, incluant les librairies de base et tous les outils nécessaires pour développer du code dans 2 objectifs : “data science” et “astronomie”… 

Mon choix s’est porté vers : 

Pour l’apprentissage du langage, il y a pas mal de sites, tels que :

https://pythonspot.com/beginner/

https://www.python.org/about/gettingstarted/

Et lu deux livres d’introduction (gratuits)

https://epdf.pub/python-programming-for-beginners.html

https://epdf.pub/python-3-for-absolute-beginners.html

Remarque : il y a tout de même 500 pages à lire… Mais si vous avez déjà fait de la programmation, la syntaxe de Python est très facile… Et c’est ce qui fait son succès !

Si Python est le langage favori d’un très grand nombre de développeurs car comparé à d’autres langages comme Java, PHP, C++, etc, fe crois que c’est largement dû à la clarté de ses lignes de code et à son efficacité.

Il est certes “vieux” (90’s quand je l’ai vu la première fois..) mais comparé à d’autres (tel que Fortran, Cobol, Lisp, etc…) je trouve qu’il a très bien vieilli ! Remarque : Pensez à ses presque 30 ans d’âge quand on vous parle d’un “nouveau langage”, Mdr…:-)  Mais s’il a une telle longévité, c’est aussi un signe de maturité, stabilité et fiabilité.

La syntaxe de Python obéit à moins de règles par rapport à d’autres langages, car l’accent est principalement mis sur le « but à atteindre » plutôt que les “architectures fonctionnelles” complexes et les règles (trop) rigoureuses (et parfaitement gonflantes, dans 90% des cas).  

Python est un langage pouvant être utilisé dans presque tous les domaines de l’informatique :  développement Web, cloud computing (AWS, OpenStack, VMware, Google Cloud, etc.), automatisation, tests de logiciels, Big Data (traitement de gros volumes de données), Hadoop, applications mobiles, etc. Et, surtout : la science (statistiques, modélisations, physique, médecine, et astronomie…) !

Le point essentiel qui fait à la fois sa popularité et son inconvénient (mais il n’est pas le seul), c’est le nombre de librairies, classes et méthodes à “digérer” pour finir par trouver celle qui vous convient…

Par exemple, rien que l’aspect des “listes” et “dictionnaires” (Python pur), “ndarray” (Numpy), “dataframe” (Pandas) peut vous occuper de longues soirées…

La vitesse

Ce sujet est souvent mentionné dans les discussions (souvent passionnées) entre les “puristes du C++” et les “bricoleurs en Python” (sic)…

Vous lirez qu’un programme Python est “largement plus lent que C++ ou C“. Perso, cela m’importe guère (surtout avec des machines aussi puissantes que nos PC actuels) comparé aux avantages d’utiliser un langage plus simple, plus portable et plus facile à utiliser.

Un exemple : la (très grosse) librairie “Python-OpenCV” dédiée au traitement d’image combine l’avantage d’être un “wrapper” sur le code C/C++ original et donc doit pouvoir combiner les avantages des deux langages. Au pire, on devrait perdre, selon quelques tests, au max 10%…
L’interface OpenCV-Python, bien qu’un peu différente, va aussi offrir le support complet de Numpy (package scientique de Python), lui aussi en “wrapper” sur du code C/C++, donc : cela devrait aller aussi 😉  

Perso, il m’a suffi de me rappeler mon premier cours de C++ :

 // Your First C++ Program
include
int main() {
std::cout << "Hello World!";
return 0;
}

Et… Transformer cela en :

// Your first Python program
print("Hello World!")

Pour faire mon choix… Je suis peut-être “limité“, soit, mais j’avance… 🙂

Les mêmes puristes vous diront aussi que “sans compréhension totale des composants, on n’avance pas” (sic)… Mais les “puristes” réellement capables d’expliquer clairement ceux-ci sont (très) rares…. Quand on en rencontre un, parfait, c’est utile de discuter. Pour le reste, passez votre chemin, c’est inutile de s’encombrer l’esprit avec leurs interrogations qui n’apportent rien pour solutionner votre problème !  

Donc : “Go for code“… En astronomie amateur… 🙂