[and or xor] vs. [&& || ?]



  • Green_Ghost schrieb:

    config.hpp, anyone?
    btw, der Unterschied zwischen AND und UND ist auch nicht allzu groß...

    Mir dem Unterschied das UND eine Variable sein kann...

    Der war gut 😃 👍

    Green_Ghost schrieb:

    Das gleiche wie meine Grossmutter und meine Mutter einen unterschied haben.

    Ich bin mir zwar nicht sicher was du mit dieser Äußerung ausdrücken willst, aber mach dir mal Gedanken was ich mit meiner bezweckte.



  • Green_Ghost schrieb:

    Soll ich and,or,xor nicht mehr gebrauchen *zweifelanmir*

    Nunja, ist letztendlich persönliche Geschmackssache. Trotzdem sollte man sich darüber im Klaren sein, dass man mit and, or, xor, etc. keine Vorteile hat
    - längere Schreibweise (zB bitand gegenüber &)
    - 99,9% aller C++ Programmierer nutzen es nicht (dh, du musst dir letztendlich sowieso beide Schreibweisen aneignen, wenn du Fremdcode verstehen willst)
    - und wenn du's nutzt, dann musst du es auch generell durchziehen - ein 'a not_eq b' ist ja noch möglich, aber was machst du bei 'a == b'? Wieder mit #defines Unzulänglichkeiten beseitigen?
    - audacia's Beispiel hat gezeigt, dass man damit keine leserlichen Vorteile hat - ausschlaggebend dafür ist immer noch die Codegestaltung des Programmieres. Und wer solchen Code wie den von volkard schreibt, sollte sich einfach mal 'ne neue Tastatur kaufen, wo die Leertaste auch funktioniert. 🙂
    - zudem hat 'a and b' diesen VB Touch 😮 🙂



  • groovemaster schrieb:

    - zudem hat 'a and b' diesen VB Touch 😮 😃

    Eigentlich finde ich keins der Argumente sonderlich überzeugend, aber das hier ist wohl leider das, was für viele Leute den Ausschlag geben wird... man lernt ja schließlich nicht die komplexeste aller Mainstream-Programmiersprachen, um am Ende Code in englischen Worten zu verfassen 🙄



  • groovemaster schrieb:

    Nunja, ist letztendlich persönliche Geschmackssache. Trotzdem sollte man sich darüber im Klaren sein, dass man mit and, or, xor, etc. keine Vorteile hat
    - und wenn du's nutzt, dann musst du es auch generell durchziehen - ein 'a not_eq b' ist ja noch möglich, aber was machst du bei 'a == b'? Wieder mit #defines Unzulänglichkeiten beseitigen?

    Kann ich nicht nachvollziehen. Es gibt eben einige Operatoren ('+' ...) die einen fest etablierten Zeichencode haben und es gibt solche, die man ausschreibt. 'sizeof' und 'typeid' sind schließlich auch Operatoren.
    In anderen Sprachen ist es gang und gäbe, 'and', 'or' etc. zu schreiben. Ich muss volkard recht geben, es ist übersichtlicher. Hmm, mag Ansichtssache sein. Aber ich finde, man sollte die Menge an "ASCII-Art" im Code minimieren. In Ausdrücken ist es für mich persönlicher, Zeichen zu verwenden, weswegen ich auch '&' statt 'bitand' schreiben würde. Aber in "normalem" Code finde ich die textuelle Variante lesbarer. Klar, eine Bedingung ist letztendlich auch nur ein Ausdruck. Aber ich denke, jeder Programmierer fasst eine Verknüfung mehrerer Bedingungen intuitiv nicht wie eine mathematische Formel auf; 'and', 'or' sind hier also durchaus angebracht.

    groovemaster schrieb:

    - zudem hat 'a and b' diesen VB Touch

    Sieh's als Vorteil.



  • Zur englischen Sprache: Wer bitte schön 'übersetzt' denn && nicht sofort, zwangsläufig, ohne Mühe und unbewußt sofort mit der Bedeutung von "and"/"und"??

    operator void schrieb:

    Eigentlich finde ich keins der Argumente sonderlich überzeugend

    Auch die Verbreitung nicht?

    Konrad Rudolph schrieb:

    In anderen Sprachen ist es gang und gäbe, 'and', 'or' etc. zu schreiben.

    Und?

    Konrad Rudolph schrieb:

    In Ausdrücken ist es für mich persönlicher, Zeichen zu verwenden, weswegen ich auch '&' statt 'bitand' schreiben würde.

    Eh? "Persönlicher"? Hallo!? 🤡

    Konrad Rudolph schrieb:

    Aber in "normalem" Code finde ich die textuelle Variante lesbarer. Klar, eine Bedingung ist letztendlich auch nur ein Ausdruck.

    Was ist denn "normaler" Code? An der definition wär ich echt interessiert...
    Hast du auch #define plus + etc für "normalen" Code?

    Konrad Rudolph schrieb:

    Aber ich denke, jeder Programmierer fasst eine Verknüfung mehrerer Bedingungen intuitiv nicht wie eine mathematische Formel auf; 'and', 'or' sind hier also durchaus angebracht.

    Ja, stimmt. Mir fällt es auch immer wieder schwer Bool'sche Algebra in einen Zusammenhang mit der Mathematik zu stellen... 🙄



  • finix schrieb:

    Konrad Rudolph schrieb:

    In anderen Sprachen ist es gang und gäbe, 'and', 'or' etc. zu schreiben.

    Und?

    Nix und. Es gibt Leute, die das verwenden und normal finden. Ich sehe keinen Grund, wieso es in C++ weniger normal sein sollte.

    Konrad Rudolph schrieb:

    In Ausdrücken ist es für mich persönlicher, Zeichen zu verwenden, weswegen ich auch '&' statt 'bitand' schreiben würde.

    Eh? "Persönlicher"? Hallo!? 🤡

    Uh? Habe ich das geschrieben? *nachschau* tatsächlich. Äääh, ich meinte "lesbarer". Keine Ahnung, wie ich auf den Schwachsinn kam.

    Konrad Rudolph schrieb:

    Aber in "normalem" Code finde ich die textuelle Variante lesbarer. Klar, eine Bedingung ist letztendlich auch nur ein Ausdruck.

    Was ist denn "normaler" Code? An der definition wär ich echt interessiert...
    Hast du auch #define plus + etc für "normalen" Code?

    Wann kommt das denn mal im "normalen" Code vor? Der einzige nicht-mathematische Kontext vom '+', der mir jetzt einfällt, ist die String-Konkatenation. Und dort stört es mich auch irgendwie ziemlich. Man addiert schließlich keine Strings, man hängt sie aneinander ...

    Konrad Rudolph schrieb:

    Aber ich denke, jeder Programmierer fasst eine Verknüfung mehrerer Bedingungen intuitiv nicht wie eine mathematische Formel auf; 'and', 'or' sind hier also durchaus angebracht.

    Ja, stimmt. Mir fällt es auch immer wieder schwer Bool'sche Algebra in einen Zusammenhang mit der Mathematik zu stellen... 🙄

    Ich finde es intuitiver, eine verknüpfte Bedingung umgangssprachlich zu lesen. Klar, Boolesche Algebra ist hier anwendbar aber ich finde sie eigentlich fehl. Ich lese da lieber "Wenn Bedingung1 und Bedingung2 oder Bedingung3". Oder stellst Du im Kopf eine Logiktabelle auf, bildest die kanonische Form und vereinfachst die Terme, wenn Dir jemand sagt "Das Wetter ist schön und ich habe gute Laune, lass uns Fußballspielen gehen"?



  • finix schrieb:

    Zur englischen Sprache: Wer bitte schön 'übersetzt' denn && nicht sofort, zwangsläufig, ohne Mühe und unbewußt sofort mit der Bedeutung von "and"/"und"??

    Jeder, der nicht in einem Ableger der C-Familie programmiert?
    Man könnte auch if durch ?? und for durch -> ersetzen, nach ein paar Programmen würde man es ohne größere Probleme geistig übersetzen. Ich behaupte trotzdem, dass and und or ein klitzekleines Stück leichter verarbeitbar sind.

    finix schrieb:

    Auch die Verbreitung nicht?

    In dem selben Maß halt, wie alle Konventionen ein Argument sind. Wenn der Rest deines Teams && und || verwendet, fein, das wäre ein Argument. In einem eigenständigen Projekt sehe ich kein Problem darin, die "schönen" Keywords zu verwenden.

    finix schrieb:

    Hast du auch #define plus + etc für "normalen" Code?

    Es gibt einen gewissen Unterschied in der Verbreitung zwischen + und ||.



  • Konrad Rudolph schrieb:

    Was ist denn "normaler" Code? An der definition wär ich echt interessiert...
    Hast du auch #define plus + etc für "normalen" Code?

    Wann kommt das denn mal im "normalen" Code vor? Der einzige nicht-mathematische Kontext vom '+', der mir jetzt einfällt, ist die String-Konkatenation. Und dort stört es mich auch irgendwie ziemlich. Man addiert schließlich keine Strings, man hängt sie aneinander ...

    RTFM! 😉
    💡 ➡ mystring.append(foo) 👍

    Konrad Rudolph schrieb:

    Ich finde es intuitiver, eine verknüpfte Bedingung umgangssprachlich zu lesen. Klar, Boolesche Algebra ist hier anwendbar aber ich finde sie eigentlich fehl. Ich lese da lieber "Wenn Bedingung1 und Bedingung2 oder Bedingung3".

    Naja, wie gesagt, im C++-Kontext ist für mich && komplett equivalent zu 'and', auch vom Erfassen des Codes her. (Würde mich wundern wenn das für jemanden der schon einige Zeit programmiert anders wäre...)
    Außerdem lassen sich && and || und so viel leichter von Bezeichnern unterscheiden.

    Konrad Rudolph schrieb:

    Oder stellst Du im Kopf eine Logiktabelle auf, bildest die kanonische Form und vereinfachst die Terme, wenn Dir jemand sagt "Das Wetter ist schön und ich habe gute Laune, lass uns Fußballspielen gehen"?

    Umgangssprache und formale Sprache sind irgendwie schon zwei Paar Schuhe.
    Davon ab denke ich schon dass auch z.B. Tautologien o.ä. im "normalen Leben" auffallen, oder?



  • also fazitiere ich, daß and zwar schöner ist und aus ästhetischen gründen benutzt werden sollte, aber die betonschädel der c++-gemeinde sich nicht umstellen wollen, weil es zu basicisch ist.

    und natürlich soll man and in bedingungen nehmen aber nicht bitand in berechnungen. dieses eswige "wenn du a sagst, musst du auch b sagen", dieses "wenn du glockenbimmeln verbieten willst, musst du auch alle christen erschießen" (stets ohne herleitung, warum dieser zwang da sein sollte), ist ja langsam sowas von öde. das weltdümmste argument, und es ist bedauerlich, es hier so oft zu hören.



  • Ich höre zum erstenmal, das and C++-Standard sein soll, VC++ 2003 hat damit nichts am Hut (ist der jetzt schon so alt?). Und wenn ihr alle den Code net lesen könnt, dann teilt die Ausdrücke, der Compiler wirds schon wegoptimieren und macht kommentare!

    Naja, ich würd nen bisschen anderes Fazit ziehen, auf jedenfall werde ich garantiert kein and verwenden, weil es weder lesbarer noch irgendwas anderes ist.

    MfG
    DDR-RAM



  • operator void schrieb:

    finix schrieb:

    Zur englischen Sprache: Wer bitte schön 'übersetzt' denn && nicht sofort, zwangsläufig, ohne Mühe und unbewußt sofort mit der Bedeutung von "and"/"und"??

    Jeder, der nicht in einem Ableger der C-Familie programmiert?

    Ah, klar. Das Totschlagargument 😃
    Ernsthaft, welchen Sinn soll das haben? Wenn's um Algorithmen & Datenstrukturen geht tut's auch Pseudocode, und ansonsten... Wozu?

    operator void schrieb:

    Man könnte auch if durch ?? und for durch -> ersetzen, nach ein paar Programmen würde man es ohne größere Probleme geistig übersetzen.

    Genau das habe ich auch gesagt.

    operator void schrieb:

    Ich behaupte trotzdem, dass and und or ein klitzekleines Stück leichter verarbeitbar sind.

    Dies wiederum würde ich nicht behaupten. 'and' oder eher noch 'und' sind auch lediglich Symbole.

    operator void schrieb:

    finix schrieb:

    Auch die Verbreitung nicht?

    In dem selben Maß halt, wie alle Konventionen ein Argument sind. Wenn der Rest deines Teams && und || verwendet, fein, das wäre ein Argument. In einem eigenständigen Projekt sehe ich kein Problem darin, die "schönen" Keywords zu verwenden.

    Genau darum ging's bei der Verbreitung, Konventionen. btw, benutzt du and und or etc, für "schönen" Code?

    operator void schrieb:

    finix schrieb:

    Hast du auch #define plus + etc für "normalen" Code?

    Es gibt einen gewissen Unterschied in der Verbreitung zwischen + und ||.

    [/quote]
    War auch hauptsächlich bezüglich der Definition von "normalem" Code.. Was du allerdings mit dem Unterschied in der Verbreitung von + und || meinst ist mir nicht direkt klar.



  • Ich meinte ja nicht alles umschreiben.
    Ich verwende in for(), if(), while(), ect. lieber and,or,xor.
    Das macht es meiner ansicht nach einfacher.
    Wie es schon Konrad Rudolph schrieb.

    finix schrieb:

    Hast du auch #define plus + etc für "normalen" Code?

    🤡 Was hat das damit zu tun?
    and,or,xor sind schluesselwoerter im gegensatz zu plus

    MFG Ghost

    //Edit: Deutsche Sprache, Schwere Sprache 😉



  • volkard schrieb:

    also fazitiere ich, daß and zwar schöner ist und aus ästhetischen gründen benutzt werden sollte, aber die betonschädel der c++-gemeinde sich nicht umstellen wollen, weil es zu basicisch ist.

    Schönes Schlusswort. 🙂
    Finde && oder || allerdings nicht wirklich allzu kryptisch, daher and oder or auch nicht wirklich viel ästhetischer.

    volkard's alter C++ Kurs, Lektion 17: Logische Ausdrücke schrieb:

    return (jahr%4==0 && jahr%100!=0) || jahr%400==0;
    

    Ich hab nicht mal einen Hinweis auf and or or gefunden. Wirst du mit deinem neuen Kurs konsequent die "schönen" Schlüsselwörter benutzen, um die zumindest die frischen Köpfe auf die Ästhetik der C++-Programmierung einzuschwören? 😃



  • hab doch noch was vergessen.
    and, or und xor ist STL.
    && || (xor weiss ich nich) lernt man heute nicht mehr. (nur so am rande)
    Das es VC++ nicht kann ist mir auch klar.
    Herr Microsoft hat immer andere STL!!!

    Darum, ich gebe volkard 100% recht.

    MFG Ghost



  • finix schrieb:

    volkard schrieb:

    also fazitiere ich, daß and zwar schöner ist und aus ästhetischen gründen benutzt werden sollte, aber die betonschädel der c++-gemeinde sich nicht umstellen wollen, weil es zu basicisch ist.

    Schönes Schlusswort. 🙂
    Finde && oder || allerdings nicht wirklich allzu kryptisch, daher and oder or auch nicht wirklich viel ästhetischer.

    ich auch nicht. es ist nur ein fitzelchen feiner in bedingungen. aber bereits ein fitzelchen reicht mir, um drüber nachzudenken.

    Wirst du mit deinem neuen Kurs konsequent die "schönen" Schlüsselwörter benutzen, um die zumindest die frischen Köpfe auf die Ästhetik der C++-Programmierung einzuschwören? 😃

    ich sollte es erst selber testen. ich bin noch nicht umgesteiegen. mal sehen, wie es sich mit der neuen schreibe in der nächsten wpc anfühlt.
    nebenbei könnte ein positiver effekt sein, daß nubes bereits von selber ihre bedingungen ein wenig kürzer halten.



  • Konrad Rudolph schrieb:

    In anderen Sprachen ist es gang und gäbe, 'and', 'or' etc. zu schreiben.

    Und? Wir reden aber nicht über andere Sprachen, sondern C++.

    Konrad Rudolph schrieb:

    groovemaster schrieb:

    - zudem hat 'a and b' diesen VB Touch

    Sieh's als Vorteil.

    Nein danke, ich verzichte. :p

    Konrad Rudolph schrieb:

    Ich muss volkard recht geben, es ist übersichtlicher.

    Find ich nicht. Hast du dir das Beispiel von audacia mal angeschaut? Was ist da bitteschön übersichtlicher?

    Konrad Rudolph schrieb:

    Der einzige nicht-mathematische Kontext vom '+', der mir jetzt einfällt, ist die String-Konkatenation. Und dort stört es mich auch irgendwie ziemlich. Man addiert schließlich keine Strings, man hängt sie aneinander ...

    Dann überlad dir halt & und schreib

    a & " und " & b
    

    so wie in VB. Wo ist das Problem?

    operator void schrieb:

    Man könnte auch if durch ?? und for durch -> ersetzen, nach ein paar Programmen würde man es ohne größere Probleme geistig übersetzen.

    Was aber völlig OT ist, wir reden über mathematische Operatoren und nicht über Schlüsselwörter zur Flusssteuerung.

    volkard schrieb:

    und natürlich soll man and in bedingungen nehmen aber nicht bitand in berechnungen. dieses eswige "wenn du a sagst, musst du auch b sagen", dieses "wenn du glockenbimmeln verbieten willst, musst du auch alle christen erschießen" (stets ohne herleitung, warum dieser zwang da sein sollte), ist ja langsam sowas von öde. das weltdümmste argument, und es ist bedauerlich, es hier so oft zu hören.

    Du magst also solchen Code?

    a = b and c;
    d = e & f;
    

    Und nicht

    a = b and c;
    d = e bitand f;
    

    oder

    a = b && c;
    d = e & f;
    

    ?
    Mag sein, dass ich mir meine Arbeit zu einfach mache, indem man möglichst viel vereinheitlicht. Zu schade, dass sowas nicht mehr "in" ist. 🙄

    DDR-RAM schrieb:

    Ich höre zum erstenmal, das and C++-Standard sein soll, VC++ 2003 hat damit nichts am Hut (ist der jetzt schon so alt?).

    Der Vollständigkeit sei noch erwähnt, dass es da noch <iso646.h> gibt.

    [ironie]So, und jetzt noch das absolute Gegenargument zur textuellen Variante:
    Was ist, wenn jemand kein Englisch kann? Der versteht auch 'and' nicht, '&&' aber schon. Es ist letztendlich universal, genauso wie Zeichensprache für Gehörlose.[/ironie]

    So, schau jetzt Chelsea - Bayern. Schönen Abend noch.



  • DDR-RAM schrieb:

    Ich höre zum erstenmal, das and C++-Standard sein soll

    Ist es aber (2.11.2). Ich finde es auch nicht wirklich lesbarer als &&, aber naja... Geschmackssache!

    DDR-RAM schrieb:

    VC++ 2003 hat damit nichts am Hut (ist der jetzt schon so alt?)

    Ich weiß ja nicht welchen VC++ 2003 du hast, aber meiner kann das von Haus aus.



  • Also ich werde auch weiterhin && || ^... benutzen. Ich HASSE diese Verbaloperatoren. Sizeif oder typeid sehen ja enigstens noch wie Funktionen aus, aber Logische verknüpfungen wie in exel (ham wir grad in info 😃 ):

    =WENN(UND(bedingung_1,begingung_2);tudas;WENN(ODER(bedingung_3;bedingung_4);tujenes;tusolches))
    

    (in c++ etwa:

    int r;
    if(bedingung_1&&bedingung_2)
        r=tudas();
    else if(bedingung_3||bedingung_4)
        r=tujenes();
    else
        r=tusolches();
    

    )



  • groovemaster schrieb:

    Konrad Rudolph schrieb:

    groovemaster schrieb:

    - zudem hat 'a and b' diesen VB Touch

    Sieh's als Vorteil.

    Nein danke, ich verzichte. :p

    Gut. Dann ist die Diskussion ja schon erledigt. Es handelt es sich also nur um engstirnige Ideologie. volkard scheint recht zu haben.

    Konrad Rudolph schrieb:

    Ich muss volkard recht geben, es ist übersichtlicher.

    Find ich nicht. Hast du dir das Beispiel von audacia mal angeschaut? Was ist da bitteschön übersichtlicher?

    Wer schreibt denn so einen <del>Mist</del><ins>Code</ins>? Außerdem gibt es Syntax-Highlighting und das erfüllt einen Sinn. Mit einem geeigneten Highlighting ist solch ein Code in sprachlicher Variante sehr wohl übersichtlicher.

    Dann überlad dir halt & und schreib

    a & " und " & b
    

    so wie in VB. Wo ist das Problem?

    Dass es kein Standard ist. Diesen Code verstehen dann nur VBler intuitiv. Ein C++-Programmierer wird schwitzen.

    operator void schrieb:

    Man könnte auch if durch ?? und for durch -> ersetzen, nach ein paar Programmen würde man es ohne größere Probleme geistig übersetzen.

    Was aber völlig OT ist, wir reden über mathematische Operatoren und nicht über Schlüsselwörter zur Flusssteuerung.

    Ich weiß nicht, ob da jetzt so ein gewaltiger Unterschied ist. Klar, ich sehe was Du meinst und bin gewillt, Dir im ersten Moment recht zu geben aber vielleicht ist das ja nur eine Sache der Gewöhnung. In C++ gibt es schließlich auch '{...}' statt 'begin...end'.

    volkard schrieb:

    und natürlich soll man and in bedingungen nehmen aber nicht bitand in berechnungen. dieses eswige "wenn du a sagst, musst du auch b sagen", dieses "wenn du glockenbimmeln verbieten willst, musst du auch alle christen erschießen" (stets ohne herleitung, warum dieser zwang da sein sollte), ist ja langsam sowas von öde. das weltdümmste argument, und es ist bedauerlich, es hier so oft zu hören.

    Du magst also solchen Code?

    a = b and c;
    d = e & f;
    

    Und nicht

    a = b and c;
    d = e bitand f;
    

    Die Frage ging zwar nicht an mich, ich antworte trotzdem: Ja. Aber hier handelt es sich um einen Grenzfall. In C++, wo ich die Alternative habe, würde ich in solch einer Situation wohl durchaus '&&' schreiben ... nur eben in einer Bedingung einer Flusssteuerung nicht.

    Mag sein, dass ich mir meine Arbeit zu einfach mache, indem man möglichst viel vereinheitlicht. Zu schade, dass sowas nicht mehr "in" ist. 🙄

    Nein, nicht schade, gut so. Du vereinfachst nicht nur, Du übertreibst. Einheitlichkeit zum Selbstzweck bringt keinen Vorteil.



  • Walli schrieb:

    DDR-RAM schrieb:

    Ich höre zum erstenmal, das and C++-Standard sein soll

    Ist es aber (2.11.2). Ich finde es auch nicht wirklich lesbarer als &&, aber naja... Geschmackssache!

    DDR-RAM schrieb:

    VC++ 2003 hat damit nichts am Hut (ist der jetzt schon so alt?)

    Ich weiß ja nicht welchen VC++ 2003 du hast, aber meiner kann das von Haus aus.

    Also ich hab 7.1.3088

    Hat wer mal nen Link, wo offiziell steht das nen Standard ist?
    Ich kann nicht glauben. 😃

    MfG
    DDR-RAM

    edit:
    ok hab nen link gefunden 🙄


Anmelden zum Antworten