Forum: Offtopic sprechende Namen


von A. S. (Gast)


Lesenswert?

Sprechende Namen sind das A und O. Anbei ein Beispiel wie eine Funktion 
vorschriftsmäßig bei uns aussehen sollte:
1
#define FehlerReturnWert_KeineLoesungImReellen (1)
2
#define ReturnWert_AllesOK (0)
3
4
int LoeseQuadratischeGleichung(double Faktor_x, double Summand, double *ErsteLoesung, double *ZweiteLoesung)
5
{
6
const double FaktorQuadratDivisor = 4;
7
const double FaktorDivisor = 2;
8
const double TermUnterWurzel= (Faktor_x * Faktor_x) / FaktorQuadratDivisor - Summand;
9
const double ImaginärDiskriminatorSchwelle = 0;
10
11
   if(Wurzelterm < ImaginärDiskriminatorSchwelle )
12
   {
13
   const double DefaultWertBeiImaginaerenLoesungen = NAN;   
14
 
15
       *ErsteLoesung  = DefaultWertBeiImaginaerenLoesungen;
16
       *ZweiteLoesung = DefaultWertBeiImaginaerenLoesungen;
17
       return FehlerReturnWert_KeineLoesungImReellen;
18
   }
19
   *ErsteLoesung  = -Faktor_x/FaktorDivisor  + sqrt(TermUnterWurzel);
20
   *ZweiteLoesung = -Faktor_x/FaktorDivisor  - sqrt(TermUnterWurzel);
21
   return ReturnWert_AllesOK;
22
}
Und hier der Coding-Horror unserer älteren Kollegen mit nichtssagenden 
Namen und Literalen. Kein Mensch kann den Code lesen, er bricht alle 
Benamungsregeln und optimiert nicht 2²!
1
#define E_ERROR (1)
2
#define E_OK    (0)
3
4
int pq_Formel(double p, double q, double *x1, double *x2)
5
{
6
double w= (p/2)*(p/2) - q;
7
8
   if(w<0)
9
   {
10
       *x1 = NAN;
11
       *x2 = NAN;
12
       return E_ERROR;
13
   }
14
   *x1 = -p/2 + sqrt(w);
15
   *x2 = -p/2 - sqrt(w);
16
   return E_OK;
17
}
Kennt Ihr auch solche Kollegen?

von Soeren K. (srkeingast)


Lesenswert?

Dein Beispiel ist doch Mumpitz.

ImaginärDiskriminatorSchwelle ist sicher nicht vorschriftsmäßig.

Deutsche Variablennamen finde ich insgesamt fragwürdig.

p und q finde ich in dem Falle auch akzeptabel.



Willst du uns also trollen oder möchtest du wirklich darauf hinaus, dass 
es Leute geben soll die Probleme bei der Benennung haben?


Denk daran:

"There are only two hard things in Computer Science: cache invalidation 
and naming things."

-- Phil Karlton

von Sven B. (scummos)


Lesenswert?

Ich kann nicht entscheiden welche Codevariante die deiner Meinung nach 
bessere ist, aber die sind irgendwie beide ziemlich schlecht :D

von Teo D. (teoderix)


Lesenswert?

