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



  • 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 🙄



  • Konrad Rudolph schrieb:

    Es handelt es sich also nur um engstirnige Ideologie.

    Genau, welchen tatsächlichen Vorteil sollten and, xor und Konsorten denn haben? 😃

    Konrad Rudolph schrieb:

    Mit einem geeigneten Highlighting ist solch ein Code in sprachlicher Variante sehr wohl übersichtlicher.

    Ansichtssache.



  • ness schrieb:

    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();
    

    )

    wir reden über

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


  • groovemaster schrieb:

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

    Und nicht

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

    oder

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

    ?

    destawegen tat ich schreiben , daß ich and in bedingungen haben mag. damit meine ich den steuernden ausdruck in if, while, do, for und ?:.

    wer unbedingt a = b && c schreiben mag, der soll das tun. man kann eh praktisch alles in c++ auf 5 oder mehr arten implemetieren. und die gemeinde benutzt die freiheit, um noch besseren code zu zaubern. wenn man and in bedingungen und && in berechnungen nähme, wäre mir schon sehr gehelft.



  • if(fish_and_chips and and_potatoe)
    
    if(fish_and_chips && and_potatoe)
    

    wie kommt ihr alle auf die idee es sei lesbarer diese 'verbaloperatoren' zu benutzen?
    ich finde da sollte man die leute eher dazu prügeln zwischen operatoren leerstellen zu machen.



  • borg schrieb:

    if(fish_and_chips and and_potatoe)
    
    if(fish_and_chips && and_potatoe)
    

    wie kommt ihr alle auf die idee es sei lesbarer diese 'verbaloperatoren' zu benutzen?
    ich finde da sollte man die leute eher dazu prügeln zwischen operatoren leerstellen zu machen.

    Wer seine Variablen so doof benennt, dem ist nicht meht zu helfen. Was hat das mit der Diskussion zu tun?



  • Konrad Rudolph schrieb:

    Wer seine Variablen so doof benennt, dem ist nicht meht zu helfen.

    mir fallen haufenweise undoofe wörter ein in denen or und and vorkommt.

    if(new_order or original_order)
    

    Konrad Rudolph schrieb:

    Was hat das mit der Diskussion zu tun?

    😕 ich behaupte es wird nicht lesbarer wenn man die operatoren ausschreibt, darum gehts doch hier oder?



  • Boaaah, immer diese komischen diskussionen die sich dann über zig seiten wälzen,
    wer das eine benutzen will benutzt dies, wer das andere benutzen will benutzt das

    für mich ist "&&" genauso lesbar wie "and",
    warum?
    Ganz einfach: Weil ich es so gewöhnt bin.
    Wer lieber "and" schreibt statt "&&": Na && soll er doch!
    Wers andersrum mag: Auch gut.

    Aber es gilt ja bekanntlich wie immer:
    Über Geschmack lässt sich streiten.

    Also viel Spaß noch beim Auswälzen der Für und Wider.



  • Konrad Rudolph schrieb:

    Es handelt es sich also nur um engstirnige Ideologie.

    "engstirnige Ideologie"? Wie bist du denn drauf? Wie ich bereits erwähnte, ist es Geschmackssache. Wenn du die textuelle Variante bevorzugst, gut, dann machs halt. Nur seh ich keinen Vorteil darin, und bisher hat auch noch niemand wirklich gute Argumete dafür gebracht.

    Konrad Rudolph schrieb:

    volkard scheint recht zu haben.

    Ganz recht, volkard hat immer Recht.

    Konrad Rudolph schrieb:

    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.

    Ach ja? Kannst du mal genau erklären WAS dann übersichtlicher ist?

    Konrad Rudolph schrieb:

    Dann überlad dir halt & und schreib

    a & " und " & b
    

    so wie in VB. Wo ist das Problem?

    Dass es kein Standard ist.

    Bitte? Was ist daran kein Standard? Dass std::string das nicht anbietet? Was hindert dich aber daran, das in deine eigene String Klasse zu implementieren. Uns sag jetzt nicht, dass du so eine nicht hast. Es soll doch tatsächlich Leute bzw APIs geben, die eigene String Klassen benutzen.

    Konrad Rudolph schrieb:

    Diesen Code verstehen dann nur VBler intuitiv. Ein C++-Programmierer wird schwitzen.

    Und wirfst C++ vor, dass

    string1 + string2
    

    nicht intuitiv genug ist? Versteh ich nicht. Es wird nunmal immer Eigenheiten einer Sprache geben, mit der sich ein Programmierer auseinander setzen muss.

    Konrad Rudolph schrieb:

    Ich weiß nicht, ob da jetzt so ein gewaltiger Unterschied ist.

    Nun, den gibt es zweifellos. Oder hast du schon mal versucht, 'for' zu überladen?

    Konrad Rudolph schrieb:

    In C++ gibt es schließlich auch '{...}' statt 'begin...end'.

    Ja, wobei das imo noch mal eine ganz andere Kategorie ist. Letztendlich sind sowas Bereichsbegrenzungen, und man hat sich dort womöglich an ( und ) orientiert. Bei Templates ist das mit < und > das gleiche. Wobei jeder dieses schöne

    template <class T = foo<int>>
    

    kennt, was ja so nicht möglich ist. IIRC soll es da im nächsten Standard Änderungen geben.

    Konrad Rudolph schrieb:

    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.

    Wow, das find ich ja mal interessant. Du magst also solche Sachen

    if (a and b)
        c = d && e;
        //...
    

    Schon lustig, auf was für seltsame Ideen Leute so kommen. Letztendlich führt das die ganze Angelegenheit aber vollkommen ad absurdum. Mich, als Programmierer, interessiert doch nicht, wo ich jetzt welche Ausdrücke habe. Mich interessiert nur, dass ich einen Operator habe, der mir ein bestimmtes Ergebnis aus x Operanden liefert. Wenn ich hier mal diese Schreibweise habe und dort mal jene, DAS ist für mich wenig intuitiv.

    Konrad Rudolph schrieb:

    Einheitlichkeit zum Selbstzweck

    Irgendwie ein Widerspruch, findest du nicht auch?



  • finix schrieb:

    Genau, welchen tatsächlichen Vorteil sollten and, xor und Konsorten denn haben?

    Welche Vorteile haben '&&', '||' und '^'?
    Das es kompatibel ist mit den Alten Compiler, zieht nicht! (#define)!

    Der Punkt ist der geschmack. Ob ich jetzt:

    if(..){ //<= meine variante
    ..
    }else{
    ..
    }
    
    //oder
    
    if(..)
    {
    ..
    }
    else
    {
    ...
    }
    

    Ist reine Formsache. Jeder Programmierer hat seinen code.
    Ich wollte hier keinen Streit verursachen... 😞

    Am rande:
    was macht:

    a=b and c
    

    genau? Doppelzuweisung? 😕

    MFG Ghost



  • Green_Ghost schrieb:

    Am rande:
    was macht:

    a=b and c
    

    😕

    MFG Ghost

    a nimmt 1 oder 0 an, je nachdem was bei dem ausdruck "a and b" rauskommt.
    🤡


Anmelden zum Antworten