• [^] # Re: Par pitie

    Posté par . En réponse au journal Du livre "Premiers cours de programmation en Scheme". Évalué à 2.

    Les langages fonctionnelles devaient remplacer tout mais bon aujourd'hui encore c'est le C, C++, java, C#, fortran, python, perl, ruby qui dominent et tres tres largement

    Alors d'une part, ça a déjà été dit, mais si on regarde Java et C#, de plus en plus de constructions venant des langages fonctionnels s'incrustent. La construction « foreach » (et ses variantes) vient directement des constructions type « mapcar » en Lisp par ex. Ensuite, Perl par exemple a, dès le début [1], proposé des constructions initialement inventées dans les langages fonctionnels (« mapcar » donc, mais aussi les fermetures transitives, etc.).

    Mieux encore: il existe des langages dérivés du C (je pense notamment à Cilk et sa « suite » Cilk++) qui permettent la programmation parallèle en rajoutant un minimum de constructions au langage. Et devine quoi ? Ça passe principalement par la construction d'algos « divide-and-conquer » [2]. La notion de récursivité en algorithmique est essentielle, et même naturelle pour tout un tas de structures de données (je pense notamment aux arbres). Lisp, par exemple, permet (tout comme OCaml) de construire aussi bien des boucles que de faire de la récursion (Scheme est purement fonctionnel si je ne me trompe pas, donc le cas est un peu à part). L'important est de piger comment structurer sa pensée, décomposer une action complexe en actions élémentaires simples. Le langage ne changera rien à ça.

    [1] Bon en fait non, mais au moins depuis Perl 5.x, et peut-être 4.x, si quelqu'un peut m'aider à retrouver les dates...
    [2] désolé, je ne connais pas la formule adéquate en français — « diviser et conquérir » ? « dichotomique » ?