Go Down

Topic: Was bedeutet ? : (Read 1 time) previous topic - next topic

Udo Klein

#10
Mar 05, 2013, 08:46 pm Last Edit: Mar 05, 2013, 08:48 pm by Udo Klein Reason: 1
Nachtrag: was die Liste mit "ALLEN" Tricks angeht, die wird es niemals geben. Die Sprache C entwickelt sich ja weiter und die Liste der Tricks ist lang. Hier ist einer bei dem sich die Experten garantiert streiten würden ob er überhaupt in einer Liste stehen sollte: http://de.wikipedia.org/wiki/Duff%E2%80%99s_Device

Oder mal anders formuliert: gibt es eigentlich eine Liste mit ALLEN Tricks und Kniffen die ein Fußballprofi kann, so, daß jeder Dorfkicker die einfach lernen kann und mithalten könnte??? Wenn nein, wieso sollte das bei der Softwareentwicklung anders sein?
Check out my experiments http://blog.blinkenlight.net

Helmuth

#11
Mar 05, 2013, 09:18 pm Last Edit: Mar 05, 2013, 09:38 pm by Helmuth Reason: 1
@Udo: Danke für die Präzisierungen. Ich merke schon, wir reden hier von Kunst, welche bekanntlich von können kommt.  
Das ist kein Statement bezüglich Fußball...  ;)

Ok, die vollständige Liste ist unmöglich. Ich konkretisiere die Frage: Gibt es eine (zwangsläufig unvollständige) Beschreibung der gängigen Methoden, Operatoren "geschickt" einzusetzen?

z.B. Hat es mich mehrere Stunden gekostet, bis ich das Bitshiften begriffen habe. Ich nehme an, man verwendet das, weil es schneller ist, als "normales" multiplizieren / dividieren(?). Wenn man es nicht gewöhnt ist, soetwas zu lesen, raucht einem schnell der Kopf, während die Schmierzettel auf dem Tisch immer voller werden - nur, um dann zu erkennen, dass es die Umschreibung einer einfachen mathematischen Funktionen ist.

Code: [Select]
int x = 1000;
int y = x >> 3;


Wenn da ein kurzer Kommentar // y = x / 8 dranstehen würde, währe es erheblich leichter nachzuvollziehen.

Oder ist das ein Anfängerproblem und jedem halbwegs erfahrenem Programmierer sofort klar, was das bedeutet?

Beste Grüße, Helmuth

Doc_Arduino

#12
Mar 05, 2013, 09:47 pm Last Edit: Mar 05, 2013, 09:49 pm by Doc_Arduino Reason: 1
Hallo,

ich bin ja auch noch Anfänger. Bei dem Beispiel merke ich aber das es bestimmt darauf ankommt was man gewohnt ist oder mit welchen Büchern man angefangen hat. Dieses um 3 Bit nach rechts verschieben stach mir sofort ins Auge. Weis auch nicht warum. Vielleicht weil ich sowas auch gern verwende. Eben aus Gewohnheit. Wenn man tiefer nachdenkt bedeutet es eben wie schon geschrieben 2^3 = 8, also 1000 / 8.

Eine generell bessere Code Kommentierung wäre aber schon angebracht. Nur wem sagt man das?

Ich meine, wer wirklich mit Arduino anfängt bzw. angefangen hat, dem wird es sicherlich schwer fallen gebräuchliche Schreibweisen zu erkennen. Ich nehme mich davon nicht aus. Bei Arduino ist eben alles etwas einfacher gehalten, damit jeder loslegen kann. Allerdings ist manches für mich in meinen Augen zu vereinfacht. Wenn man da jedesmal erst eine for Schleife schreiben soll für Pin Input/Output Setzung wenn es ein klarer Befehl auch macht ... dann halte ich das einfache schon wieder für umständlicher ...  :D

Zudem Thema wird es bestimmt 4 << 8;   :)  verschiedene Meinungen geben.

Aber nicht das ihr mich falsch versteht. Obigen Code kann/konnte ich auch nicht entziffern.
Tschau
Doc Arduino

Udo Klein

#13
Mar 05, 2013, 10:29 pm Last Edit: Mar 05, 2013, 10:37 pm by Udo Klein Reason: 1
Professionelle Entwickler lernen eine neue Sprache normalerweise in 1-3 Wochen. Außer es ist neuer Sprachtyp den sie nicht kennen (wechsel zwischen imperativ, Objekt orientiert, Stack orientiert, funktional, Mengen orientiert oder eine völlig neue Syntax) Für eine umfangreiche API 1/2 - 1 Jahre. Danach können die das im Halbschlaf. "Gute" Kommentare sind so eine Sache. Anfänger schreien oft nach "guten" Kommentaren, wollen aber eigentlich schlechte Kommentare. Schlechte Kommetare sagen "was" der Code macht. Gute Kommentare sagen "warum" der Code etwas macht und zeigen kritische Stellen auf. Optimalerweise ist Code so geschrieben, daß er möglichst keine Kommentare braucht.

Auf was ich raus will: im Arduino Umfeld ist der Code fast immer so einfach, daß er leichter und schneller zu lesen ist als die Kommentare. In so einem Umfeld sind Kommentare störend. Wer umbedingt die Kommentare haben will die nur wiedergeben "was" der Code macht kann sich die auch gleich von Doxygen generieren lassen.

Was "x << y" angeht: das ist nicht immer ein Shift, vor allem bei Strings nicht. Professionelle Entwickler erwarten für einen einzelnen Operator keinen Kommentar. Auch nicht für ?:

Im empfehle für solche Fragen im Zweifelsfall das Buch "Code Complete" von McConnel.
Check out my experiments http://blog.blinkenlight.net

Helmuth

@Udo: Habe mal diagonal reingelesen, der Schreibstil und pragmatische Ansatz sagen mir sehr zu. Wird bestellt, danke für den Tip.

Ich kann Deine Ausführungen bezüglich "gut" und "schlecht" vollumfänglich nachvollziehen. Meine Wahrnehmung ist jedoch, dass im Arduinoland deutlich mehr unerfahrene Quereinsteiger und Autodidakten unterwegs sind, als Vollblutprofis mit Erfahrung in verschiedenen Sprachen. Vielleicht täusche ich mich.

Manchmal würde mir ein wenig mehr Kommentar zum wie/was neben dem warum sehr hilfreich sein, da ich ein Typ bin, der sich neue Techniken zuerst mittels Beispielstudium aneignet - Grundlagenlektüre folgt später, falls eine Vertiefung aus pragmatischen Gründen nötig erscheint. An dem Punkt bin ich wohl gerade.

Go Up