Premium
[Press Space to continue]

[Press Space to continue]

Par hairaz Blog créé le 07/12/10 Mis à jour le 31/07/12 à 18h21

Dev' blog d'un petit jeu pour le concours Innov'game : Space (à la gloire de la barre espace, et du jeu vidéo par la même occasion).

Ajouter aux favoris
Signaler
Space

Je suis en plein dedans, donc j'ai décidé de faire un petit article sur pourquoi apprendre à programmer. Je sais qu'en ce moment, les billets sur mon jeu se font rares : trop occupé par des révisions plus importantes, je révise mes bases et je rassemble mes idées, en attendant les vacances.

- En fait, programmer, c'est quoi ?

Programmer, c'est créer des programmes. Des programmes, vous en avez où ? A peu près partout sur  vos appareils électroniques : de votre ordinateur (Word, IE, COD ou Windows sont des programmes) à vos consoles (le firmware est un programme, les jeux aussi) en passant par votre calculatrice ou votre appareil photo (je ne vous réexplique pas). Tous ces programmes ont été programmés !

Concrètement,  programmer, c'est écrire des lignes de code, parfaitement lisibles humainement, mais dans un code très spécial : le langage de programmation. C'est une langue très structurée, très organisée, qu'un autre programme sur votre ordinateur va comprendre et transformer en une série de 0 et de 1, que votre ordinateur pourra lui-même directement comprendre (pour être précis, c'est Windows qui le comprendra)(et pas la peine de vous poser la question de la poule ou de l'oeuf, c'est pas ce qui nous intéresse ici).

- Pourquoi est-ce que l'on a besoin de traduire le code en 0 et en 1 ? Windows ne pourrait pas comprendre le code lui-même ?

Si, bien sur que si, ca existe : on appelle ca les scripts. Seulement, ca prend environ 10 fois plus de temps à l'exécution. C'est pour cela que l'on a inventé des programmes capables de transformer un code que vous pouvez tout de suite comprendre en un code que votre ordinateur peut tout de suite comprendre : les compilateurs.

- Mais, quand on voit des gens qui créent des jeux vidéos, il ne tapent pas des lignes de code, ils font des croquis, ils modélisent en 3D, ils organisent les niveaux. Alors, au final, pourquoi j'apprendrais à programmer ?

Raison n°1 : C'est le secteur qui recrute le plus dans le jeu vidéo !

