Alors, si cette ´evolutivit´e permettrait d’apporter `a Java la surcharge d’op´erateurs,
pourquoi ne pas le faire? Certains r´epondrait:
– “Si Sun ne l’a pas fait, c’est que ce n’est pas une bonne chose ou que
c’est impossible!”. Nos lectures pendant la pr´eparation de ce rapport
nous ont appris `a d´emythifier Sun, et `a voir les programmeurs humains
derri`ere ce sigle (on fera r´ef´erence surtout `a [4], qui pr´esente les prin-
cipaux d´efauts, selon l’auteur, de Java). De plus, si Java se dit ´evolutif,
c’est bien pour le faire ´evoluer !
– “La surcharge d’op´erateurs est un luxe dont on peut se passer.”. Alors,
`a l’extrˆeme, pourquoi ne pas programmer en assembleur?
– En ce qui concerne l’´eternelle “illisibilit´e” que provoquerait la sur-
charge d’op´erateurs, nous pensons que cet argument n’est pas rece-
vable: mˆeme James Gosling [5], pourtant au d´ebut oppos´e `a la sur-
charge d’op´erateurs, avoue :
And if you look at people who are doing complex arthmetic
in Java right now, it’s really ugly. I mean, it’s unbelievably
ugly.
– “Un programmeur peut d´efinir des op´erateurs avec une s´emantique bi-
zarre, non-intuitive.”. Nous nous joignons `a Conrad Weisert [6] pour
r´epondre:
Any programmer so undisciplined as to define + to do sub-
straction is likely also to define add in the same misleading
way or to commit all sorts of other programming sins. Com-
petent professionals are unlikely to do either.
2.2 L’int´
erˆ
et
Le succ´es de Java est certes important, mais il y a une cat´egorie de pro-
grammeurs qu’il n’a pas conquis: les math´ematiciens et tous ceux qui uti-
lisent l’informatique `a des fins majoritairement num´erique. Ces personnes
reprochent `a Java sa lourdeur d’´ecriture et son manque d’efficacit´e `a ce ni-
veau. Un exemple souvent cit´e est l’utilisation des nombres complexes : on
aimerait, pour ce type d’objet num´erique, jouir des mˆemes avantages que les
types primitifs, c’est `a dire efficacit´e, utilisation des op´erateurs arithm´etiques
et s´emantique par copie. Ainsi, nos recherches nous ont pratiquement toujours
ramen´e `a ce mˆeme th`eme: l’extension de Java au niveau num´erique. On citera
par exemple le projet JavaGrande [7], qui propose une approche int´eressante
que nous d´evelopperons dans la section 4.
Le num´erique semble donc ˆetre le talon d’achille de Java, et la surcharge
des op´erateurs serait un pas en avant vers un Java plus universel.
3