En fortran 90, on peut aussi avoir autant d'operateur que l'on veut avec la syntaxe
.operateur.
C'est très pratique. J'ai deux vecteurs, je veux le produit scalaire
v1 .scalar. v2
J'ai deux tenseurs, je veux aussi le produit scalaire
t1 .scalar. t2
Je me suis battu avec des thésards pour avoir cet opérateur .scalar. et non pas * comme beaucoup pense. *, c'est l'opérateur produit, mais produit de quoi : scalaire, vectoriel... Avec l'opérateur *, on ne sais jamais le type du résultat de l'opération et les formlules mathématiques deviennent imbittables.
En C ou en C++, on ne peut pas faire cela et c'est bien dommage, les formules de math sotn bien moins claires et du coup le risque d'erreur est plus important.
Si on souhaite un langage qui puisse faire "des math", il est important de laisser libre champs aux opérateurs et ne pas se cantonner aux seules méthodes. Les méthodes cassent la symétrie et ne reflète pas la formule
v1.scalar(v2)
est très différent de
v1 .scalar. v2
Dans le second cas, on a bien un produit scalaire entre deux vecteurs, ces deux vecteurs étant au même niveau.
Je crois que c'est une des raisons pour lesquelles perl6 ne sera pas pure objet et que les concepteurs veulent garder l'aspect multi-fonctions.
En dehors des math, je n'ai pas d'opinion et je ne sais pas si cela est aussi important.
[^] # Re: C Uber Alles
Posté par Sytoka Modon (site web personnel) . En réponse au journal Il faut sauver le soldat %. Évalué à 3.
.operateur.
C'est très pratique. J'ai deux vecteurs, je veux le produit scalaire
v1 .scalar. v2
J'ai deux tenseurs, je veux aussi le produit scalaire
t1 .scalar. t2
Je me suis battu avec des thésards pour avoir cet opérateur .scalar. et non pas * comme beaucoup pense. *, c'est l'opérateur produit, mais produit de quoi : scalaire, vectoriel... Avec l'opérateur *, on ne sais jamais le type du résultat de l'opération et les formlules mathématiques deviennent imbittables.
En C ou en C++, on ne peut pas faire cela et c'est bien dommage, les formules de math sotn bien moins claires et du coup le risque d'erreur est plus important.
Si on souhaite un langage qui puisse faire "des math", il est important de laisser libre champs aux opérateurs et ne pas se cantonner aux seules méthodes. Les méthodes cassent la symétrie et ne reflète pas la formule
v1.scalar(v2)
est très différent de
v1 .scalar. v2
Dans le second cas, on a bien un produit scalaire entre deux vecteurs, ces deux vecteurs étant au même niveau.
Je crois que c'est une des raisons pour lesquelles perl6 ne sera pas pure objet et que les concepteurs veulent garder l'aspect multi-fonctions.
En dehors des math, je n'ai pas d'opinion et je ne sais pas si cela est aussi important.