• [^] # Re: Performance

    Posté par . En réponse au journal Moi, expert C++, j'abandonne le C++. Évalué à 4.

    Ca c'est du structural typing, non ? J'avoue que la syntaxe est tellement absconse que je pige pas tout le bout de code.

    Non c'est bien du duck typing, mais les auteurs de la page wikipédia ont écrit n'importe quoi.
    Pour la syntaxe absconse, c'est juste une question d'habitude sur le let binding. Pour définir une varibale, comme un entier, on écrit let i = 1 c'est-à-dire soit i l'entier 1 ou en anglais let i be the integer 1.

    Pour reprendre les exemples de la page wikipédia :

    class duck = object
     method fly () = print_endline "Duck flying"
    end
    class airplane = object
     method fly () = print_endline "Airplane flying"
    end
    class whale = object
     method swim () = print_endline "Whale swimming"
    end

    Pour savoir si un objet peut voler, c'est bien du duck typing :

    let fly o = o#fly ();;
    val fly : < fly : unit -> 'a; .. > -> 'a = <fun>

    la notation o#fly () consiste à appeler la méthode fly de l'objet o, et l'inférence de type conclue que pour utiliser la fonction fly sur un objet o celui-ci doit posséder une méthode fly et possiblement d'autres méthodes (les ... dans le type de l'objet). Ainsi :

    fly (new duck);;
    Duck flying
    - : unit = ()
    fly (new airplane);;
    Airplane flying
    - : unit = ()
    fly (new whale);;
    Error: This expression has type whale but an expression was expected of type
     < fly : unit -> 'a; .. >
     The first object type has no method fly

    L'erreur est détectée statiquement.

    Pourquoi OCaml reste si confidentiel s'il est si génial ?

    Je n'ai pas la réponse à la question. Peut être parce que c'est un langage académique et qu'il n'a pas la force de frappe en communication d'entreprises comme Google ou Oracle. Mais cela va peut être changer maintenant que facebook s'y est mis, bien qu'il le fasse via le langage Reason (qui n'est rien d'autre qu'une syntaxe concrète différente pour du OCaml afin qu'il ressemble plus au javascript : c'est laid, mais apparemment cela désarçonne moins leur cible de développeurs).

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