Wie nützlich sind Infix-Operatoren in einer Programmiersprache? Sind sie die zusätzliche Komplexität wert, die sie bieten? Können Sie Beispiele nennen, in denen Infix-Operatoren besser für das Problem geeignet sind, das nicht durch einfaches Überladen der normalen Operatoren gelöst werden kann?
programming-languages
syntax
operators
Casebash
quelle
quelle
arg1.method(arg2)
stattmethod(arg1, arg2)
.Antworten:
Ich denke, Infixoperatoren stammen aus der Mathematik.
Dies:
ist für die meisten Menschen besser lesbar als
weil die meisten Leute mit Mathematik vertraut sind.
Interessant genug in Haskell können Sie zwischen Infix und Präfix springen. Dies verwendet die gleiche Funktion "(+)":
und dies verwendet die gleiche Funktion "elem":
quelle
(+ 1 2)
viel besser lesbar finde als1 + 2
. Zumindest(+ 1 2 3 4 5)
ist besser als1 + 2 + 3 + 4 + 5
.1 2 +
oder1 2 3 4 5 +
eher typisch für den letzten Fall1 2 + 3 + 4 + 5 +
. Es hat tatsächlich den Vorteil, dass es ein Stack-basiertes System perfekt modelliert und selten (wenn überhaupt?) Klammern benötigt, um die Priorität des Operators anzupassen.Computersprachen sind für Menschen gedacht, nicht für Maschinen. Und Menschen sind eher daran gewöhnt, Operatoren zu infizieren, als an Prä- oder Postfixes.
quelle
Der einzige wirkliche Grund für Infix-Operatoren ist, dass Menschen sie im Allgemeinen leichter lesen können. Dies ist hauptsächlich auf zwei Tatsachen zurückzuführen:
2 * 2 = 4
usw.(some complex expression) + (some other complex expression)
Aus logischer / maschineller Sicht bringen Infix-Operatoren keinen wirklichen Mehrwert und sind in einigen Fällen ein Ärgernis:
(* 1 2 3 4 5)
in Lisp zum Beispiel ist wohl eine viel sauberere Syntax zum Multiplizieren einer Menge von Zahlen.quelle