Jo, hatte mal zwei solch Heinis, ich mochte beide nicht. :(

von Marek N. (Gast)


Lesenswert?

Ehrlich gesagt, gefällt mir die zweite Version aber besser, weil man 
sofort auf einen Blick sieht, was gemacht wird.
Was soll denn die erste Version sein? Waldorf-C?

von MaWin (Gast)


Lesenswert?

Das zweite Beispiel ist klar übersichtlicher.
Bis ich beim ersten herausgefunden habe, welche Werte durch 
DefaultWertBeiImaginaerenLoesungen und 
FehlerReturnWert_KeineLoesungImReellenausgedrückt werden ist der Tag 
doch rum, lediglich LoeseQuadratischeGleichung als Funktionsname finde 
ich besser.
Die Umlaute sind gar noch illegal und schön rot hervorgehoben.
In beide gehört zur defensiven Programmierung aber noch if(x1) etc. vor 
die über Pointer gehenden Zuweisung.

von Peter II (Gast)


Lesenswert?

Ich finde auch das 2. lesbarer.

jede Konstante als viel zu langes Wort ist einfach nicht überschaubar. 
Wenn ich einen Wert durch 2 rechen muss, dann macht man doch keine 
Konstante dafür. (so lange die 2 nicht ein wert ist der mehrfach 
verwendet wird und eine spezielle Bedeutung hat)

von Teo D. (teoderix)


Lesenswert?

Marek N. schrieb:
> Ehrlich gesagt, gefällt mir die zweite Version aber besser, weil man
> sofort auf einen Blick sieht, was gemacht wird.

Solange man es wirklich auf einen Blick sieht!
Alles was außerhalb dieses Sichtbereiches liegt, sollte ein wenig in 
Richtung erste Variante gehen.

von dunno.. (Gast)


Lesenswert?

Ich halte das für getrolle oder wenigstens satire.

Natürlich ist die 2. Lösung viel einfacher zu interpretieren, weil 
kürzer. und was beinder pq formel p,q,x1 und x2 sind sollte doch jeder 
schulabgänger ergoogeln können.

Im übrigen fehlen die doxygen-header...

von Marek N. (Gast)


Lesenswert?

Irgendwie stört mich eine Kleinigkeit.
Wenn man schon in "double" rechnet, dann müsste man die Zahlen auch als 
2.0 und 4.0 angeben, oder?

von WaMin (Gast)


Lesenswert?

Ja, schon schlimm solche Kollegen, die die erste Variante produzieren.
Die zweite Variante ist natürlich viel lesbarer.

von Sven B. (scummos)


Lesenswert?

WaMin schrieb:
> Ja, schon schlimm solche Kollegen, die die erste Variante produzieren.
> Die zweite Variante ist natürlich viel lesbarer.

Ich glaub das hat der TO schon so gemeint. Das Problem ist dass die 
zweite Variante auch nicht gut ist, wenn auch aus anderen Gründen. :D

von Teo D. (teoderix)


Lesenswert?

Sven B. schrieb:
> Ich glaub das hat der TO schon so gemeint. Das Problem ist dass die
> zweite Variante auch nicht gut ist, wenn auch aus anderen Gründen. :D

(>) Ich glaub das hat der MaWin schon so gemeint.

von Rolf M. (rmagnus)


Lesenswert?

Hmm, Terry Pratchett würde wohl sowas sagen wie: Guter Code ist nicht 
das Gegenteil von schlechtem Code, sondern lediglich die Abwesenheit 
davon. Wenn man Code so "gut" macht, dass er den Gutpunkt überschreitet 
und auf der anderen Seite wieder rauskommt, dann kommt die erste 
Variante heraus.
Um die vollends unleserlich zu machen, empfehle ich ein "#define 
QuadratWurzelVon sqrt" und ein "typedef 
GleitKommaZahlMitDoppelterGenauigkeit double".

von Yalu X. (yalu) (Moderator)


Lesenswert?

Es ist ja vollkommen in Ordnung, ein und dieselbe Variable an
verschiedenen Stellen unterschiedlich zu benennen, denn wir haben ja
schon in der Schule beim Aufsatzschreiben gelernt, dass häufige
Wortwiederholungen schlechter Stil sind. Da der C-Compiler aber nicht so
gut Deutsch kann, um zu erkennen, dass mit TermUnterWurzel und
Wurzelterm dasselbe gemeint ist, sollte man ihm dies mit der Zeile

1
#define Wurzelterm TermUnterWurzel

mitteilen. Da die Variable insgesamt viermal im Code auftaucht, sollte
man sich aber im Sinne einer weiteren Stilverbesserung noch zwei weitere
aussagekräftige Synonyme ausdenken bspw.

1
#define ArgumentDerQuadratwurzelfunktion TermUnterWurzel
2
#define AusdruckVonDemDieWurzelGezogenWird TermUnterWurzel

dunno.. schrieb:
> Ich halte das für getrolle oder wenigstens satire.

Ich tippe auf letzteres :)

