Programmer

Pas vu
Vous en êtes enfin arrivé au point ou vous allez pouvoir apprendre comment écrire vos propres programmes en utilisant tout ce que vous avez déjà vu dans les pages précédentes.

Il reste encore quelques bricoles à voir qui ont un accès possible depuis le Javascript, comme:

  • Les layers, couches d'images et/ou de texte dans la page web.
  • Les Plugins (programmes de traitement des données)
  • Les Applets (programmes ou routines compilées)
Mais rien de tout ceci n'est vital, simple, compatible, ou indispensable, et nous le verrons éventuellement en temps voulu.

Réfléchir
Vous allez encore croire que je suis un bavard infernal et que j'écris plus de texte inutile que d'explications, mais je veux juste vous éviter les ennuis habituels causés par la précipitation normale du débutant.

J'ai déjà fait un parallèle entre la construction et la programmation dans les pages précédente, et comme il est excellent je vais continuer à m'en servir, voici donc les conseils vitaux avant de commencer:

  • On ne construit pas les fondations sans connaître la surface de la maison.
  • On ne change pas l'emplacement de la porte d'entrée quand les murs sont construits.
  • On ne rajoute pas dix étages sur une base prévue pour un seul.
  • On pense à mettre des fenêtres.
  • Etc, etc, etc...

Bref, vous l'aurez compris, il faut avoir une idée claire et précise de ce que l'on veut faire, si on veut avoir une idée claire de comment la réaliser dans un programme, d'autant plus qu'il existe de nombreuses façons de construire les deux.


Découper
Un programme est rarement simple, rarement homogène, nécessite parfois (voire souvent) des routines de conversion pour traiter quelque chose qui n'a qu'un rapport vague avec le but à atteindre.

Pour résoudre un problème compliqué, on le découpe en autant de petits morceaux que nécessaire, simples à résoudre, ou à éviter, voire dans les cas graves, à modifier pour essayer quand-même d'atteindre le but fixé. C'est simple, mais c'est souvent plus facile à dire qu'à faire.

Dans les cas très graves, on peut même ne pas savoir comment résoudre quelque chose et ne plus pouvoir le découper en morceaux plus petits, il faut alors envisager de demander de l'aide, de modifier toute la stratégie, ou pire encore, changer le but à atteindre.

Comme disait un de mes profs, un problème bien exposé est déjà à moitié résolu (mais il m'a fallu des années pour l'admettre).


Chercher
Quand il ne vous reste plus qu'une liste de petits problèmes, il faut essayer de les organiser en routines en regardant s'il y a des paramètres à passer en entrée et à en récupérer en sortie, chercher s'il existe les routines Javascript pour les résoudre (de la version voulue et communs à netscape et msie avec les mêmes paramètres dont on a besoin pour les deux), choisir la plus appropriée, en combiner si besoin, bref chercher les moyens d'exécuter ce que vous voulez obtenir.

Comptabiliser
Une dernière étape vitale avant de commencer l'écriture du programme, comptabiliser les routines, les variables et leur type, les paramètres, les initialisations à faire, leur choisir des noms, regarder leur ordre d'exécution, etc...

Écrire
Et voici enfin ce par quoi vous auriez commencé, si je vous avais laissé faire, l'écriture.
La première étape de l'écriture commence par les déclaration de variables et de routines (à supposer que la page HTML existe déjà bien sûr), celles-ci sont à placer entre <SCRIPT> et </SCRIPT> à insérer eux-même entre <HEAD> et </HEAD>.
Si besoin, on initialise encore des choses avec un onLoad="xxxxxx" placé dans <BODY>
Puis on glisse les éventuels appels javascript nécessaires dans les autres marqueurs HTML (boutons, images, etc...).
Et enfin on place les scripts Javascript dans le corps du document (s'il y a des scripts).

Si tout à été préparé correctement c'est du gâteau, sinon aux rames galérien.


Tester
C'est ici que l'on éprouve la grosse déception, à moins d'être un crack de programmation, de Javascript, du HTML, ou que le programme écrive juste "coucou" (et encore), il est fort probable que quelque chose ne fonctionnera pas, voire même strictement rien.

Debuger (ou corriger)
C'est à ce stade qu'il arrive que l'on doive prendre des calmants, comme expliqué dans la première page du guide, il y a trois possibilités:
  • Aucune erreur ne s'affiche.
  • Une erreur vient dans un panneau mais
    • Vous ne l'avez comme d'habitude même pas regardée.
    • Elle ne sert à rien, car elle ne contient aucune info utile.
    • Les deux.
  • Le plus rare: une fenêtre vient et contient la bonne erreur (très rare).

Le problème c'est qu'il faudrait consacrer un guide entier au debuging (la chasse aux poux) et ici c'est un guide Javascript, de plus, comme d'habitude netscape et msie n'ont pas les mêmes possibilités, alors je vais me contenter de vous donner une méthode qui fonctionne avec tous les langages et tous les navigateur, elle vaut ce qu'elle vaut, mais elle a le mérite d'exister.

Pour voir si une fonction ou une routine s'exécute et fait un travail correct, si une valeur change, ou bien où le programme se plante, il suffit de le truffer de la manière suivante.

  • Cas simples:
    alert("Variable toto="+toto);
    alert("Point no 1 ateint");
    Etc...
  • Cas compliqués:
    Ouvrir une nouvelle fenêtre de nom "MaFenetreDebug" (par exemple) avec onLoad="x=window.open('','MaFenetreDebug', 'height=120, width=200, menubar=no, resizable=yes, status=yes, toolbar=no, scrollbars=yes');" (y faut vraiment tout vous dire !), et d'utiliser un x.document.write(); avec toutes les informations pertinentes (ou non, ça c'est votre problème), et d'utiliser par exemple
    x.document.write("Routine ZZZZ, paramètre:"+coefficient);
    x.document.write("Je suis passé par là");
    x.document.write("Valeur de x dans la boucle:"+x);
    Etc aussi...

