J’ai parfois à expliquer qualitativement ce que je voulais dire par « je programme » ou « je code ».
Je sais pas comment vous vous en sortez quand on vous pose la question, mais voilà la version longue de l’explication que je donnerai dans le futur.

Une phase essentielle en informatique

« Programmer ». Si je prends le dictionnaire, il est dit que c’est l'action d’écrire des programmes.

Bien, c’est la bonne définition, mais on est pas du tout avancé.

En fait, c’est dur d’expliquer ce qu’est la programmation à quelqu’un qui n’en a jamais fait.
Encore plus à quelqu’un qui utilise l’ordinateur tous les jours sans en faire, en fait.

Je vais pourtant essayer de me lancer dans une explication, car la programmation est quelque chose de fascinant et j’ai envie de partager ça (et je voulais partager un moyen d’expliquer ce que je fais une partie de mon temps libre).

Et surtout cette phase de « programmation » est essentielle : sans elle rien n’existerait sur nos ordinateurs : ni Windows, ni Firefox ou Word, ni le BIOS, ni votre fond d’écran, ni iTunes, ni Google, rien sur nos ordinateurs ne seraient là. Rien non plus sur nos téléphones, nos « Box », nos consoles, nos montres à quartz, nos GPS, nos voitures, ascenseurs, feux de croisement…

Même les langages de programmation ont dû être programmés… Dans d’autres langages !

Alors c’est quoi, en quoi ça consiste « programmer » ?

Imaginer et écrire un code

Je vais utiliser un exemple que tout le monde comprend : celui de la recette de cuisine.

Une recette de cuisine est une suite d’instructions à suivre et de procédures à appliquer sur des ingrédients pour obtenir un plat comestible.
Avant d’avoir le plat, il faut une recette, et avant que la recette soit prête, il y a forcément eu une étape d’imagination et d’écriture de cette recette par un cuisinier.

Par analogie, la recette de cuisine, c’est le code source d’un programme. Le programme (navigateur, traitement de texte…) c’est le plat.
Votre ordinateur dispose de programmes prêts à l’emploi, pour vous. Mais le code source — la recette, si vous préférez — n’est pas toujours fourni car pas nécessaire au fonctionnement, tout comme manger un plat ne demande pas d’en connaître la recette.

Le travail du programmeur, c’est d’imaginer un nouveau programme (pour combler une nécessité ou un besoin, par exemple), puis d’en créer le code source en écrivant ligne après ligne des instructions que la machine sait interpréter.

Si tout est fait correctement, le programme fonctionne. Il peut éventuellement rester quelques bogues mais cela se corrige par quelques ajustements (comme en cuisine en fait : un peu plus de sel, un peu moins de sucre, etc.).

Pourquoi programmer soi-même ?

Ce qu’il faut bien voir, c’est que les programmes ne sont pas sortis de nulle part.
Tapis dans l’ombre, il a quelqu’un qui un jour (ou une nuit) a écrit le code. Ce que vous utilisez tous les jours sur votre ordi, c’est le résultat de ce code.

Prenons ce site web par exemple : ses couleurs, sa mise en page, ses articles qui s’affichent dans le bon ordre… fonctionne parce que j’en ai écrit le code source : le site affiche les articles parce que j’ai décidé qu’il doit le faire.

Le système qui fait fonctionner le site (BlogoText) est une suite d’une dizaine de milliers de lignes de code dans pas moins de 6 langages différents.
L’utilisation du logiciel ne nécessite pas d’en connaître le code source et c’est ça la beauté : tout le monde peut utiliser un logiciel, alors que seuls quelques personnes ont besoin d’écrire le code source.

Programmer, ou écrire des recettes pour ordinateur, c’est quelque chose de passionnant et avec un peu de patience, tout le monde qui veut s’y essayer peut arriver à écrire un programme qui fera exactement ce que vous aurez décidé qu’il fasse.

Où commencer pour apprendre ?

Découvrir la programmation, c’est un peu comme découvrir la face caché de l’ordinateur.

Ne vous êtes vous jamais dit « tiens, ce serait cool si un logiciel faisait "ceci-cela" » ?
N’avez-vous jamais eu l’idée de faire votre propre programme ?

Et bien sachez que c’est possible avec la programmation ! En fait, c’est même le but de la programmation.

Apprendre à programmer c’est fun ! Ça demande du temps et de la patience, mais une fois qu’on a atteint un certain niveau, il est possible de demander à l’ordinateur de faire ce qu’on veut, y compris le café s’il le fallait.
C’est exactement à cela que sert un ordinateur : faire ce que l’on veut qu’il fasse (et non pas l’inverse).

Savoir programmer, c’est reprendre la main sur l’ordinateur.