von René H. (Gast)


Lesenswert?

Mann, warte bitte bis Freitag. Die Zeiten wurden extra für euch 
reseeviert. Bis Sonntag.


Grüsse,
René

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Marek N. schrieb:
> .... Waldorf-C?

you made my day!

von Marek N. (Gast)


Lesenswert?

Marcus H. schrieb:
> Marek N. schrieb:
>> .... Waldorf-C?
>
> you made my day!

Ich hätte auch noch ADHS-C anzubieten und Logorrhoe-C ^.^

von Teo D. (teoderix)


Lesenswert?

Marcus H. schrieb:
> Marek N. schrieb:
>> .... Waldorf-C?
>
> you made my day!

Hieß das nich mal COBOL?

von Daniel F. (df311)


Lesenswert?

abgesehen vom w habe ich die Bezeichner aus der 2. Variante so in (fast) 
jeder Formelsammlung gefunden, von daher ein klares Plus für die 2.

von Jack (Gast)


Lesenswert?

Marcus H. schrieb:
> Marek N. schrieb:
>> .... Waldorf-C?
>
> you made my day!

Wenn er seinen  Sourcecode tanzen kann ...

You put your right foot in
You take your right foot out
You put your right foot in
And you shake it all about
You do the hokey pokey
And you turn yourself around
That's what it's all about

von Günter Waldorf (Gast)


Lesenswert?

Sprechende Namen? Die erste Variante ist wohl eher die Quasselstrippe 
unter den Bezeichnern.

von Paul B. (paul_baumann)


Lesenswert?

Ich weiß nicht, was gegen anständige Variablennamen spricht. Im Betrieb 
war es früher so, daß z.B. Magnetbänder und Wechselplatten nach ihrem 
Inhalt benannt waren:
KAUZ= Kaufteile zusammengefasst
AKST= Arbeitskräfte Stammdaten
PAUL= Programme Anderer Unterproduzenten und Lagerorte

Das verstehe ich unter vernünftigen Abkürzungen.

MfG Paul

von Cle (Gast)


Lesenswert?

> "There are only two hard things in Computer Science: cache invalidation
> and naming things."
>
> -- Phil Karlton

Falsch:

"There are only two hard things in Computer Science: cache invalidation, 
naming things and off-by-one-errors"

von Marek N. (Gast)


Lesenswert?

Paul B. schrieb:
> Ich weiß nicht, was gegen anständige Variablennamen spricht. Im Betrieb
> war es früher so, daß z.B. Magnetbänder und Wechselplatten nach ihrem
> Inhalt benannt waren:
> KAUZ= Kaufteile zusammengefasst
> AKST= Arbeitskräfte Stammdaten
> PAUL= Programme Anderer Unterproduzenten und Lagerorte
>
> Das verstehe ich unter vernünftigen Abkürzungen.
>
> MfG Paul

Tja, und in SAP-Zeiten hast du dann so kryptische Namen wie "ZMM01EX" 
und musst auf "Maschinenbau" klicken, wenn du nen Widerstand anlegen 
willst, während hingegen man im gesamten System keine M3-Mutter finden 
kann ballaballa

von Cyblord -. (Gast)


Lesenswert?

Wer was anderes als Englisch in Sourcecode verwendet gehört freitags 
nach Saudi-Arabien zu den Ehebrecherinnen gestellt :P

von Uhu U. (uhu)


Lesenswert?

Ich ziehe singende Namen den sprechenden vor.

von Thomas E. (thomase)


Lesenswert?

Paul B. schrieb:
> Das verstehe ich unter vernünftigen Abkürzungen.

