Bezeichnungen in deutsch oder englisch?



  • Hallo,

    sorry, wieder ne Anfängerfrage.

    Ist das ein besserer Stil, wenn man die Bezeichnungen von Variablen, Funktionen, Klassen etc in englisch schreibt?

    Oder ist das egal und man kann genauso gut deutsch nehmen?


  • Mod

    Englisch natürlich.

    Ausführliche Begründung:
    Guter Stil dient dazu, Programme für andere Menschen leserlicher zu machen. Andere Menschen sprechen alle Englisch, aber nur einige sprechen Deutsch.



  • Ok, danke.



  • Ich programmiere in Deutsch, das ist ja schließlich auch meine Muttersprache.

    So, jetzt hast du zwei Meinungen. 😉



  • Wenn die relevante Chance besteht, dass der Code von nicht-deutschsprachigen Menschen gelesen wird englisch, ansonsten kannst du es dir aussuchen.



  • Anderes Argument für Englisch: die ganzen Keywords und Informatik-Fachbegriffe sind in Englisch. Und mir kommt immer das Kotzen, wenn ich Code lese, wo sich deutsche und englische Bezeichnungen vermischen. Was sogut wie immer passiert, wenn man anfängt deutsche Variablen/Klassennamen zu verwenden.

    Kurz: wer Englisch kann sollte Englisch verwenden, und wer kein Englisch kann sollte Englisch lernen.



  • Englisch

    Weil, ich damit meiner Meinung nach kurze aussagekräftige Namen hin bekomme. Das ist im Deutschen schon allein wegen der Umlaute schwierig.

    Andere Menschen sprechen alle Englisch

    Das halte ich für ein Gerücht. Ich hab auch mal was über die wirklich am meisten verbreitete Sprache gehört. Diese spreche ich aber nicht, deswegen kann man auch da nicht von allen ausgehen.
    Was aber zutreffen wird ist, dass alle Leute die genügend Bildung besitzen Quelltexte lesen zu können mit hoher Wahrscheinlichkeit, mehr oder weniger gut, auch Englisch sprechen können.
    Auch hat Englisch einen anderen Vorteil, es dient als Zwischensprache für viele Übersetzer.



  • Das halte ich für ein Gerücht. Ich hab auch mal was über die wirklich am meisten verbreitete Sprache gehört. Diese spreche ich aber nicht, deswegen kann man auch da nicht von allen ausgehen.

    Ist dann wahrscheinlich Standard-Chinesisch. Ich meine, in Asien leben 4.3 Milliarden Menschen. Wenn dort ca 50% eine Sprache sprechen, kann man sich die Zahl ja vorstellen. Aber da chinesisch schwer zu erlernen ist, und Englisch an so gut wie allen Schulen unterrichtet wird (im gegensatz zu chinesisch), ist (auch für chinesen) oft Englisch als internationale Sprache die bessere Wahl.

    Was die Variablennamen angeht, kommt einfach drauf an, ob den Quellcode noch jemand anders lesen könnte. Und wenn ja, dann höchstwahrscheinlich auch nur von anderen Deutschen. Wenn er allerdings (wahrscheinlich) auch von Ausländern gelesen werden könnte, nimm einfach Englisch. Nichts, worüber man lange nachdenken sollte. Suchs dir einfach aus.



  • Ich habe nach kurzer Zeit konsequent auf englische Bezeichner umgestellt, weil ansonsten ein Mischmasch aus Englisch (externe Bibliotheken) und Deutsch entsteht.

    Aber das hat mich gerade auf die Idee gebracht, deutsche Ausdrücke mit den englischen zu vergleichen:

    struct   plan
    class    bund
    char     stab
    int      zahl
    short    kurz
    long     lang
    unsigned nat
    include  hol
    return   wirf
    
    pointer  zeiger
    array    feld
    string   kette
    vector   liste
    list     knüpfe
    node     glied
    stream   strom
    map      kartei
    

    Beispiel:

    #hol <eastrom>
    #hol <liste>
    #hol <kette>
    
    nutze std::kette;
    
    bund kunde {
    offen:
        kunde(fest kette& name, zahl geld)
          : name_(name), geld_(geld) {}
        fest kette& name() fest  { wirf name_; }
        nat         geld() fest  { wirf geld_; }
        leer kassier(nat betrag) { geld_ -= betrag; }
    geheim:
        kette name_;
        zahl  geld_;
    }
    
    bund auftrag {
    offen:
        auftrag(fest kunde& von, nat preis)
          : von_(von), preis(preis) {}
        fest kunde& von() fest { wirf von_; }
        bool erfüllt() fest { wirf getan; }
        leer machfertig() { kunde_.kassiere(preis); getan = wahr; }
    geheim:
        fest kunde& von_;
        nat  preis;
        bool getan;
    };
    
    muster<typ T>
    T lese(fest stab *txt)
    {
        std::raus << txt << ": ";
        T wert;
        std::rein >> wert;
        wirf wert;
    }
    
    zahl start(nat argz, stab **argw)
    {
        std::liste<auftrag> atr;
        für (nat i=0; i<10; ++i) {
            kette name(lese("Kundenname"));
            zahl  geld(lese("Vermögen"));
            atr.dazu(kunde(name, geld), 1000);
        }
        für (std::liste<auftrag>::läufer l=atr.anfang(); l!=atr.ende(); ++l) {
            l->machfertig();
            std::raus << "Vermögen von " << l->name() << ": " << l->geld() << std::nz;
        }
    }
    
    #include <iostream>
    #include <vector>
    #include <string>
    
    using std::string;
    
    class client {
    public:
        client(const std::string& name, int money)
          : name_(name), money_(money) {}
        const string& name () fest  { return name_;  }
        unsigned      money() fest  { return money_; }
        void take_the_money(unsigned amount) { money_ -= amount; }
    private:
        std::string name_;
        int  money_;
    }
    
    class commission {
    public:
        commision(const client& from, unsigned price)
          : from_(from), price(price) {}
        const client& from() const { return from_; }
        bool comply() const { return done; }
        void complete() { from_.take_the_money(preis); done = true; }
    private:
        const kunde& from_;
        unsigned price;
        bool done;
    };
    
    template<typename T>
    T read(const char *desc)
    {
        std::cout << desc << ": ";
        T value;
        std::cin >> value;
        return value;
    }
    
    int main(int argc, char **argv)
    {
        std::vector<commission> cms;
        für (nat i=0; i<10; ++i) {
            string name(read("client's name"));
            int money(read("assets"));
            cms.add(client(name, money), 1000);
        }
        für (std::vector<commission>::iterator it=cms.begin(); l!=cms.end(); ++l) {
            l->complete();
            std::cout << "assets from " << l->name() << ": " << l->money() << std::endl;
        }
    }
    

    867 zu 986 Zeichen (abzüglich Leerzeichen) zugunsten der deutschen Bezeichner.



  • Ich lag fast unter dem Tisch 😃



  • Egal was ihr macht. Mischt das ganze nicht. Erst recht nicht in dem gleichen Bezeichner.
    So etwas geht gar nicht:

    API von Firma X schrieb:

    HoehenProfilPath

    Ja, wirklich wahr. So was gibts wirklich. 🙄



  • drakon schrieb:

    Egal was ihr macht. Mischt das ganze nicht.

    Allein dadurch, dass man C++ nimmt wird man dazu gezwungen, englisch zu nehmen.
    " return wert " ist ja schon gemischt.



  • Das kann auch Nachteile haben, wenn man Begriffe aus einem deutschen Umfeld hat. Zum Beispiel Jura, oder Steuern. Da ist die Wahl der Attributnamen auf Englisch nicht immer so glücklich. Noch dazu wird's oftmals dann auch "Denglisch".

    Bei einer Bibliothek ist sowas ja einfach, solange man sich in der abstrakten Daatenwelt bewegt. Sobald man aber auf einer Anwenderebene arbeitet, könnten englische Bezeichner eine zusätzliche(!) Fehlerquelle beim Verständnis von Code oder Modell sein.


  • Administrator

    Marc++us schrieb:

    Sobald man aber auf einer Anwenderebene arbeitet, könnten englische Bezeichner eine zusätzliche(!) Fehlerquelle beim Verständnis von Code oder Modell sein.

    Oja. Mieter (Wohnung):

    • charterer?
    • hirer?
    • leaser?
    • lessee?
    • lodger?
    • renter?
    • tenant?

    Amerikanisches oder englisches Englisch?

    Da gibt es allerdings schon Abhilfe. Nicht zu selbstbewusst sein, Kollegen fragen, sich genauer informieren, am besten in Texten, sich halt eben etwas mehr Zeit nehmen und dann den richtigen Namen auswählen. Sowas sollte man sowieso zum Teil mehr tun, sich Zeit lassen bei der Namenswahl, denn dies kann auch stark zum Verständnis des Codes beitragen.
    Ich bin jedenfalls grundsätzlich für Englisch. Schon nur wegen der Standardbibliothek und den ganzen Schlüsselwörtern, welche alle in Englisch sind. Ein Mischmasch ist nur verwirrend und zwar auch für einem selbst.

    Übrigens so am Rande:
    Weiss das einer eigentlich genauer, ob nun ä, ö und ü in Bezeichner erlaubt sind? Mir geht es dabei vor allem um Kapitel 2.10 Identifiers Absatz 1.

    An identifier is an arbitrarily long sequence of letters and digits. Each universal-character-name in an identifier shall designate a character whose encoding in ISO 10646 falls into one of the ranges specified in Annex E. Upper- and lower-case letters are different. All characters are significant.

    Das liest sich irgendwie, als wären ä, ö und ü erlaubt.

    Grüssli



  • Ich denke auch, das kann keine Geschmacks oder Stiel...(oder Steil?) - Frage sein, ob man Bezeichnungen auf deutsch oder englisch wählt.

    Der Mehrheit fehlt es einfach an ganz allgemein an Verständnis für grammatikalische Fragen oder grammatikalische Zusammenhänge.

    Warum sonst werden wir von beknaktem Beamtendeutsch oder englisch geschriebenen Aufsätzen für die örtliche Häkelgruppe genervt? - Oder von zweifelhaften Unterscheidungen wie 'Daten' und 'Code' oder noch schlimmer noch, .data vs .text oder von absurden Codierbefehlen?

    Man muss unterscheiden können: Bei Programmiergruppen muss man sich vielleicht sowieso auf einen Standard einigen, für Demonstrationszwecke, auch für Anfänger, in einem deutschen Forum, sind deutsche Bezeichner hilfreich, für Endversionen für Internetdownloads mit Sourcecode ist englisch sinnvoll, die Democodes für die Demoszene muss wenigstens ich selber wieder lesen können (falls überhauptnochmal)(nix open source), ich würde dann für mich also eher deutsche Bezeichner wählen.



  • Alles auf Okzitanisch. Ist doch klar. 🙄



  • sprachpurist schrieb:

    Aber das hat mich gerade auf die Idee gebracht, deutsche Ausdrücke mit den englischen zu vergleichen:

    struct   plan
    class    bund
    char     stab
    int      zahl
    short    kurz
    long     lang
    unsigned nat
    include  hol
    return   wirf
    
    pointer  zeiger
    array    feld
    string   kette
    vector   liste
    list     knüpfe
    node     glied
    stream   strom
    map      kartei
    

    string sollte mit Unterhose ersetzt werden.

    Im Prinzip ist das einzige Argument für Deutsch, dass man Englisch nicht richtig kann.



  • Dravere schrieb:

    Ich bin jedenfalls grundsätzlich für Englisch.

    Ich stelle diese Forderung nach Grundsätzlichkeit grundsätzlich in Abrede.

    Ja, in vielen Programmteilen ist das ok, weil der Programmierer auch keinen großen Schaden anrichtet wenn er semantisch printData mit showData verwechselt.

    Aber wenn die Firma nun eine Software für die Steuerung von Rangierbahnhöfen für die Deutsche Bahn schreibt, diese Software wird vom Eisenbahnbundesamt zertifiziert und nie außerhalb von Deutschland eingesetzt. Ist es dann sinnvoll, die Begriffe Englisch zu benennen? Ähnliche Fälle gibt es in der individuellen Softwareentwicklung viele. Beim Kunden gab es zuvor eine jahrelange Begriffsbildung mit deutschen Begriffen, eine Überführung in Englisch schafft nicht mehr Klarheit, sondern verschlechtert die Produktqualität. Oder diskutiert Ihr nie mal ein Ablaufdiagramm mit einem Kunden? Wenn nun die Begriffe anders heißen als beim Kunden, erscheint das jemandem sinnvoll?

    Bei einem Hotelreservierungssystem ist Englisch dagegen kein Problem, der Käufer will sicherlich das System breiter ausrollen und es gibt einen englischen Glossar der Begriffe.

    Und ich stelle noch eine häufig zu hörende Argumentation eines Automatismus in Abrede: Doku in IT ist sowieso immer Englisch, dann muß der Programmierer das verstehen und kann auch in Englisch schreiben.

    Was ist das für eine Kausalität? Weil jemand englische Dokus LESEN kann, kann er englische abgekürzte 2/3-Wort-Kurzbegriffe SCHREIBEN? :xmas2:



  • Marc++us schrieb:

    Ich stelle diese Forderung nach Grundsätzlichkeit grundsätzlich in Abrede.

    *zustimm*, vor allem in blickrichtung kommunikation mit dem kunden und darüber hinaus einsatzbereich...

    im übrigen sträube ich mich ebenso von vornherein gegen "grundsätzliches", mit dem tenor einer "regel".

    :xmas1:



  • Marc++us schrieb:

    Aber wenn die Firma nun eine Software für die Steuerung von Rangierbahnhöfen für die Deutsche Bahn schreibt, diese Software wird vom Eisenbahnbundesamt zertifiziert und nie außerhalb von Deutschland eingesetzt. Ist es dann sinnvoll, die Begriffe Englisch zu benennen?

    Ja, dann kann man auch was im Ausland entwickeln lassen.

    Ähnliche Fälle gibt es in der individuellen Softwareentwicklung viele. Beim Kunden gab es zuvor eine jahrelange Begriffsbildung mit deutschen Begriffen, eine Überführung in Englisch schafft nicht mehr Klarheit, sondern verschlechtert die Produktqualität. Oder diskutiert Ihr nie mal ein Ablaufdiagramm mit einem Kunden? Wenn nun die Begriffe anders heißen als beim Kunden, erscheint das jemandem sinnvoll?

    Was man dem Kunden zeigt muss ja nicht wortwörtlich in den Code. Bei irgendwelchen Eigennamen für die es keine englische Bezeichnung gibt, kann man die deutsche Bezeichnung verwenden, aber sonst alles englisch.

    fenster.close()
    if drueckknopf.getState() == PRESSED
    

    sieht doch nur dämlich aus.


Anmelden zum Antworten