dans Blog, Personnel, Programmation

La programmation de l’année 2016

On est en début d’année, c’est la période traditionnelle pour les nouvelles résolutions, les bilans, la motivation gonflée à bloc, bla bla bla. Je ne vais pas te le cacher, ces derniers temps, je n’ai plus trop la flamme du développeur, celle qui me faisait me coucher si tard à mes débuts, qui me rendait grognon quand j’étais interrompu avant d’avoir trouvé la solution. Excepté les bouts de code écrits au travail, pas grand chose à se mettre sous la dent, mais tellement de choses qui se bousculent dans ma tête. Le but de cet article sera de me vider la tête en écrivant ce brouillard dans mon esprit et de faire le point sur ce que je veux faire et ce que je vais faire.

C++

Mon langage préféré. Je suis tombé sous le charme dès les premiers instants, mais je vais être honnête : j’ai toujours un niveau de débutant. Eh oui, malgré la fréquentation d’experts, malgré tous les livres que j’ai, je n’ai pas progressé parce que je n’ai pas pratiqué, tout simplement.

Alors je ne suis pas un débutant complet non plus. Je connais les bases, mais je perds trop de temps à me rappeler de telle ou telle fonction, des subtilités et spécificités du C++ comme les templates, je reste bloqué sur les erreurs bêtes. Je suis rouillé comme un chalutier soviétique.

Alors mon premier objectif niveau programmation sera donc de reprendre et affermir mes connaissances en C++. Je ne deviendrai certainement pas un expert d’ici la fin de l’année et ça tombe bien parce que ce n’est pas le but. Non, je veux plutôt avoir des bases solides sur lesquelles bâtir. Voici comment je compte réaliser cet objectif.

  • Lire Effective Modern C++ de Scott Meyers pour mieux manier les nouveautés du C++ (normes 2011 et 2014).
  • Réviser les bases avec C++ Primer.
  • Réaliser des projets en C++, en utilisant également Boost.

J’ai la chance d’apprendre C++ à une époque où le langage s’est simplifié, les outils sont nombreux et la communauté importante, alors autant y aller à fond cette année !

Python

Ah, ce cher serpent. Hormis un pauvre script d’une vingtaine de lignes fait quand j’étais à l’université, je n’ai jamais rien codé en Python. C’est vraiment dommage, parce qu’il semble être un langage vraiment populaire, simple à apprendre et de plus en plus utilisé. On le met souvent en couple avec le C ou le C++, Python étant utilisé pour la majeure partie d’une application et les parties critiques étant recodées en natif en C ou en C++. Si Python facilite le développement par rapport à C++, ce serait vraiment bête de ma part de m’en passer.

De plus, il y a le site Zeste de Savoir qui est développé avec Django, le célèbre framework web Python. C’est un projet auquel j’ai vraiment envie de contribuer parce que j’apprécie énormément ce qu’il est. Mais avant de faire mumuse avec Django, j’ai besoin de bonnes bases en Python. Voilà le plan d’attaque.

  • Lire en parallèle Python 3 de Gérard Swinner et Learning Python de Mark Lutz, ces deux livres étant souvent cités comme étant les meilleurs en la matière, respectivement en français et en anglais.
  • Profiter des ressources disponibles sur ZdS à propos de Python.
  • Utiliser CodinGame une nouvelle fois. Je pense que je vais alterner entre C++ et Python pour résoudre les jeux.

J’ai vraiment l’impression que Python est un langage d’avenir. Que j’ai tord ou raison, autant sauter à l’eau, ça ne peut que me faire du bien.

Modification du 23/02/2016 : j’ai découvert, en plus de HackerRank, d’autres sites qui proposent de s’entraîner en Python dont Codecademy et Codility. J’en parlerais dans un autre article.

Haskell

J’avais, à la date du 23 décembre, rédigé un article sur Haskell, mais depuis, je n’ai rien écris. J’avoue que le paradigme fonctionnel est vraiment renversant et que j’ai du mal à m’y faire. Mais si je veux m’ouvrir l’esprit et progresser, je dois continuer mon apprentissage.

Par contre, je n’ai pas d’objectif précis ni d’idée de projet à réaliser dans ce langage, excepté des CodinGames. Toute idée postée dans les commentaires sera la bienvenue ! Tout au plus ai-je des ressources disponibles, mais lire pour lire n’est pas aussi instructif que si l’on pratique avec un petit projet marrant à côté.

Modification du 18/02/2016 : j’ai découvert il y a peu le site HackerRank, un autre site d’entraînement à la programmation. Là, les exercices sont classés par domaines et il y en a un … consacré exclusivement à la programmation fonctionnelle !

Le reste

Eh oui, il y a d’autres langages qui me trottent dans la tête. Ceux découverts au gré d’une page internet et qui ont attirés mon attention, ceux entendus quelque part, ceux qu’on conseille souvent comme les langages à connaître, etc. Tous les travailler cette année est présomptueux ; je ne sais même pas si je progresserai sur un seul d’entre eux. Ce n’est pas grave. Cela me sert pour noter mes idées et ne plus avoir à y penser.

  • D : désigné par son créateur comme permettant de récupérer 90% de la puissance de C++ avec seulement 10% de sa complexité, on en parle parfois comme de son successeur. Il m’intéresse parce qu’il ajoute à C++ de bonnes idées.
  • Erlang : on dit que c’est le langage par excellence de la programmation concurrente. Comme pour le fonctionnel, je pense que j’ai tout à y gagner à essayer le paradigme concurrent.
  • Ada : vénérable langage mais apparemment toujours de la partie en ce qui concerne la programmation concurrente et les applications avec un grand besoin de sécurité, comme, selon Wikipédia, le métro de Paris ou la Transmission Voie – Machine du TGV.
  • TypeScript : une surcouche de JavaScript, développé par Microsoft et open-source. Je n’aime pas JavaScript, mais c’est devenu un langage à connaître. S’il est vraiment l’assembleur du web, alors je ne veux pas avoir à l’écrire à la main mais je veux le générer. Ce langage me parait donc adapté à mon objectif (même si je sais qu’on peut générer du JavaScript depuis Haskell ou OCaml par exemple).
  • C# : le langage que j’utilise tous les jours au travail. Je le préfère largement à Java et avec la politique d’ouverture de Microsoft, son intégration sous Linux en est améliorée.

J’essaye de mixer les domaines et les langages, varier les paradigmes pour m’ouvrir au maximum à d’autres façons de raisonner et de faire. L’année 2016 est déjà entamée depuis un mois, alors autant faire que les 11 mois restants soient prolifiques et que j’avance dans ces objectifs !

Laisser un commentaire