# Avec quel langage de programmation débuter? Question qui revient Ce qui compte est que vous vous amusiez au debut. Trouvez des amis avec lesquels pratiquer ou un objectif... ### Decouvrir Scratch, avec vos enfants Plus important fait la place à la créativité Lien adacraft ### Compétences polyvalentes Voici les deux language que je vous recommande. Parfaitement professionnels Python Simple a comprendre > video > Video JavaScript des que vous voulez faire du web. Serveur, client. Exemple > Video ### Autres choix spécifiques Si vous avez des doutes et pas de contrainte spécifiques, choisissez Python ou JavaScript, vous trouverez pléthore de tutoriaux, des exercices et l'occasion de pratiquer. Toutefois, d'autres choix sont valides, si vous avez sous la main un bon livre, un ami pour vous guider, ou un besoin spécifique. C pour la programmation sytem, comprebdrem faire de l'embarqué. C'est un des langage avec lesquels j'ai débuté. Je suis tombé sur C de Kenninghan et Ritchi, un petit ouvrage qui résumet tout le langage et donne des exerices. En bon matheux, j'aime la concision et relative simplicité du language. Le point difficile est autour des pointeurs et la gestion de la memoire. Un pointeur est une variable qui fait reference a un autre emplacement dans la memoire. Go pour des compétences de valeur sur le marché, il faut le voir comme un successeur de javascript cote serveur, mieux concu pour la concurrence. J'ai fait quelques programmes avec. C'est facile a apprendre, on retrouve le coté language relativement court. Rust le langage de reference pour la programmatoin system rigoureuse. Il faut le voir comme le C du 21em siecle. C'est precis et rigoureux, vous savez ce que fait le programme. Php est un peu malaimé et pourtant omniprésent, c 'est le langage le plus utilé sur le serveurs web' ## Comparatif Voici quelques indications simplifiées pour comparer les principaux langages. | Langage | Nombre d'utilisateurs | Salaires | Faire un petit jeu visuel | Traiter des données | Éfficacité machine| | -------- | -------- | -------- | -------- | -------- | -------- | | Scratch |🧑 | ❌ | 🟩 | 🟥🟥🟥 | 🟥🟥🟥 | | Python |🧑🧑🧑 | 💶💶 | 🟧🟧 | 🟩 | 🟧🟧 | | Javascript |🧑🧑🧑 | 💶💶 | 🟧🟧 | 🟧🟧 | 🟧🟧 | | C |🧑🧑 | 💶💶 | 🟥🟥🟥 | 🟥🟥🟥 | 🟩 | | Go |🧑 | 💶💶💶 | 🟥🟥🟥 | 🟧🟧 | 🟧 | | Rust |🧑 | 💶💶💶 | 🟥🟥🟥 | 🟥🟥🟥 | 🟩 | | PHP |🧑🧑 | 💶 | 🟥🟥🟥 | 🟧🟧 | 🟧🟧 | | Java |🧑🧑🧑 | 💶💶 | 🟥🟥🟥 | 🟧🟧 | 🟧🟧 | Le **nombre d'utilisateurs** désigne le nombre de développeurs qui connaissent le langage, mais c'est lié aussi du nombre de ressources pédagogiques et de projets. Quelques sources: * Basé sur les utilisateurs github https://www.benfrederickson.com/ranking-programming-languages-by-github-users/ * Base sur une tambouille interne https://www.tiobe.com/tiobe-index/ * Basé sur les recherches google https://pypl.github.io/PYPL.html Les **salaires** sont généralement bon dans le développement. Il est a noté qu'ils reflettent moins le langage que le type de développeur: debutant/expérimente web/genéraliste/spécialisé. Et surtout les postes et le type d'entreprise sont aussi déterminants. * Enquete stack overflow https://insights.stackoverflow.com/survey/2020#salary **Faire un petite jeu visuel** est la facilité avec laquelle on peut faire un petit jeu intéractif visuel. Scratch est conçu pour ça. Python offre une librairie dédié *Pygame*. Javascript offre une expérience similaires, bien qu'un peu plus difficiles en utilisant le canva ou avec des librairies comme Phaser. **Traiter des données** est la facilité de traiter quelques données pour produire un graphique ou quelques traitements statistiques. Python est conçu pour ça avec des librairies qui deviennent la référence dans la recherche en médecine ou en finance par exemple. Javascript permet de jolies animations (voir par exemple le travail du New York Times) mais demandera comme le reste un peu de travail Enfin l'**éfficacité machine** n'est pas importante pour le débutant, mais elle vous indique pourquoi certains langages sont utilisés. Votre navigateur ou votre tableur sont des programmes complexes avec des milliers de lignes de codes l'éfficacité en mémoire, temps et les outils pour gérer un code complexe sont nécessaire. C et Rust sont incomparables, ils sont conçu pour offrir le maximum de controle sur le déroulé exact du programme et sont compilés, c'est à dire convertits en langage machine.