Eher ein Aküfi.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Soeren K. schrieb:
> Deutsche Variablennamen finde ich insgesamt fragwürdig.
Besser gutes Deutsch als schlechtes Englisch.

Da kenne ich z.B. den Fall, dass einer die deutsche "Glocke" in eine 
englische "Clamp" übersetzt hat. Als Tipp: der mentale Umweg war die 
"Schelle"...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Achim S. schrieb:
> Und hier der Coding-Horror unserer älteren Kollegen mit
> nichtssagenden Namen und Literalen.

"p-q-Formel" ist eine bekannte Bezeichnung für das Ding, siehe

https://de.wikipedia.org/wiki/Quadratische_Gleichung#p-q-Formel

Die Bezeichner sind also nicht "nichtssagend" sondern beziehen sich auf 
eine bestimmte, weithin bekannte (Lösungs-)Formel, die heutzutage jeder 
Schüler auswendig lernt wie ein Gedicht.

Und der Code versuchte, diese Formel möglichst leserlich darzustellen, 
was in C ja einigermaßen gut geht -- bis auf die Quadratwurzel, die als 
sqrt ausgetextet werden muss.

Und jetzt setze deine Blubberbezeichner ein und setze die Formel z.B. in 
TeX und bewundere das "voschriftsmäßige" Ergebnis.

> Kein Mensch kann den Code lesen, er bricht alle Benamungsregeln

Der Funktion sollte entsprechend kommentiert sein und die Formel nennen, 
die sie implementiert, z.B. als TeX oder ASCII-Formel oder / und Link 
und Referenz zur Fachliteratur.  Da findet sich jeder zurecht, der nicht 
in der Schule komplett gepennt hat :-)

Daran, dass das Zeug nicht kommentiert ist, scheitern aber beide 
Versionen.

Und was du das als "voschriftsmäßig" abgeliefert hast lässt fief 
blicken.  Sehr tief.

> optimiert nicht 2²

Glückwunsch. Du hast erfolgreich die Semantik des Codes gepimpt und 
bekommst weniger Lösungen als das Original.  Warum das so ist: => 
Hausaufgabe.

Das dein Code ineffizienter ist -- geschenkt.


> Kennt Ihr auch solche Kollegen?

Zum Glück kenn ich keine, die Code duch Logorrhoe verschlimmbessern 
büssen, um ihre Brötchen zu verdienen. Und die Regeln zur 
Quellformatierung sehen arg Hausbacken aus, da hat sich jemand WIRKLICH 
eingebracht und was geschaffen :-/

> Sprechende Namen sind das A und O.

Gerne

> TermUnterWurzel

Baby-Sprech.  Das Ding heißt in dem Kontext "Diskriminante"

https://de.wikipedia.org/wiki/Diskriminante

und auch nicht "Diskriminator" oder was auch immer.

Falls es primär um Wurzelziehen geht, gern auch "Radikand".  Aber wer 
"TermUnterWurzel" verwendet, der schreckt auch nicht zurück vor
1
VariableLinksVomPlus + VariableRechtsVomPlus

> *ErsteLoesung
> *ZweiteLoesung

Erstens sind es ZEIGER auf die Lösungen und nicht die Lösungen selbst.

Zweitens sind die Lösungen -- falls reelle existieren -- der Größe nach 
geordnet, was aber auch nicht klar ist.  Wie das Verhalten bei einer 
Lösung (Diskriminante = 0) ist, bleibet der Phantasie des Lesers 
überlassen.

> const double FaktorQuadratDivisor = 4;
> const double FaktorDivisor = 2;

Wenn überhaupt dann

> const double FaktorDivisor = 2;
> const double FaktorQuadratDivisor = FaktorDivisor * FaktorDivisor;

Aber wenn du die Lösungsformel in der Doku hast, dann brauchts keine 
Schwurbelbezeichner. Außerdem handelt es sich nicht um einen Faktor (der 
wäre 1/2 bzw. 1/4) sondern um einen Divisor.  Der Bezeichner ist also 
zumindest missverständlich.