Pour terminer, voilà quelques liens sur la programmation. Ils sont du Site du Zéro, la référence francophone pour apprendre à programmer. Ils font aussi des bouquins.

  • apprendre à programmer en Python, sur OpenClassRooms. Python est sûrement plus simple pour débuter : peu de tracas avec les types de variables ou les syntaxes strictes du C par exemple.
  • apprendre à programmer en C/C++, sur OpenClassRooms. Ce langage est très connu, éprouvé, mais il a le mérite non seulement de vous apprendre à programmer avec de bonnes bases, mais aussi de vous apprendre beaucoup de choses sur le fonctionnement interne d’un logiciel informatique, qui servent dans les autres langages aussi.
  • programmer un site Web en PHP. C’est ça que je fais : PHP permet de faire beaucoup de choses, en rapport avec le Web, mais aussi autres (en CLI ou avec des bibliothèques : traitement d’images, scripts locaux, par exemple).

24 commentaires

gravatar
qwerty a dit :

Je vais pouvoir rediriger les gens vers ton article quand ils me demandent à quoi ça sert que je programme.
Pour Blogotext, 6 langages ? Sérieux ? HTML/CSS/PHP/Javascript, mais les 2 autres, je me demande lequel !

gravatar
Nickko a dit :

Exercice difficile que de décrire son métier, un de ces quatres je t'emboiterais peut-être le pas. Moi, je suis ergonome cognitif ou cogniticien.

En société, les gens qui me connaissent aime bien inciter ceux qui ne savent pas ce que je fais à me poser la question.

gravatar
Anne Onyme a dit :

Et apprendre à programmer en Java dans les sources alors ? :P
Nanmého !

gravatar
TD a dit :

@qwerty : SQL ?

Bon article. Je connaissait l'analogie pour le logiciel libre mais sans jamais penser à l'appliquer à la programmation.

gravatar
Le Hollandais Volant a dit :

@TD et @qwerty :
SQL en est un :P

Le dernier est le langage Apache (les directives dans le .htaccess que Blogotext génère lui même).


@TD : J’avais plusieurs idées pour faire une analogie : le programmeur est à ton logiciel ce que l’architecte + le maçon sont à une maison (architecte pour la théorie et l’imagination et le maçon pour la pratique et la création).
Ou alors un autre équivalent avec l’ADN, qui est composée de seulement 4 briques de bases (les structures de langages + mots clés du langage) qui permettent de réaliser des fonctions et un programme (des organes et un être vivant complet). Mais comment expliquer ce qu’est le programmeur dans l’histoire ? Vu que l’origine même de la vie est encore un peu mystérieuse…

gravatar
Julien et Nel a dit :

C'est pour ca que j'ai commencé à faire Usine à Gaz pour comprendre le code et avoir un réel contrôle sur celui-ci.

Je suis à la base bidouilleur, mais pas codeur. Cependant si on a un peu de logique, on arrive à se démerder ... on arrive peu à peu à coder directement au lieu de bidouiller.

D'ailleurs je recherche des testeurs ^^.

gravatar
Guenhwyvar a dit :


Le système qui fait fonctionner le site (BlogoText) est une suite d’une dizaine de milliers de lignes de code dans pas moins de 6 langages différents.


10 000 lignes de code pour BlogoText ? Ça fait un petit peu beaucoup, non ?

gravatar
Julien et Nel a dit :

@Guenhwyvar :Quand tu regarde le zip fait 90 ko, je crois. Je n'ai jamais réussi à optimiser autant de ligne à ce point là. Le plus important est donc pas le nombre de lignes, mais le poids total du script. Après ce qui compte surtout pour le blogueur qui utilisera le script c'est d'optimisé le théme de son coté.

gravatar
Le Hollandais Volant a dit :

@Guenhwyvar : je compte aussi le HTML et le CSS des thèmes si ça peut te rassurer.
Rien que le CSS côté admin fait 1500 lignes.
Et comptes aussi 400 lignes par langue de l’interface (y’en a 4 des langues), et une entête de commentaires sur chaque fichier (~10 lignes × ~20 fichiers)
Notes aussi que le seul script d’import-export zip/xml/WP/BT fait à lui seul 15% de Blogotext.

Y’a toujours moyen de tout mettre sur une seule ligne, mais ça ne serait pas plus élégant pour autant.

Je conviens que BT est moins léger qu’à ses débuts, c’est sûr et certains. Mais il fait beaucoup plus de choses aussi. Pas forcément du futile, mais l’édition des commentaires ou la gestion des catégories, upload d’images qui n’étaient pas là au début sont vraiment importants pour tout moteur de blog.

Maintenant j’ai intégré un gestionnaire de liens et j’oriente le projet vers quelque chose de plus important qu’un simple "blog" (mes besoins ont évolués) : gestion de fichiers, liens, autoblogs…

