Avatar von Nalathni
  • Nalathni

mehr als 1000 Beiträge seit 09.09.2004

Re: Swift ist für mich tot...

Klar, mit dem Argument kann man eine Menge rauswerfen, bis hin zur Unleserlichkeit.

+=1 ist nicht unleserlich und gerade mal ein Zeichen mehr.

Ein

page++

erkenne ich quasi sofort als ein Symbol, ohne Transferleistung.

Dann erkennst Du wahrscheinlich page++++ auch besser als page+=2, oder? (und es ist ja nicht so unüblich, zwei Seiten weiterzublättern, in einem gewöhnlichen Buch macht man das ständig)

Aber das ist eine reine Gewohnheitssache, nichts, was sich sinnvoll begründen ließe.

Mir hätte ja gereicht, wenn nur noch Konstrukte wie

variableX++

in einer separaten Zeile erlaubt geblieben wären.

Und warum nicht so?

++variableX

Ich fände das besser, weil ich es in C++ viel häufiger nutze, wahrscheinlich hundert mal so oft wie den Postfix-Operator.

Aber wenn wir uns sowieso alle umgewöhnen müssen (oder zumindest die Hälfte von uns), und wenn das sowieso nur in einer separaten Zeile erlaubt ist, wäre auch folgende - dann nicht mehr mehrdeutige - Schreibweise möglich:

variableX+

Was spricht dagegen? Nach Deiner Argumentation müsste das gewinnen, weil es noch lesbarer ist (nach kurzer Eingewöhnungszeit).

Für mich ist Lesbarkeit wichtiger als größte Einfachheit für Compilerbauer und Universalität.

Natürlich ist Lesbarkeit oberstes Gebot. Aber +=1 ist doch lesbar. Man sieht auf einen Blick, was passiert.

Insgesamt wird es einfacher durch das Wegfallen, man nimmt unnötige Komplexität raus, nicht nur beim Compiler, sondern auch beim Regelwerk (insbesondere für Anfänger).

Einfacher? Doch nur für den Compilerbauer.

Und man muss Anfängern nicht mehr vermitteln, wann sie besser ++x schreiben anstatt x++, das macht es doch auch einfacher, oder?

Und man erspart sich das dreifache Überladen von Operatoren, wenn man das gestattet (bzw. sechsfaches Überladen, wenn man -- und -= dazu zählt). Es wird also auch für Entwickler einfacher, zumindest für diejenigen, die Operatoren überladen.

Außerdem wird es einfacher für Entwickler, sich die Operator-Rangfolge zu merken (das Argument ist natürlich irrelevant, wenn ++ lediglich allein vorkommen darf, wie von Dir vorgeschlagen).

Ich kann Dir turing-vollständige Sprachen bauen, wo als einzige mathematische Operation das "++" zugelassen ist ;-)

Wenn Du Brainfuck programmieren möchtest, will ich Dich nicht daran hindern. Aber eine höhere Programmiersprache ist es deshalb, weil man komplexe Operationen einfach ausdrücken kann. Dazu können Operatoren ihren Teil beitragen. Trotzdem sollte man die Anzahl der Operatoren klein halten (auch damit es nicht so ausartet wie z.B. bei Perl), d.h. wenn man einen zusätzlichen Operator einführen möchte, braucht er einen großen Nutzen.

Bei C war ++ sinnvoll, weil man es ständig benötigt hat (hauptsächlich für Schleifen und Pointerarithmetik). Auch bei C++ war der Operator unverzichtbar, und sei es für die Iteratoren der Standardbibliothek (seit C++11 braucht man es deutlich seltener, aber natürlich versteckt das range-based-for die Aufrufe nur, und ++ ist unter der Haube weiterhin wichtig).

Bei Swift hat man sich aber von vielen dieser Mechanismen getrennt, so dass ++ plötzlich nicht mehr so wichtig war. Und weil hinter ++ ein ganzer Rattenschwanz an Komplexität steckt (und sei es nur das Überladen des Postfix-Operators), hat man sich komplett davon verabschiedet, anstatt nur den Rattenschwanz abzuschneiden (und z.B. ++ nur noch in einer eigenen Anweisung zu erlauben, wie Du es vorgeschlagen hast).

Und ich glaube, es ist auch gar nicht so einfach, ein gutes Code-Beispiel in Swift zu finden, wo ++ wirklich besser wäre. Bei eher einfachen Funktionen wie folgender, ist der Unterschied minimal:

++page refresh() page += 1 refresh()

(abgesehen davon läuft es sowieso auf letzteres hinaus, wenn man der Funktion einen Parameter verpasst, mit dem man angeben kann, wie viele Seiten man auf einen Schlag weiterblättern möchte)

Und bei komplexeren Algorithmen, wo ein ++ womöglich vereinfachend wäre, gibt es oftmals noch einfachere Schreibweisen (z.B. mit for-in).

Aber ich lasse mich gern eines besseren belehren... (und ich bin mir sicher, Du findest was)

Die Entwickler von Swift sind aber keine Idioten. Vor der Abschaffung von ++ gab es eine umfangreiche Diskussion, und nach etlichem Für und Wider gab es letztlich mehr Argumente gegen den Operator. Das heißt aber nicht, dass es keine dafür gäbe.

Bewerten
- +