Ce que j’aime par dessus tout, avec tout ce qui touche la programmation, le développement informatique, et en général la technologie, c’est que tout va très vite, et que tout est en constante mutation. Cela permet notamment de se mettre dans un état d’esprit différent, ou l’on doit constamment se mettre à niveau, apprendre, et surtout, ne jamais rester sur ses acquis en restant curieux.

Depuis 3-4 ans, deux principaux langages de programmation, avec un fort potentiel, ont fait leur apparition. Et ce qui est assez drôle, c’est que ce sont deux géants du web, et plus particulièrement deux des plus grosses compagnies sur le marché des navigateurs web qui en sont à l’origine. D’une part, Google propose le GO (ou goland), d’autre part, Mozilla a créé le Rust (le nouveau moteur de firefox, Servo, est d’ailleurs développé a l’aide de ce langage). Dans chacune des situations, la mise en place de ses nouveaux langages partent du même constat : on ne peut plus développer comme avant, les développeurs ont besoin de langages (d’outils donc) plus facilement maintenables, plus malléables, plus « safe ».

 

L’intérêt des développeurs pour Rust ne cesse d’évoluer (selon le nombre de recherches faites sur google sur des sujets liés a ce langage au cours du temps).

 

Et pourtant… Qu’est-ce qu’il en existe, des langages de programmation ! En plus avec la forte avancée du Python et du JS ces dernières années, je pensais personnellement que la migration vers des « nouveaux langages », plus haut niveau, était déjà faite depuis longtemps.

Et puis en travaillant de nouveau beaucoup en C/C++, j’ai compris. Le GO, et plus particulièrement le Rust ne s’adressent pas qu’aux développeurs web. On parle ici de langage de programmation système (du moins pour le Rust), qui peuvent remplacer le vieux C (qui date d’il y a plus de 50 ans pour rappel !).

Personnellement, j’ai toujours aimé le C. C’est simple (si si, je vous assure, une fois la partie sur les pointeurs passée, le plus dur est appris, enfin… tant qu’on ne s’attaque pas au multi-threading). J’avoue que même si j’aime beaucoup également le C++, j’ai un peu plus de mal avec ce dernier (surtout pour travailler sur des projets communautaires). Pourquoi ? Et bien je pense que c’est avant tout une histoire de paradigme.

Pour ressaisir le contexte (et en apprendre un peu plus sur moi au passage ;)), lorsque je suis sorti d’IUT informatique, je n’imaginais même pas qu’on puisse développer des logiciels sans passer par le paradigme de la programmation orientée objet. Mais je me suis rendu compte plus tard, que les classes, le polymorphisme, et tous les design patterns, tiennent la plupart du temps, dans les projets d’entreprises concrets, plus de la « branlette intellectuelle » qu’autre chose. A la base, tous ces éléments sont mis en place pour avoir un code maintenable dans le temps pourtant. Hors d’après mon expérience professionnelle (3 ans sur des projets incluant de 2 a 20 personnes), c’est parfois l’inverse qui se produit. Le paradigme objet pousse à coder plus, à tout voir sous forme de classes, d’héritage, d’interfaces. Et une architecture de code simple sur le papier se retrouve très souvent extrêmement complexe, pour au final pas grand chose…

Bref, on reviendra sur le sujet dans un prochain article si ça vous intéresse. Revenons à nos moutons.

Comme vous l’aurez compris, je suis un programmeur qui n’a pas forcement de langage fétiche. Je m’adapte, et j’essaye de prendre le meilleur en fonction de la situation donnée. Et je dois bien avouer que depuis quelques mois, le Rust me fait un peu de l’œil, notamment pour son aspect « safe ». Si je peux être plus productif en évitant les bugs à effets de bord, moi je dis oui ! (Tout en ayant moins de problèmes avec le multi-threading au passage ;)).

Le problème, c’est que je souhaite bosser dans le milieu du jeu vidéo, et jusqu’ici, ce dernier est complètement dominé par le C/C++ (notamment pour des questions de performance). Alors qu’on soit bien d’accord, personnellement (et je pense que c’est l’avis d’un grand nombre de développeurs), le langage m’importe peu, ce n’est qu’un outil qui m’aide a réaliser ce que je veux. Cependant, on ne peut pas cacher non plus qu’une expérience professionnelle ou personnelle de plusieurs années sur un langage donné, surtout si c’est un langage aussi complexe que le C++, est un véritable atout sur un CV.  Bref, jusqu’ici, j’essayais de rester fixé sur le C/C++ essentiellement pour cette raison (et plus particulièrement le C d’ailleurs, car en plus de ça, j’ai beaucoup de plaisir a coder avec ce langage).

Mais ça, c’était jusqu’à un twitt récent, du directeur technique du studio Ready At Dawn (ils ont développé The Order 1886, sans doute l’un des plus beaux jeux jamais sorti sur PS4), où l’auteur affirmait ne plus avoir de raison de rester sur du C/C++, quand le Rust (selon les tests pratiqués en interne) était aussi performant, et permettait de développer plus rapidement. Ce qui leur permet au final d’être plus productifs.

 

 

 

