Apprendre à conduire et apprendre à programmer…

On s’étonne souvent du nombre de langages de programmation que j’ai placé dans mon CV et on m’accuse presque de mensonge en prétextant qu’il est impossible d’en connaître autant…

OK, j’avoue, je ne pratique pas chacun d’eux tous les jours et il y en a que je maîtrise beaucoup mieux que d’autres… Néanmoins, j’ai déjà goûté (à l’unif, dans d’anciens jobs ou tout simplement par plaisir) à tout ce qui se trouve dans ce modeste document et je pourrais, si on me le demande, réaliser de vrais projets avec chacune de ces technologies.

Pour moi, apprendre la programmation, c’est comme apprendre à conduire.

Une fois qu’on a appris le code de la route, compris le mécanisme d’embrayage et la façon dont il faut passer les vitesses, assimilé la façon de tourner son volant, de freiner et d’utiliser les principaux boutons, on est prêt à conduire n’importe quelle voiture. Il faudra évidemment un petit temps d’adaptation lorsqu’on passera d’une Opel Astra à une Mini Cooper car tous les boutons ne se trouvent pas au même endroit et le comportement général de la voiture n’est pas exactement pareil mais une fois qu’on a compris comment il fallait conduire une voiture, on sait toutes les conduire !

La programmation, c’est pareil. Une fois qu’on a acquis l’algorithmique générale, le paradigme orienté objet et tous les concepts lié à la programmation (objet ou non), le langage de programmation n’est plus une barrière. Evidemment, la syntaxe et certaines caractéristiques diffèrent d’un langage à un autre mais il ne faut absolument pas tout réapprendre à chaque fois ! Pour moi, quelqu’un qui connait Java ne devra pas faire beaucoup d’efforts pour maîtriser l’ActionScript 3, quelqu’un qui connait le PHP apprendra JavaScript en 2h, etc.

Voilà l’explication du mystère qui plâne autour de mon curriculum vitae et qui semble passionner plein de gens (enfin… au moins deux personnes).

