Introduction à la programmation informatique

Bernard Amade

Ce document est un extrait

Ce document vous permet de survoler quelques extraits du livre.

Les chapitres contenant des extraits en libre accès sont marqués avec les caractères §§ accolés au titre (les autres chapitres n’ont que leur titre mais pas de contenu).

 

Les représentations symboliques transcrivent l’observation, l’exploration et le questionnement des objets et de la réalité du monde.

 
  -- Programme de l'Education Nationale

Ce livre est destiné à des personnes voulant comprendre les enjeux de la programmation en informatique.

Ce peut être parce qu’elles veulent ensuite apprendre un langage de programmation, ou que leur métier les mettra au contact de programmeurs, ou qu’elles programment déjà mais veulent revenir sur les principes fondamentaux de leur pratique, ou encore parce qu’elles estiment que c’est un complément naturel à leur culture.

Le point essentiel de ce document est d’expliquer le pourquoi des différentes techniques qui sont proposées. Il existe des pratiques de la programmation très différentes, il existe aussi des langages de programmation qui proposent des modes d’approche très différents. Il est possible que le choix d’un langage résulte de circonstances que nous ne contrôlons pas complètement, mais si le programmeur se fixe des objectifs ambitieux de qualité du code tels qu’ils sont décrits ici alors nous espérons que ce livre aura été d’un apport précieux.

Les principes exposés ici s’articulent autour d’un concept central que nous appelerons le "contrat"

Quand on écrit du code on utilise des codes écrits par d’autres et d’autres (nous l’espérons) utiliserons nos codes.

On a un "contrat" entre un programmeur "réalisant" (qui a écrit un code) et un programmeur "appelant" (qui utilise ce code).

La programmation est une activité éminemment sociale: même le programmeur le plus solitaire et travaillant la nuit en se nourrissant de pizzas se doit quand même d’interagir avec d’autres programmeurs.

Il y a donc échange et les termes de cet échange sont importants: que peut-on faire avec un code donné? (et que ne peut-on pas faire!) Ce "contrat" doit être bien déterminé, testé et documenté pour que les agencements résultants aient un comportement raisonnable!

Ces principes se retrouvent dans la notion de type: grosso-modo on définit quelque chose par ses propriétés. (On notera que cette approche s’introduit de plus en plus dans les théories mathématiques)

On ne trouvera pas ici d’exposé théorique autour de ces concepts mais nous espérons que chacune des explications apportées éclairera petit à petit différentes facettes des grands thèmes de réflexion sur la programmation.

texte

Vous trouverez ici quelques recommandations fortes concernant les techniques de programmation. Comme toujours rien n’est absolu: rien ne vous empêche de réfléchir pour voir jusqu’où il est pertinent d’appliquer ces règles.

N’oubliez pas: la programmation est un art! Nous espérons qu’il vous plaira et que vous vous formerez ensuite pour bien stimuler votre réflexion et votre pratique.

Une des difficultés de cet exposé est d'équilibrer la théorie et la pratique. Comme vous serez amené (nous l’espérons) à vous intéresser à un langage particulier nous avons pris l’option de vous faire utiliser un langage qui a des caractéristiques suffisantes pour un apprentissage simple des principes fondamentaux: le langage Groovy. Il y a toutefois peu de chances que ce soit votre langage de prédilection lorsque vous serez au contact d’un langage de programmation, mais ce n’est pas un handicap.

(Remarque complémentaire: Groovy offre plus de facilités qu’exposé ici -en particulier au niveau syntaxique- mais notre objectif est de faire une présentation générale qui ne fasse pas appel à trop de particularités de ce langage).

Pour simplifier l’exposé nous n’avons pas hésité à indiquer des liens vers des sujets traités en détail par wikipedia (si vous lisez ce texte dans un format électronique les liens sont actifs!). Dans quelques cas particuliers vous trouverez quelques courts extraits de ressources sur le web recopiées directement dans le texte (c’est le cas par exemple dans les annexes décrivant les langages de programmation) -à part ces citations le reste du texte est © Bernard AMADE-

texte

Le lecteur peut donc réaliser des exercices soit avec une installation standard de Groovy (décrite un peu plus loin) soit avec avec une bibliothèque de codes associée à cet ouvrage. Les ressources concernant cette bibliothèque Scrountch (codes exécutables et documentation) se trouvent sur le site WEB de l'éditeur du présent ouvrage.

Quelques utilisations de scrountch:

  • programmation de formes graphiques (dans l’exemple un étoile dessinée au moyen d’une "tortue" programmatique)
  • animations (dans l’exemple un dinosaure traverse un champ)
  • jeux (dans l’exemple un jeu bien connu)
  • modifications et assemblages d’images par programme (dans l’exemple: une image passée en sépia puis reimprimée dans un médaillon sur un fond de marguerites)
  • tracés de fonctions (par points, courbes, histogramme,…)
  • etc…

une étoile graphique dessinée par un trait au moyen d’une tortue une image animée d’un dinosaure marchant sur un champ de marguerites

un jeu de tic-tac-toe avec des lettres X et O dessinées graphiquement en couleur des manipulation d’image: un portrait en sépia

3 tracés de la fonction sinus: avec des points

Cette bibliothèque scrountch pourra être utilisée par le lecteur de deux manières:

  • Pour exécuter les codes marqués Experimentation: ces codes illustrent les points qui viennent d'être exposés. Le lecteur pourra les copier, les tester, les assimiler, les reprendre (de mémoire?) et les modifier.
  • Pour enrichir son expérience en imaginant des codes avec des fonctionnalités plus riches (animations, jeux, etc.)

Le livre comporte plusieurs parties correspondant à des phases d’apprentissage très différentes:

  • Les chapitres 1 à 5 doivent permettre de se faire une idée des bases de la programmation. Il est important de réaliser les exercices d’accompagnement (ou les experimentations) pour assimiler des principes fondamentaux.
  • Le chapitre 6 est conçu pour donner quelques idées sur ce qui se passe "sous le capot" (cela permet de visualiser certains aspects techniques sous-jacents).
  • Les chapitres 7 à 11 constituent une introduction à des concepts plus avancés. Il n’est pas nécessaire de les assimiler immédiatement mais il peut être utile d’y revenir ultérieurement dans le cadre d’une préparation à la pratique professionnelle.
  • Le chapitre 12 est également consacré à des aspects plus professionnels mais il est vivement recommandé de s’en informer le plus tôt possible (ils ne présentent pas de difficultés conceptuelles).

Table of contents

previous page start next page