• [^] # Re: Il faudra de toutes façons faire qque chose

    Posté par . En réponse à la dépêche Brevets logiciels : nouvelle offensive surprise. Évalué à 2.

    Euh, quel sens donnes-tu exactement à "complexe" ?

    En général, le sens que lui donnent H.A. Simon et Jean-Louis Le Moigne. Parfois celui que donnent D.E. Knuth et A. Turing.

    Pour faire simple, la première définition différencie les systèmes compliqués (que l'on analyse par décomposition pour les expliquer) des systèmes complexes (que l'on modélise par construction pour les comprendre).

    Quant à la seconde, elle a rapport à la décidabilité et à la faisabilité d'opérations par une machine de Turing (en terme d'opérations atomiques et/ou de taille des données).

    Ma notion (intuitive) de la complexité d'une chose, c'est le nombre d'explications à y apporter pour la décrire.

    Ni la description ni l'explication ne sont toujours possibles ni n'ont de sens.
    Ensuite, vient la complexité des « explications » elles-mêmes.

    C'est très proche de la vraie notion de complexité (taille du plus petit algorithme pouvant décrire une chose).

    Je suppose que lorsque tu utilises l'adjectif « vraie », tu veux dire « mathématique ». À part cela, il ne s'agit pas de la « taille du plus petit algorithme » mais du nombre d'opérations atomiques (ou de places en mémoire) minimal, moyen ou maximal que prend un algorithme pour se réaliser sur une machine de Turing.

    Tu donnes deux exemples, mais ce n'est pas très explicite, et tu ne dis pas pourquoi les calculs avec des chiffres romains sont moins complexes et plus compliqués que les calculs en base 10.

    Encore une fois : les chiffres romains *sont* en base 10. Ça a l'air d'être un détail mais c'est celui que je relevais.

    Les calculs avec les chiffres romains sont compliqués car la notation (que l'on pourrait qualifier de simpliste), plus créée pour le comptage, n'est pas adaptée aux calculs arithmétiques (y compris l'addition), mais les notions utilisées sont simples (comptage). Mais, effectivement, algorithmiquement parlant, cela en fait des données dont la manipulation est complexe.

    La notation positionnelle avec un chiffre et un nombre zéro est complexe dans le sens où il faut des notions plus évoluées pour la concevoir (pas forcément pour l'utiliser) :
    - il faut comprendre que la notion de chiffre est différente de la notion de nombre ;
    - il faut comprendre la notion de position (et donc de base) ;
    - il faut comprendre l'utilité du zéro (notion qui ne va pas forcément de pair avec la précédente, cf. les différents systèmes utilisant une notation positionnelle mais sans chiffre zéro).
    Cette notation est effectivement plus pratique à utiliser, en terme de complexité algorithmique.

    De plus, si je reprends ta définition intuitive de la complexité, c'est-à-dire en terme d'explications, il est bien plus difficile d'expliquer complètement la notation positionnelle (car il faut aussi expliquer les notions qu'elle porte), que d'expliquer les chiffres romains (il « suffit » de compter). Évidemment, dans une culture qui utilise la notation positionnelle, expliquer les chiffres romains en partant des chiffres arabes est assez difficile, mais l'inverse est aussi vrai (voir le temps qu'il a fallu à l'Europe pour accepter et utiliser les chiffres indiens et leurs méthodes de calculs pourtant bien plus simples pour nous).

    Mais, dans les propos de « sutra pierre » https://linuxfr.org/comments/511108.html#511108(...) , je pense qu'il fallait bien comprendre complexité au sens de la construction/conception des systèmes, pas de leur utilisation. Et dans ce sens, comme je viens d'essayer de l'argumenter, les chiffres romains sont moins complexes que la notation positionnelle avec zéro.

    Donc ton contre-exemple n'en était pas un.

    Pfiu, j'ai été très long et je ne suis pas sûr d'être encore assez explicite ;oP

    [Pour plus d'informations sur l'histoire des systèmes de notation des nombres, voir L'Histoire universelle des chiffres.]