gravatar
Julien et Nel a dit :

@Le Hollandais Volant : Le truc qui peut prendre de la place aussi , c'est le js ou les images (même optimisé). Les lignes de codes php, html ou css, c'est pas trés lourd normalement.

gravatar
Le Hollandais Volant a dit :

@Julien et Nel : le JS me prend très peu de place, même pas 350 lignes sur tout le projet (et avec ça je compte le système de drag-n-drop).

Les images se sont principalement les icônes utilisées dnas l’interface.

gravatar
klop a dit :

L'HTML, ce n'est pas un langage de programmation mais un langage de description. Idem pour le CSS.
Quand à Apache, ce sont plutôt des directives.
Enfin, SQL, c'est un langage de requêtage.
Donc, 2 langages de programmation pour ce site : JS et PHP.

Pour Julien et Nel, le JS est un langage extrêmement compact, pour peu que tu codes sans redondance.
L'HTML est déjà plus consistant, avec les balises ouvrantes, fermantes...

gravatar
Le Hollandais Volant a dit :

@klop : je sais, je sais.
Mais je n'ai pas dit que blogotext contenait 6 langages de prog, mais 6 langages différents.

Ceci dit, Apache et SQL permettent de faire des choses dynamiques aussi.
SQL peut effectuer des conditions et d'autres trucs typiques d'un langage de prog.

Le HTML n'est clairement pas de la prog.

gravatar
Julien a dit :

Pour jquery, j'ai décidé de le charger directement via le site de jquery pour diminuer le poids et augmenté la vitesse.

gravatar
Guenhwyvar a dit :

Ça me paraissait beaucoup, mais c'est vrai qu'avec les différentes langues et le CSS…

gravatar
qwerty a dit :

Impressionner. Mais que genère tu pour apache mise a part interdire l'acces à ton administration qui doit être automatique ?

gravatar
Vince a dit :

Complètement vrai. C'est cette démarche qui m'a fait passer le pas la semaine dernière: après des heures à suer j'ai enfin mon petit aggrégateur de liens php maison. Je me sens comme une cuisnière qui vient de pondre son premier pot au feu et qui débarque dans la salle a manger avec un tablier ou l'on trouve d'écrit en gros, en comic sans, "C EST MOI QUI L'AI FAIT". Apprendre à coder, c'est pas sorcier, c'est un peu complexe au départ, et très gratifiant au final!

gravatar
alt+la a dit :
bonsoir :)

Très passionnant mon cher Timo :)..
Le lien de @Gatitac donne une erreur 404 :(

ÉDIT de Timo : corrigé.
gravatar
Deste a dit :

Vais faire mon raleur pour changer, mais je suis absolument contre cette fichu idée de vouloir initier tout le monde a la programmation !!

Dans l'idée je suis totalement d'accord, mais dans le concret, cela fait une armée de noobs qui pondent des codes merdiques de tous les cotés.
Et en tant que dev pro, on fini toujours par tomber sur un reste d'un de ces noob, source de bug et perte de temps !

La programmation devrait donc etre réservée, comme toute autre activité pouvant poser des soucis a d'autre, a des gens expérimentés ! (meme si il restera toujours des diplômés incompétents en plus...)

Bref, cétait mon coup de gueule, alors comme je sais bien que ca ne changera rien, je te demanderai juste ceci :
Initier les gens à la programmation c'est bien, mais il faut également leur faire comprendre qu'il ne faut réfléchir a ce qu'on fait.

Le kikoonoob pense toujours que "c'est pas grave, je verrais plus tard, personne d'autre touchera a ce code"
Mais sans vouloir m'étendre sur le sujet, c'est toujours faux.

En gros, ne plus initier tout le monde a la programmation, mais au dev (analyse, conception, réalisation, débug, patron de conception etc)

Merci :)

gravatar
JB a dit :

@klop : SQL permet de créer des functions, des procédures, d'utiliser des conditions, des functions internes, des maths, etc. C'est bien un langage de programmation.

gravatar
Le Hollandais Volant a dit :

@Deste : on a tous été noob, moi aussi.

J'ai pas vocation à devenir un pro, mais en tant que passion/hobbie je vois pas le soucis. La prog est une activité comme les autres.

J'ai moi même eu à faire à des codes pourris dont j'ai du effacer les 9/10e avant de bosser avec, mais bon, au moins un code est mieux quand il est partagé sur le net...
Ça depane, même un code merdique... Je trouve...

gravatar
KB a dit :

Effectivement c'est toujours dur de décrire son métier à quelqu'un qui n'est pas dans le milieu. Je pense que tu as assez bien réussi ton pari !
J'ai essayé de décrire de mon coté ce qu'était un logiciel embarqué ... pas évident  :)

Les commentaires sont fermés pour cet article