• [^] # Re: Expressivité

    Posté par . En réponse au journal Les 7 étapes pour devenir un programmeur Go.. Évalué à 3. Dernière modification le 25 mars 2019 à 16:56.

    Tu pourrais être plus explicite ? Je ne vois pas en quoi le fait de favoriser "une façon évidente et si possible unique" de faire une tâche nuit à l'expressivité du langage. Au contraire, si il y une façon évidente et unique de faire une tâche, tout le monde va utiliser cette façon et l'intention du programmeur sera claire.

    Les différentes structures proches, mais ayant potentiellement une sémantique (au sens de notre lecture du programme et pas au sens de la manière dont il est interprété par son compilateur) aide le développeur à exprimer ce qu'il souhaite représenter. Une condition, ça peut permettre d'exprimer des cas d'erreur, de gérer des valeurs par défaut (qui ne sont pas des erreurs), peuvent remplacer du polymorphisme,... on peut trouver tout un tas de sémantiques différentes. D'un point de vu purement machine ça reste un saut conditionnel, mais pour notre compréhension il peut être utile d'avoir des représentations différentes. On peut trouver dans différents langages les if, unless, switch, l'opérateur ternaire, des opérateurs de déréférencement null-safe, du pattern matching, le given de perl est une sorte de pattern matching bizarre, bash a ${identifiant:-defaultValue} et d'autres, etc. Ce sont autant de constructions qui permette au développeur d'exprimer des choses différentes, alors qu'elles sont compilée (ou du moins compilables) en un simple saut conditionnel.

    En écrivant ce paragraphe, je crois me souvenir que c'est théorisé le lien existant ou non entre la complexité d'une langue et son expressivité.

    Tu n'a pas réagi sur mon exemple pourtant ?

    C'est un exemple et pas un argument. Des exemples on peut en sortir une infinité qui vont montrer ce que l'on veut. Je ne vois pas comment établir quoi que ce soit à partir de simples exemples.

    C++, c'est pas le langage où quand on veut faire une classe copiable, il faut définir 4 méthodes différentes ? Mais pas de boiler-plate hein ?

    La question me semble plus intéressante qu'il n'y paraît. C'est quoi une classe copiable ? Faire une deep/shall copy ? On parle juste de copier la référence ? S'il s'agit juste de faire de la copie de référence comme la plupart des langages le font, tu n'a pas besoin de ces 4 méthode.

    Après oui le C++ n'est pas le langage le plus concis qui existe (c'est ce que tu voulais me faire dire ?) et le python n'est pas le langage le plus verbeux (c'est l'autre truc que tu voulais me faire dire ?).