Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Forum de l’article

L’informatique, tentative d’explication

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rappel de la discussion
L’informatique, tentative d’explication
Frédéric Lefebvre-Naré - le 13 août 2022

Merci pour cette belle présentation du sujet !

Sur les données :
"Une question importante en programmation est celle du typage des données : pour faire simple, disons que si nous avons des données de type carotte et des données de type salade, il faudra veiller à ne pas additionner des carottes à des salades."
Oui et ce "il faudra" pose une grande question à la fois à l’informatique et aux utilisateurs ! (*qui* faudra ?)
Il fait 20° dans cette pièce de 20 m2 - ce sont deux nombres (entiers ou réels comme on voudra) que l’informatique traitera a priori de façon très similaire, idéalement en enregistrant leur unité (des vieilles calculettes HP savaient faire ça).
Il fait 18° dans la pièce voisine, de 18 m2.
Les deux pièces font ensemble 38 m2, mais pas 38°.
Nous avons appris en physique cette distinction entre variables extensives (sommables entre objets similaires) et intensives (non sommables entre objets similaires, alors qu’elle sont susceptibles d’additions : réchauffons de 18° la première pièce, elle atteindra bien 20° + 18° = 38°).
On peut imaginer un typage d’objets qui spécifierait cela, mais ça m’a l’air compliqué, et je ne l’ai jamais vu implémenté en informatique !

L’informatique, tentative d’explication
Laurent Bloch - le 13 août 2022

Merci de ces précisions, Frédéric. Autant qu’il m’en souvienne, Ada et Java permettent les distinctions de types que tu suggères, ainsi d’ailleurs que tous les langages qui permettent de définir des types privés. Évidemment, derrière, il faut dépenser un peu plus d’huile de coude...

L’informatique, tentative d’explication
Frédéric Lefebvre-Naré - le 13 août 2022

merci Laurent ; ma compétence en informatique est trop limitée, je sais juste que je ne saurais pas spécifier qu’un objet (ou attribut d’un objet, ici la température) est bien susceptible d’être additionné, mais pas entre objets (ou ici instances du même objet).

En tout cas j’observe que la tendance d’évolution - en tout cas avec R puis Python - n’est pas aux objets complexes ni à restreindre les fonctions aux seuls arguments conformes au type attendu, mais au contraire à typer au vol, ou tenter au vol de convertir, les arguments envoyés à la fonction ; ce qui transfère sur les programmes appelants, sur les utilisateurs, sur la maintenance applicative... la charge de gérer ce qui se passe quand des données inattendues sont envoyées. C’est l’opposé de la tendance d’évolution qu’on m’enseignait au début des années 90 (typages de plus en plus forts).

Et ce n’est pas un sujet anecdotique, "ça se passe tout le temps".

Je suppose (pour l’avoir lu quelque part) que la raison profonde est l’interconnection des programmes à travers des flux de données par définition sérialisés (json...), *donc non typés* ou peu typés (les hiérarchies d’objets / mécanismes d’héritage définis dans un programme sont ignorés de l’autre programme).

Ces réflexions sont un peu décousues et le langage approximatif, désolé, mais il me semble y avoir là un sujet d’avenir !

L’informatique, tentative d’explication
Laurent Bloch - le 13 août 2022

Oui, c’est bien pour cela que Python n’est pas un très bon langage général, et qu’il ne faut l’utiliser que pour ce pour quoi il a été conçu : de brefs scripts pour coordonner de vrais programmes écrits dans de vrais langages. Quant à R, il est excellent pour les statistiques, mais juste pour cela.

Gérard Berry a pu déclarer que Python (et ses cousins Perl et Ruby) avaient balancé par dessus bord les résultats de 50 ans de recherche en langages de programmation, ceux que l’on t’avait enseignés dans les années 1990. Mais bien sûr ils ont du succès, parce que c’est facile, ou du moins ça en a l’air, on écrit n’importe quoi et ça crache un résultat...

L’informatique, tentative d’explication
Laurent Bloch - le 13 août 2022

Et pour ce qui est des flux de données peu typés : certes, et Python est là pour ça, mais quand on écrit les programmes qui vont effectivement traiter ces données, on connaît leur nature et leur sémantique, en tout cas cela vaut mieux. Cf. mes essais avec Rust.

L’informatique, tentative d’explication
Laurent Bloch - le 15 août 2022

Après réflexion : même ce bon vieux Pascal, avec ses types ensembles, permet de définir des types numériques distincts pour les carottes et les salades, ce qui interdit de les additionner (sauf si, ivre, on le décide).

Et pour permettre la définition de variables intensives, non sommables entre objets similaires, alors qu’elle sont susceptibles d’additions, il suffit de leur donner les opérateurs += et -= et de les priver de + et de -.

Derniers commentaires

Une illustration de la concurrence monopolistique
Attention : les GPU sont très forts en produits scalaires, (en multiplication de matrices par (...)

Python
"on dit plutôt maintenant développeurs" ... Il y a (au moins) deux expressions qui (...)

À la Commission de développement de l’informatique du Ministère des Finances
Article tout aussi instructif que plaisant à lire. On pensera aussi à "Comédies Françaises", (...)

À la Commission de développement de l’informatique du Ministère des Finances
Dans le style qui t’est caractéristique, j’avoue que j’ai bien aimé ! J’ai même eu l’occasion (...)

Informatique confidentielle
La clé pour comprendre est peut-être qu’il s’agit ici de "machine virtuelle" et non de (...)