La base

Le langage de programmation Python et ses très nombreuses extensions, tout cela en “Open Source”, constitue est un des outils les plus appréciés par le domaine scientifique et le monde du traitement des données.

Comme indiqué dans l’introduction, 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…

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 sur un outil, apprends à la 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
  • 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, j’ai lu 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 !

Python est le langage favori d’un très grand nombre de développeurs comparé à d’autres langages comme Java, PHP, C++, etc.
Je 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 la stabilité et de 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 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’il est souvent indiqué 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.

D’ailleurs… Par exemple, la (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 que 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…

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

Pour faire mon choix… Je suis “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 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… 🙂