Guter Code wird versuchen, eine Formel, die in mathematischer Notation 
vorliegt, in ihrer Struktur und Notation zu erhalten.  Falls das nicht 
möglich ist, z.B. wegen anderer Konditionierung, gehört das kommentiert 
und erklärt.

> Anbei ein Beispiel wie eine Funktion
> vorschriftsmäßig bei uns aussehen sollte:

> #define FehlerReturnWert_KeineLoesungImReellen (1)
> #define ReturnWert_AllesOK (0)

"Alles OK" ist erstens Falsch, weil es zu einem Überlauf kommen kann.

Zweitens ist "AllesOK" ziemlich nichtssagend und könnte 
"ZweiLoesungenImReellen" heißen, was aber immer noch sperrig ist.

Erittens: Warum Makros anstatt Enum für den Return-Wert? Oder die Anzahl 
(nicht notwendigerweise unterschiedliche) Lösungen zurückliefern.

Weiters ist es nicht klug, Bezeichner nach einem bestimmten Kontext zu 
benennen, wenn sie auch in einem anderen Kontext verwendet werden.  Nimm 
den Caller deiner Funktionen, die wollen auch diese Bezeichner 
verwenden. Aber es ist dort nicht der Return-Wert des Callers gemeint, 
sondern der Return-Wert des Callees => Potentielle Quelle der 
Verwirrung.

> const double ImaginärDiskriminatorSchwelle = 0;
>
>    if(Wurzelterm < ImaginärDiskriminatorSchwelle )

Reingefallen.  Eine Variable dieses Namens gibt es nicht.  Dass sie 
besser "Diskriminante" oder "discriminant" oder wie auch immer heißen 
würde, steht bereits oben.  Und eine quadratische Gleichung hat eben 
keine reele Lösungen, wenn die Diskriminante negativ ist.  Ein
1
// Eine quadratische Gleichung mit negativer Diskriminante hat
2
// keine reelen Loesungen.
3
4
if (discriminant < 0) ...

wird selbst in deiner Firme niemand intelektuell überfordern. Oder doch?

>    const double DefaultWertBeiImaginaerenLoesungen = NAN;

Es jandelt sich i.d.R. nicht um imaginäre Lösungen, sonder um komplexe. 
Wenn schon Klugscheißen, dann richtig ;-)

>        *ErsteLoesung  = DefaultWertBeiImaginaerenLoesungen;
>        *ZweiteLoesung = DefaultWertBeiImaginaerenLoesungen;

Was ist schlecht an NAN oder Not-A-Number?  Warum über einen 
Zwischenbezeichner her, den man erst "nachschlagen" muss?
1
entia non sunt multiplicanda praeter necessitatem

Außerdem sind die Bezeichner inkonsistent: Der return-Wert bezieht sich 
auf  Lösungen im Reellen, aber die Werte auf Lösungen im Imaginären. 
Das passt nicht zusammen.

Insgesamt: Operation gelungen, Code tot und weit(!) über das Ziel 
hinausgeschossen und den Fetisch zur Überspezifizikation voll ausgelebt.

Da hat sich echt jemand ersetzlich gemacht.

von Timm T. (Gast)


Lesenswert?

Achim S. schrieb:
> Sprechende Namen sind das A und O. Anbei ein Beispiel wie eine Funktion
> vorschriftsmäßig bei uns aussehen sollte:

Lass mich raten: Du wirst nach produziertem Datenmüll bezahlt. Effizient 
ist was anderes.

von Le X. (lex_91)


Lesenswert?

Sprechende Namen sind schon sinnvoll, aber Beispiel 1) des TE finde ich 
arg konstruiert. Das ist natürlich weit über jedes sinnvolle Maß 
hinausgeschossen und (hoffentlich) praxisfern.

Bei der Formel kann man gerne q und p, oder meinetwegen a, b, c 
verwenden.
Zählervariablen heißen auch bei mir i und j.

