her.esy.fun/src/Scratch/fr/blog/programming-language-experience/index.html
Yann Esposito (Yogsototh) 059fabd7d0
many minor details to update
2022-10-26 11:38:50 +02:00

253 lines
28 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>YBlog - Expérience avec les languages de programmations</title>
<meta name="keywords" content="programming, languages, C, C++, Java, haskell, Logo, Basic" />
<link rel="shortcut icon" type="image/x-icon" href="../../../../Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="../../../../css/y.css" />
<link rel="stylesheet" type="text/css" href="/css/legacy.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="apple-touch-icon" href="../../../../Scratch/img/about/FlatAvatar@2x.png" />
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<!-- IndieAuth -->
<link href="https://twitter.com/yogsototh" rel="me">
<link href="https://github.com/yogsototh" rel="me">
<link href="mailto:yann.esposito@gmail.com" rel="me">
<link rel="pgpkey" href="../../../../pubkey.txt">
</head>
<body lang="fr" class="article">
<div id="content">
<div id="header">
<div id="choix">
<span id="choixlang">
<a href="../../../../Scratch/en/blog/programming-language-experience/">Anglais</a>
</span>
<span class="tomenu"><a href="#navigation">↓ Menu ↓</a></span>
<span class="flush"></span>
</div>
</div>
<div id="titre">
<h1>Expérience avec les languages de programmations</h1>
</div>
<div class="flush"></div>
<div id="afterheader" class="article">
<div class="corps">
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/dragon.jpg" alt="Title image" />
</div>
<div class="intro">
<p><span class="sc"><abbr title="Trop long; pas lu">tlpl</abbr>: </span> Mon avis succinct et hautement subjectif concernant les différents languages de programmation que jai utilisé.</p>
</div>
<h3 id="basic"><code>BASIC</code></h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/basic.gif" alt="Title image" class="left" />
</div>
<p>Ah ! Le language de mes premiers programmes ! Je devais avoir 10-11 ans. Sous <code>MO5</code>, <code>Amstrad CPC 6128</code> et même <code>Atari STe</code>. Le langage des <code>GOTO</code>s. Je suis empleint de nostalgie rien que dy penser. Cest à peu prêt le seul intérêt de ce langage.</p>
<p>Aujourdhui ce langage est tombé en désuétude. Ce nest ni un bon langage pour apprendre, ni un bon langage pour faire de vrai programmes. Même si quelques années plus tard, je me remettais à programmer dans un basic avec un compilateur qui pourrait lui redonner vie. Je men était servi pour faire un livre dont vous êtes le héro :-).</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode zsh"><code class="sourceCode zsh"><a class="sourceLine" id="cb1-1" title="1">READY</a>
<a class="sourceLine" id="cb1-2" title="2">10 PRINT <span class="st">&quot;HELLO WORLD!&quot;</span></a>
<a class="sourceLine" id="cb1-3" title="3">20 GOTO 10</a>
<a class="sourceLine" id="cb1-4" title="4">RUN</a></code></pre></div>
<p>Je men souviens aussi pour avoir copier des codes de jeux vidéo à partir de magasines. La plupart des lignes ressemblaient à</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode zsh"><code class="sourceCode zsh"><a class="sourceLine" id="cb2-1" title="1">3110 DATA FA,01,FF,FF,FF,FF,00,23,22,43,DA,DE,EE,FF,FF,FF,00,03,4A,F2</a></code></pre></div>
<p>Quel plaisir cétait !</p>
<h3 id="logo">Logo</h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/dragon.jpg" alt="Dragon fractal" class="left" />
</div>
<p>Toujours lors que javais 10 ans, on pouvait faire de petits programmes sympathiques.</p>
<p>Je me souviens que lors du chargement de lapplication logo on avait droit à de la musique de Bach.</p>
<p>Oui, il fallait charger le programme en mémoire avec une cassette. Et elle ne faisait pas les Krrrkrr csssss krrrr.</p>
<p>Je lavais utilisé sans les boucles. Des années plus tard, je le réutiliser pour faire de linitiation à linformatique à mes étudiants de DEUG MIAS première année. Il sest en fait révélé très utile. Grace à lui, faire des fractales se révèle être un jeu denfant, au sens litéral. Je ne peux que conseiller ce langage pour apprendre à programmer et aussi pour le fun.</p>
<p>Voici un exemple de code et le résultat est la jolie fractale dragon.</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode zsh"><code class="sourceCode zsh"><a class="sourceLine" id="cb3-1" title="1">HIDETURTLE</a>
<a class="sourceLine" id="cb3-2" title="2"></a>
<a class="sourceLine" id="cb3-3" title="3">PENUP</a>
<a class="sourceLine" id="cb3-4" title="4">SETXY -200 0</a>
<a class="sourceLine" id="cb3-5" title="5">RIGHT 90</a>
<a class="sourceLine" id="cb3-6" title="6">PENDOWN</a>
<a class="sourceLine" id="cb3-7" title="7"></a>
<a class="sourceLine" id="cb3-8" title="8">to dragon :degree :size</a>
<a class="sourceLine" id="cb3-9" title="9"> setpensize 1</a>
<a class="sourceLine" id="cb3-10" title="10"> <span class="kw">if</span> :size<span class="kw">&gt;</span>5 [setpensize 2]</a>
<a class="sourceLine" id="cb3-11" title="11"> <span class="kw">if</span> :size<span class="kw">&gt;</span>10 [setpensize 3]</a>
<a class="sourceLine" id="cb3-12" title="12"> <span class="kw">if</span> :size<span class="kw">&gt;</span>20 [setpensize 4]</a>
<a class="sourceLine" id="cb3-13" title="13"> <span class="kw">if</span> :size<span class="kw">&gt;</span>40 [setpensize 5]</a>
<a class="sourceLine" id="cb3-14" title="14"> ifelse :<span class="ot">degree=</span>0<span class="kw"> [</span></a>
<a class="sourceLine" id="cb3-15" title="15"> fd :size</a>
<a class="sourceLine" id="cb3-16" title="16"> ][</a>
<a class="sourceLine" id="cb3-17" title="17"> left 45 dragon (:degree-1) (size/4)</a>
<a class="sourceLine" id="cb3-18" title="18"> right 90 dragon (:degree-1) (size/2)</a>
<a class="sourceLine" id="cb3-19" title="19"> left 90 dragon (:degree-1) (size/4)</a>
<a class="sourceLine" id="cb3-20" title="20"> right 45</a>
<a class="sourceLine" id="cb3-21" title="21"> ]</a>
<a class="sourceLine" id="cb3-22" title="22">end</a>
<a class="sourceLine" id="cb3-23" title="23"></a>
<a class="sourceLine" id="cb3-24" title="24">dragon 6 3000</a></code></pre></div>
<h3 id="pascal">Pascal</h3>
<p>Léternel numéro 2.</p>
<p>Jai dû apprendre à programmer en Pascal aux alentour de 15 ans et je lai aussi réutiliser un peit peu en faculté. Je dois avouer, que je le trouve inférieur au C en tous points. Jai fait pas mal de chose avec ça, comme des algorithmes de graphes, des algorithmes de tri, et même un peu dintelligence artificielle comme des algorithmes génétiques. Mais je préfère largement le C.</p>
<h3 id="c">C</h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/C.jpg" alt="Pointer representation from Dancing links" class="left" />
</div>
<p>Le langage des pointeurs</p>
<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>Jai fait beaucoup de choses avec. Tous les algorithmes de tri, des algorithmes dintelligence artificielle (résolution de SAT3), du système, du réseau etc… Bref il est versatile, et on ne peut pas dire que lon sait programmer si on ne sest jamais mis à programmer sérieusement en <code>C</code>.</p>
<h3 id="ada">ADA</h3>
<p>Le langage “super propre”.</p>
<p>Javais bien aimé ADA, mais javoue que ça na duré que le temps dun semestre de cours. Peut-être quun jour je my remettrai. Disons quil est assez vieux et quil a inspiré la plupart des concepts objets.</p>
<h2 id="les-langages-orientés-objets">Les langages orientés objets</h2>
<p>Bon, oui, le Pascal, le C, le Basic (fortran, Cobol et autres) étaient tous des langages impératifs, sans notion dobjets.</p>
<p>En gros, il ny avait pas daide 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 sest mis à réfléchir à la meilleure façon dorganiser du code dordinateur. À 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 nest pas la panacée. Combien de programme utilisez-vous qui nont 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. Cest-à-dire un système dinformation, cest pas trop mal.</p>
<p>Donc les langages orientés objets se sont mis à fleurir.</p>
<h3 id="c-1">C++</h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/cplusplus.jpg" alt="Messy router" class="left" />
</div>
<p>Le malpropre</p>
<p>en:</p>
<p>Et oui lindustrie voulait un langage objet, mais elle nétait pas prête à mettre à la poubelle tout ses codes en C. La solution, prendre C et lui rajouter une couche objet. Le problème avec C++ cest quil fait trop de choses. Lhéritage multiple, des templates, etc… Bon, je lai quand même choisi pour faire le plus gros programme que jai jamais fais lors de ma thèse. Et je dois avouer que lexpérience ma plu. Le seul reproche que jai à faire, cest que la STL nétait pas aussi complète que lon aurait pu lespérer pour un détail. On ne peut pas faire de <code>String&lt;T&gt;</code> pour autre chose que des <code>char16</code>. Du coup, mon alphabet était limité à 2<sup>16</sup> lettres. Hors, pour certaines application, lalphabet doit être gigantesque. fr: En conclusion je dirai que C++ est un très bon langage si vous vous fixez à lavance un sous ensemble de ses fonctionnalités.</p>
<h3 id="eiffel">Eiffel</h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/eiffel.jpg" alt="Eiffel tower construction" class="left" />
</div>
<p>Eiffel est un très beau langage objet. Bien plus propre que C++. Mais, à moins que les choses aient changées, il nest pas très populaire. Derrière lui il na pas la communauté de C++. Pour être franc, jai préféré travailler en C++. Jai menti à mes profs de lépoque pour leur faire plaisir. Lorsquon viens du C, il est désagréable de changer ses habitudes.</p>
<h3 id="java">Java</h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/grail.jpg" alt="Holy Grail from the Monty Python" class="left" />
</div>
<p>On continue vers les langages objets. Alors, à une époque où jen ai entendu parler, cétait <em>le Graal</em> !</p>
<p>La portabilité, votre programme marchera partout. Il était orienté objet. Incrusté à lintérieur il y avait des concepts darchitecture qui empêchent de faire nimporte quoi… Sauf que.</p>
<p>Sauf quil est incroyablement verbeux. Et que les limitations sont très désagréables si on sait ce que lon fait.</p>
<p>Par exemple, il ny a pas dhéritage multiple en Java. Ce qui est en général un choix que je trouve cohérent sil est bien appuyé par des systèmes qui compensent ce manque. En java, il existe les interfaces. Les interfaces permettent dajouter des méthodes à une classe. En aucun cas on ne peut rajouter un attribut autrement quen héritant. Cet état de fait ma vraiment géné.</p>
<p>Typiquement je faisais une GUI en Java Swing. Javais créé mon propre système de notification entre objets. Au début je considérais quun objet ne devait envoyer des notifications quà un seul objet. Ô quelle erreur lorsque je réalisais quil fallait non plus gérer un seul objet mais parfois plusieurs. Je changeais mon implémentation dinterface partout, conséquence, des copier/coller dans tous les sens pour mes classes. Les copier/coller qui sont justement un problème censé être évité par les langages orientés objets.</p>
<p>De plus toujours pour ma GUI, je devais évidemment gérer des threads. Hors, il ma fallu faire mon propre système de gestion de threads pour éviter les locks, pour les notifications (ce thread à fini, etc…). À lépoque jutilisais Java 1.5. Normallement ce problème devait être réglé sur Java 1.6. Jespère que cest le cas, mais avoir ce type de “feature” essentielle oubliée par le langage était assez grave.</p>
<p>De même, il a fallu attendre très longtemps avant davoir des boucles foreach qui rendent le code bien plus lisible.</p>
<p>Bon, après cette expérience je déconseillerai Java. La portabilité, nest pas si intéressante que ce quon pourrait croire.</p>
<p>En ce qui concerne les GUI, portable signifie interface fonctionnelle mais médiocre sur toutes les plateformes. Quelque soit le système dailleurs (wxWidget, QT, etc…). Donc, pour des applications à distribuer à des tiers, cest à éviter.</p>
<p>Le système de Java est très clos. Par contre il résout un très bon problème. Il permet à des développeurs médiocres de travailler en groupe sans faire trop de mal. Et un bon programmeur sera tout de même capable dy faire des choses très intéressantes. Veuillez noter que je nai pas dit que les programmeurs Java sont de mauvais programmeurs, ce nest pas ce que je pense.</p>
<h3 id="objective-c">Objective-C</h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/xcode_logo.png" alt="Xcode Logo" class="left" />
</div>
<p>Le langage que je nai appris et utilisé que pour faire des applications sur les plateformes dApple(c). Jai appris Objective-C après Python. Et je dois avouer que jai eu du mal à my mettre. Je nai pas du tout aimé la syntaxe et pas mal dautres détails. Mais ça fait parti de ces langages que plus on utilise, plus on aime. En réalité, il y a quelque chose dans ce langage qui fait que tout est bien pensé. Mais surtout, ici, ce nest pas le langage qui est la meilleure partie, cest plutôt le framework Cocoa qui lui est le plus souvent associé qui est une merveille. Par rapport à tous les autres framework permettant de fabriquer des GUI, Cocoa est de très loin supérieur. Même si ça semble être des détails sur le papier, en pratique cela fait une grande différence.</p>
<p>Vraiment jusquici, même si Objective-C reste assez bas niveau, le fait que le typage de ce langage soit dynamique est un vrai plus pour linterface graphique. Je ne peux que vous encourager à vous accrocher à ce langage et de faire un vrai programme avec. Vous en serez certainement plus ravi quil ny parrait eu début.</p>
<h2 id="les-langages-interprétés-modernes">Les langages interprétés modernes</h2>
<h3 id="php">PHP</h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/php.jpg" alt="A Jacky Touch Car" class="left" />
</div>
<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 jy 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>En réalité, PHP est au niveau dabstration à peine supérieur au C. Et donc, il est beaucoup moins bien organisé que des langages objets, favorisant ainsi la création de bug. Pour les applications web, cest un vrai problème.</p>
<p>PHP, reste pour moi le langage de linjection SQL. Jen fait encore un peu de temps en temps. Et jai moi-même dû protéger les accès au SQL pour éviter les injections. Oui, je nai pas trouvé de librairie toute prête pour protéger les entrées SQL. Je nai pas beaucoup cherché non plus.</p>
<h3 id="python">Python</h3>
<div>
<img src="../../../../Scratch/img/blog/programming-language-experience/python.jpg" alt="Python. Do you speak it?" class="left" />
</div>
<p>Alors là, attention ! Révélation !</p>
<p>Lorsquon avait lhabitude de travailler avec des langages compilé, type C++, Java et quon passe à Python, on se prend une claque magistrale. La programmation comme elle doit être faite. Tout est si naturel, cest <em>magique</em>. Oui, cest si bien que ça. Mais quelque chose daussi incroyablement bien doit avoir des inconvénients me dirais-vous.</p>
<p>Et bien, oui, comme tous les langages de scripts de haut niveau, Python est <em>lent</em>. Attention pas juste un peu lent, comme 2 fois plus lent que du C. Non, de lordre de 10 à 20 fois plus lent que le C. Argh… Bon ça reste utilisable pour beaucoup de choses. Mais certaines application lui sont donc interdites.</p>
<h3 id="awk">Awk</h3>
<p>Des filtres de fichiers à faire. Si ce nest pas trop compliqué, cest 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 quun grep. Super outils. Je lai utilisé pour modifier en masse des centaines de fichier XML plus facilement quavec du XSLT.</p>
<h3 id="perl">Perl</h3>
<p>Perl cest 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&nbsp;:</p>
<div class="sourceCode" id="cb4"><pre class="sourceCode perl"><code class="sourceCode perl"><a class="sourceLine" id="cb4-1" title="1"><span class="dt">$var</span> =~ <span class="kw">s/</span><span class="ot">toto</span><span class="kw">/</span><span class="st">titi</span><span class="kw">/g</span></a></code></pre></div>
<p>Va remplacer toto par titi dans la valeur de la variable <code>$var</code>. Et oui, les expressions régulière y sont intégrées directement comme avec <code>sed</code> et <code>awk</code>. Et ça rend le code beacoup plus compact (et parfois illisible). Mais cest vraiment pas mal. Cest une sorte de <code>awk</code> sous stéroides.</p>
<h3 id="ruby">Ruby</h3>
<p>Cest une sorte de Perl en plus propre. Un mélange de Perl et de Python. Les notion objets y sont plus fortes quen Python. Je lai beaucoup utilisé, je reste quand même un Pythoniste de préférence. Mais Ruby est vraiment très bien. Par contre en terme defficacité, cest le pire langage utilisé par beaucoup de monde de ce point de vue. Cest le langage qui perd quasiment tous les benchmarks. Par contre cest un outil parfait pour faire des prototypes. Et si vous voulez faire un prototype de site web, RoR est ce qui se fait de mieux. De lidée au site, il ne se passera que peu de temps.</p>
<h3 id="javascript">Javascript</h3>
<p>Cest la bonne surprise. 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 lobjective-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, cest 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 savè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>
<h2 id="les-langages-fonctionnels">Les langages fonctionnels</h2>
<h3 id="caml">CamL</h3>
<p>Jai appris CamL à la fac, javais trouvé cette expérience très interressante. Jétais plutôt bon, et javais les bonnes intuitions mathématiques qui vont avec la programmation fonctionnelle. Mais je dois avouer que je ne lai 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 limpression dêtre un langage pour chercheurs.</p>
<h3 id="haskell">Haskell</h3>
<p>Je suis en train dapprendre ce langage. Et je dois dire que cest un vrai plaisir. 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, cest appris. Pour haskell, cest très différent. Je sens bien quil va me falloir plusieurs semaines pour maîtriser la bête. Ça doit faire quatre semaines que japprend haskell un peut tous les jours et je sais quil y a des notions que jai juste survollées et qui sont assez incroyables. Les Monades par exemple, est un concept que je navais jamais rencontré ailleurs. Cest 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, cest 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 quen Java et C++, typiquement certain choix ont été fait en dépis du bon sens pour “faire plaisir”.</p>
<h2 id="langages-originaux">Langages originaux</h2>
<h3 id="metapost">Metapost</h3>
<p>Metapost est un langage qui permet de programmer des dessins. Le gros plus de metapost, cest sa capacité de résoudre automatiquement les systèmes déquations linéaires. Par exemple, si vous écrivez&nbsp;:</p>
<div class="sourceCode" id="cb5"><pre class="sourceCode ruby"><code class="sourceCode ruby"><a class="sourceLine" id="cb5-1" title="1"><span class="dt">AA</span>=<span class="dv">1</span>/<span class="dv">3</span>[A,B]</a></code></pre></div>
<p>Il va position le point <code>AA</code> entre <code>A</code> et <code>B</code>. Plus précisément, au barycentre <code>(2A + B)/3</code>.</p>
<div class="sourceCode" id="cb6"><pre class="sourceCode ruby"><code class="sourceCode ruby"><a class="sourceLine" id="cb6-1" title="1">X=whatever[A,B]</a>
<a class="sourceLine" id="cb6-2" title="2">X=whatever[C,D]</a></code></pre></div>
<p>Ce deuxième exemple positionne <code>X</code> à lintersection des deux segments <code>AB</code> et <code>CD</code>. Vous pouvez aussi voir pas mal d<a href="http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html">exemples ici</a>. You could see <a href="http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html">more example there</a>.</p>
<p>Cette fonction est très utile. Et à mon avis pas seulement pour afficher des choses. De mon point de vue, les autres langages de programmation devraient penser à rajouter les résolutions automatiques simples.</p>
<h3 id="zsh">zsh</h3>
<p>Oui, zsh est un shell. Mais cest aussi un langage de script très bien adapté aux traitement de fichiers. Je le recommande chaudement. Cest pour linstant le meilleur shell que jai utilisé. Je le préfère au bash.</p>
<h3 id="prolog">Prolog</h3>
<p>Je nai jamais rien fait de conséquent avec Prolog, mais jai adoré lapprendre et lutiliser. Jai eu la chance dapprendre Prolog par <a href="http://alain.colmerauer.free.fr/">Alain Colmerauer</a> lui-même. Cest un langage qui essaye de résoudre les contraintes autant quil le peut pour vous. Il en ressort un impression de magie. On ne fait que décrire ce quil faut et on ne donne pas dordre. Un peu comme la programmation fonctionnelle mais en beaucoup plus puissant.</p>
<h2 id="les-langages-à-découvrir">Les langages à découvrir</h2>
<p>Il reste encore pas mal de langages et de framework à essayer. Actuellement je pense que je vais passer un moment avec Haskell. Peut-être demain que jirai apprendre LISP, Scala ou Erlang. Comme je suis plus dans la création de site web, jirai certainement jeter un coup dœil à clojure aussi. Et certainement beaucoup dautres choses.</p>
<p>Dites moi si vous avez une autre expérience avec ces langages de programmation. Évidement mes impression sont hautement subjectives. Cependant, jai utilisé tous les langages dont jai parlé.</p>
<p><em>[STL]: Standard Tempate Library </em>[GUI]: Graphic User Interface</p>
</div>
<div id="afterarticle">
<div id="social">
<a href="/rss.xml" target="_blank" rel="noopener noreferrer nofollow" class="social">RSS</a>
·
<a href="https://twitter.com/home?status=http%3A%2F%2Fyannesposito.com/Scratch/fr/blog/programming-language-experience/%20via%20@yogsototh" target="_blank" rel="noopener noreferrer nofollow" class="social">Tweet</a>
·
<a href="http://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fyannesposito.com/Scratch/fr/blog/programming-language-experience/" target="_blank" rel="noopener noreferrer nofollow" class="social">FB</a>
<br />
<a class="message" href="../../../../Scratch/fr/blog/Social-link-the-right-way/">Ces liens sociaux préservent votre vie privée</a>
</div>
<div id="navigation">
<a href="../../../../">Accueil</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/fr/blog">Blog</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/fr/softwares">Logiciels</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/fr/about">Auteur</a>
</div>
<div id="totop"><a href="#header">↑ Top ↑</a></div>
<div id="bottom">
<div>
Published on 2011-09-28
</div>
<div>
<a href="https://twitter.com/yogsototh">Follow @yogsototh</a>
</div>
<div>
<a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US">Yann Esposito©</a>
</div>
<div>
Done with
<a href="http://www.vim.org" target="_blank" rel="noopener noreferrer nofollow"><strike>Vim</strike></a>
<a href="http://spacemacs.org" target="_blank" rel="noopener noreferrer nofollow">spacemacs</a>
<span class="pala">&amp;</span>
<a href="http://nanoc.ws" target="_blank" rel="noopener noreferrer nofollow"><strike>nanoc</strike></a>
<a href="http://jaspervdj.be/hakyll" target="_blank" rel="noopener noreferrer nofollow">Hakyll</a>
</div>
</div>
</div>
</div>
</div>
</body>
</html>