Le Hollandais Volant

Une définition de la programmation

Vendredi 17 août 2012

J’ai parfois eu à 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é.

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…

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. Idem pour nos téléphones, nos « Box », nos consoles, nos montres à quartz, nos GPS, ni 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.

Votre ordinateur dispose de programmes prêts à l’emploi : navigateur, lecteur audio, traitement de texte…

Chaque programme a été imaginé et il est passé par une étape, la programmation, qui consistait à l’imagination et à l’écriture du code source du programme. Tout comme chaque plat, gâteau ou recette a forcément eu besoin d’une étape d’imagination et d’écriture d’une recette pour exister.

Une recette de cuisine est une suite d’instructions à suivre et de procédures à appliquer sur des ingrédients pour obtenir un plat comestible.

Par analogie, la recette est le code source d’un programme. Le programme (navigateur, traitement de texte…) c’est le gâteau ou le plat.

Évidemment, quand vous utilisez le programme, vous n’avez pas besoin de connaître le code source et heureusement ; tout comme manger un plat ne vous oblige pas à connaître et savoir appliquer la recette.

Le travail du programmeur, c’est d’imaginer un nouveau programme (pour combler une nécessité technique 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).

Pourquoi programmer soi-même ?

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

Ce site web par exemple, ses couleurs, sa mise en page, ses articles qui s’affichent dans l’ordre ; fonctionne parce que j’en ai écrit le code source. 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. Évidemment, 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 de les écrire.

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 y arriver.
Je pense que c’est un peu comme découvrir la face caché de l’ordinateur, de nos jours : tout le monde utilise des logiciels, mais vous n’aviez jamais eu l’idée de faire votre propre programme ? Ne vous êtes vous jamais dit « tiens, ce serait cool si un logiciel faisant ceci-cela existait ! ». 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) et c’est exactement à cela que sert un ordinateur.

Savoir programmer, c’est donc reprendre la main sur l’ordinateur. C’est ne plus être son esclave mais au contraire son maître.

Où commencer pour apprendre ?

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 le SdZ aussi. Python est sûrement plus simple pour débuter : peu de tracas avec les types de variables, les syntaxes ultra-strictes du C par exemple.
apprendre à programmer en C/C++, sur le Site du Zéro. Ce langage est très connu, pas forcément compliqué, 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.
programmer un site Web en PHP (également sur le SdZ). C’est ça que je fais : PHP permet de faire beaucoup de choses, en rapport avec le Web, mais aussi autres (CLI, traitement d’images, etc.).

Gatitac : #

Bonjour,
merci pour cet article.
Pour apprendre à programmer en C, il y a aussi le Framabook « Le C en 20 heures » http://framabook.org/6-le-c-en-20-heures :-)

qwerty : #

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 !

Nickko : #

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.

Anne Onyme : #

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

TD : #

@qwerty : SQL ?

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

Le Hollandais Volant : #

@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…

Julien et Nel : #

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 ^^.

Guenhwyvar : #


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 ?

Julien et Nel : #

@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é.

Le Hollandais Volant : #

@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…

Julien et Nel : #

@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.

Le Hollandais Volant : #

@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.

klop : #

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...

Le Hollandais Volant : #

@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.

Julien : #

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

Guenhwyvar : #

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

qwerty : #

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

Vince : #

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!

alt+la : #

bonsoir :)

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

smiley : #

@alt+la :

Faut simplement enlever les smileys que tu rajoutes aussi !

fred : #

@Le Hollandais Volant : essai

Deste : #

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 :)

JB : #

@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.

Le Hollandais Volant : #

@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...

KB : #

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  :)

niko : #

voici un lien important pour vous:http://easy-programmation.blogspot.com