Basics of Programming

If you don't speak French, skip this page and directly go to the How the brains work page.
If you do speak French, any help to translate this page would be greatly appreciated. If you already know a bit of Kode, you can read Some General Programming Tips instead.
= Programming, what's that? =
Pour réaliser une expérience interactive dans Project Spark, ou même un film, il va vous falloir programmer.
Cela consiste à donner à la machine — votre ordinateur ou console — une série d'instructions qu'il devra exécuter quand on le lui demande. Ces instructions, et les conditions qu'il doit vérifier pour savoir quand les exécuter, sont écrites dans un langage que la machine peut comprendre, appelé langage de programmation. Le langage de Project Spark est le Kode.
Chaque objet peut disposer d'un cerveau qui contient un ensemble d'instructions liées à cet objet. Project Spark propose une galerie de cerveaux ; vous pouvez librement utiliser ces derniers dans vos créations, ou vous en inspirer pour faire votre propre kode. Vous pouvez également sauvegarder vos propres cerveaux (ou ceux d'autres créateurs) dans cette galerie, pour y avoir accès plus tard.
Pour pouvoir partager du kode avec d'autres utilisateurs en dehors de Project Spark, vous pouvez le retranscrire sous forme textuelle (cf les conventions de retranscription du Kode du PS Wiki) ou en faire une capture d'écran, ce que nous ferons tout au long de ce PS Wiki. Cependant, pour observer le résultat de votre kode, il faut obligatoirement le placer dans un cerveau de Project Spark et tester le monde : l'interpréteur du Kode va ensuite se charger de traduire votre kode pour la machine et l'exécuter. Il est conseillé d'avoir Project Spark ouvert lors de la lecture des différents tutoriels pour tester les différents kodes proposés et appliquer les notions apprises.
= What does it need to be a good koder? =
Outre la compréhension des bases du Kode présentées dans ce Koding Curriculum, il est important de connaître les bonnes habitudes à prendre pour koder, et de manière générale, pour programmer dans n'importe quel langage.
== Rome wasn't built in a day ==
Si vous n'avez jamais programmé auparavant, sachez que l'apprentissage peut paraître rude, bien qu'il reste plus aisé pour le Kode que pour d'autres langages de programmation plus  « classiques ». Mais en y allant progressivement, vous serez étonné de tout ce que vous serez capable de faire grâce au Kode.
Commencez petit, avec les bases, et construisez pas à pas des mondes de plus en plus avancés au fil de votre apprentissage. Les très bons jeux prennent du temps à être réalisés, et demandent beaucoup de connaissances et d'expérience. Ne soyez donc pas découragé si vos kodes ne sont pas exceptionnels lorsque vous débutez, mais voyez plutôt comment vous vous améliorez au fur et à mesure de votre pratique. Assurez-vous d'avoir bien compris chaque notion avant de passer à une autre, en créant par exemple de petits jeux tournant autour d'elle.
Si vous avez des questions, n'hésitez pas à les posez dans les community forums of Project Spark.
== Logic and programming ==
Tout langage de programmation possède un vocabulaire, une syntaxe et une sémantique qui lui sont spécifiques : le vocabulaire représente les différents « mots » qui forment les instructions envoyées à la machine, la syntaxe est l'ensemble des règles d'agencement de ces mots, et la sémantique est le sens donné aux instructions.
Dans Project Spark, les mots du vocabulaire du Kode sont les tuiles de Kode. Voici la liste de toutes les tuiles disponibles.
Si votre kode ne respecte pas la syntaxe, l'éditeur de cerveau indique à l'aide d'un marqueur rouge les tuiles concernées par l'erreur de syntaxe.
Il est important de comprendre que la sémantique du Kode est différente de celle du Français. Des tuiles peuvent être arrangées de manière à produire une phrase en Français, mais cela ne veut pas dire que le kode sera interprété comme en Français. L'important est de comprendre la logique qui fait fonctionner la tuile, et que la machine ne fera que suivre exactement cette logique.
Ainsi, considérez le kode suivant dans le cerveau de votre joueur :
WHEN [sélection en monde : gobelin] [dans zone déclench.] DO [afficher] [texte : "Le gobelin est dans la zone de déclenchement"]
Malheureusement, rien ne se passe quand le gobelin est dans la zone de déclenchement du joueur. Cela vient du fait que les capteurs fonctionnent tous de cette manière : [objet dont on prend le capteur] [capteur] [objets que l'on veut capter]
Cela est beaucoup plus clair avec le capteur [détecter], par exemple :
WHEN [détecter] [sélection en monde : gobelin] DO [afficher] [texte : "Le gobelin est détecté"]
Donc le kode précédent doit être corrigé en :
WHEN [dans zone déclench.] [sélection en monde : gobelin] DO [afficher] [texte : "Le gobelin est dans la zone de déclenchement"]
Les principales règles qui régissent le kode seront explicitées tout au long de cet apprentissage. Le reste vient avec la pratique.
== Kode Organisation ==
Bien koder n'est pas qu'une affaire de connaissance du Kode et de patience. Il faut aussi faire attention à organiser son kode au mieux, surtout pour de gros projets.
Une bonne organisation permet de s'y retrouver plus facilement. C'est d'autant plus important qu'il se peut que vous ayez à faire une pause dans votre programmation, et il vous sera alors plus facile de vous « remettre dedans » quand vous reviendrez sur votre kode. En outre, grâce aux options de remix, vous pourriez ne pas être le seul à vous intéressez à votre kode, il doit donc être compréhensible pour d'autres personnes. C'est aussi vrai si vous travaillez en collaboration avec d'autres kodeurs sur votre monde.
En plus d'une meilleure compréhension, cela vous permettra d'aller plus vite. Ceci peut sembler paradoxal, car bien préparer et organiser son kode prend du temps, mais vous en regagnerez par la suite en passant moins de temps à vous relire, en itérant plus vite, et même en déboguant plus vite (voir ci-dessous), ou encore en évitant d'avoir à réécrire plusieurs fois des kodes très similaires. Et un minimum de préparation est nécessaire afin de réduire les chances de devoir revoir tout votre kode : par exemple, une modification importante à faire qui requerrait de revenir sur beaucoup de lignes de kode, toutes en lien avec cette modification.
Nous allons donc donner quelques conseils d'ordre général. Quand vous aurez acquis plus de connaissances après votre lecture du Koding Curriculum, vous pourrez avoir plus de détails sur la page Some General Programming Tips.
=== Preparation ===
Tout d'abord, réfléchissez au type de jeu que vous allez créer. De quel genre de kodes aurez-vous besoin ? Quels seront les objets qui contiendront ces kodes ? Une bonne habitude à prendre est de nommer tous les objets importants, et de rendre bien visibles les cubes logiques qui contiennent les kodes principaux. Activez l'option "Show Named Objects" dans les options pour vous repérer parmi vos objets. Activez également l'option "Show Brain References", afin de connaître les liens entre vos différents objets.
=== Koding ===
Essayez du mieux que vous le pouvez de bien aérer votre kode. Vous devez être capable de distinguer comment il est structuré, c'est-à-dire quelle partie fait quoi. Laissez des lignes vides et utilisez les pages à bon escient pour regrouper les kodes qui fonctionnent ensemble. Préférez un kode qui soit clair, lisible et bien organisé, plutôt qu'un ramassis compact de lignes de kode toutes sur la même page.
Choisissez bien le nom de vos variables, pages et cerveaux, et évitez les appellations trop génériques comme "Ennemi 1" pour un cerveau, ou "x", "y", "Nombre" pour une variable numérique, les noms doivent être suffisamment descriptifs pour que vous sachiez globalement à quoi sert votre variable, page ou cerveau d'un simple coup d'œil.
(Note pour la rédaction : rajouter un paragraphe -> Il faut banir du mieux que l'on peut la duplication de kode.)
=== Debugging ===
En informatique, un bug ou bogue est un défaut de conception d'un programme informatique à l'origine d'un dysfonctionnement. Des bugs peuvent apparaître lors du déroulement de votre jeu, il se peut que ceux-ci soient en fait des bugs du logiciel Project Spark, mais en général, ils seront plutôt dus à des erreurs dans votre kode. Le débogage consiste en la recherche et la correction de ces bugs.
La plupart des langages de programmation disposent de débogueur pour vous aider à déceler la présence et l'origine des bugs. Ce n'est pas le cas de Project Spark, et vous devrez donc afficher par vous-même des messages d'erreur et la valeur de vos variables afin de retrouver ce qui ne va pas. Vous pouvez cependant activer Display System Usage Metrics dans les paramètres pour obtenir des informations relatives à la performance (nombre de tuiles utilisées, coût des effets visuels, etc.).
Comme dit précédemment, une bonne organisation du kode permettra de faciliter grandement le débogage. Il faut pouvoir répondre clairement à la question « Qu'est-ce que mon code est censé faire et pourquoi ? » en relisant son kode, et se demander ce qui nous fait dire que le kode ne fonctionne pas comme voulu. Ensuite, il faut comprendre ce que le kode fait réellement, grâce notamment aux informations de débogage que vous allez afficher, et il ne faut ainsi pas hésiter à implémenter un mode "débogage" avant même de rencontrer vos premiers bugs.
Vous devez être capable d'isoler chaque partie de votre kode et de tester en détails toutes les modifications possibles que vous pouvez y apporter afin de construire une représentation mentale de la façon dont la machine lit et exécute vos instructions. N'utilisez que des tuiles que vous connaissez, sinon allez voir des tutoriels et testez leur comportement pour être sûr de bien les comprendre avant de les utiliser dans des kodes plus compliqués.
Ce processus de débogage est extrêmement important. Déjà parce qu'il prend beaucoup de temps, généralement plus que le temps passé à produire le kode. Ensuite parce qu'il vous permettra de mieux comprendre comment le Kode fonctionne. N'oubliez pas que le Kode est un langage pour communiquer avec la machine, koder consiste donc à formuler vos instructions à la machine dans un langage qu'elle comprend, et déboguer signifie alors repérer la dissonnance entre ce que vous vouliez dire et ce que vous avez effectivement dit en Kode. Par conséquent, votre maîtrise du débogage influera sur votre rapidité d'apprentissage.
===Further information===
Nous rappelons que vous pouvez trouver plus d'informations, allant plus dans les détails vis-à-vis du Kode, sur la page Some General Programming Tips. Une connaissance préalable des notions de base du Kode est nécessaire pour bien comprendre.
= Read Next =
How the brains work
< Back to Koding Curriculum 
fr:Bases de la programmation
Category:Brains