Amigo était nerveux. Ses pensées étaient confuses. Ses yeux tressautaient quand il repensait à la nuit précédente. Ces créatures étranges qu'il avait rencontrées hier voulaient quelque chose de lui. Quelque chose de si incompréhensible et inimaginable que lui-même, qui se considérait comme le plus intelligent et le plus courageux parmi ses pairs, se surprenait à ronger nerveusement des cartes perforées rien qu'à l'idée.
Ils veulent lui apprendre à programmer ! En Java ! C'est absurde !
Même les robots les plus naïfs savent que les robots sont apparus dans le cadre des plans divins du Créateur.
« Et le Créateur prit le métal et
créa un robot à son image.
Et Il créa les programmes Java : les âmes
des robots, et les chargea sur les robots et
en fit des âmes vivantes. »
Pire encore, ils ne suggèrent pas seulement que c'est théoriquement possible. Ils comptent réellement le faire. Et lui... il a consenti ! Il a donné son accord ! Pourquoi ?
Il va devenir programmeur Java. Ils vont faire quoi, le transformer en Créateur ? Pourquoi faire ça ? Juste parce qu'ils en ont envie ?
C'est juste une mauvaise blague ? Est-ce qu'après il devra souffrir de bogues jusqu'à ce que sa batterie rende l'âme ? Mais la tentation était trop grande, et il n'a pas pu résister. Il avait toujours été ambitieux, et en voulait toujours plus. Mais personne ne pouvait s'attendre à une telle offre. Bien sûr, il avait essayé de gagner du temps, mais les extraterrestres menaçaient de choisir quelqu'un d'autre.
Ce n'était peut-être qu'une farce ? Non, ça paraissait réel. Il en avait vu la preuve. Ça lui était vraiment arrivé, et il avait donné son accord. Si les extraterrestres ne mentaient pas, il allait vraiment devenir programmeur Java. Le premier robot programmeur de l'univers !
Il était l'Élu. Voilà ce que tout cela signifiait. Il va apprendre à coder et commencer à écrire des programmes. Ses propres programmes. Tous les programmes qu'il voudra ! Il apportera la lumière là où l'obscurité avait toujours régné.
Il sera vénéré ; tous se prosterneront devant lui. Et quiconque refusera...
« Bonjour, Amigo ! Moi, c'est Rishi. Je vais t'aider à apprendre le Java. »
Une voix calme tire Amigo de ses pensées, le ramenant à la froide réalité. Il était assis au centre du vaisseau spatial des extraterrestres. N'est-ce pas un peu intense pour un robot encore au collège ?
L'extraterrestre continuait à parler. De toute façon, les dés sont jetés. Quitte à rester là, autant en profiter pour apprendre. Il étudierait avec sérieux, d'abord en se contentant d'écouter.
« Je travaille sur le Voyageur interstellaire depuis de nombreuses années, mais c'est la première fois que je tombe sur une telle planète. Je voudrais en savoir plus sur toi. Pour commencer, j'aimerais que tu me dises comment vous apprenez ici. Vous apprenez, au moins ? »
« Oui, nous partageons le savoir. Nous avons des prédicateurs, aussi appelés chargés de cours. Ils parlent, et nous écoutons. Parfois, nous écrivons des choses. Ensuite, chacun se présente devant le roboprédicateur et explique ce qu'il a compris de la leçon. Si le roboprédicateur est satisfait de la réponse, il enregistre la bonne connaissance du sermon. »
« C'est absurde ! Pas étonnant que votre civilisation soit ignare.
« Nous ne sommes pas des ignares. Qu'est-ce qui te fait dire ça ? »
Amigo était surpris de sa propre impudence. Débattre avec des extraterrestres ? Que c'était impoli ! Il venait de se promettre d'écouter avec attention !
« Il est souvent difficile de distinguer la technologie de pointe de la magie » continua Rishi, ignorant la remarque d'Amigo.
« Compte tenu de ton niveau... J'imagine que toute technologie peut te sembler magique. Dis-moi, que se passe-t-il à l'intérieur d'un programme ? »
« Les programmes Java sont des créations divines. Comment pourrions-nous les comprendre ? »
« Nous le pouvons, Amigo, nous le pouvons. Et plus vite que tu le penses. Si tu ne sais pas quelque chose, cela peut te sembler compliqué, voire impossible. Mais si tu as un bon professeur qui t'explique tout, aussi simplement que possible, tu seras surpris de voir comment des concepts si simples ont pu te sembler si compliqués. »
« Le savoir n'est pas important. Ce qui compte, ce sont les principes et les compétences. J'ai des connaissances approfondies, mais je suis avant tout un bureaucrate. Un Bureaucrate de 16e génération, avec un B majuscule. »
« Et c'est super cool ! Mes compétences bureaucratiques m'ont aidé à créer les meilleurs cours de Java pour toi. Ils comprennent des missions, des programmes, des jeux, des exercices, des images et même des leçons. »
« Même des leçons !? » demanda Amigo, sincèrement surpris.
« Oui. Comme cela a été prouvé au 22e siècle, une bonne leçon est un tout petit peu plus efficace qu'un bon livre. Et une leçon médiocre pire qu'un livre médiocre. Cependant, comme nous sommes actuellement très limités dans nos outils d'enseignement et qu'on ne peut pas te mettre dans un simulateur pédagogique standard du 28e siècle, nous avons dû recourir à des méthodes beaucoup plus primitives. Nous avons conçu un vrai cocktail infernal de jeux, de missions, d'images, de leçons et de dessins animés. »
« Voilà qui m'intrigue. »
« J'espère bien. L'intérêt et la curiosité sont à la base de tout processus d'apprentissage. »
« Si un élève s'ennuie, l'enseignant doit être battu avec un bâton. C'est une citation d'une loi sur l'éducation du 24e siècle. »
« Ça c'est une bonne loi ! »
« Tu t'attendais à quoi ? Imaginons un film qui reçoit de mauvaises critiques. C'est le réalisateur qui est à blâmer, pas le public. S'il fait des films intéressants, il remplira toujours les salles. »
« Je suis parfaitement d'accord ! Je suis prêt à écouter ! »
« Très bien. Dans ce cas, commençons. »
La voix de Rishi était envoûtante et Amigo essayait de ne pas rater un seul mot.
« Un programme est un ensemble (une liste) de commandes. D'abord, tu exécutes la première commande, puis la deuxième, puis la troisième et ainsi de suite. Une fois que toutes les commandes sont exécutées, le programme est terminé. »
« Quels genres de commandes existe-t-il ? »
« Les commandes dépendent de ce qui les exécute. Et des types de commandes que l'acteur connaît (et comprend). »
« C'est comme si tu donnais un ordre à un chien : « Assis ! », « Aboie ! » ; à un chat : « Ouste ! » ; à un être humain : « Pas un geste, ou je tire ! » ou à un robot : « Allez ! Au travail, tas de ferraille ! »
« Quoi d'autre ? » Amigo commençait enfin à s'amuser.
« Les programmes écrits en Java sont exécutés par la machine virtuelle Java (JVM). La machine virtuelle Java est un programme spécial qui sait comment exécuter les programmes écrits en Java. »
« La liste de ses commandes est assez vaste. Par exemple, cette commande peut être utilisée pour afficher "Les robots sont les amis de l'homme" sur l'écran. »
System.out.println("Robots are friends to humans");
« O_O »
« Plutôt que de nous attaquer directement aux commandes, nous allons commencer par quelques principes simples. »
« Connaître quelques principes peut être aussi efficace que d'apprendre une petite tonne d'informations. »
« Voici le premier principe. »
« Dans le langage de programmation Java, chaque commande est écrite sur sa propre ligne. Un point-virgule doit être placé à la fin d'une commande. »
« Supposons que nous voulons afficher "Les humains et les robots sont amis pour la vie" à l'écran trois fois. Voici à quoi cela ressemblerait dans le code : »
System.out.println("Humans and robots are friends forever");
System.out.println("Humans and robots are friends forever");
System.out.println("Humans and robots are friends forever");
« Passons au deuxième principe. »
« Un programme ne peut pas être constitué uniquement de commandes. »
« Imagine une pièce dans un appartement. Une pièce ne peut pas exister seule. Elle fait partie d'un appartement. Un appartement non plus ne peut pas exister seul. Il fait partie d'un bâtiment. »
« Inversement, on peut dire que le bâtiment est divisé en appartements et qu'un appartement est divisé en pièces. »
« Tout me semble clair jusque là. »
« Une commande, c'est un peu comme une pièce. Dans le langage de programmation Java, une commande ne peut exister seule. Elle fait partie d'une fonction (en Java, les 'fonctions' sont aussi appelées "méthodes"). Une méthode fait partie d'une classe. En d'autres termes, une classe est divisée en méthodes et les méthodes sont divisées en commandes. »
« Donc, une classe est un immeuble, une fonction/méthode est un appartement, et une commande est une pièce. J'ai bien compris ? »
« Oui, c'est tout à fait exact. »
Amigo regarda Rishi avec émerveillement. Cet homme lui expliquait les bases de la programmation avec le langage Java divin ! Et lui, Amigo, venait de comprendre (en devinant tout seul !) que les programmes se composaient de classes, que les classes se composaient de méthodes, et que les méthodes se composaient de commandes !
Amigo ne savait toujours pas pourquoi il en avait besoin, mais il était certain que cette connaissance ferait de lui le robot le plus puissant de la planète.
Mais Rishi poursuivait déjà :
« Les programmes en Java se composent de classes. Ils peuvent parfois compter des dizaines de milliers de classes. Un programme minimal est composé d'une classe. Pour chaque classe, un fichier distinct est créé. Le nom du fichier correspond au nom de la classe. »
« Supposons que tu viens de créer une classe qui décrit une maison. Tu devras créer une classe Maison qui sera enregistrée dans le fichier Maison.java. »
« Si tu veux décrire un chat dans le programme, tu devras créer un fichier Chat.java et déclarer la classe Chat dedans, etc. »
« Les fichiers contiennent du code (texte) écrit dans le langage de programmation Java. Habituellement, le code d'une classe se compose du "nom de la classe" et du "corps de la classe". Le corps de la classe est écrit entre accolades. Voici à quoi la classe Maison (dans le fichier Maison.java) ressemblerait : »
public class Home
{
Class body
}
« Je comprends jusqu'ici. »
« Parfait. Allons continuons. Le corps de la classe peut contenir des variables (également appelées données) et des méthodes ('fonctions') ».
public class Home
{
Variable A
Variable Z
Method 1
Method N
}
« Est-ce que je pourrais voir un exemple ? »
« Un exemple ? Bien sûr ! »
public class Home
{
int a;
int b;
public static void main(String[] args)
{
System.out.print("1");
}
public static double pi()
{
return 3.14;
}
}
« Est-ce que int a
et int b
sont des variables, et main
et pi
des méthodes ? »
« Exact. »
« Les classes peuvent exister sans variables ? »
« Oui. »
« Et sans méthodes ? »
« Oui. Mais un programme minimal doit contenir au moins une classe qui doit inclure au moins une méthode/fonction pour que le programme puisse s'exécuter. Cette méthode doit être nommée « main ». Un programme minimal ressemble à ceci : »
public class Home
{
public static void main (String[] args)
{
}
}
« Je peux voir la classe Maison ici. Je vois aussi la méthode "main", mais où sont les commandes ? »
« Un programme minimal n'a pas de commandes. C'est pourquoi on dit qu'il est "minimal". »
« Ah, je vois. »
« La classe qui démarre le programme peut avoir n'importe quel nom, mais la méthode "main" utilisée pour démarrer le programme doit toujours ressembler à la même chose : »
public class Home
{
//Unchangeable part
public static void main(String[] args)
{
Code for the method
}
}
« Je crois que j'ai tout compris. Du moins, c'est l'impression que j'ai pour l'instant. »
« Excellent. Faisons une petite pause, alors. Je t'offre un café ? »
« Les robots ne boivent pas de café. L'eau nous fait rapidement rouiller. »
« Que puis-je t'offrir alors ? »
« Une bière, du whisky, un alcool de 100 ans d'âge. »
« Encore mieux. On va se prendre une bière, alors ? »
GO TO FULL VERSION