16 Comments

  1. Adri's avatar Adri says:

    Je suis bien d’accord avec ton point de vue!

    Like

  2. Cricri's avatar Cricri says:

    Y en a pas tant que ça, juste 4 :p
    Je n’aurai pas mieux exprimer mon point de vue sur la chose. Mais comme pour la conduite, il y en a qui ont aussi beaucoup de mal avec le changement, l’adaptation. J’ai des collègues qui maitrisent très bien le langage qu’on utilise tous les jours, et qui ont toutes les peines du monde à passer à autre chose.

    Sinon, peut-être une réserve sur le “etc.”
    Je ne suis pas sur que ça fasse bien sur un CV, et ton futur employeur doit logiquement penser comme toi, donc avec les quelques langages cités qui montrent que tu maitrise tous les “concepts” (objet,script,web,etc.), il devrait comprendre que tu es adaptable. A moins qu’il ne connaisse mes collègues :p

    Like

  3. Bartdude's avatar Bartdude says:

    Jolie comparaison en effet !
    Mais que fais-tu du permis poids-lourds, du permis moto, du permis pour voiture automatiques, ou tout simplement des voitures sans permis ? ^_^ . Et perso il y a certaines voitures que je ne confierais pas à certains conducteurs 🙂

    Like

  4. vinch's avatar Vinch says:

    @Cricri : tu as totalement raison, je vire tous ces “etc.”

    Like

  5. Antoine's avatar Antoine says:

    Mouais… Il existe plus que le paradigme orienté objet. De plus, je doute de ce genre d’apprentissage rapide d’autres langage plus complexes tels que l’erlang, le oz, le smalltalk, le prolog, etc. Tous ces langages supportent des paradigmes autres que l’orienté objet et sont parfois bien plus adapté.

    Like

  6. vinch's avatar Vinch says:

    @Antoine : on va reprendre ce que Bartdude a dit et considérer ces langages comme des véhicules un peu différents : motos, camions, etc.

    Mais honnêtement, les langages que tu décris ne sont plus vraiment enseignés et utilisés en 2008 (sans doute à tort…)

    Pour info, Smalltalk est un langage de programmation orienté objet (complètement intégré dans l’IDE, ce qui en fait sa particularité). Il s’agit d’ailleurs du premier langage de programmation orienté objet…

    99 bottles of beer (http://99-bottles-of-beer.net/) recense 1236 langages de programmation… Ils ne sont évidemment pas tous utilisés avec la même intensité !

    Like

  7. Moosh's avatar Moosh says:

    à l’inverse…

    “ah tu sais utiliser word?? tu es donc informaticien, tu peux m’aider j’ai essayé d’installer foo et j’ai plus de connection, je crois que j’ai un virus, j’ai mis mon norton sur ma clé USB mais ca ne marche pas”

    Like

  8. Antoine's avatar Antoine says:

    @Vinch, l’erlang, le prolog et le fortran resten fort utilisé dans le monde de l’industrie. Savais-tu qu’une grande partie des transactions bancaires sont gerée par des logiciels en Fortran ou en Cobol ?
    Qu’est-ce que pour toi un langage utilisé ? Un langage utilisé par les quelques applications “end-user” ? Ou bien est-ce les langages utilisés par l’industrie (et donc, par conséquent, des langages spécialisés) ?

    Pour info, la particularité de Smalltalk n’est pas son IDE mais bien le fait que tout (mis à part quelques symboles précis) est objet et message.

    Like

  9. vinch's avatar Vinch says:

    Pour moi, un langage de programmation utilisé est un langage de programmation qui apparait très souvent dans les offres d’emploi en 2008. C’est la réalité du marché !

    Exemple : http://references.be/Jobs/SearchVacancies.aspx?FunID=10,1952

    Qu’est ce qui revient super souvent ? Java et .NET !

    Pour info :

    0 résultat : http://references.be/Jobs/SearchVacancies.aspx?&Keyword=erlang
    0 résultat : http://references.be/Jobs/SearchVacancies.aspx?&Keyword=prolog
    0 résultat : http://references.be/Jobs/SearchVacancies.aspx?&Keyword=fortran
    5 résultats : http://references.be/Jobs/SearchVacancies.aspx?&Keyword=cobol
    0 résultats : http://references.be/Jobs/SearchVacancies.aspx?&Keyword=smalltalk

    Je pense que c’est assez clair, non ?

    Like

  10. Antoine's avatar Antoine says:

    Note que ce ne sont que des résultats sur les job offerts en Belgique à travers un journal. C’est une vue plutôt partielle du monde, non ? http://www.indeed.com/ offre déjà plus d’exemple.

    Par ailleurs, je me demandais quel distinction faisais-tu enter langage de programmation et langages Web (particulièrement pour le PHP et SQL) ? Aussi, est-ce un framework un langage ? Même question pour Ajax ?

    Like

  11. Vinch's avatar Vinch says:

    Langages de programmation : langages qui permettent de programmer sur le desktop (mais la plupart ont été portés sur le Web d’une manière ou d’une autre)

    Langages Web : langages et technologies spécifiques à la conception et au développement d’applications Web (même si avec Adobe AIR, on peut maintenant faire le chemin inverse vers le desktop…)

    J’ai groupé Framework JavaScript et AJAX avec JavaScript pour ne pas compliquer le bazar.

    Like

  12. Mich's avatar Mich says:

    Je suis +/- du même avis, mais il faut pas oublier que ce ne sont pas seulement des langues différentes, mais souvent des concepts: fonctionnel, orienté à l’objet, orienté à l’aspect,… Et un appli serveur est différente d’une appli desktop.

    Like

  13. Antoine's avatar Antoine says:

    Ce qui me gène dans ce que tu dis c’est que tu sous entends que si l’on connait le java ou .net ou un autre langage alors, on peut programmer dans tous les autres langages.

    Pour moi, une distinction claire est à placer entre programmer et programmer. Je m’explique. En connaissant un langage, on peut facilement programmer des petits programmes générique, simple et court. Par contre, il est, à mon sens, impossible de tirer parti de toutes les spécificités du langage pour supporter ce que l’on fait. Programmer dans un langage n’est pas une traduction de syntaxe vers une autre, c’est plus que cela. Un langage n’est pas l’autre. Pour reprendre ton exemple sur les voitures, si tu sais conduire une petite voiture, tu pourra conduire une voiture de course, par contre, n’espère pas conduire lors d’une course et tirer parti des capacités de la voiture. C’est la même chose.

    Par ailleurs, changer de paradigme demande une bien plus grande connaissance du monde de l’informatique que la connaissance de langages. Evidemment tes exemples reprennent tous des langages supportant les mêmes paradigmes, du coup, cela semble évident.

    Like

  14. Bartdude's avatar Bartdude says:

    “si tu sais conduire une petite voiture, tu pourra conduire une voiture de course, par contre, n’espère pas conduire lors d’une course et tirer parti des capacités de la voiture. C’est la même chose.”

    Assez d’accord. Je dirais même qu’il n’est pas sur que quiconque ayant le permis sache même conduire une voiture de course, sans caller ou niquer la boite de vitesse. Et quoi qu’il en soit, ca sera dur de trouver une écurie 😉

    Like

  15. Tout à fait d’accord et j’ajouterais que le fait de connaître plusieurs langages les renforcent. Comme ils sont différents, ils éclairent différemment les mêmes concepts. Il m’arrive souvent de mieux comprendre une fonction dans langage après avoir fait un détour sur la même fonction dans un autre 🙂

    Like

  16. Goudie's avatar Goudie says:

    J’trouve la comparaison excellente.

    Like

Leave a reply to Bartdude Cancel reply