Dennoch sind aussagekräftige Namen bei "eigenem" Code, wo also nicht nur 
stumpf eine Formel runtergecodet wird sinnvoll.

userString und parsedUserString könnte es bei mir durchaus geben.
userStringWithSpacesAndTabsRemoved dagegen ist überzogen und fällt für 
mich in die Kategorie Fiktives Extrembeispiel.

von A. S. (Gast)


Lesenswert?

Lothar M. schrieb:
>> Deutsche Variablennamen finde ich insgesamt fragwürdig.
> Besser gutes Deutsch als schlechtes Englisch.

Neben der treffenderen Semantik bei einem (auch künftig) rein deutschem 
Team, hat es auch den Vorteil, dass Bezeichner sich von den 
Schlüsselwörtern und Library-Bezeichnern abheben. Quasi linguistisches 
Croma-Coding.

In den 70ern wurde wohl mal überlegt, Compiler quasi zu lokalisieren, 
also z.B. Schlüsselwörter ins Deutsche zu übertragen. Dies wurde von 
Programmieren aus obigem Grund abgelehnt.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Achim S. schrieb:
> In den 70ern wurde wohl mal überlegt, Compiler quasi zu lokalisieren,
> also z.B. Schlüsselwörter ins Deutsche zu übertragen. Dies wurde von
> Programmieren aus obigem Grund abgelehnt.

Länderspezifische Funktionsnamen in Microsoft Excel.
Sehr übel, das...

von P. P. (Gast)


Lesenswert?

Beide Varianten sind durchgefallen, da sie keine Kommentare enthalten! 
;-)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Johann L. schrieb:
> Und was du das als "voschriftsmäßig" abgeliefert hast lässt fief
> blicken.  Sehr tief.

Vielleicht solltest Du mal Deinen Ironie-Detektor neu kalibrieren. ;-)

Das Eröffnungsposting ist ganz klar ironisch, wenn nicht sogar 
sarkastisch gemeint. Das kann man an den wenigen Sätzen, die zwischen 
den Codezeilen stehen, sofort erkennen.

Interessant ist jedoch, was es für Reaktionen auslöst...

von Timm T. (Gast)


Lesenswert?

Frank M. schrieb:
> Das Eröffnungsposting ist ganz klar ironisch, wenn nicht sogar
> sarkastisch gemeint.

Das halte ich jetzt für postfaktisch, wenigstens alternative Fakten, 
wenn nicht gar Fake News.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Johann L. schrieb:
>> Und was du das als "voschriftsmäßig" abgeliefert hast lässt fief
>> blicken.  Sehr tief.
>
> Vielleicht solltest Du mal Deinen Ironie-Detektor neu kalibrieren. ;-)

Ja, möglicherweise.  Aber ich würd drauf wetten, dass es auf diesem 
Planeten mehr als eine Firma gibt, die entsprechende Gütekriterien 
vorschreibt und "lebt".  Bei denen man dann nur denkt: "ach du meine 
Güte!".

> Das Eröffnungsposting ist ganz klar ironisch, wenn nicht sogar
> sarkastisch gemeint. Das kann man an den wenigen Sätzen, die zwischen
> den Codezeilen stehen, sofort erkennen.

Naja, ernst gemeint war's jedenfalls nicht, da es noch nicht einmal 
übersetzen würde.

Am bemerkenswertesten finde ich übrigens "p-q-Formel", unabhängig vom 
Posting:

Teilweise ist der Unterricht in Schulen derart degeneriert, dass Schüler 
Formeln auswendig lernen wie Gedichte -- so auch die p-q-Formel.  Wenn 
die armen Schüler denn eine quadratische Gleichung der For x^2 + qx + p 
lösen sollen, ist der Totalschaden vorprogrammiert.  Und wenn sowas in 
einer Arbeit auftauchen sollte, ist ein Lynchen durch die Elternschaft 
vorprogrammiert.

