fr: J'ai dû apprendre à programmer en Pascal aux alentour de 15 ans et je l'ai aussi réutiliser un peit peu en faculté.
fr: Je dois avouer, que je le trouve inférieur au C en tous points.
fr: 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.
en: In short, each time you write a C instruction there won't be anything strange that will occurs, like starting a long algorithm behind the scene.
fr: Ç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.
fr: 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.
fr: À 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.
fr: Attention, la programmaiton orienté objet n'est pas la panacée. Combien de programme utilisez-vous qui n'ont pas de bug ?
fr: Et ça ne convient pas à tous les type de problème.
fr: Mais pour faire une application banquaire, un système de gestion des stocks, des clients ou des archives.
fr: C'est-à-dire un système d'information, c'est pas trop mal.
fr: On continue vers les langages objets. Alors, à une époque où j'en ai entendu parler, c'était _le Graal_ !
en: The first time I heard about Java it was _le Grail_!
fr: 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.
en: Perfect portability, your program will work on all platform.
fr: Le langage que je n'ai appris et utilisé que pour faire des applications sur les plateformes d'Apple(c).
fr: J'ai appris Objective-C après Python.
fr: Et je dois avouer que j'ai eu du mal à m'y mettre.
fr: Je n'ai pas du tout aimé la syntaxe et pas mal d'autres détails.
fr: Mais ça fait parti de ces langages que plus on utilise, plus on aime.
fr: En réalité, il y a quelque chose dans ce langage qui fait que tout est bien pensé.
fr: 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.
fr: Par rapport à tous les autres framework permettant de fabriquer des GUI, Cocoa est de très loin supérieur.
fr: Même si ça semble être des détails sur le papier, en pratique cela fait une grande différence.
en: The language I learned and used only to make application on Apple(c) platform.
en: I learned Objective-C just after Python.
en: It was hard to do it.
en: At first I didn't liked the syntax and many other details.
en: But it is this kind of language you like more and more you use it.
en: In fact, Objective-C is a simple language, but associated with the Cocoa framework it is a really good tool.
en: Cocoa is very different to other framework I used before.
en: I find many of its idea extermely good.
en: Both simple and efficient.
en: It might seems like small details on paper, but once you start using it, it make all the difference.
fr: 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.
fr: 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.
en: Even if Objective-C is a relatively low level language.
en: Its dynamic typing ability make it very good for GUI programming.
en: I recommand to continue working with this language.
en: In the end you'll certainely find it better than expected.
fr: 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".
fr: En gros ceux qui ne savent pas coder.
fr: Des trous de sécurité de tous les cotés, etc...
en: Nice but no more. Apparently there were a lot of progress since PHP5. Maybe one day I'll use it again. But behind it, this language has a "script kiddies only" reputation.
fr: 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.
en: PHP remains for me the SQL injection language.
en: I make a bit of PHP not so long ago, and it was a pain to protect my application to SQL injection. Yep, I didn't found any standard library to make this, but I didn't searched a lot.
fr: 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.
fr: A moins que tous les autres soient des cadors du Perl.
fr: Mais la feature qui tue, les expressions régulières :
en: Perl is magic, but the syntax is so hideous nobody can like to work in an environment with many different person in Perl.
en: Or at least, all other collaboratos must be excellent programmers.
en: But the very good feature is the integration of some perl syntax.
fr: Va remplacer toto par titi dans la valeur de la variable `$var`.
fr: Et oui, les expressions régulière y sont intégrées directement comme avec `sed` et `awk`.
fr: Et ça rend le code beacoup plus compact (et parfois illisible).
fr: Mais c'est vraiment pas mal.
fr: C'est une sorte de `awk` sous stéroides.
en: This program will replace every toto by titi inside the `$var` variable.
en: The Perl code is often very compact and usally unreadable.
en: But it is a language good to know.
en: It is a kind of `awk` under steroids.
### Ruby
fr: C'est une sorte de Perl en plus propre.
fr: Un mélange de Perl et de Python.
fr: Les notion objets y sont plus fortes qu'en Python.
fr: Je l'ai beaucoup utilisé, je reste quand même un Pythoniste de préférence.
fr: Mais Ruby est vraiment très bien.
fr: Par contre en terme d'efficacité, c'est le pire langage utilisé par beaucoup de monde de ce point de vue.
fr: C'est le langage qui perd quasiment tous les benchmarks.
fr: Par contre c'est un outil parfait pour faire des prototypes.
fr: Et si vous voulez faire un prototype de site web, RoR est ce qui se fait de mieux.
fr: De l'idée au site, il ne se passera que peu de temps.
en: Ruby is a very good language. It is often compared (opposed ?) to Python.
en: There are the regular expression operators Perl inside the langage.
en: But the syntax is extremely clear, like in Python.
en: Many feature were inspired by functionnal programming (as in Python).
en: I used it a lot.
en: It is the worst language I know in term of efficiency.
en: This is the language that lose almost all benchmarks.
en: But it is the perfect tool for prototypes.
en: If you want to make a website prototype, RoR (Ruby on Rails) is certainly one of the best system known to mankind.
en: From idea to realisation, few time will occur. Make this site work for thousand of people, will, on the other hand, certainly require a lot of optimisations.
### Javascript
fr: C'est la bonne surprise.
fr: Pendant des années, javascript était considéré comme un langage tout bon à vous embéter dans votre navigation web.
fr: En réalité, javascript possède beaucoup de qualité des langages de haut niveau.
fr: En particulier, il est facille de passer une fonction en paramèter ou de créer des fonctions anonymes (closures).
fr: Récemment, il est devenu très rapide et beaucoup de frameworks et de librairies naissent un peu partout.
en: It is the good surprise.
en: During years, javascript was considered as an annoying web experience language.
en: In reality, javascript has many really good qualities.
en: Particularly, it is easy to pass a function in parameter and to create anonymous functions (closures).
en: Recently, javascript became far faster than before and many frameworks and libraries appears:
fr: - Il y a Cappuccino, Objective-J (comme de l'objective-C mais avec du javascript)
en: - Cappuccino, Objective-J (as in objective-C but with javascript)
- Sproutcore
- Spine.js
- Backbone.js
- jQuery
- prototype.js
fr: En particulier avec jQuery, on peut faire des appels chainés, très agréables à utiliser.
fr: 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.
fr: Et il s'avère qu'à part sa syntaxe, tout le reste est bien.
fr: Heureusement, en ce qui concerne la syntaxe, on peu pallier à ce problème en utilisant CoffeeScript.
en: Particularly with jQuery we can chain functions.
en: It is very nice to use.
en: As I said, this is a good surprise.
en: Javascript was chosen by chance as the script inside your navigator.
en: Instead of the java inspired syntax, everything else is very good.
en: In order to compensate the syntax, you can use CoffeScript.
fr: J'ai appris CamL à la fac, j'avais trouvé cette expérience très interressante.
fr: J'étais plutôt bon, et j'avais les bonnes intuitions mathématiques qui vont avec la programmation fonctionnelle.
fr: Mais je dois avouer que je ne l'ai plus jamais utilisé.
fr: 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.
en: I learned CamL during the college.
en: It was really interresting.
en: Functional programming is very different to imperative programming (most of popular languages).
en: I had good mathematic intuitions to use this language.
en: But I must confess I never used it for something serious.
fr: En général les concepts derrière tous les langages de programmation sont assez limités.
fr: Chaque langage y va de son petit lot de nouveau concepts, et en général en une après-midi, c'est appris.
fr: Pour haskell, c'est très différent.
fr: Je sens bien qu'il va me falloir plusieurs semaines pour maîtriser la bête.
fr: Ç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.
fr: Les Monades par exemple, est un concept que je n'avais jamais rencontré ailleurs.
fr: C'est un super concept.
fr: De plus le design du langage en fait un parfait système pour paralléliser les calculs naturellement.
fr: haskell sépare la partie "pure" de la partie "impure" de la programmation.
fr: À ma connaissance, c'est le seul langage de programmation qui fait ça.
fr: Enfin, je prend beaucoup de plaisir à apprendre ce langage.
fr: La communauté est aussi très acceuillante.
fr: Pas de "L0L! URAN00B!".
fr: Et aussi pas de concession du langage pour devenir populaire.
fr: Le langage est bon, voilà tout.
fr: Alors qu'en Java et C++, typiquement certain choix ont été fait en dépis du bon sens pour "faire plaisir".