Il peut être très utile d'afficher la variable de comptage dans une boucle, pour s'assurer que la boucle fonctionne bien, si elle s'exécute au moins une fois ou si elle est infinie, ce qui bloquera le programme Javascript sans la moindre erreur (ou un overflow après plusieurs heures/jours/mois/années selon les cas).

Pour trouver un bug, on procède de la même façon que pour écrire un programme, on découpe et on isole la partie suspecte (avec la méthode ci-dessus), et quand il ne reste plus qu'une ligne, voire une instruction, on a trouvé l'erreur (quand à savoir comment la corriger, ça peut-être un autre problème).

Il reste encore beaucoup à dire sur le sujet, envoyez-moi vos astuces ou solutions si elles peuvent servir aux autres, je les rajouterais ici avec plaisir.


Jouir ou se suicider
Votre programme fonctionne, c'est le pied ! Envoyez-moi vite un chèque. Ça ne marche pas, ce guide est stupide, Javascript est ignoble, le web, le HTML, j'en peu plus, c'est cacaboudin, je jette mon PC par la fenêtre et je me convertis en moine trapiste (pour la bibine) !

Restez zen !

C'est pas toujours facile, pourquoi croyez-vous que mon employeur me paye comme un ministre pour écrire des programmes ?
Et vous comprenez sûrement aussi pourquoi windaube et les autres tares qui tournent dessus sont pleines de bugs, vous, vous avez juste écrit 10 lignes et ça ne marche pas, alors quand on en écrit 1 million...

Mais vous au moins vous avez peut-être une excuse, vous utilisez justement un de ces programmes pourri pour exécuter le votre.

Je vous l'ai déjà dit, en informatique 1+1 n'est pas forcément égal à deux (1.999...), il ne fallait pas sauter la page, de plus quand on à lu quelque chose 100 fois dans le même ordre on ne le lit plus vraiment, laissez passer la nuit, lisez les lignes dans un autre ordre, demandez à quelqu'un ce qu'il lit en lui montrant la partie du listing concernée (dans les cas très graves), ne riez pas, ça vous arrivera aussi de prendre un ">" pour un "<" parce que dans votre tête ça doit fonctionner d'une certaine façon, vous aurez toujours tendance à croire plus votre tête que vos yeux (enfin, seulement si comme moi vous êtes un informaticien boutonneux, pour les blondes à forte poitrine, c'est beaucoup moins vrai).

Si vous vous énervez, allez vous défouler ailleurs (ça soulage) parce que sur place ce n'est de toutes façon pas productif, mais attention, ceci n'est pas une incitation à braquer une banque ou à poser une bombe chez microcrotte ou à tirer sur les passants, exercez plutôt une activité sportive qui vous épuise physiquement (et si vous êtes une blonde avec forte poitrine, venez vous soulager chez moi).


Au fou !
Y'a pas besoin de faire tout ça pour écrire coucou dans ma page en Javascript !
Ben oui, c'est vrai, mais si vous réfléchissez, vous verrez que les étapes ci-dessus en seront d'autant plus courtes, et que quand votre programme s'allongera vous aurez déjà pris de bonnes habitudes.
De plus, je ne vous ai pas habitué à vous laisser dans le vague, la page suivante contient un exemple concret, et vous verrez que ce n'est pas si compliqué que ça.

RetourInfo Suite

Dernière mise à jour de cette page: 04/09/2001, visiteurs: depuis le 6 avril 2002