Selbst so erlebt bei Nachhilfeschülern:  Potenzgesetze konnten die im 
Schlaf aufsagen; aber anwenden? Panne.  Und wenn in einem rechtwinkligen 
Dreieck die Seiten nicht a, b und c hießen, sondern x, y, und z dann war 
Ende Gelände.

Mich ergreift bei sowas wirklich das Grausen, und Namen wie 
"Mitternachtsformel" erübrigen jeglichen Kommentar...

> Interessant ist jedoch, was es für Reaktionen auslöst...

:-)

von U. B. (Gast)


Lesenswert?

> if(Wurzelterm < ImaginärDiskriminatorSchwelle )

if namenslänge > 
temporäre_erfassbarkeitsmenge(Hauptspeicher)_of_gewöhnlicher-Mitleser
then take (p,q)

SQNR

von Thomas E. (thomase)


Lesenswert?

Achim S. schrieb:
> In den 70ern wurde wohl mal überlegt, Compiler quasi zu lokalisieren,
> also z.B. Schlüsselwörter ins Deutsche zu übertragen. Dies wurde von
> Programmieren aus obigem Grund abgelehnt.

Sei froh.

1
vorzeichenloses zeichen a;
2
3
ganzzahl hauptsache(leer)
4
{
5
  solange(1)
6
  {
7
    wenn(a)
8
    {
9
      //
10
    }
11
    sonst
12
    {
13
      //
14
    }
15
  }
16
}

von Timm T. (Gast)


Lesenswert?

Johann L. schrieb:
> ist der Totalschaden vorprogrammiert

Da wird mir gleich ganz pleonastisch.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Achim S. schrieb:
> In den 70ern wurde wohl mal überlegt, Compiler quasi zu lokalisieren,
> also z.B. Schlüsselwörter ins Deutsche zu übertragen.

Siemens hatte in den 80/90ern ihr SINIX (mehr schlechter als rechter 
Unix-Ableger) eingedeutscht - zumindest die Meldungen der Unix-Befehle.

An einen Befehl haben sie sich aber nicht rangetraut, nämlich strip, mit 
dem man die Symboltabellen vom Executable abtrennen konnte.

So blieb es bei wiederholter Anwendung auf dasselbe Executable bei der 
englischen Meldung:

    strip: already stripped.

von Paul B. (paul_baumann)


Lesenswert?

Frank M. schrieb:
> Siemens hatte in den 80/90ern ihr SINIX (mehr schlechter als rechter
> Unix-Ableger) eingedeutscht - zumindest die Meldungen der Unix-Befehle.

Wichtig sind anständige Fehlermeldungen für den Bediener: Auf einer 
K1630-Anlage lief ein Unix-artiges Betriebssystem (m.E.n. aus Rumänien)

Fehlermeldungen wurden aber in deutscher Sprache ausgegeben z.B:
"Wenn Du noch einmal diese Taste drückst, sage ich es Deiner Mutter!"
oder "Stammt das aus den "Dornenvögeln?"

Das fand ich in Ordnung.
:)
Mfg Paul

von Le X. (lex_91)


Lesenswert?

Nach dem Aufsetzen eines Antergos (vorkonfiguriertes Arch) war ich sehr 
überrascht als der gcc mir mit deutschen Fehlermeldungen helfen wollte.

Wenn man jahrelang mit dem "normalen" gcc vertraut ist können einen 
deutsche Fehlermeldungen, selbst bei einfachen Problemen, ziemlich aus 
dem Konzept bringen :-)

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Thomas E. schrieb:
> wenn(a)
>     {
>       //
>     }
>     sonst
>     {
>       //
>     }

Zumindest bei LibreOffice werden die Befehle nach der installierten 
Sprache 'eingedeutscht'.
Eine englische Lösung zu Deinem Problem mit deutschem OS ... 
Fehlanzeige.
Ich hätte es ja verstanden, wenn die deutschen 'Befehle' zusätzlich, 
also aus Feature, angeboten würden - aber ne, die Englischen, Die man an 
jeder WWW-Ecke erklärt bekommt, sind dort einfach weg - auch nicht in 
der Hilfe enthalten, daß man so vll. auf die Lösung können könnte.