Et oui, Rust commence à s’immiscer partout, et même dans le jeu vidéo ! Et au delà de l’impact qu’a eu ce twitt (plusieurs dizaine de développeurs seniors ont répondu, et ont partagé leur enthousiasme ou leur septicité par rapport à ce choix), c’est aussi le petit + qui a fait germé dans ma tête l’envie de vraiment m’y mettre. C’était le bon moment, ça présentait une occasion idéale pour moi. En effet, comme je vous le racontais au tout début de cet article, ce qui est passionnant avec la programmation, et les nouvelles technologies en général, c’est qu’on doit constamment évoluer, apprendre, et rester curieux. Et personnellement, j’ai besoin d’être stimulé, et justement, ça tombe bien, également d’apprendre ! Et quelle meilleure occasion alors pour apprendre le Rust ? Ça me constitue de plus un challenge parfait pour le lancement du blog !

Bref, c’est donc décidé, je vais commencer à apprendre le Rust en développant des petits projets, et très probablement des petits jeux. Vous retrouverez donc dans les semaines à venir un ou plusieurs articles dans lesquels je vous raconterai mon expérience avec ce langage, et ce que j’en pense. Je pense aussi écrire des post-mortem rapides des projets que j’ai développé. Et si jamais vous aussi, cela vous tente d’apprendre un nouveau langage de programmation, n’hésitez surtout pas à vous lancer ! Faites un « défi 30 jours » par exemple (1-2 heures par jour pendant 30 jours, en développant un programme qui sera complètement fini à la fin de cette période). Mais surtout, trouvez des projets a réaliser à l’aide de ce langage en question qui vous motivent vraiment ! Pour moi, c’est le meilleur moyen d’apprendre un langage de programmation.

En conclusion, je vous retrouve donc dans quelques jours, pour vous faire par de mes premières impressions !

 

 

Merci d’avoir pris le temps de lire cet article. Est-ce que cela vous a intéressé ? Est-ce que vous avez appris quelque chose ? N’hésitez pas à me partager votre opinion sur le sujet via les commentaires ci-dessous cet article.

Et si vous aimez ce contenu, vous pouvez vous abonnez à ma newsletter (si le coeur vous en dit), afin de rester informé des dernières nouveautés du blog, mais également pour recevoir (pas plus d’une fois par semaine), d’autres contenus que je juge intéressant sur tout ce qui touche la programmation ou le développement personnel.

Inscription à la newsletter :

[newsletter]

 

Victor Gallet

Victor Gallet

Programmeur jeu vidéo. J'aime par dessus tout apprendre, et je suis un éternel curieux de tout. Mon principal but dans la vie est d’être une meilleure personne, et de partager mes (faibles) connaissances avec les autres.

2 Comments

  • Sam dit :

    Je suis intéressé par le langage informatique, je n’ai jamais fait de programmation mais je suis motivé pour apprendre. Après avoir fait le tour des langages pour en choisir un, j’ai trouvé Rust avec un fort potentiel, il a vraiment l’air intéressant et c’est celui qui me plait le plus. Il est nouveau, malheureusement peu de tutoriel et de cours en français, tout est en anglais et c’est bien dommage, alors quand j’ai trouvé votre site c’est un peu le soulagement. Pourquoi ne feriez-vous pas un livre ou un blog avec des travaux pratiques en Rust, avec des cours sur l’utilisation d’un IDE comme Vscode par exemple.

    • Victor Gallet dit :

      Hello Sam, et bienvenue parmis les programmeurs 🙂
      Alors pour te répondre en toute honnêteté, je ne suis absolument pas un expert du Rust. Je programme depuis que j’ai 14 ans, mais mes compétences les plus poussées sont en C.
      D’ailleurs, si tu commences la programmation, je ne pourrais que te conseiller dans un premier temps (par exemple le temps d’un projet, ou de 3-4 mois), de te concentrer à fond sur le C plutôt que le Rust.
      Cela te permettra d’avoir une meilleure vision de ce qu’est concrètement un ordinateur, de ce qu’est la mémoire, et des possibilités du processeur (avec peut-être du multi-threading).
      Je te conseille vivement cela car avoir une experience d’un langage comme le C, qui est très simple (si si, je te l’affirme, il n’a que peu de features au final), te permettra par la suite de comprendre certains aspect du Rust, et pourquoi certains choix sont fait (notamment par exemple tout ce qui touche au borrow checker, la feature la plus essentielle pour moi du Rust qui le différencie des autres langages).

      Pour finir, effectivement le Rust est encore jeune, mais il a un bel avenir devant lui puisque plusieurs entreprises commencent à l’adopter, en remplacement du C/C++. C’est même le cas dans le jeu vidéo AAA d’ailleurs, avec Embed Studio.
      Personnellement, je préfère le C dans tous les cas, car c’est un langage plus simple. Cela dit, il ne profite pas d’un ecosystème « moderne » comme le Rust (avec cargo, le package manager…).

      Bref, je ne suis absolument pas calé sur le Rust, tu m’en vois désolé, je ne fais dans cette série que partager les connaissances que j’ai acquises en avançant dans ce petit projet.
      Par contre, ce que je te conseille si tu n’as pas peur des pavés en anglais, c’est de lire la documentation officielle. Pour une fois qu’un langage a une documentation qui explique bien les concepts de ce dernier, ça serait dommage de passer à côté 😉
      La voici si jamais : https://doc.rust-lang.org/1.8.0

      Encore bon courage en tout cas dans ton parcours de programmeur !!!

Leave a Reply

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.