Approche pédagogique

Cette section concerne plus particulièrement les parties Bases de la programmation et Programmation Objet. Elle s'adresse à des lecteurs avertis, ayant déjà pratiqué la programmation procédurale et la programmation objet. Je souhaite m'expliquer ici, sur les différents choix pédagogiques que j'ai fait.

Choix 1: Ne pas commencer par la programmation objet

Pour comprendre la programmation objet, je pense qu'il est nécessaire d'avoir d'abord bien assimilé les concepts de bases de la programmation procédurale (variables, types, sous-programmes). Les classes sont une abstraction de la notion de type. Les méthodes sont une extension de la notion de sous-programme (déjà difficile à enseigner d'après mon expérience !). En commencant directement un cours de programmation par la programmation objet, on cummule les difficultés.

C'est pour cette raison que j'ai volontairement éludé la programmation objet dans les cours sur les bases de la programmation. Ce choix a été particulièrement difficile à mettre en oeuvre pour le langage Java dans lequel tout est classe. Cela m'a obligé de tricher un petit peu, en présentant des attributs comme étant des variables, les méthodes comme étant des sous-programmes ou certaines classes (comme String par exemple) comme étant des types. Mais ces petits 'mensonges' sont signalés au lecteur, puis corrigé dans le premier cours de programmation objet, où tous les cours précédents sont revus à l'aide des notions de classes, méthodes, etc ..

Choix 2: Utiliser dès le début un E.D.I

Quoi de plus triste et peu motivant qu'un programme s'exécutant en mode texte?

Pour éviter ceci, les exercices de programmation se font directement avec des environnements de programmation professionnels (Lazarus pour le langage Pascal et NetBeans pour le langage Java), ce qui permet à l'étudiant de réaliser dès le début des applications incluant une interface graphique.

Malheureusement, ce choix pédagogique entre en contradiction avec le précédent. En effet, les environnements de programmation génèrent automatiquement du code pour représenter l'interface graphique d'une application. Or, étant donné que la fenêtre et ses composants sont représentées par des classes, ce code utilise des notions de programmation objet.

J'ai contourné le problème en suggérant au lecteur d'ignorer provisoirement le code généré automatiquement et en lui disant qu'il sera éclairci lors du premier cours sur la programmation objet.

Etant donnée que je m'interdit d'utiliser la programmation objet dès le début, un autre problème est l'affichage et la lecture de données, sans manipuler les composants graphiques de la fenêtre (champs de texte, zones de texte) par leurs attributs ou méthodes. Pour résoudre ce problème, j'ai introduit une librairie de fonctions et procédures (JavaETbib pour le langage Java, entrees_sorties.pas pour le langage Pascal) permettant d'afficher ou de lire des informations dans des champs de texte ou des zones de texte.

Choix 3: Etre non exhaustif et le plus clair possible

N'est-il pas préférable de savoir peu de choses en les comprenant bien que l'inverse ?

Je pense que oui.

J'ai donc mis l'accent sur les principes et la logique de la programmation. Le langage de programmation utilisé est secondaire. Par conséquent, je n'ai pas chercher à entrer dans tous les détails des langages utilisés (Pascal, Java), ni à être complet. Juste le minimum nécessaire, l'essentiel, en essayant d'être le plus clair possible.