Meine Kommentare sind meist Deutsch - will den Code ja auch noch lesen 
und verstehen können ;)

MfG

von S. R. (svenska)


Lesenswert?

Le X. schrieb:
> Nach dem Aufsetzen eines Antergos (vorkonfiguriertes Arch) war ich sehr
> überrascht als der gcc mir mit deutschen Fehlermeldungen helfen wollte.

Ich glaube, das hat der gcc inzwischen wieder aufgegeben. Viele andere 
Projekte machen das aber trotzdem. :-)

Patrick J. schrieb:
> Zumindest bei LibreOffice werden die Befehle nach der installierten
> Sprache 'eingedeutscht'.

Das hängt damit zusammen, dass Microsoft Office (Excel) das auch tut und 
man ja kompatibel sein muss. Wäre ja schlimm, wenn ein deutscher 
Programmierer seine Excel-Skillz nicht benutzen könnte.

Patrick J. schrieb:
> Meine Kommentare sind meist Deutsch - will den Code ja auch noch lesen
> und verstehen können ;)

Das ist übrigens bei LibreOffice tatsächlich ein Problem. Viele 
Kommentare im Code sind dort nämlich deutsch - das ist das Erbe von 
StarDivision (StarOffice).

von Timm T. (Gast)


Lesenswert?

Schade eigentlich, dass an der Muhlenberg-Legende so wenig dran ist. ;-)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

S. R. schrieb:
> Le X. schrieb:
>> Nach dem Aufsetzen eines Antergos (vorkonfiguriertes Arch) war ich sehr
>> überrascht als der gcc mir mit deutschen Fehlermeldungen helfen wollte.
>
> Ich glaube, das hat der gcc inzwischen wieder aufgegeben. Viele andere
> Projekte machen das aber trotzdem. :-)

Nein, aufgegeben ist es nicht, und es aufzugeben ist auch nicht geplant. 
Stattdessen wird es sogar weiter ausgebaut.

Ob NLS-Support (Native Language Support) ein hilfreiches Feature ist, 
mag jeder für sich selbst beurteilen.  Wenn man im Netz Hilfe bei 
Bedeutung einer Diagnostic (Warnung, Fehler, Internal Error, ...) sucht, 
dann es Englisch i.d.R. wesentlich hilfreicher als andere Sprachen.

Von daher finde ich es sinnvoll, GCC mit -disable-nls zu configuren, so 
dass Diagnostics immer auf Englisch sind.  Ansonsten kann man das 
Verhalten durch Umgebungsvariablen wie LANG oder LANGUAGE beeinflussen, 
aber die will man meist nicht verändern, da auch andere Programme dies 
benutzen, z.B. zur Anzeige des Datumsformats.

NLS im GCC wurde z.B. auf Plural Forms erweiter, weil es nicht wie in 
Deutsch in allen Sprachen nur 2 Plural-Formen gibt, sondern abhängig von 
der Anzahl z.B. unterschiedliche Plurale für 2 oder für 3 Entitäten.

http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html

von Yalu X. (yalu) (Moderator)


Lesenswert?

Johann L. schrieb:
> Ansonsten kann man das Verhalten durch Umgebungsvariablen wie LANG oder
> LANGUAGE beeinflussen, aber die will man meist nicht verändern, da auch
> andere Programme dies benutzen, z.B. zur Anzeige des Datumsformats.

Deswegen verwende ich

  LANG=de_DE.UTF-8
  LC_MESSAGES=POSIX
  LC_NUMERIC=POSIX
  LC_COLLATE=POSIX

Damit ist alles deutsch bis auf die Meldungen, die Zahlendarstellung und
die lexikalische Sortierreihenfolge.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.