<linkrel="alternate"lang="fr"xml:lang="fr"title="Mon expérience avec les languages de programmation"type="text/html"hreflang="fr"href="/Scratch/fr/blog/programming-language-experience/"/>
<linkrel="alternate"lang="en"xml:lang="en"title="Programming Language Experience"type="text/html"hreflang="en"href="/Scratch/en/blog/programming-language-experience/"/>
<spanclass="sc"><abbrtitle="Trop long à lire">tlàl</abbr> : </span> Mon avis court et hautement subjectif concernant les différents languages de programmations que j’ai utilisé.
<p>J’ai dû apprendre à programmer en Pascal aux alentour de 15 ans et je l’ai aussi réutiliser un peit peu en faculté.
Je dois avouer, que je le trouve inférieur au C en tous points.
J’ai fait pas mal de chose avec ça, comme des algorithmes de graphes, des algorithmes de tri, et même un peu d’intelligence artificielle comme des algorithmes génétiques.
<p>Ah, <em>le</em> langage de programmation par excellence. </p>
<p>Une fois que vous avez compris les boucles et la récursivité.
Il est temps de passer aux choses sérieuses.
Si vous voulez avoir du code de bonne qualité, alors apprendre le C est quasi-obligatoire.</p>
<p>Ce langage est très proche du langage machine.
En particulier, (la majorité du temps).
Il y a une relation linéaire entre la taille du code en C et de son résultat compilé en assembleur.</p>
<p>Ça signifie qu’à chaque fois que vous écrivez une ligne de C, il ne va pas se passer de choses toutes bizarres comme lancer un algorithme qui va prendre deux plombes.</p>
<p>Il est très proche de la machine tout en ayant une abstraction suffisante pour ne pas être “trop” désagréable.</p>
<p>J’ai fait beaucoup de choses avec.
Tous les algorithmes de tri, des algorithmes d’intelligence artificielle (résolution de SAT3), du système, du réseau etc…
Bref il est versatile, et on ne peut pas dire que l’on sait programmer si on ne s’est jamais mis à programmer sérieusement en <code>C</code>.</p>
<p>En gros, il n’y avait pas d’aide pour structurer votre code.</p>
<p>Alors, pour aider à limiter le nombre de bug, en particulier pour la création de très gros programmes, on s’est mis à réfléchir à la meilleure façon d’organiser du code d’ordinateur.
À la fin, ça à donné la programmation orienté objet. Et donc les langages comme le C manquaient de système pour aider au développement orienté objet.
Attention, la programmaiton orienté objet n’est pas la panacée. Combien de programme utilisez-vous qui n’ont pas de bug ?
Et ça ne convient pas à tous les type de problème.
Mais pour faire une application banquaire, un système de gestion des stocks, des clients ou des archives.
C’est-à-dire un système d’information, c’est pas trop mal.</p>
<p>Donc les langages orientés objets se sont mis à fleurir.</p>
Et je dois avouer que l’expérience m’a plu.
Le seul reproche que j’ai à faire, c’est que la <abbrtitle="Standard Tempate Library">STL</abbr> n’était pas aussi complète que l’on aurait pu l’espérer pour un détail.
<p>On continue vers les langages objets. Alors, à une époque où j’en ai entendu parler, c’était <em>le Graal</em> ! </p>
<p>La portabilité, votre programme marchera partout. Il était orienté objet. Incrusté à l’intérieur il y avait des concepts d’architecture qui empêchent de faire n’importe quoi… Sauf que.</p>
<p>Sauf qu’il est incroyablement verbeux.
Et que les limitations sont très désagréables si on sait ce que l’on fait.</p>
<p>Par exemple, il n’y a pas d’héritage multiple en Java.
<p>En ce qui concerne les <abbrtitle="Graphic User Interface">GUI</abbr>, portable signifie interface fonctionnelle mais médiocre sur toutes les plateformes.
Mais surtout, ici, ce n’est pas le langage qui est la meilleure partie, c’est plutôt le framework Cocoa qui lui est le plus souvent associé qui est une merveille.
Même si ça semble être des détails sur le papier, en pratique cela fait une grande différence.</p>
<p>Vraiment jusqu’ici, même si Objective-C reste assez bas niveau, le fait que le typage de ce langage soit dynamique est un vrai plus pour l’interface graphique.
Je ne peux que vous encourager à vous accrocher à ce langage et de faire un vrai programme avec. Vous en serez certainement plus ravi qu’il n’y parrait eu début.</p>
<p>Le petit langage de script que nous utilisions tous pour faire des sites web à l’époque des gifs animées !</p>
<p>Sympatique, mais sans plus. Apparemment il y a eu pas mal de progrès depuis PHP5, un jour peut-être que j’y reviendrai. Mais, il a derrière lui une réputation de langage pour les “scripts kiddies”.
En gros ceux qui ne savent pas coder.
Des trous de sécurité de tous les cotés, etc…</p>
<p>PHP, reste pour moi le langage de l’injection SQL. J’en fait encore un peu de temps en temps. Et j’ai moi-même dû protéger les accès au SQL pour éviter les injections. Oui, je n’ai pas trouvé de librairie toute prête pour protéger les entrées SQL. Je n’ai pas beaucoup cherché non plus.</p>
<p>Lorsqu’on avait l’habitude de travailler avec des langages compilé, type C++, Java et qu’on passe à Python, on se prend une claque magistrale.
Si ce n’est pas trop compliqué, c’est le langage idéal.
Vous avez un fichier et vous voulez savoir quels sont les mots les plus utilisés.
Savoir combien de fois un mot est utilisé.
Filtrer sous des condition un peu plus compliquées qu’un grep.
Super outils. Je l’ai utilisé pour modifier en masse des centaines de fichier XML plus facilement qu’avec du XSLT.</p>
<h3id="perl">Perl</h3>
<p>Perl c’est assez magique, mais la syntaxe est tellement désagréable à lire que personne ne peut vraiment aimer programmer dans un environnement de plusieurs personnes en Perl.
A moins que tous les autres soient des cadors du Perl.
Mais la feature qui tue, les expressions régulières :</p>
Pendant des années, javascript était considéré comme un langage tout bon à vous embéter dans votre navigation web.
En réalité, javascript possède beaucoup de qualité des langages de haut niveau.
En particulier, il est facille de passer une fonction en paramèter ou de créer des fonctions anonymes (closures).
Récemment, il est devenu très rapide et beaucoup de frameworks et de librairies naissent un peu partout.</p>
<ul>
<li>Il y a Cappuccino, Objective-J (comme de l’objective-C mais avec du javascript)</li>
<li>Sproutcore</li>
<li>Spine.js</li>
<li>Backbone.js</li>
<li>jQuery</li>
<li>prototype.js</li>
</ul>
<p>En particulier avec jQuery, on peut faire des appels chainés, très agréables à utiliser.
Comme je le disais, c’est une bonne surprise, javascript a été choisi un peu au hasard lors de la création des navigateurs web comme langage de script.
Et il s’avère qu’à part sa syntaxe, tout le reste est bien.
Heureusement, en ce qui concerne la syntaxe, on peu pallier à ce problème en utilisant CoffeeScript.</p>
<p>J’ai appris CamL à la fac, j’avais trouvé cette expérience très interressante.
J’étais plutôt bon, et j’avais les bonnes intuitions mathématiques qui vont avec la programmation fonctionnelle.
Mais je dois avouer que je ne l’ai plus jamais utilisé.
Simplement, ce type de langage semble si loin de ce qui se fait pour fabriquer des produits que ça me donnais vraiment l’impression d’être un langage pour chercheurs.</p>
En général les concepts derrière tous les langages de programmation sont assez limités.
Chaque langage y va de son petit lot de nouveau concepts, et en général en une après-midi, c’est appris.
Pour haskell, c’est très différent.
Je sens bien qu’il va me falloir plusieurs semaines pour maîtriser la bête.
Ça doit faire quatre semaines que j’apprend haskell un peut tous les jours et je sais qu’il y a des notions que j’ai juste survollées et qui sont assez incroyables.
Les Monades par exemple, est un concept que je n’avais jamais rencontré ailleurs.
C’est un super concept.
De plus le design du langage en fait un parfait système pour paralléliser les calculs naturellement.
haskell sépare la partie “pure” de la partie “impure” de la programmation.
À ma connaissance, c’est le seul langage de programmation qui fait ça.
Enfin, je prend beaucoup de plaisir à apprendre ce langage.
La communauté est aussi très acceuillante.
Pas de “L0L! URAN00B!”.
Et aussi pas de concession du langage pour devenir populaire.
Le langage est bon, voilà tout.
Alors qu’en Java et C++, typiquement certain choix ont été fait en dépis du bon sens pour “faire plaisir”.</p>