• [^] # Re: Pour alimenter la discussion ...

    Posté par . En réponse à la dépêche Python dépasse Java en popularité selon l’indice TIOBE de novembre. Évalué à 3.

    C'est l'anti-thèse de Ocaml, très beau sur le plan théorique mais en pratique, c'est trop compliqué pour le développeur lambda, pas assez performant, trop peu utilisé etc.

    Il n'a jamais fait de phrase à trou dans son enfance en cours de français le développeur lambda ? Parce qu'écrire un programme en OCaml c'est le même principe. Elle est où la difficulté ?

    Exemples:

    • Je mange du pain
    • Je bois de l'eau

    de ces deux phrases, on peut abstraire un motif sous la forme :

    • Je verbe de qqchose

    ce motif, on peut l'appliquer soit au couple manger - pain, soit au couple boire - eau, afin d'obtenir les phrases précédentes.

    Après, certes, on peut commencer à construire des phrases plus complexes, en partant par exemple de ce patron :

    • je regarde qqchose

    ce qui peut donner :

    • je regarde la télé
    • je regarde le chien du voisin

    Dans le deuxième exemple, le complément d'objet est lui-même un composé dont on peut abstraire un motif. Disons, celui-ci :

    • l'animal de qqu'un

    qui peut être instancier sous la forme :

    • le chien du voisin
    • le chat de ma tante
    • le poisson rouge de Nicolas

    et ainsi de suite. Ensuite, en composant les patrons de phrases, on construit des phrases de plus en plus complexes (ce qui ne veut pas dire compliquée ;-).

    Tu t'y prends autrement pour exprimer ta pensée de manière écrite? Le développeur lamabda, aussi, a une autre façon de procéder? Si c'est le cas, j'aimerais bien savoir laquelle.

    En programmation fonctionnelle, abstraire un mot pour former un patron c'est ce qui se nomme la lambda abstraction (le mot clef fun de OCaml), puis appliquer un patron à des cas particuliers cela s'appelle l'application de fonction, et la phase qui remplace le paramètre formelle par le paramètre effectif se nomme la beta reduction (c'est-à-dire l'exécution du code).

    (* j'ai les motifs suivants *)
    1 + 2
    2 + 3
    (* j'abstrais le patrons suivants *)
    fun x y -> x + y
    (* je l'utilise pour retrouver les exemples du dessus *)
    (fun x y -> x + y) 1 2
    (* et là le runtime fait des substitutions successives ou beta reduction *)
    (* on commence par susbstituer le premier paramètre x *)
    (fun y -> 1 + y) 2
    (*on fait pareil avec y *)
    1 + 2
    (* on calcule *)
    3

    Après le langage va rajouter des catégories grammaticales ou types pour bien vérifier que l'on utilise les patrons avec des mots ou construction conforme au règle de la grammaire, comme tout langage à typage statique. Autrement dit, dans le patron "je verbe de qqchose", il n'est pas correcte de vouloir utiliser le mot "bouchon" à la place du verbe car il n'appartient pas à la bonne catégorie grammaticale.

    Qui y a-t-il de compliquer à comprendre dans tout cela ?

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.