Quelle est l'utilité des opérateurs infixes dans un langage de programmation? Valent-ils la complexité supplémentaire qu'ils procurent? Pouvez-vous fournir des exemples où les opérateurs infixes sont mieux adaptés au problème qui ne peut pas être traité en surchargeant simplement les opérateurs normaux?
programming-languages
syntax
operators
Casebash
la source
la source
arg1.method(arg2)
plutôt quemethod(arg1, arg2)
.Réponses:
Je pense que les opérateurs d'infixation proviennent des mathématiques.
Cette:
est plus lisible pour la plupart des gens que
parce que la plupart des gens connaissent les mathématiques.
Assez intéressant dans Haskell, vous pouvez sauter entre l'infixe et le préfixe. Ceci utilise la même fonction "(+)":
et cela utilise la même fonction "elem":
la source
(+ 1 2)
beaucoup plus lisible que1 + 2
. Au moins,(+ 1 2 3 4 5)
c'est mieux que1 + 2 + 3 + 4 + 5
.1 2 +
ou1 2 3 4 5 +
plus généralement pour le dernier cas1 2 + 3 + 4 + 5 +
. Il y a en fait un avantage astucieux pour ceux-ci en ce qu'il modélise parfaitement un système basé sur une pile et a rarement (voire jamais?) Besoin de parenthèses pour ajuster la priorité de l'opérateur.Les langages informatiques sont conçus pour les humains et non pour les machines. Et les humains sont plus habitués à infixer les opérateurs que les pré ou postfixes.
la source
La seule vraie raison des opérateurs d'infixes est que les humains les trouvent généralement plus faciles à lire. Cela est dû en grande partie à deux faits:
2 * 2 = 4
etc.(some complex expression) + (some other complex expression)
D'un point de vue logique / machine, les opérateurs d'infixation n'ajoutent pas vraiment de valeur et dans certains cas sont une nuisance:
(* 1 2 3 4 5)
en Lisp, par exemple, est sans doute une syntaxe beaucoup plus propre pour multiplier un ensemble de nombres.la source