Bon, là, je ne vous apprends rien. Les jeux vidéo, ce sont à la base des centaines de milliers de ligne de code. La programmation sert principalement aux programmeurs, évidemment, qui sont chargés de créer un moteur de jeu, le middleware. C'est un gros programme qui sert à ce que des gens qui s'y connaissent moins bien techniquement puissent participer simplement (enfin, simplement, c'est relatif) à la création du jeu. Ainsi, le pôle programmation dans la création de jeux est central mais souvent méconnu, et c'est là que ça embauche le plus !

- Mais, une fois que le middleware est fini, les programmeurs ont plus rien à faire !

Bien sur que si ! Le middleware est en constante évolution : les programmeurs l'améliorent, y ajoutent des plug-ins, et surtout l'adaptent au jeu. De plus, il faut aussi faire de la programmation dans le middleware. Une fois celui-ci fini, c'est à l'intérieur de ce gros programme que les codeurs pourront s'amuser à coder l'IA, le gameplay, etc.

Raison n°2 : Il n'y a pas que les codeurs qui codent

Cependant, il faut aussi savoir qu'il est très utile voire indispensable pour un game designer de savoir programmer. Cela lui permet de mieux appréhender la structure du jeu, de comprendre ce qu'il fait exactement, et même parfois de toucher à une ligne qui ne lui plaît pas trop. D'ailleurs, dans les plus petites structures, il n'y a pas de game designer : le design du jeu se fait alors un peu en équipe, voire tout seul si l'équipe se réduit à une seule personne : savoir programmer est alors indispensable.

Raison n°3 : Ca peut vous aider en maths

Quand on programme un ordinateur, il faut être particulièrement méthodique, et surtout réussir à traduire ce que l'on veut faire en quelque chose de totalement épuré et sans ambiguïté. En fait, c'est exactement la méthode de raisonnement mathématique. En s'habituant à ça, on comprend immédiatement mieux les bases des raisonnements mathématiques et scientifiques, bref, comment fonctionnent les maths !

D'un autre côté, la programmation s'est beaucoup inspiré des maths, et vous pourrez mieux appréhender certains concepts mathématiques avec la programmation. Exemple : les fonctions ! Leur définition et leur utilité peuvent grandement différer entre les maths et la programmation, mais je dois dire qu'étant donné que j'en utilisais déjà un peu sur mon ordinateur à l'époque où on nous l'a appris en cours, j'ai immédiatement pu comprendre et maîtriser le concept en maths, alors que certains de ma classe s'y perdent encore aujourd'hui (2 ans après). Et que dire des variables, constantes, ou encore de la récurrence que j'ai vue en programmation et qui m'a servi hier dans un exo de préparation aux Olympiades de mathématiques !

Raison n°4 : Ca vous apprend plein de choses sur votre ordinateur

En apprenant à programmer, vous allez apprendre plein de choses sur votre ordinateur, indispensable pour bien comprendre ce que vous faites. Je ne vous apprends pas grand-chose, mais je sais que ce que vous aurez appris pourra surement vous resservir dans le reste de votre vie numérique.

Tiens, justement, Minecraft vient de crasher en prétextant un problème de registre ... Bon, je vais régler ça.

Raison n°5 : L'algorithmique, c'est passionnant

Un autre des aspects intéressants de la programmation, c'est l'algorithmique. Cela consiste à trouver la manière la plus simple de résoudre un problème. Définition assez vague (surtout que la simplicité n'est pas un concept mathématique), donc je vous donne un exemple : vous avez un carré, et un cercle est dessiné à l'intérieur. Le mieux est-il de calculer directement l'aire du cercle à l'aide de la formule mathématique (Pi*R²), ou de prendre des points au hasard dans le carré, de voir combien sont à l'intérieur du cercle, et d'estimer à partir de là l'aire du cercle ? Si la première solution paraît évidemment plus simple, elle ne l'est pas toujours pour certaines surfaces plus difficiles à estimer. (Les plus connaisseurs auront peut-être reconnu ici intégrales et algorithmes de Monaco)

Raison n°6 : Ca change tout le temps ...

Tout comme l'évolution technologique, la programmation est en évolution constante, il y a toujours de nouvelles choses à apprendre : des nouvelles bibliothèques (ce sont des outils qui vous permettront de coder plus vite, en s'occupant de choses à votre place, certaines sont spécialisées dans certaines tâches), des nouvelles plate-formes (programmer su Wii, Iphone, portable, PS3, etc., ça se fait comme sur ordinateur), ou alors étudier de plus près les standards (les « règles » de la programmation, c'est toujours intéressant) etc. En programmation, vous pourrez toujours en apprendre plus.

Raison n°7 : ... mais vous pouvez vite vous amuser !

Alors non, en une semaine, vous ne ferez pas un nouveau Call of Duty. Ni même un Mario. Ni même un Pac-man. Ni même un Pong. Je voulais contrebalancer ce que je disais plus haut, en revanche, il n'est pas besoin de connaître parfaitement tous les standards, de s'être avalé une centaine de documentations (les modes d'emploi des bibliothèques) et d'avoir cracké votre Iphone (j'avais entendu dire que c'était indispensable pour développer) pour pouvoir s'amuser en programmation. Personnellement, je trouve que c'est déjà amusant à faire comme ça ; mais au bout de trois mois (trois mois en y allant très tranquillement), vous pourrez vous lancer dans un premier jeu 2D. Ce que je voulais dire par là, c'est que 5 ans de théorie ne sont pas nécessaires pour pondre quelque chose d'acceptable.

Raison n°8 : Vous trouvez qu'il y a trop de langages ?

En fait, c'est pas faux. Lequel choisir ? C ? C++ ? C# / .NET ? Java ? Python ? Ruby ? Ocaml ? Ce sont tous des langages de programmation, connus, utilisés, et donc intéressants. En tout, il existe plus de 7000 langages de programmation (les chiffres peuvent différer si l'on compte les différentes implémentations de chacun, je tire celui-là de S&V, qui ne donne pas beaucoup de précision dessus). Il faut déjà savoir que beaucoup sont très spécialisés (le MISRA-C par exemple, qui sert à programmer des avions, ou même l'Ocaml cité plus haut et plutôt utilisé pour l'apprentissage de l'algorithmique, etc.), et qu'une fois que vous en avez appris un, vous connaissez les bases de tous les autres.

Je m'explique : la plupart des langages de programmation partagent les grandes lignes (conditions, boucles, ou alors POO se retrouvent très souvent et de façon très similaire), ainsi qu'une grande partie de leur syntaxe (la façon d'écrire les instructions, mot essentiel en programmation comme  en français, pensez-y dans les commentaires). Ainsi, une fois que vous en connaissez un, il faut juste revoir les variantes dans l'utilisation de ces fondamentaux ainsi que les quelques concepts spécifiques aux langages, et vous pourrez vous lancer dans l'étude approfondie de celui-ci sans passer par la première partie assez rébarbative d'apprentissage par coeur en laquelle consistent les bases.

Enfin, par quel langage commencer ? C et C++ étant particulièrement répandus, je vous les conseille, mais Java par exemple est aussi très en vogue. Bref, renseignez-vous, faites un choix, tout en sachant que ce n'est pas un choix décisif pour le reste de votre vie de programmeur.

Raison n°9 : C'est facile !

Alors, encore une fois, n'allez pas mal interpréter mes propos : la programmation, c'est un travail, c'est parfois fatiguant de passer des heures devant un ordi, c'est souvent casse-tête, et je ne vous parle même pas du débogage et des tentatives de suicide de masse qu'il peut entraîner. Ce que je veux dire par là, c'est qu'il n'y a pas besoin d'être un génie en maths pour pouvoir programmer : Addition, soustraction, multiplication, division et courage, voilà tout ce qu'il vous faut aujourd'hui pour vous lancer ! Même pas besoin d'argent : on trouve aujourd'hui beaucoup de cours gratuits sur internet, et il existe d'excellents compilateurs (enfin, IDE pour être précis, c'est-à-dire qu'il comprend entre autres un éditeur de texte) téléchargeables gratuitement sur le net.

D'un certain côté, je vous conseillerais plutôt de vous acheter un livre papier, parce que c'est bien plus agréable à lire, et vous n'avez pas besoin de naviguer constamment entre les fenêtres pour passer du cours à l'IDE. On trouve plein de livres en librairie sur la programmation, je ne peux pas vous en conseiller parce que je ne m'y connais pas (laissez un commentaire si vous avez quelques conseils, je les mettrais dans l'article). Cependant, si vous cherchez un bon tuto sur Internet, vous pouvez regarder celui du Site du Zéro sur le C et le C++, assez connu, que j'ai suivi et qui a l'avantage de former aussi à la SDL, bibliothèque 2D permettant de créer des jeux (encore une fois, je dis cela sans savoir si des livres le font aussi), et que vous pouvez retrouver par ici.

Raison n°10 : Ca vous permettra de comprendre des blagues de codeurs.

 

J'espère que j'aurais donné envie à certains, grâce à cet article, de se mettre à la programmation, juste pour voir ou très sérieusement. Je précise que je ne suis pas un expert en la matière, n'hésitez donc pas à me contacter en cas d'erreur ou d'imprécision de ma part.

 

Ajouter à mes favoris Commenter (7)

Commentaires

Dark_Gatsu
Signaler
Dark_Gatsu
Je connais rien à la programmation mais je crois que le môme voulait se "simplifier" sa punition d'écrire 500 fois "Je ne jetterai plus d'avions en papier en classe". ;)
hairaz
Signaler
hairaz
C'est vrai que c'est un mal que l'on ne répand pas assez :)
PHP et même HTML, j'ai jamais réussi à m'y mettre, je trouve effectivement que comme c'est fait au départ pour écrire du texte, puis pour le mettre en forme, puis pour coder un truc derrière ... Bref, bordélique c'est bien le mot.
(MisterP, si tu nous entends, comment tu arrives à passer la moitié de ta vie sur ca ?)
(Enfin, vu le résultat, je ne me plains pas, loin de là)
oz_fromsl
Signaler
oz_fromsl
moi c'est plutôt les math qui m'ont vaguement aidé à saisir la programmation. Les notions de groupes, d'espaces vectoriels et les lois inhérentes à ces concepts sont similaires à ce qu'on peut trouver dans les algorithmes. Bon après peut-être que je me fous la souris dans l'oeil, mais pour le peu que j'ai programmer, ça m'a plutôt aidé!
Slaanesh
Signaler
Slaanesh
Moi je me suis un peu remis au C++ en fin d'année dernière, mais je dois avouer que c'est quand même pas simple. Même si les bases peuvent être apprises rapidement, les techniques les plus avancées nécessitent pas mal de temps à être maîtrisée. Là je suis passé sur le PHP pour varier un peu, mais je déteste ce langage tant il me parait bordélique :x

En tout cas, je soutiens ton initiative pour sensibiliser les joueurs aux joies de la programmation :)
hairaz
Signaler
hairaz
@benbass : je ne suis pas encore parti dans des études si poussées, et je sais que la prog ce n'est pas ce qui m'aidera en maths pour toujours, mais je voulais juste dire qu'à certains niveaux, ca pouvait être utile.

@Zokho ; ca m'étonnera toujours d'aimer l'informatique et pas les maths. Mais bon, d'un certain côté, c'est compréhensible ^_^
Zokho
Signaler
Zokho
J'adore la programmation, mais les math ne sont vraiment pas une matière que je porte dans mon coeur. :D
benbass
Signaler
benbass
Raison n°3 : Ca peut vous aider en maths
Pas dans ma Licence d'Info je peux t'assurer. :D La moyenne général en Algebre ne doit pas dépasser les 7 ou 8 sur 20. Pareil en Analyse qui chaque année font baisser tout la moyenne de la promo.
Par contre , tout a fait d'accord avec ta dernière phrase sur le sujet. Le langage de base en programmation est facile et l'on peut comprendre pas mal de chose tres vite.

Édito

Bon ! Il est temps de lancer ce blog.

Space, c'est l'histoire d'un mec. Un mec que vous contrôlez à la barre espace.

Ce blog, c'est l'histoire d'un jeu. Un jeu avec un concept tellement bizarre qu'il faut bien que je m'explique un peu.

Et je suis sur Twitter : @hairazTweet

Archives

Favoris