loading...

#0 Script.txt : Présentation et définitions

bigaston profile image Bigaston ・6 min read

Bonjour à tous et bienvenue dans ce nouveau podcast que je vais animer. Si vous vous trouvez ici c'est que vous préférez lire plutôt que d'écouter, et c'est un choix très défendable! Mais si vous découvrez Script, sachez que vous pouvez l'écouter un peu partout (Spotify, Apple Podcast ou alors par RSS).

Alors dans Script je vais vous parler d’une de mes passions : la programmation. Ici on va voir différent styles de langages. Des langages de programmation, de balisage ou encore tout autre langage informatique.

Je précise, le principe de ce podcast n’est pas de vous donner des cours de programmation, mais plutôt de vous faire découvrir la richesse de cet écosystème. Si vous voulez apprendre à coder, n’hésitez pas à aller découvrir la chaîne secondaire de Mister Flech, Flech & Computers, ou à aller vous promener sur OpenClassroom. Si vous voulez commencer, je vous conseil de vous tourner vers le Python qui est très agréable à écrire. Je vous le présenterais dans un épisode futur.

Avant de parler de langage on va voir quelques termes. Déjà il faut savoir que les programmes informatiques peuvent être construit de plusieurs manière. Ils peuvent être des langages impératifs, qui sont une simple suite d’instruction contenant des structures de conditions (comme des conditionnelles Si… alors… sinon), ou de répétitions (boucle pour, tant que…). Parfois il y aura aussi des fonctions qui permettent de réutiliser le code à divers endroits sans avoir à le réécrire.

Et voici un petit exemple écrit en Python vous montrant comment peuvent être représentés ces différentes structures. J'ai choisis le Python pour cet exemple parce que je trouve que c'est un langage très clair et facile à comprendre, idéal pour commencer.

Ensuite, il y a la programmation orienté objet. Dans celle ci on retrouve les concepts de la programmation impérative mais les langages sont principalement orienté autour d’objets qui reprennent des concepts métiers. En gros vous allez définir des objets (par exemple un humain), vous allez dire que un humain a différentes caractéristiques (appelés ici attributs ou propriétés), comme son nom, son prénom, sa taille, son sexe. Il doit aussi pouvoir faire des actions (des méthodes), comme se présenter, marcher ou encore naître. Et bien vous allez définir tout ça dans un objet, puis faire “naître” cet humain à l’aide d’une action spéciale appelée constructeur qui va créer un humain (une instance de la classe Humain), avec les caractéristiques que vous lui aurez décrite.

Pour résumer vous allez commencer par définir ce qu’est un Humain en général, puis vous pourrez créer des humains particulier. J’ai grandement résumé la programmation orientée objet, il y a pleins d’autres choses très utile comme les attributs et fonctions statiques, les droits d’accès, mais je ne veux pas vous perdre dans ce gros gloubiboulga qu’est la POO.

Encore une fois pour simplifier les choses, voici un petit exemple. Celui-ci est écrit en Java (un des seul langage dans lequel j'ai fais de la création d'objet). Nous verrons la syntaxe plus précisément dans un épisode futur du podcast! Dans le fichier Humain.java je définis l'objet Humain, et dans le fichier Main.java je crée une instance de Humain, et je fais quelques actions dessus! (Vous pouvez cliquer sur l'icone en haut à gauche pour naviguer entre les fichiers).

Là je vous définis les types de langages de programmation mais il existe d’autres types de langages dans l’informatique, et je me ferais un plaisir de vous en présenter.

Après avoir parlé du type de langage de programmation, on va parler un peu du fonctionnement. Il y a deux fonctionnements dans l’informatique. Les langages compilés et les langages interprétés.

Un langage compilé est un langage que on va écrire mais qui pour être exécuté par un ordinateur doit être compilé. C’est à dire que un programme appelé compilateur va passer et transformer les lignes de code en instructions binaires que l’ordinateur va exécuter.

Un des avantages des langages compilé est la vitesse d'exécution. En effet le code étant directement en binaire, l’ordinateur a juste à suivre les instructions et les exécuter. Mais il y a différents défauts.

Déjà la compilation entre chaque exécution peut ralentir le développement. Pour les gros projets la compilation peut être vraiment longue, mais des compilateurs améliorent les choses en ne compilant que les fichiers qui ont été modifiés entre temps.

Ensuite il faudra créer un compilateur par système d’exploitation, et le code compilé ne s’exécutera que sur un seul système, puisque compilé spécifiquement pour lui. Mais ce programme pourra être simplement partagé et exécuté sans logiciel supplémentaire.

Code écrit par l'utilisateur
+--------------------------+
|a = 1                     | -> [Compilateur Linux]   ->
|                          |                             +---------+
|si a = 1 alors            | -> [Compilateur Windows] -> | 0110110 | -> [Exécution]
|  a = a + 1               |                             +---------+
|                          | -> [Compilateur OSX]     ->
+--------------------------+

Les langages interprétés quand à eux vont avoir besoin d’un interpréteur qui va suivre les instructions une à une et les interpréter pour faire les actions nécessaires. Le programme enlève la partie compilation lors du développement et le test du code est plus rapide puisqu'on a plus besoin de recompiler à chaque modifications.

Mais les langages interprétés ont bien sûr des défauts. La vitesse déjà. Interpréter un langage est plus long que juste exécuter un langage déjà compilé. Ensuite il faut forcément un interpréteur pour exécuter le code, on ne peut pas juste partager des exécutables comme ça.

Code écrit par l'utilisateur
+--------------------------+
|a = 1                     |
|                          |
|si a = 1 alors            | -> [Interpréteur exécute le code]
|  a = a + 1               |
|                          |
+--------------------------+

Mais comme nous le verrons dans cette émission, certains langages sont un peu entre les deux, soit en compilant à la volée pour aller plus vite, ou en compilant le code pour une machine virtuelle.

Et pour finir, les programmes sont classés en niveaux. Les programmes de haut niveaux seront des programmes facile à lire pour les humains, proche de notre langue, et des langages de bas niveaux sont des langages plus proches du langage machine.

Par exemple, le Python est un langage de haut niveau, et l'assembleur (que nous verrons dans le prochain épisode) est de bas niveau.

Voilà un petit aperçu des différences parmi les langages de programmation. Dans ce podcast, je parlerais un peu de tous les langages. Qu’ils soit utilisés actuellement ou dépassés. Fait pour être utile ou fantaisiste. Définit par de grosses équipes ou par un seul homme. Enfin bref, de tous les langages.

Je ne sais pas tous les combien de temps sortiront les épisodes, ni combien de temps ils dureront, mais ce que je sais c’est que le premier épisode parlera de la base de tous, l’assembleur! Oui j’aime me faire du mal.

Je vous parlerais un peu des spécificités, de son histoire, des exemples de logiciels utilisant cette technologie, on essayera de faire une belle présentation!

Et j’essayerais aussi de vous faire si possible un exemple de code pour que vous puissiez comparer les différents langages entres eux, à chaque fois un exemple de code fonctionnel et pour les langages qui le permettent, l’écriture d’un objet.

Juste en dessous vous trouverez le lien de la chaîne Flech & Computers, de l’article de wikipédia sur les langage de programmation et enfin un article présentant une liste des langages. N'hésitez pas à vous abonner au podcast et à me faire des retours sur cet article!

Posted on by:

bigaston profile

Bigaston

@bigaston

Student in computer science, and NodeJS lover. I like to experiment new technologies and start (but not often finish) new project!

Discussion

markdown guide