helpme91 schrieb:> Funktioniert leider nicht, er kennt das && nicht.
Dann hast du keinen C++ - Compiler, sondern einen für irgend eine andere
Programmiersprache,
Da das aber dann doch eher unwahrscheinlich ist, dürfte das Problem ein
ganz anderes sein. Welches, könnte man aus dem ganzen Code und der
ganzen Fehlermeldung erkennen, aber das bleibt halt wegen Geheimhaltung
deinerseits dir überlassen.
Oliver
helpme91 schrieb:> Funktioniert leider nicht, er kennt das && nicht.
Hier wäre der genaue Wortlaut der Fehlerausgabe wichtig. Mit Deiner
Angabe kann man ziemlich genau gar nichts anfangen. Was soll das heißen
"Funktioniert leider nicht"? Und wer ist "er"?
Sebastian S. schrieb:> Vielleicht hilft eine Überdosis an Klammern
Ist egal, wenn kein Syntax Fehler vorliegt, zieht sich ein C(++)
Compiler alles rein. ;-)
Dürfte - wie bereits erwähnt - eine Abweichung zu Deklaration sein.
@MaWin
Ich habe gerade keinen C++-Compiler installiert.
Mir war nur aufgefallen, dass verschiedene Datentypen verglichen werden.
Irgendwas Numerisches und irgendwas Logisches.
Sebastian S. schrieb:> Vielleicht hilft eine Überdosis an Klammern?> Also: if ( ( choise == 2 ) && ( executed == true ) )...
Nö, == hat sowieso Vorrang vor logischen und bitweisen Operatoren.
Ändert also nichts (ist höchstens eine Stilfrage). Das "== true" ist
doppelt gemoppelt.
> Ich habe gerade keinen C++-Compiler installiert.https://godbolt.org
Sebastian S. schrieb:> Mir war nur aufgefallen, dass verschiedene Datentypen verglichen werden.
???
helpme91 schrieb:> int == 2 ist und ein> bool == true
Wo ist das Problem? Beides ergibt bool und && hat die richtigen Typen.
???
Sebastian S. schrieb:> Ich habe gerade keinen C++-Compiler installiert.
Warum auch, offensichtlich kennst du die Sprache ja nicht. Das ist nicht
weiter schlimm, nur sind deine Antworten dazu deshalb wenig hilfreich.
Oliver
helpme91 schrieb:> er kennt das && nicht.helpme91 schrieb:> Es gibt keine Fehlermeldung. Er compeliert alles einwandfrei.
Du musst schon genauer beschreiben, was Du aussagen willst. Woraus
schließt Du, dass er && nicht kennt?
Du solltest auch die ganze Routine, das erwartete Ergebnis und das
ausgegebene Ergebnis mitteilen.
helpme91 schrieb:> Ich habe beim bool aus versehen beim initialisieren execute == true> statt execute = true gemacht.
Tipp, Initialisierungen nur so machen:
> bool execute {true};
Das mildert Verwirrungen mit dem mehrfach überladenen = Zeichen.
Bringt mehr Typsicherheit, durch weniger überraschende implizite
Konvertierungen.
1
boolexecute2=42;// geht ohne murren durch!
2
boolexecute1{42};// warning: narrowing conversion of '42' from 'int' to 'bool'
Johannes S. schrieb:> also sehr wahrscheinlich Compiler Warnungen ignoriert. Die kann man> sogar in der Arduino IDE einschalten.
Die muss man allerdings auch explizit einschalten, weil das Ding per
Default alles komplett verheimlicht. Man kann ja schon froh sein, dass
das Ding wenigstens bei Fehlern was ausgibt. Gerade die Haupt-Zielgruppe
würde von mehr Warnungen besonders profitieren.
Hallo,
Rolf M. schrieb:> Gerade die Haupt-Zielgruppe würde von mehr Warnungen besonders> profitieren.
Ich behaupte mal (ohne Beweis) das gerade die Haupt-Zielgruppe mit den
Compilerwarnungen wenig bis nichts anfangen kann.
rhf
Rolf M. schrieb:> muss
Wozu das Geschimpfe!
Beim ersten Fehler, und der kommt, wird einem gesagt, dass man doch
bitte die ausführlichen Ausgaben aktivieren soll, damit eben die
Meldungen ausführlicher werden.
Ich denke, dass dem folge zu leisten, so ziemlich jedem möglich ist.
Das Feature ist also keinesfalls "verborgen" oder "verheimlicht",
sondern wird sogar propagiert.
Rolf M. schrieb:> Gerade die Haupt-Zielgruppe> würde von mehr Warnungen besonders profitieren.
Die Zielgruppe für deine Ansage, ist (hier) auch nicht sonderlich gut
gewählt....
Die Defaulteinstellungen der IDE könntest sogar du auf Github ändern.
Dort ist dann auch der richtige (Ziel)Personenkreis zu finden.
Arduino Fanboy D. schrieb:> Das Feature ist also keinesfalls "verborgen" oder "verheimlicht",
es ging nicht darum das das Feature verborgen ist, das ist einfach in
dem überschaubaren Einstellungsdialog zu finden, sondern um die
Warnungen selber. Man möchte eher den Anwender, der seinen Code nur
kopiert, nicht mit unverständlichen Meldungen verwirren.
Oliver S. schrieb:> Ist in dem Fall egal.
Natürlich darfst du versuchen meine allgemeine Empfehlung zu
Initialisierungen durch ein "egal" zu negieren.
Und nein, zum Code des TO sage ich nichts, da er in Schatten liegt.
Arduino Fanboy D. schrieb:> Rolf M. schrieb:>> muss>> Wozu das Geschimpfe!
Weil ich es ziemlich daneben finde, als Voreinstellung alle Warnungen
auszuknipsen. Hier ist man sich doch eigentlich weitgehend einig, dass
Warnungen eingeschaltet gehören und man sie auch beachtet und nicht
ignoriert. Diese Voreinstellung ist das genaue Gegenteil davon.
> Beim ersten Fehler, und der kommt, wird einem gesagt, dass man doch> bitte die ausführlichen Ausgaben aktivieren soll, damit eben die> Meldungen ausführlicher werden.
Warum sind sie dann nicht gleich an?
> Die Zielgruppe für deine Ansage, ist (hier) auch nicht sonderlich gut> gewählt....> Die Defaulteinstellungen der IDE könntest sogar du auf Github ändern.> Dort ist dann auch der richtige (Ziel)Personenkreis zu finden.
Die Arduino-IDE finde ich ziemlich grottig, nicht nur deswegen, und ich
benutze sie nicht. Daher muss die für mich nicht verbessert werden. Ich
kann ja trotzdem meine Meinung zu den Entscheidungen, die dort
eingeflossen sind, kund tun.
Rolf M. schrieb:> Ich> kann ja trotzdem meine Meinung zu den Entscheidungen, die dort> eingeflossen sind, kund tun.
Natürlich kannst du das tun!
Aber dir ist schon klar, dass das genau das Verhalten eines Arduino
Bashers ist?
Wenn ich einen Arduino Basher typisieren müsste:
1. ER nutzt die IDE nicht
2. ER will das auch gar nicht
3. ER beschwert sich über Dinge, mit denen er gar nichts zu tun hat.
Die Motivation kann also gar nicht darin liegen die Welt zu verbessern.
Rolf M. schrieb:> Daher muss die für mich nicht verbessert werden.
Siehste.
Einfach nur schlecht reden.....
Johannes S. schrieb:> Man möchte eher den Anwender, der seinen Code nur> kopiert, nicht mit unverständlichen Meldungen verwirren.
Ich rate dir mit dem "Personenkreis" zu sprechen, und nicht Absichten zu
unterstellen.
Es ist eine Kleinigkeit, das einzustellen, wie man das selber möchte.
Und die Einsicht das zu tun, ist nur eine einzige Einsicht, von vielen
Tausenden, welche auf einen zukommen, wenn man das Gebiet µC
Programmierung betritt.
Arduino Fanboy D. schrieb:> Ich rate dir mit dem "Personenkreis" zu sprechen, und nicht Absichten zu> unterstellen.
habe ich, und auch aus eigener Erfahrung weiß ich das die
Fehler/Warnungen nicht immer leicht zu interpretieren sind. Trotzdem
halte ich es für falsch, die Warnungen als Voreinstellung zu
unterdrücken. Das hat nix mit Bashing zu tun. Du fühlst dich immer etwas
zu schnell angegriffen wenn es um Arduino geht.
Johannes S. schrieb:> Trotzdem> halte ich es für falsch, die Warnungen als Voreinstellung zu> unterdrücken.
Der Satz enthält eine ungerechte Wertung!
Eine Realitätsverzerrung.
Die Meldungen werden nicht unterdrückt.
Die AVR-Gcc Tool Chain meldet von Hause aus keine/kaum Warnungen.
Man muss die Warnungen "scharf schalten" wenn man sie sehen will.
Folge ich deinem Urteil/Bewertung, dann soll für die Arduino IDE etwas
gelten, was für die Toolchain nicht gilt!
Als wenn die Arduino User damit überfordert wären, die Haken zu
setzen....
Und ja, das ordne ich als Bashing ein.
Noch auf niedrigem Niveau, aber doch schon eine Startmenge.
als Einsteiger erwartet man sinnvolle Voreinstellungen in der IDE, das
hat nix damit zu tun das ein Anfänger den Dialog nicht bedienen könnte.
Eine IDE versteckt ja sogar die ganzen Compileroptionen weil man damit
erstmal noch weniger zu tun haben möchte.
Und wenn man auch gerade noch mit C/C++ anfängt, dann sind unterdrückte,
potentielle Fehler keine Hilfe. Siehe das Problem des TO. Mit den
unterdrückten Warnungen wird man gleich zur Schluderei erzogen.
Spätestens wenn man mit Zeigern anfängt rächt sich das richtig.
Johannes S. schrieb:> unterdrückteJohannes S. schrieb:> unterdrückten
Semantik: Unterdrücken ist eine aktive Handlung.
Das trifft hier nicht zu!
Johannes S. schrieb:> als Einsteiger erwartet man sinnvolle Voreinstellungen in der IDE,
Sorry, aber ich sehe dich nicht als Arduino Einsteiger.
Zudem hat ein Makefile Einsteiger exakt das gleiche Problem.
Dem wird auch nicht der Hindern alle 5 Minuten abgewischt.
Man, man ....
Natürlich sind bei mir auch alle Meldungen aktiviert, IMMER!
Auch pedantic.
Aber doch nur, weil mir Himbeereis gut schmeckt, muss ich das doch nicht
als Dessert Grundvorgabe weltweit allen Arduino Usern aufdrücken.
Johannes S. schrieb:> Mit den> unterdrückten Warnungen wird man gleich zur Schluderei erzogen.
Is klar....
Johannes S. schrieb:> Spätestens wenn man mit Zeigern anfängt rächt sich das richtig.
Als wenn der Kompiler alle Schlampereien mit Zeigern erkennen könnte....
Jetzt mal rein psychologisch:
Wann setzt sich eine Erkenntnis fester, wenn sie per Voreinstellung
vorweg genommen wurde, oder wenn einem die Wichtigkeit der Meldungen ins
Hirn tropft und man diese Einstellung dann selber durchführt?
Weiterhin:
Ich stimme euch zu, wenn ihr meint, Warnungen helfen saubere Programme
zu schreiben.
Sehe aber auch, dass das schreiben von "sauberen" Programmen
hauptsächlich im Kopf stattfindet. Jede gewonnene Erkenntnis ist da mehr
wert, als so ein blöder Klick-haken-Menüeintrag.
Aber ich kann auch deine Argumentation (ver)wenden....
Wenn die Warnungen von vorneherein aufs schärfste eingestellt sind, wird
der Unbedarfte zum aktiven ignorieren der Warnungen erzogen. Denn das
Programm läuft ja trotzdem (vielleicht).
Dadurch verlieren die Warnungen ihre Wichtigkeit.
Arduino Fanboy D. schrieb:> Beim ersten Fehler, und der kommt, wird einem gesagt, dass man doch> bitte die ausführlichen Ausgaben aktivieren soll, damit eben die> Meldungen ausführlicher werden.
Der Fehler kommt bei Fehlern. Wenn die aber offensichtlich und (wie beim
TO) beseitigt sind, wieso sollte er dann Warnungen einschalten?
Vielleicht sind Warnungen ein so wichtiges Thema, dass man über einen
eigenen "Analyse"-button nachdenken sollte, bei dem halt sämtliche
Warnungen ausgegeben werden. Gerne auch gestuft (einmal drücken nur die
wichtigsten, 4 x dann auch die abwegigsten Vermutungen).
Oder zumindest 2 einstellbare Level, so dass der (zusammenkopierte) Code
0 bzw wenige Warnungen enthält und in Analyse ~ 10 in jedem Modul.
Bei der Arbeit, mit mehreren 100kloc machen wir das genau so.
A. S. schrieb:> Bei der Arbeit, mit mehreren 100kloc machen wir das genau so.
Ändert ihr da andauernd alle 100k Zeilen auf einmal?
Bei den bei hier eher anzutreffenden Programmgrößen zu den eher kleinen
Mikrocontrollern gibt es grundsätzlich nur eins: Warnungen an.
Beim gcc als Grundeinstellung -Wall -Wextra -pedantic, und nur wer genau
weiß warum, darf letzteres weglassen. Wer es braucht, dazu -Werror,
zumindest für Release builds. Dazu dann je nach persönlichem Empfinden
noch ein paar weitere.
Oliver
Oliver S. schrieb:> Ändert ihr da andauernd alle 100k Zeilen auf einmal?>> Bei den bei hier eher anzutreffenden Programmgrößen zu den eher kleinen> Mikrocontrollern gibt es grundsätzlich nur eins: Warnungen an.
Dann habe ich mich falsch ausgedrückt:
Wenn es 2 Level gibt (Kompilieren, Analysieren), dann sollte der zum
Kompilieren nur wenige Warnungen produzieren. Für den einen (mit
zusammenkopiertem Code) ist das vielleicht alle Warnungen aus (weil viel
Müll übernommen wurde), für den anderen vielleicht -pedantic.
Und fürs Analysieren sollte dann entsprechend schärfer geschaltet sein.
Aber als 2 parallele Sets, bzw. als ein Set mit Level (1=immer, 2=nur
beim Analysieren)
(Und natürlich dient Refactoring auch dazu, die Warnlevel stetig höher
setzen zu können)
Arduino Fanboy D. schrieb:> Rolf M. schrieb:>> Ich>> kann ja trotzdem meine Meinung zu den Entscheidungen, die dort>> eingeflossen sind, kund tun.>> Natürlich kannst du das tun!> Aber dir ist schon klar, dass das genau das Verhalten eines Arduino> Bashers ist?
Das trifft sich ja, denn ich finde, dass dein Name sehr gut passt. Dein
Verhalten erinnert mich an das eines Fanboys. ;-)
> Wenn ich einen Arduino Basher typisieren müsste:> 1. ER nutzt die IDE nicht> 2. ER will das auch gar nicht
Ich habe sie ausprobiert und für mich als untauglich befunden. Wenn
andere damit glücklich sind, habe ich aber kein Problem damit.
> 3. ER beschwert sich über Dinge, mit denen er gar nichts zu tun hat.
Ich habe hier lediglich einen der Gründe für meine Ablehnung genannt,
weil das Thema gerade aufgekommen ist und der TE genau deswegen unnötig
viel Zeit gebraucht hat, um sein Problem zu finden.
> Die Motivation kann also gar nicht darin liegen die Welt zu verbessern.
Vielleicht ist es dir noch nicht aufgefallen, aber nicht jede Aussage,
die Menschen treffen, dient der Weltverbesserung.
> Rolf M. schrieb:>> Daher muss die für mich nicht verbessert werden.> Siehste.> Einfach nur schlecht reden.....
Dafür nimmst du gleich eine Verteidigungshaltung ein und greifst die
Person selbst an, die was schlechtes über dein geliebtes Tool
geschrieben hat. Das ist typisches Fanboy-Verhalten.
> Es ist eine Kleinigkeit, das einzustellen, wie man das selber möchte.> Und die Einsicht das zu tun, ist nur eine einzige Einsicht, von vielen> Tausenden, welche auf einen zukommen, wenn man das Gebiet µC> Programmierung betritt.
Mir ist eben nur ein Rätsel, weshalb man gerade bei einer Software, die
so einsteigerfreundlich wie möglich sein soll, diese Einsicht erst
voraussetzt, statt es gleich so voreinzustellen, dass man von Anfang an
schon daran gewöhnt ist, dass sich der Compiler bei potenziellen
Problemen von sich aus meldet.
Arduino Fanboy D. schrieb:> Semantik: Unterdrücken ist eine aktive Handlung.> Das trifft hier nicht zu!
Die Entscheidung, das Häkchen in der Voreinstellung nicht zu setzen,
wurde sicherlich aktiv getroffen. Oder denkst du, jemand hat das einfach
vergessen?
> Johannes S. schrieb:>> als Einsteiger erwartet man sinnvolle Voreinstellungen in der IDE,> Sorry, aber ich sehe dich nicht als Arduino Einsteiger.> Zudem hat ein Makefile Einsteiger exakt das gleiche Problem.> Dem wird auch nicht der Hindern alle 5 Minuten abgewischt.
Nur hat sich Arduino halt explizit als Hauptziel eine besonders einfache
Nutzbarkeit auf die Fahne geschrieben. Von einem Anfänger zu erwarten,
dass er erstmal Sachen umkonfiguriert, passt da überhaupt nicht dazu.
Gerade Anfänger fassen lieber erst mal keine Einstellung an, um nicht
versehentlich was kaputtzumachen.
> Man, man ....> Natürlich sind bei mir auch alle Meldungen aktiviert, IMMER!> Auch pedantic.> Aber doch nur, weil mir Himbeereis gut schmeckt, muss ich das doch nicht> als Dessert Grundvorgabe weltweit allen Arduino Usern aufdrücken.
Huch? Wieso "weltweit allen Arduino Usern aufdrücken"? Es geht nur
darum, dass das Häkchen per Voreinstellung an sein sollte. Wer das nicht
will, kann es dann immer noch ausschalten. Aber wenn es per Default aus
ist, weiß der Anfänger gar nicht, was er verpasst. Das ist ungefähr so,
als ob deine Eisdiele Himbeereis gar nicht offiziell anbietet und dir
nur auf explizite Nachfrage verkauft. Wenn du es kennst und weißt, dass
du es magst, fragst du, ob sie das auch haben, sonst halt nicht.
> Johannes S. schrieb:>> Mit den>> unterdrückten Warnungen wird man gleich zur Schluderei erzogen.> Is klar....
Ja, wird man. Versuche einfach mal, dich in die Rolle des Anfängers, der
von dem Thema noch keine Ahnung hat, zu versetzen. Ich weiß, das fällt
irgendwann schwer, wenn man selbst viel Erfahrung und Knoff Hoff hat. Da
empfindet man Dinge als trivial, die für den Anfänger eine riesige Hürde
darstellen.
> Johannes S. schrieb:>> Spätestens wenn man mit Zeigern anfängt rächt sich das richtig.> Als wenn der Kompiler alle Schlampereien mit Zeigern erkennen könnte....
Dass er nicht alle erdenklichen Probleme erkennen und melden kann, ist
keine Rechtfertigung dafür, das abzuschalten, was er hätte melden
können.
A. S. schrieb:> Vielleicht sind Warnungen ein so wichtiges Thema, dass man über einen> eigenen "Analyse"-button nachdenken sollte, bei dem halt sämtliche> Warnungen ausgegeben werden. Gerne auch gestuft (einmal drücken nur die> wichtigsten, 4 x dann auch die abwegigsten Vermutungen).
Oder möglicherweise eine Statuszeile, die sagt "Es gibt Warnungen.
Möchtest du sie sehen?".
A. S. schrieb:> Wenn es 2 Level gibt (Kompilieren, Analysieren), dann sollte der zum> Kompilieren nur wenige Warnungen produzieren.
Dann verbringt man mehr Zeit mit Debuggen, weil man manuell Fehler jagt,
auf die einen der Compiler auch deutlich effizienter und automatisch
hätte hinweisen können. Deswegen ergibt es keinen Sinn, überhaupt mit
geringem Warnlevel zu arbeiten.
Arduino Fanboy D. schrieb:> Johannes S. schrieb:>> Mit den>> unterdrückten Warnungen wird man gleich zur Schluderei erzogen.> Is klar....
Isso. Wenn Du erstmal eine Codebasis jenseits eines Blinkys hast, die
ohne Warnungen erstellt wurde, und dann erst Warnungen aktivierst, haut
es Dich um. Das ist auch logisch, weil man mit Warnungen nämlich direkt
hätte lernen können, anstatt weiterhin noch mehr bedenklichen Code zu
schreiben.
> Wenn die Warnungen von vorneherein aufs schärfste eingestellt sind, wird> der Unbedarfte zum aktiven ignorieren der Warnungen erzogen.
Wenn man sie gar nicht erst einschaltet, werden sie erst recht nicht zur
Kenntnis genommen - wie auch, weil sie ja nichtmal angezeigt werden.
Arduino Fanboy D. schrieb:> 3. ER beschwert sich über Dinge, mit denen er gar nichts zu tun hat.> Die Motivation kann also gar nicht darin liegen die Welt zu verbessern.
Die Schlussforlgerung ist unlogisch. Man kann auch etwas kritisieren,
von dem man nicht betroffen ist. Man kann auch als Weißer gegen
Rassismus sein. Man kann auch als Frau gegen Sexismus sein. Und die
meisten, die Vorschläge für die Verbesserung von Bobby Cars oder
Babybrei machen, nutzen sie wahrscheinlich nicht selber für sich (in
gedachter Weise).
Arduino Fanboy D. schrieb:> Wenn die Warnungen von vorneherein aufs schärfste eingestellt sind, wird> der Unbedarfte zum aktiven ignorieren der Warnungen erzogen. Denn das> Programm läuft ja trotzdem (vielleicht).
Erstens stimmt das nicht, ich hatte früher auch Warnungen eingestellt
und ignoriere sie trotzdem nicht und zweitens ist jemand, der Warnungen
aktiv ignoriert zum Hauptteil selber Schuld. Wer die Warnungen aber gar
nicht erst bekommt, kann sie nicht ignorieren.
Da finde ich, halt Rolf schon Recht. Gerade für Anfänger in einem
Programm, das sich an Anfänger richtet, sollten Hilfen erstmal
eingeschaltet sein.
Nop schrieb:> Isso. Wenn Du erstmal eine Codebasis jenseits eines Blinkys hast, die> ohne Warnungen erstellt wurde, und dann erst Warnungen aktivierst, haut> es Dich um.
Wenn man das irgendwie etwas ernsthafter auf nur einer PLattform
betreibt, sollte das nicht passieren. Da gehts eher darum,
Flüchtigkeitsfehler abzufangen.
Lustiger wird es, wen man Code für verschiedene Plattformen und Compiler
schreibt. MSVC, gcc, und Clang haben schon unterschiedliche
Vorstellungen davon, vor was gewarnt werden sollte.
Oliver
Nop schrieb:> Dann verbringt man mehr Zeit mit Debuggen, weil man manuell Fehler jagt,> auf die einen der Compiler auch deutlich effizienter und automatisch> hätte hinweisen können. Deswegen ergibt es keinen Sinn, überhaupt mit> geringem Warnlevel zu arbeiten.
Das sehe ich anders: Kaum jemand hat alle Warnungen an. Und kaum jemand
möchte die 30 Leichen, die zwar erwiesen ungefährlich aber in seinem
Code noch sind, jedesmal auf die Nase gebunden bekommen, wenn sich eine
zentrale Header ändert oder ein Rebuild-All ansteht.
Es kann ja auch objektiv nicht sein, dass statt Alle Warnungen Aus
(default) jetzt Alle Ein die Lösung ist.
A. S. schrieb:> Und kaum jemand> möchte die 30 Leichen, die zwar erwiesen ungefährlich aber in seinem> Code noch sind, jedesmal auf die Nase gebunden bekommen
Dann investiert man einmal ne Stunde Arbeit, und die Probleme sind ein
für alle mal vom Tisch.
Ich bin sicherlich kein Programmier-Anfänger, aber Warungen schalte ich
immer ALLE ein, und ich kümmer mich auch um jede einzelne Warnung.
Sehr häufig hab ich so problematische Konstrukte identifizieren können,
die ansonsten zu potentiellen Problemen bei der Wiederverwendung des
Code hätten führen können.
Das kann nervig sein, aber hat sich bei mir sehr bewährt.
Ich erwarte am Ende eine Meldung wie diese:
A. S. schrieb:> Das sehe ich anders: Kaum jemand hat alle Warnungen an.
Jeder, der Interesse an fehlerarmer Software hat, hat alle Warnungen an.
> Und kaum jemand> möchte die 30 Leichen, die zwar erwiesen ungefährlich aber in seinem> Code noch sind
Wieso sind die im Code noch drin? Wieso wurden die nicht gleich gefixt?
Das ist genau der Punkt - die behebt man, damit man nicht inmitten von
Dutzenden "harmlosen" Warnungen die eine übersieht, die nicht harmlos
ist.
> Es kann ja auch objektiv nicht sein, dass statt Alle Warnungen Aus> (default) jetzt Alle Ein die Lösung ist.
Doch, genau das kann nicht nur sein, es sollte auch. Zusammen mit
-Werror. Code, der dann nicht mehr durchcompiliert, ist einfach
schlechter und bugträchtiger Code.
Nop schrieb:> Wieso sind die im Code noch drin? Wieso wurden die nicht gleich gefixt?
So wie Du schreibst sind entweder deine Projekte klein, beinhalten nur
selbstgeschriebenen Code, du kennst noch nicht alle Warnoptionen oder
der Compiler hat nur die mindest-Warnungen, so etwa -pedantic.
A. S. schrieb:> So wie Du schreibst sind entweder deine Projekte klein
Nein.
> beinhalten nur selbstgeschriebenen Code
Nein.
> du kennst noch nicht alle Warnoptionen oder> der Compiler hat nur die mindest-Warnungen, so etwa -pedantic.
Auch nein.
Es liegt bloß daran, daß ich eine ganz faule Sau bin und deswegen keinen
Bock habe, manuell irgendwelchen Fehlern nachzujagen, auf die der
Compiler mich auch automatisch hätte hinweisen können.
A. S. schrieb:> Das sehe ich anders: Kaum jemand hat alle Warnungen an. Und kaum jemand> möchte die 30 Leichen, die zwar erwiesen ungefährlich aber in seinem> Code noch sind, jedesmal auf die Nase gebunden bekommen, wenn sich eine> zentrale Header ändert oder ein Rebuild-All ansteht.
Es gibt keine ungefährlichen Warnungen.
Oliver
Dirk B. schrieb:> „Variable defined, but never used“
Kann harmlos sein, muss aber nicht.
Vielleicht wollte man diese Variable benutzen, hat durch den
Kopierfehlerteufel aber eine andere weiterbenutzt. Für jemanden, der
fremden Code analysiert nicht schön. Auch hier ist es Faulheit das nicht
eindeutig zu machen.
Johannes S. schrieb:> Dirk B. schrieb:>> „Variable defined, but never used“>> Kann harmlos sein, muss aber nicht.> Vielleicht wollte man diese Variable benutzen, hat durch den> Kopierfehlerteufel aber eine andere weiterbenutzt. Für jemanden, der> fremden Code analysiert nicht schön. Auch hier ist es Faulheit das nicht> eindeutig zu machen.
dabei hilft mir dieses Makro:
1
#define UNUSED(X) (void)X /* To avoid gcc/g++ warnings */
und in den Funktionen dann ein
1
UNUSED(var);
Wenn man genau weis, daß die Variable nicht genutzt wird, kann man so
die Warnung unterdrücken.
Das ist z.B. bei __weak definierten Funktionen manchmal sinnvoll.
Harry L. schrieb:> #define UNUSED(X) (void)X
Bei Makros immer Klammern! Man weiss nie, wer es benutzt. ;-)
#define UNUSED(X) ((void)(X))
Du kannst dir sonst die nächsten Fehler casten. :-<<<
Oliver S. schrieb:> Es gibt keine ungefährlichen Warnungen.
Exakt. Kann mir doch keiner erzählen, daß er inmitten von zig
"ungefährlichen" Warnungen einer räudigen Codebasis die paar noch sieht,
die auf tatsächliche Bugs verweisen.
MaWin schrieb:> Harry L. schrieb:>> #define UNUSED(X) (void)X>> Bei Makros immer Klammern! Man weiss nie, wer es benutzt. ;-)>> #define UNUSED(X) ((void)(X))>> Du kannst dir sonst die nächsten Fehler casten. :-<<<
Grundsätzlich ja richtig, aber welcher Honk würde so ein Makro innerhalb
eines andere Statement verwenden?
Der Name ist hier doch Programm...
Nop schrieb:> Exakt. Kann mir doch keiner erzählen, daß er inmitten von zig> "ungefährlichen" Warnungen einer räudigen Codebasis die paar noch sieht,> die auf tatsächliche Bugs verweisen.
Und Du kannst mir nicht erzählen, dass Du alle Warnungen (jenseits Wall)
an hast und trotzdem ohne Vodoo programmierst.
Einfaches Beispiel: Du implementierst eine abgesprochene Funktion void
a(int b, int c).
Für c gibt es noch keine Verwendung. Jede Unterdrückung der Warnung
erfordert, dass Du diese Warnung an anderer Stelle (in deiner
To-do-Liste, als Ticket) pflegst.
Je nun, wenn denn c irgendwann doch mal gebraucht wird, muß da jemand
dran, und der wird dann das, was du zur Unterdrückung der Warnung in der
ersten Zeile der Funktion oder in der Parameterliste als Kommentar und
in der Doku dazu geschrieben hast, finden.
Denn c kommentarlos einfach so unbenutzt zu lassen wäre …
Oliver
A. S. schrieb:> Und Du kannst mir nicht erzählen, dass Du alle Warnungen (jenseits Wall)> an hast und trotzdem ohne Vodoo programmierst.
Isso.
> Für c gibt es noch keine Verwendung. Jede Unterdrückung der Warnung> erfordert, dass Du diese Warnung an anderer Stelle (in deiner> To-do-Liste, als Ticket) pflegst.
Da wird c direkt als erstes in der Funktion nach void gecasted und mit
einem Kommentar versehen. Wenn man c dann implementiert, sieht man den
Kommentar doch. Gut, außer man hat Funktionen von 2000 Zeilen Länge und
will c dann erstmals gegen Ende benutzen, aber dann hat man schon ganz
andere Probleme.
Kann man auch mit einem TODO versehen, danach grept man ja ohnehin die
Codebasis.
'unused' ist sowieso ein langes Kapitel, dafür gibt es ja sogar ein
Attribut im Sprachstandard:
1
[[maybe_unused]]
In C++ ab C++17, aber der gcc meckert auch nicht wenn man es mit g++14
benutzt.
Also zwei eckige Klammern, die Forensoftware interpretiert das als Link.
A. S. schrieb:> Einfaches Beispiel: Du implementierst eine abgesprochene Funktion void> a(int b, int c).>> Für c gibt es noch keine Verwendung. Jede Unterdrückung der Warnung> erfordert, dass Du diese Warnung an anderer Stelle (in deiner> To-do-Liste, als Ticket) pflegst.
Der typische Weg ist, an den Anfang der Funktion ein (void)c; zu
schreiben, gegebenenfalls hinter einen Makro UNUSED_PARAMTER() oder so
versteckt. Alternativ kann man bei gcc auch __attribute__((unused))
verwenden.
Oliver S. schrieb:> In dem Fall wäre aber ein> void foo(int a, int b, int /* c */){>> und ein Kommentar dazu an passender Stelle deutlicher.
Geht in C++, allerdings leider nicht in C. Damit habe ich dort
regelmäßig zu tun, wenn ich z.B. irgendwelche Callbacks implementiere,
die irgendwas übergeben bekommen, das ich halt einfach nicht brauche.
Die sind halt so vorgegeben, und ich kann sie nicht ändern. Da nervt es
mich jedesmal, dass man nicht wie in C++ einfach den Namen weglassen
kann.
A. S. schrieb:> Nop schrieb:>> Exakt. Kann mir doch keiner erzählen, daß er inmitten von zig>> "ungefährlichen" Warnungen einer räudigen Codebasis die paar noch sieht,>> die auf tatsächliche Bugs verweisen.>> Und Du kannst mir nicht erzählen, dass Du alle Warnungen (jenseits Wall)> an hast und trotzdem ohne Vodoo programmierst.
Das ist der Punkt, den ich schon vorher erwähnen wollte. -Wall schaltet
nämlich mitnichten alle Warnungen ein, auch nicht in Kombination mit
-Wextra -pedantic. Ich will mir gar nicht ausmalen, wo der überall
warnt, wenn man wie hier gefordert wirklich alles einschaltet und dann
womöglich noch mit -Werror. Hier mal ein paar Beispiele, was das
beinhalten würde:
-Wdouble-promotion
Give a warning when a value of type float is implicitly promoted to
double.
-Wunsafe-loop-optimizations
Warn if the loop cannot be optimized because the compiler cannot assume
anything on the bounds of the loop indices.
-Wdate-time
Warn when macros _TIME_, _DATE__ or __TIMESTAMP_ are encountered as
they might prevent bit-wise-identical reproducible compilations.
-Waggregate-return
Warn if any functions that return structures or unions are defined or
called.
-Wpadded
Warn if padding is included in a structure, either to align an element
of the structure or to align the whole structure.
-Wlong-long
Warn if long long type is used.
… und so weiter. Keine davon deutet auf einen Fehler im Code hin.
Rolf M. schrieb:> Das ist der Punkt, den ich schon vorher erwähnen wollte. -Wall schaltet> nämlich mitnichten alle Warnungen ein, auch nicht in Kombination mit> -Wextra -pedantic.
Die Kombination ist aber zumindest (inzwischen) frei von false
Positives.
Die allermeisten weiteren Warnungen, dieses da noch so gibt, sind halt
anwendungsabhängig einzusetzen, oder halt nur zur Analyse einzuschalten.
Oliver
Oliver S. schrieb:> halt nur zur Analyse einzuschalten.
Äh, ... genau darum ging es doch:
A. S. schrieb:> dass man über einen eigenen "Analyse"-button nachdenken sollte,> bei dem halt sämtliche Warnungen ausgegeben werden.A. S. schrieb:> Oder zumindest 2 einstellbare Level, so dass der (zusammenkopierte) Code> 0 bzw wenige Warnungen enthält und in Analyse ~ 10 in jedem Modul.
Worauf dann 2 Leute meinte, dass sei Unsinn, weil man ja sowieso immeralle Warnungen an haben müsse.
'alle' Arduino Warnungen. So einfach wie ein Häkchen für alle ist es ja
bei Arduino auch nicht, da muss man sich schon entscheiden. Jetzt ist
natürlich die Preisfrage was ist ein bisschen Warnung, Standard oder
Alles?
Auf jeden Fall scheint bei vielen Usern hier die Einstellung 'pedantic'
zu sein. Wie auch immer ich das jetzt meine...
A. S. schrieb:> Worauf dann 2 Leute meinte, dass sei Unsinn, weil man ja sowieso immer> alle Warnungen an haben müsse.
Es ist noch viel schlimmer....
Die Leute hier agieren auf Kompetenzlevel 3 und 4
3: bewusste Kompetenz
4: unbewusste Kompetenz
Wollen aber, dass Arduinoanfänger, welche meist/oft auf Kompetenzlevel 1
starten, Meldungen zu sehen bekommen, ja sie gar damit zudröhnen, obwohl
diese sie gar nicht verstehen können
1: unbewusste Inkompetenz
Dabei ist doch klar, dass man man mindestens Level 2 erreicht haben
muss, um sich überhaupt dafür interessieren zu können (ohne in der tiefe
zu verstehen)
2: bewusste Inkompetenz
Noch mal zum mit meißeln:
1: weiß von nix, weiß nicht, was er alles noch nicht weiß
2: weiß, das er nix weiß, will aber lernen
3: hat schon viel gelernt, muss aber (noch) bewusst agieren
4: ist so weit trainiert, dass vieles automatisch abläuft
Klarer:
Um die Warnungen analysieren zu können, und erst dann entfalten sie
ihren Sinn, ist es erforderlich, sich mindestens auf dem Weg von 2 zu
Kompetenzlevel 3 zu befinden.
Das werfe ich dem Rolf M. (rmagnus) vor!
Er agiert auf Level 3 oder 4 aber will seine Doktrin auf Level 1
ausdehnen. Dabei hat er den Zustand schon vor Jahrzehnten(?) verlassen.
Weiß gar nicht mehr wie sich das anfühlt.
Irrational diese denke.
Rolf M. schrieb:> Geht in C++, allerdings leider nicht in C. Damit habe ich dort> regelmäßig zu tun, wenn ich z.B. irgendwelche Callbacks implementiere,> die irgendwas übergeben bekommen, das ich halt einfach nicht brauche.> Die sind halt so vorgegeben, und ich kann sie nicht ändern. Da nervt es> mich jedesmal, dass man nicht wie in C++ einfach den Namen weglassen> kann.
Das provoziert natürlich gleich wieder: "Stop using C!" Und das werden
die meisten hier auch gleich wieder falsch verstehen.
Wilhelm M. schrieb:> Danke, aufgepasst.
Ja, wenn du meinst, dass du in mir einen doofen vor dir hast, dann biste
bei mir genau an der richtigen Adresse.
Arduino Fanboy D. schrieb:> Wollen aber, dass Arduinoanfänger, welche meist/oft auf Kompetenzlevel 1> starten, Meldungen zu sehen bekommen, ja sie gar damit zudröhnen, obwohl> diese sie gar nicht verstehen können
Die Warnungen sind ja nicht aus Jux da, sondern weil sie oftmals auf
reale Bugs verweisen. Für einen Anfänger ist es besser, wenn er eine
Warnung kriegt, die er nicht versteht, als wenn er einen Fehler debuggen
soll, dessen Ursache er nicht versteht. Der Unterschied ist, daß der
Compiler einen darauf hinweist, wo genau er ein Problem sieht. Zudem
kann man eine unverständliche Warnmeldung googeln, einen mysteriösen
Laufzeitfehler nicht.
keine Ahnung schrieb:> Wo steht es im C-Standard, dass man alle Parameter einer Funktion> im> Funktionskörper zu benutzen hat?
Gar nicht!
Die jeweilige ABI beschreibt, wie die Parameter übergeben werden.
Alle Warnungen sind eine freiwillige Gnade des Kompilers!
Johann Heinrich Pestalozzi:
> Wohltätigkeit ist das Ersaufen des Rechts im Mistloch der Gnade
Nop schrieb:> Für einen Anfänger ist es besser, wenn er eine> Warnung kriegt, die er nicht versteht, als wenn er einen Fehler debuggen> soll, dessen Ursache er nicht versteht.
Wieder eine Kompetenzlevel 3 oder 4 Aussage!
Kindergatenpsychologie, erste Stunde:
Was nicht verstanden wird, wird ausgeblendet und so das Ausblenden
trainiert!
Johannes S. schrieb:> Vor allem bestätigen sich so alle Vorurteile gegenüber> lernresistenten> Arduino Usern.
Es kann sein, dass du meinst dich über natürliche Verhaltensweisen
erheben zu können.
(nennt man das dann überheblich?)
Klar, alle die versuchen Compilermeldungen zu verstehen sind
überheblich.
Wenn ich zum Doc gehe möchte ich auch nicht hören das ich krank bin, das
verwirrt mich nur.
Arduino Fanboy D. schrieb:> Kindergatenpsychologie, erste Stunde:> Was nicht verstanden wird, wird ausgeblendet und so das Ausblenden> trainiert!
Und? Anfänger zu sein ist völlig OK. War jeder Profi irgendwann mal. Wer
aber nichtmal Googeln kann oder will, wird immer nur Schrott-Software
fabrizieren, egal ob mit oder ohne Warnungen.
Deswegen ergibt es mehr Sinn, sich auf diejenigen zu konzentrieren, die
das Zeug haben, über darüber hinauszuwachsen. Viel braucht es ja nicht,
sondern nur den Willen zum Verstehen und Unverständliches in eine
Suchmaschine reinzukopieren.
Davon sind übrigens gerade bei Arduino diejenigen nicht negativ
betroffen, die sich für Software weder interessieren noch welche machen
wollen, sondern die einfach nur fertige Sketches wollen. Das ist völlig
legitim und eines der Kernfeatures bei Arduino. Ich denke da z.B. an
Künstler, Modelleisenbahner usw., und die würden sogar noch profitieren,
wenn die allgemeine Codequalität des Ökosystems stiege.
Arduino Fanboy D. schrieb:> Sonst noch was?
Ja, einen noch:
Ich möchte das die Leute (auch Arduino User) besser C/C++ programmieren,
damit ich auf meine alten Tage nicht noch Rust lernen muss :)
Nop schrieb:> Und? Anfänger zu sein ist völlig OK. War jeder Profi irgendwann mal. Wer> aber nichtmal Googeln kann oder will, wird immer nur Schrott-Software> fabrizieren, egal ob mit oder ohne Warnungen.
Einstieg auf Kompetenzlevel 1
Das "will" führt zu Kompetenzlevel 2
Dann werden Warnungen interessant. Und das mit dem Google klappt dann
auch.
Selbst wenn nur 10% das Zeug haben, auf Level 3-4 vorzudringen, sollte
man gerade diese nicht mit Vorurteilen und Häme überschütten.
Merke:
ALLE wurden als nichts wissende geboren.
Johannes S. schrieb:> Ich möchte das die Leute (auch Arduino User) besser C/C++ programmieren,> damit ich auf meine alten Tage nicht noch Rust lernen muss :)
Heute ein klein wenig egozentrisch?
;-)
Johannes S. schrieb:> Klar, alle die versuchen Compilermeldungen zu verstehen sind> überheblich.
Nein, sowas machen Profis. Und zwar nur Profis. Du vielleicht, ich
jedenfalls, möglicherweise auch unser Arduinofreund. Aber, stell Dir das
mal vor: für Profis wie uns ist diese Arduino-Plattform gar nicht
gedacht. Im Gegenteil, ausdrücklich, und sogar dokumentiert! Die
Zielgruppe von Arduino sind Menschen, die mit Software und Entwicklung
sonst überhaupt nichts am Hut haben. Kreative, Designer, Künstler, gerne
auch andere Leute mit lustigen Ideen: für die ist das gemacht.
Wenn Du nun allerdings wirklich ein professioneller Entwickler wärst,
der sich um Compilermeldungen kümmert... dann wüßtest Du natürlich, daß
jede Software einen Scope und eine Zielgruppe hat. Die Konsequenz daraus
sind so Dinge wie Usability, UI-Design... you get the idea? Really?
> Wenn ich zum Doc gehe möchte ich auch nicht hören das ich krank bin, das> verwirrt mich nur.
Lustig... und völlig daneben, denn Du bist schon vollkommen verwirrt.
Schau, Software wird für Menschen gemacht, nicht für Maschinen. Wer das
vergißt, hat damit die Grenze vom Entwickler zum Fachidioten
überschritten.
MaWin schrieb:> Sheeva P. schrieb:>> für Profis wie uns>> Du bist doch kein Profi, oder?
Hin und wieder.
> Wo arbeitest du, nicht das ich da versehentlich ein Teil kaufe. ;-)
Wenn Du keine Großbank und kein Versicherungskonzern bist, mußt Du Dir
keinerlei Sorgen machen. ;-)
Das kompiliert in der Voreinstellung der Arduino IDE ohne Mecker. Warum
soll der Herr Künstler sich hier einen Wolf suchen und nur der 'Profi'
gewarnt werden das dieser Ausdruck sehr wahrscheinlich nicht so
beabsichtigt war?
Es hat nichts mit Künstler oder Anfänger vs. Profi zu tun wenn
warscheinliche Fehler unterdrückt werden.
Bei solchen Konstrukten wird eher C kritisiert weil so etwas syntaktisch
erlaubt ist. Jetzt sollten die Hobbypsychologen auch mal die
Compilerbauer mit ins Boot holen. Die geben sich nämlich unendlich viel
Mühe Warnungen, also potentielle Fehler, für die Gefahren in C/C++ zu
generieren. Und dann kommt Herr Arduino und schaltet das alles einfach
komplett ab. So, wer ist hier jetzt arrogant oder überheblich?
In der IDE heisst eine Einstellungsmöglichkeit für die Warnungen
'Standard', habe ich oben gezeigt. Standard oder in der englischen
Version 'default' ist aber witzigerweise gar nicht default. Vielleicht
ist es einfach auch nur ein Programmierfehler das es nach dem
Installieren auf 'keiner / none' steht? Das wurde allerdings konsequent
in die IDE V2 beta übernommen.
Ja, ich programmiere schon ein paar Jahre. Und mache immer noch Fehler
und bin froh das vieles schon vom Compiler gefunden wird, auch
potentielle Fehler. Versus z.B. JavaScript, da knallts viel häufiger
erst zur Laufzeit. Daher kann ich Anfängern nur empfehlen auch Warnungen
Ernst zu nehmen und in der IDE zu aktivieren. Ich habe auf Systemen
gelernt wo man von diesem Luxus und der Weitsicht der Compiler noch
geträumt hatte, heute kann man dazu noch Tante Google fragen oder die
Schwarmintelligenz irgendwelcher Foren nutzen.
Ich versuche mich auch gern in anderen Gewerken, darf ich da auch alle
Regeln der Kunst ignorieren nur weil ich es nicht gelernt habe?
Johannes S. schrieb:> if (a = b) {> Serial.print("ooops");> }>> Das kompiliert in der Voreinstellung der Arduino IDE ohne Mecker.
Wobei das natürlich nicht passiert wäre, wenn die Variable/Referenz
"const" deklariert hätte.
Wilhelm M. schrieb:> Wobei das natürlich nicht passiert wäre, wenn die Variable/Referenz> "const" deklariert hätte.
Und welcher Anfänger ohne Ahnung von Warnings macht sowas?
Mw E. schrieb:> Und welcher Anfänger ohne Ahnung von Warnings macht sowas?
Die Regel "mache alles const, was Du kannst, und nur das non-const, was
Du musst" steht üblicherweise ganz am Anfang. Zumindest bevor man sich
mit der toolchain auseinandersetzt, sollte man solche Basics beachten.
Ja - auch in Parameterlisten von Funktionsdefinitionen (nicht
Deklarationen). Das beugt zudem einem schleichenden Bedeutungswechsel
der Variablen vor. Und ja, Tutos (oder Bücher, very old-school), die das
nicht erwähnen, sollte man gleich beiseite legen.
nunja, das sind sicher die Regeln wie man besser programmiert. Nur der
gemeine Anfänger wird nicht erst den C/C++ Standard durchlesen, dann
noch diverse 'best practice' Bücher und sich dann die Arduino IDE
installieren.
Auf dem Weg etwas besser zu machen hilft dann auch der strenge Compiler
wenn man erstmal etwas empirischer an die Sache geht.
Johannes S. schrieb:> nunja, das sind sicher die Regeln wie man besser programmiert.
Für mich sind das keiner Regeln, wie besser programmiert, sondern es
sind die Grundlagen des Programmieren.
Wilhelm M. schrieb:> Für mich sind das keiner Regeln, wie besser programmiert, sondern es> sind die Grundlagen des Programmieren.
Eine Level 3-4 Aussage.
Johannes S. schrieb:> wenn warscheinliche Fehler unterdrückt werden.
Die Fehler werden nicht unterdrückt.
Es ist die Default Einstellung der Toolchain, keine Warnungen zu zeigen.
Das passt nicht in dein Hirn, oder?
Wieso trittst du nicht an die Compilerersteller heran, und bittest sie
die Defaulteinstellung der Warnings zu ändern?
Dann betrifft es alle Anwender der Toolchain.
Auch die Arduino User.
Vermutlich würde man dein Ansinnen gnadenlos abschmettern.
Noch mal:
Ich habe nichts dagegen, dass du für dich die positiven Effekte der
Warnungen verstanden hast, und sie für dich selber zu nutzen weißt.
Das ist gut.
Das ist eine Erkenntnis, welche du gewonnen hast.
Aber es gibt keinen Grund deine Erkenntnisse auf alle Arduino User zu
projizieren.
Damit nimmst du ihnen die Gelegenheit die gleiche Erkenntnis aus eigener
Kraft zu gewinnen. Das nenne ich Bevormundung vom hohen Ross herab.
Man kann Leute nicht zu ihrem Glück zwingen, durch Bevormundungen.
Arroganz und Anmaßungen(ich weiß was für dich gut ist) sind keine guten
Lehrmeister.
Das positive Lernen geht über Erkenntnisgewinn, nicht über
Indoktrinierungen.
Wikipedia:
> Indoktrination (lateinisch doctrina ‚Belehrung‘) ist eine> besonders vehemente, keinen Widerspruch und keine Diskussion> zulassende Belehrung. Dies geschieht durch gezielte> Manipulation von Menschen durch gesteuerte Auswahl von> Informationen, um ideologische Absichten durchzusetzen> oder Kritik auszuschalten.
Ich habe recht viel Erfahrung mit total blauäugigen/ahnungslosen Arduino
Anfängern.
Sie alle, machen Fehler!
Auch ein wimalopaan wird noch ab und an Fehler machen.
Sei es auch nur ein vergessenes Semikolon, oder eine schließende
Klammer....
Arduino beglückt den User, in einem solchen Fall, mit einer Errormeldung
welche ihren Abschluss hierin findet:
> Dieser Bericht wäre detaillierter, wenn die Option> "Ausführliche Ausgabe während der Kompilierung"> in Datei -> Voreinstellungen aktiviert wäre.
Dann entscheidet es sich!
Ist der Betreffende in der Lage, eine solche Meldung zu erkennen, lesen,
verstehen und dementsprechend zu handeln?
Wenn ja, wird er den Haken setzen, und das Thema ist durch, die
Meldungen sprudeln.
Wenn nein, ist auch nicht zu erwarten, dass der Betreffende die
Kompilermeldungen verstehend lesen kann. Dann braucht das noch Zeit.
Arduino bietet einen niederschwelligen Zugang zur µC Welt.
Unverständliche Warnungen, haben nichts mit niederschwellig zu tun, sind
eher das Gegenteil davon.
Es liegt in der Hand des Anwenders zu wachsen.
Arduino Fanboy D. schrieb:>> wenn warscheinliche Fehler unterdrückt werden.> Die Fehler werden nicht unterdrückt.> Es ist die Default Einstellung der Toolchain, keine Warnungen zu zeigen.> Das passt nicht in dein Hirn, oder?
ich installiere keine Toolchain und keinen Compiler. Habe ich überhaupt
einen Compiler? Was für einen? Was für Default Einstellungen soll diese
Toolchain haben? Müssen die mich interessieren???
Ich habe ein Brettl mit Lampe, verbunden mit meinem Computer. Und ein
Programm, da schreibe ich Anweisungen rein. Dann klicke ich auf den
Knopf 'Überprüfen', nix kompilieren, ich nix Kompiler rufen. Da werden
keine Fehler gemeldet. Dann klicke ich auf 'Hochladen', wieder keine
Fehler. Und die Lampe blinkt....nicht. Wie jetzt, da waren doch keine
Fehler. Die IDE hätte Tipps wo ich suchen kann und sagt es mir nicht?
Warum nicht?
Für mich sind und bleiben das von der IDE unterdrückte Meldungen, auch
wenn du das nicht in dein Hirn reinbekommst. Niemand ruft einen Compiler
in der Arduino IDE auf, das macht die IDE schön selber und das ist auch
gut so und darum benutzt man eine IDE ja auch. Und die IDE übergibt
dabei noch eine Menge Einstellungen, unabhängig von irgendwelchen
internen Voreinstellungen dieser ominösen Toolchain die weder mich noch
einen anderen User interessieren.
Arduino Fanboy D. schrieb:> Dann betrifft es alle Anwender der Toolchain.> Auch die Arduino User.> Vermutlich würde man dein Ansinnen gnadenlos abschmettern.
Das Thema betrifft die IDE, nicht das low level Werkzeug Compiler. Und
dort wird das Issue 'Warning default' regelmässig auf und zu gemacht,
z.B. hier:
https://github.com/arduino/Arduino/issues/4184
Aber eher mit der Begründung zugemacht weil dann auch Warnungen aus dem
Core aufpoppen.
Da soll sich mal noch jemand über die Vorwürfe beschweren das Arduino
unprofessionell ist.
Johannes S. schrieb:> die weder mich noch> einen anderen User interessieren.
Wenn dich das doch alles gar nicht interessiert, dann frage ich mich
doch: Wieso macht datt rechthaberische Kerlken eine solche Welle!
Johannes S. schrieb:> Aber eher mit der Begründung zugemacht weil dann auch Warnungen aus dem> Core aufpoppen.>> Da soll sich mal noch jemand über die Vorwürfe beschweren das Arduino> unprofessionell ist.
Ja ja....
Der Core wirft keine Warnungen!
Johannes S. schrieb:> Wie jetzt, da waren doch keine Fehler. Die IDE hätte Tipps wo ich suchen> kann und sagt es mir nicht? Warum nicht?
Genau. Und deswegen einen separaten Knopf "Analyse".
Lampe geht nicht? Analyse.
Das Problem mit Warnung ist halt, sie machen nur Sinn, wenn keine
offensichtlichen Fehler da sind. Klammer vergessen, Tippfehler? Da
möchte ich nicht 100 Folge-Warnungen.
Mit einem Jahr Erfahrung sieht das anders aus, aber nur verschoben. Da
ist dann Wall extra und pedantic immer an und die weiteren Warnungen nur
einmal am Tag oder wenn es nicht wie erwartet läuft (ebenfalls per
"Analyse")
Die sinnvollste Voreinstellung in der IDE wäre -Werror. Auch für einen
Fahrschüler gilt erstmal, dass alle(!) Gebote und Verbote absolut
eingehalten werden. Eine Übertretung ist erst dann möglich / erlaubt,
wenn man den Grund des Verbotes verstanden hat. Sonst diskutiert man
ewig herum, ohne den Kern zu erfassen (man denke nur an das immer und
immer wieder auftauchende Thema type-punning via unions in C++). Wenn
aber die Basics nicht klar sind, bleibt es bei -Werror und es braucht
halt noch ein paar Fahrstunden.
Wilhelm M. schrieb:> Auch für einen Fahrschüler gilt erstmal, dass alle(!) Gebote und Verbote> absolut eingehalten werden.
War bei mir nicht. Ich habe weder Blinker setzen noch Seitenblick machen
müssen, als ich erstmals Kupplung kommen lassen durfte. Und ja, war eine
öffentliche Straße.
Aber ich verstehe, was Du meinst: wer etwas neues lernen will sollte
nicht damit anfangen.
A. S. schrieb:> Aber ich verstehe, was Du meinst: wer etwas neues lernen will sollte> nicht damit anfangen.
ich hätte vielleicht schreiben sollen: "... andernfalls hält der
Fahrlehrer an (und nicht Du!), und Du darfst versuchen herauszufinden,
was Du falsch gemacht hast"
A. S. schrieb:> Mit einem Jahr Erfahrung sieht das anders aus, aber nur verschoben. Da> ist dann Wall extra und pedantic immer an und die weiteren Warnungen nur> einmal am Tag oder wenn es nicht wie erwartet läuft (ebenfalls per> "Analyse")
Na ja, wenn du von vornherein geschrieben hättest, daß für dich „ohne
Warnungen“ -Wall -Wextra -pedantic bedeutet, wären wir uns gleich eini&
gewesen.
Oliver
Oliver S. schrieb:> Na ja, wenn du von vornherein geschrieben hättest, daß für dich „ohne> Warnungen“ -Wall -Wextra -pedantic bedeutet, wären wir uns gleich eini&> gewesen.
Ähm, das habe ich doch, ... dachte ich.
A. S. schrieb:> Wenn es 2 Level gibt (Kompilieren, Analysieren), dann sollte der zum> Kompilieren nur wenige Warnungen produzieren. Für den einen (mit> zusammenkopiertem Code) ist das vielleicht alle Warnungen aus (weil viel> Müll übernommen wurde), für den anderen vielleicht -pedantic.> Und fürs Analysieren sollte dann entsprechend schärfer geschaltet sein.
Johannes S. schrieb:> Ich habe ein Brettl mit Lampe, verbunden mit meinem Computer. Und ein> Programm, da schreibe ich Anweisungen rein. Dann klicke ich auf den> Knopf 'Überprüfen', nix kompilieren, ich nix Kompiler rufen. Da werden> keine Fehler gemeldet. Dann klicke ich auf 'Hochladen', wieder keine> Fehler. Und die Lampe blinkt....nicht. Wie jetzt, da waren doch keine> Fehler. Die IDE hätte Tipps wo ich suchen kann und sagt es mir nicht?> Warum nicht?
Tja, warum nur? Was ist eigentlich eine Zielgruppe? Seid Ihr alle
wirklich nur Codemonkeys und versteht nicht, wer Eure Software nutzt?
Sheeva P. schrieb:> warum nur?
Klarer Fall!
Andere Sichtweisen werden nicht zugelassen.
Weiß gar nicht wie ich mich dazu positionieren soll, da ich oft noch
nicht mal mit mir einer Meinung bin.
Arduino Fanboy D. schrieb:> Wollen aber, dass Arduinoanfänger, welche meist/oft auf Kompetenzlevel 1> starten, Meldungen zu sehen bekommen, ja sie gar damit zudröhnen, obwohl> diese sie gar nicht verstehen können
Wie oft ist hier schon vorgekommen, dass Programmieranfänger (nicht
unbedingt Arduino-User) sich hier mit Fragmenten aus ihrem Code melden
und gleichzeitig beklagen, dass ihr Code nicht funktioniert?
Das kommt fast täglich vor. Die Leserschaft stürzt sich dann auf den
Code, pfriemelt dem TO dann noch einiges aus der Nase, der Code wird
umgebaut, aber das Problem nicht beseitigt.
Plötzlich kommt dann ein Leser nach dutzenden oder hunderten Beiträgen
später auf die Ursache und stellt fest:
"Da muss der Compiler doch eine Warnung ausgegeben haben!"
Und wie sich dann herausstellt, ist dem wirklich so. Die Warnung gab es
schon, als der TO den Thread eröffnete. Hätte er sie beachtet, hätte er
zwei Möglichkeiten gehabt:
- Den Fehler selbst korrigieren
- Die Warnung hier posten und nach dem Grund fragen können
Beide Wege hätten in nullkommanix zu einer Lösung geführt.
Ich persönlich halte es deshalb für sinnvoller, den User auf Warnungen
zu sensibilisieren als all das abzustellen, was ihn überfordern könnte.
Frank M. schrieb:> Und wie sich dann herausstellt, ist dem wirklich so. Die Warnung gab es> schon, als der TO den Thread eröffnete. Hätte er sie beachtet,
Da hast du zwar den Knackpunkt erwischt, aber konsequent den falschen
Schluss gezogen.
Dein, noch nicht mal Arduino, Beispiel User hat genau das gemacht, was
total menschlich ist. Er hat die Meldungen nicht verstanden. Ist ja auch
ein Anfänger. Man kann ja auch nicht von Anfängern erwarten, dass sie
die /alle Meldungen verstehen.
Vermutlich hat er vorher auch schon einige Warnungen gesehen.
Aber leider das falsche gelernt:
1. ich verstehe die Warnungen nicht
2. sie haben keine Auswirkungen
3. also sind sie weder für mich, noch für die Anderen wichtig
Ja, da kommen dann solche Threads, wie dein Beispiel bei rum.
Hier kann man mit Fug und Recht sagen, dass die Warnungen wirkungslos
waren. Evtl. sogar kontraproduktiv.
Ich habe da eine klare Meinung, zu:
Für User auf Kompetenzlevel 1 sind Warnungen irrelevant, ablenkend,
störend und damit nicht hilfreich.
User auf Kompetenzlevel 2 sollten sich für die Meldungen interessieren
und diese aktivieren.
Der User auf Kompetenzlevel 3 ist in der Lage die Meldungen zu
analysieren und adäquat darauf zu reagieren.
Ein User auf Kompetenzlevel 4 "fühlt" schon beim schreiben, wo es eine
Meldung geben wird, und wird diese Sandbank elegant umschiffen.
Damit stimme ich voll in dem Chor derjenigen mit ein, dass die Warnungen
sehr wichtig sind. Möchte aber betonen, dass diese Wichtigkeit auch
einen relativen Aspekt beinhaltet, und zwar den Kompetenzlevel des
Lesers der Meldungen.
Und hier gehen eben die meisten ganz alleine von sich selber aus.
Sie, und wohl auch du, wohnen auf Level 3 oder 4. Was natürlich nicht
schlimm ist, aber die Kommunikation mit Personen auf Level 1 erschwert,
bis unmöglich macht.
Die Kompetezlevel sind natürlich nur in dem Modell so scharf abgegrenzt.
In der Realität sind das gleitende Übergänge.
Für mich als "Arduino Berater" ist das natürlich auch Mehrarbeit!
Ein Beispiel aus meiner Praxis:
1
floatdies=PI;
2
dies=dies/3,4;
Das funktioniert, tut aber nicht das, was erwartet wird.
Auf nachfrage: "Die float Zahl soll mit 4 Nachkommastellen dargestellt
werden!"
Klar
Serial.print(dies,4);
tut genau das, 4 Nachkommastellen.
Einem solchen User muss ich(oder wer auch immer) dann sagen, bitte
aktiviere deine Warnungen, und lese das Kapitel zum
Anweisungsverkettungsoberator.
Die Hoffnung:
Er schaltet die Warnungen ein.
Sieht:
> warning: right operand of comma operator has no effect [-Wunused-value]
Das Resultat:
Ich habe die Arbeit, aber der User erkennt die Macht der Warnungen
(hoffentlich).
Es ist immer viel leichter, was neues zu lernen, als sich alte
antrainierte Fehlverhalten wieder abzugewöhnen. Hier das Fehlverhalten
des Ignorierens der Warnungen.
Frank M. schrieb:> Ich persönlich halte es deshalb für sinnvoller, den User auf Warnungen> zu sensibilisieren als all das abzustellen, was ihn überfordern könnte.
Die Meldungen hatten "deinen" User offensichtlich nicht für Warnungen
sensibilisiert, sondern eher desensibilisiert.
Oder?
Aus meiner unbedeutenden Sicht, sensibilisiert man keine Menschen, in
dem man sie zum ignorieren auffordert/zwingt, in dem man sie mit
unverständlichem Kram überflutet.
.
Meldungen, sind wichtig, ohne Zweifel.
Aber es braucht auch den Boden, auf dem sie ihre Wirkung entfalten
können.
Ein hinkener Vergleich:
Kinder lernen Fahrrad fahren, indem sie es tun!
Die ersten Vorlesungen zur Fahrphysik kommen viel später, wenn
überhaupt.
Arduino Fanboy D. schrieb:> Hier kann man mit Fug und Recht sagen, dass die Warnungen wirkungslos> waren. Evtl. sogar kontraproduktiv.
Die Warnungen waren "kontraproduktiv"?!? Du willst mir also erzählen,
dass ohne die Ausgabe einer Warnung der Fehler nicht aufgetreten wäre?!?
Ha, der war gut!
Arduino Fanboy D. schrieb:> Aber es bracht auch den Boden, auf dem sie ihre Wirkung entfalten> können.
Die User brauchen nur eine klare Ansage:
"Du verstehst eine Warnung nicht? Dann poste sie hier oder frage
jemanden, der sie versteht!"
Wenn jemand über eine rote Ampel geht und ein anderer zeigt warnend auf
den nahenden LKW, dann sollte der andere mit dieser Warnung umgehen
können. Oder meinst Du, der Warnende ist daran schuld, dass der
Verkehrteilnehmer wegen einer Überflutung seiner Wahrnehmungen zu Tode
kam?!?
Vermutlich war die Warnung eher kontraproduktiv... naja.
Wenn jemand eine Programmiersprache lernen will, dann hat er auch zu
lernen, wie man mit Compilermeldungen umgeht. Wenn er dazu weder bereit
noch in der Lage dazu ist, soll er sich ein anderes Hobby suchen.
Ein frischgebackener Hubschrauberpilot (Anfänger) reisst auch nicht alle
roten Lämpchen aus seinem Cockpit, nur um zu verhindern, dass er
abstürzen könnte.
Frank M. schrieb:> Wenn jemand eine Programmiersprache lernen will, dann hat er auch zu> lernen, wie man mit Compilermeldungen umgeht. Wenn er dazu weder bereit> noch in der Lage dazu ist, soll er sich ein anderes Hobby suchen.
Es ist ein Prozess, das lernen!
Eine aneinander Kettung von vielen kleinen Schritten, welche sich über
Jahre ziehen.
Wer das ignoriert, oder verneinen will, ist kein guter Pädagoge, und
sollte sich eine andere Aufgabe suchen als über Anfänger bestimmen zu
wollen.
Die µC Programmierung ist ein großes Gebiet. Die Warnungen, nur ein
Teilaspekt.
Frank M. schrieb:> Wenn jemand über eine rote Ampel geht und ein anderer zeigt warnend auf> den nahenden LKW, dann sollte der andere mit dieser Warnung umgehen> können. Oder meinst Du, der Warnende ist daran schuld, dass der> Verkehrteilnehmer wegen einer Überflutung seiner Wahrnemungen zu Tode> kam?!?
Eine Warnung ist eine Ablenkung.
Ich will gar nicht wissen, wie viele Menschen schon von einer Warnung
abgelenkt wurden und sich so verletzt haben oder gar zu Tode gekommen
sind.
Frank M. schrieb:> Die Warnungen waren "kontraproduktiv"?!?
Zumindest haben sie in den "dutzenden oder hunderten Beiträgen" in
deinem Beispiel keine Wirkung gehabt.
Und ja, evtl. kontraproduktiv, weil der User vorher durch Meldungen das
falsche gelernt hat, das ignorieren.
Frank M. schrieb:> Die User brauchen nur eine klare Ansage:>> "Du verstehst eine Warnung nicht? Dann poste sie hier oder frage> jemanden, der sie versteht!"
Im nachhinein betrachtet, nach den hundert Beiträgen, voll logisch.
Aber der Fehler, das ignorieren der Warnung hat davor stattgefunden.
Und das davor ist für dich unerreichbar.
Die Ansage ist also Pardox.
Arduino Fanboy D. schrieb:> Aber der Fehler, das ignorieren der Warnung hat davor stattgefunden.
Woher weißt du das? Der TO schrieb:
helpme91 schrieb:> Es gibt keine Fehlermeldung. Er compeliert alles einwandfrei.
Ob es Warnungen gab hat er nie beantwortet.
Johannes S. schrieb:> Woher weißt du das? Der TO schrieb:
Aus dem fiktiven Beispiel
Frank M. schrieb:> "Da muss der Compiler doch eine Warnung ausgegeben haben!">> Und wie sich dann herausstellt, ist dem wirklich so. Die Warnung gab es> schon, als der TO den Thread eröffnete. Hätte er sie beachtet, hätte er> zwei Möglichkeiten gehabt:
Darum finde ich das Beispiel ja auch so gelungen, da es die Grundlagen
meiner Annahmen bestätigt. In dem Beispiel hat es nicht geholfen, dass
die Meldungen für den TO sichtbar waren.
Und ja, genau davon kann man in den Foren hunderte Beispiele finden.
Die Warnungen werden erst wichtig, wenn man diese Wichtigkeit am eigenen
Leib spürt!
So auch die Operanden Rangfolge. Natürlich ist die auch wichtig. So
richtig wichtig wird sie, wenn man damit auf die Nase fällt. Das ist
dann der Zeitpunkt, wo man das Kapitel im Buch lesen sollte.
Dann ist der Boden reif, genau für diese Saat.
Was hier geholfen hätte, wäre -Werror: Code der nicht compiliert,
produziert auch keine Laufzeitfehler. Und der unbedarfte User hätte sich
viel früher kompetenten Rat geholt.
Frank M. schrieb:> ACK, -Werror benutze ich grundsätzlich.
Warum?
Keine Disziplin Warnings zu fixen, ohne dass du dich selbst dazu
zwingst?
Ich sehe in Werror keinerlei Vorteile.
Nur den Nachteil, dass das Projekt beim Compilerupdate (neue Warnings)
nicht mehr compiliert und man sofort fixen darf, statt es zu einem
bequemen Zeitpunkt machen so können.
Frank M. schrieb:> Wilhelm M. schrieb:>> Was hier geholfen hätte, wäre -Werror>> ACK, -Werror benutze ich grundsätzlich.
Das kann ich mir für einen Release-Build ja noch vorstellen (kann aber
schwierig sein, wenn man externen Code verwendet), aber grundsätzlich
immer? Wenn ich beim Debuggen bin und dafür mal ein Stück vom Code
auskommentiere, will ich nicht, dass es nicht mehr compiliert, nur weil
diese temporäre Änderung dazu führt, dass irgendwo z.B. eine Variable
nicht mehr genutzt wird und der Compiler mich darauf per Warnung
hinweist. Dann muss ich die auch auskommentieren u.s.w. und hab einen
Haufen unnötigen Zusatzaufwand, um ein Stück Code, das in der Form
weniger als 5 Minuten existieren wird, um kurz was auszuprobieren,
warnungsfrei zu machen.
Ich schaffe es dann auch ohne -Werror, dass der Code nachher keine
Warnungen mehr erzeugt.
Arduino Fanboy D. schrieb:> Die Warnungen werden erst wichtig, wenn man diese Wichtigkeit am eigenen> Leib spürt!
Dazu muss man sie aber sehen! Wenn der Code ohne erkennbaren Grund
nicht funktioniert, erkennt man daran auch nicht die Wichtigkeit von
Warnungen.
Hältst du es wirklich für a besten, die Warnungen so lange zu
verstecken, bis der Anfänger selbst auf die Idee kommt, dass es so etwas
wie Warnungen geben könnte und sich auf die Suche danach begibt, ob man
so etwas irgendwo einschalten kann? Ich würde sagen, die meisten fragen
irgendwo in einem Forum nach, warum der Code nicht tut, und es kommt die
Rückfrage: Gab's denn keine Compiler-Ausgaben? - Nö - Dann schalt erst
mal die Warnungen ein. Wer hat da nun irgendwas gewonnen gegenüber
bereits eingeschalteten Warnungen? So denkt sich der Anwender ja: "Na
wenn die nicht von Anfang an eingeschaltet sind, können sie ja so
wichtig nicht sein."
Arduino Fanboy D. schrieb:> Frank M. schrieb:>> Wenn jemand eine Programmiersprache lernen will, dann hat er auch zu>> lernen, wie man mit Compilermeldungen umgeht. Wenn er dazu weder bereit>> noch in der Lage dazu ist, soll er sich ein anderes Hobby suchen.>> Es ist ein Prozess, das lernen!> Eine aneinander Kettung von vielen kleinen Schritten, welche sich über> Jahre ziehen.
Und dabei sind Warnungen etwas, das schon sehr früh wichtig ist.
Arduino Fanboy D. schrieb:> Frank M. schrieb:>> Die User brauchen nur eine klare Ansage:>>>> "Du verstehst eine Warnung nicht? Dann poste sie hier oder frage>> jemanden, der sie versteht!"> Im nachhinein betrachtet, nach den hundert Beiträgen, voll logisch.> Aber der Fehler, das ignorieren der Warnung hat davor stattgefunden.
Ich sehe keinen Vorteil darin, wenn jemand die Warnung ignoriert, weil
er sie gar nicht angezeigt bekommt gegenüber dem Ignorieren, weil er sie
nicht versteht.
Rolf M. schrieb:> Und dabei sind Warnungen etwas, das schon sehr früh wichtig ist.
Das ist genau der Grund, warum der Anfänger -Werror einsetzen soll:
damit kommt er an den Warnungen nicht vorbei. Für jeden Anfänger gilt,
dass sein Code OHNE Warnungen compiliert werden MUSS bzw. er muss jede
Warnung erklären können. Als Anfänger kann er sie aber nicht beurteilen.
Damit er sich um diesen Schritt nicht drücken kann, gilt -Werror.
MaWin schrieb:> Frank M. schrieb:>>> ACK, -Werror benutze ich grundsätzlich.>> Warum?> Keine Disziplin Warnings zu fixen, ohne dass du dich selbst dazu> zwingst?> Ich sehe in Werror keinerlei Vorteile.
Das Problem: Beim Übersetzen mehrerer C-Module kommt es manchmal vor,
dass in foo.c eine Warnung auftritt, in bar.c ein Syntaxfehler, der ein
paar hundert Folgefehler zur Folge hat.
Resultat: Ich übersehe in den hunderten von Ausgabezeilen die eine
Warnung in foo.c und korrigiere deshalb lediglich den/die Fehler in
bar.c. Anschließend wird bar.c erfolgreich übersetzt, foo.c aber
nicht(!) mehr, denn es wurde bereits vorher trotz der Warnung
erfolgreich übersetzt.
Die Warnung bekomme ich daher nie wieder zu sehen, außer ich zwinge die
IDE bzw. make dazu, alles neu zu übersetzen. Alles einfach "nur mal so"
neu zu übersetzen, ist für mich verlorene Lebenszeit. Besser ich kümmere
mich sofort um jede Warnung und sorge sofort dafür, dass sie nicht mehr
auftritt. Insgesamt ist dieser Vorgang effektiver, als immer mal wieder
zwischendurch "mal auf Gefühl" alles neu zu übersetzen - nur um
entgangene Warnungen zu sehen.
Die Option "-Werror" sorgt dafür, dass die Übersetzung genau an der
Stelle angehalten wird, wo etwas anzupassen ist. So kann mir keine
Warnung mehr entgehen. Es macht auch unter Umständen wesentlich mehr
Mühe, den Grund einer Warnung erst nach einer Woche auszumerzen statt
unmittelbar nach der Änderung des Codes. Da hat man die Gedankengänge
dazu noch im Kopf.
MaWin schrieb:> Ich sehe in Werror keinerlei Vorteile.
Ich schon.
Ich benutze eine Batch, die auf einen Klick alles macht. Der Error
erzwingt, daß ein Errorlevel gesetzt wird und nicht erst das Target
geflasht wird.
Peter D. schrieb:> MaWin schrieb:>> Ich sehe in Werror keinerlei Vorteile.>> Ich schon.
Es geht doch hier um Anfänger. Da ist -Werror absolut sinnvoll.
Nicht-compilierender Code kann keinen Schaden anrichten.
Für Erfahrene kann in einem Dev-Build die Option heraus, und man hat
selbst die Pflicht, die temporär auftretenden Warnungen bis zum Release
wieder auf null zu bringen, weil das CI-System das sonst eh nicht
annehmen würde. Und der Profi hat natürlich immer die Möglichkeit, sich
(ggf. durch pragma) über bestimmte Warnungen hinweg zu setzen.
Mit werror werden entweder die Warnungen ausgeschaltet oder die Anfänger
abgeschreckt. Punkt.
Seit den ersten Jahren von C waren kompilieren und Analyse 2 getrennte
Prozesse.
Aber heute soll der Bastler neben der Sprache auch noch durch Warnungen
definierte best-practices vor dem ersten Hallo Welt verinnerlichen.
Falsche Einrückung? Einer variable zweimal einen Wert zugewiesen ohne
zwischendrin zu lesen? Ein a=b+c mit ints ohne vorher auf Überlauf zu
testen? Lern erst Mal C, Du Lusche!
Als ich vor 20 Jahren xilinx-VHDL machte, da tauschten die Warnmeldungen
nur so durch. Und selbst unser teurer eingekaufter Experte war kaum in
der Lage, denen konkreten Nutzen zu entlocken.
Dann lieber wie früher: wenige Warnungen beim kompilieren, ausführliche
Analyse regelmäßig.
A. S. schrieb:> Dann lieber wie früher: wenige Warnungen beim kompilieren, ausführliche> Analyse regelmäßig.
Und unnützes Debuggen dann auch regelmäßig, weil man Fehlern nachspürt,
auf die der Compiler einen auch gleich hingewiesen hätte. Besonders
schön, wenn der Fehler dann nicht offensichtlich und auf Anhieb
auftritt, weil der fragwürdige Code nur unter bestimmten Bedingungen
durchlaufen wird.
Nop schrieb:> Und unnützes Debuggen dann auch regelmäßig, weil man Fehlern nachspürt,> auf die der Compiler einen auch gleich hingewiesen hätte.
Ja, bei kleinen Projekten hast Du Recht.
Bei großen Projekten ist ein rebuild all mit ausführlicher Analyse im
Bereich von Minuten. Gegenüber Sekunden bei kleinen Änderungen.
Aber welcher Profi macht nur kleine Projekte?
Und bei Anfängern ist es erstmal wichtig, die formalen Syntaxfehler wie
vergessene Klammer zu sehen. Da reicht eine Analyse einmal vor dem
einladen. Oder bei Fortgeschritten einmal in der Stunde oder wenn es
nicht wie erwartet läuft.
A. S. schrieb:> Mit werror werden entweder die Warnungen ausgeschaltet oder die Anfänger> abgeschreckt. Punkt.
Der Anfänger weiß doch gar nicht, wie er das in der IDE wieder
ausschalten soll. Doppelpunkt.
A. S. schrieb:> Bei großen Projekten ist ein rebuild all mit ausführlicher Analyse im> Bereich von Minuten. Gegenüber Sekunden bei kleinen Änderungen.
Wenn man von vornherein mit Warnungen und Werror compiliert, dann kommt
man gar nicht erst in die Situation, daß man "rebuild all" nur der
Warnungen wegen machen muß. Es ist auch keine "ausführliche Analyse"
gefragt, sondern der Compiler gibt die Warnungen nur aus. Das dauert
nicht länger als ohne.
Was Du als "Analyse" betrachtest und nur ausnahmsweise mal tust, ist für
Profis ein völlig normaler Arbeitsschritt - weil deren Zeit zu teuer
ist, um die mit Debugging zu verschwenden. Das läßt man soweit möglich
den Computer machen, weil der keine Lohnkosten hat.
A. S. schrieb:> Aber heute soll der Bastler neben der Sprache auch noch durch Warnungen> definierte best-practices vor dem ersten Hallo Welt verinnerlichen.
Nö, der Bastler soll liebe bei BasCom bleiben, oder µPython, ...
A. S. schrieb:> Und bei Anfängern ist es erstmal wichtig, die formalen Syntaxfehler wie> vergessene Klammer zu sehen
Das macht ja schon die IDE und so etwas kommt selbst bei Anfängern kaum
noch vor.
Ein wünschenswerter Zustand wäre doch, das Code, der compiliert, auch
nicht mehr debugged werden muss. Also muss es Ziel sein, soviel wie
möglich an Analyse egal welcher Art in die Compilezeit zu verlagern. Ich
will doch zur Laufzeit gar nicht debuggen! Der Compiler und
you-name-it-tools sollen mir vorher sagen, dass irgendetwas nicht passt.
Ich wäre doch töricht, Code, der von den statischen Analysetools
angemeckert wird, überhaupt laufen zu lassen, und damit meine Zeit zu
verschwenden.
Wilhelm M. schrieb:> Der Compiler und you-name-it-tools sollen mir vorher sagen, dass> irgendetwas nicht passt.
Dazu müssten diese Tools aber auch die Anforderungen kennen. Wie soll
das gehen?
Wilhelm M. schrieb:> Das ist genau der Grund, warum der Anfänger -Werror einsetzen soll:> damit kommt er an den Warnungen nicht vorbei. Für jeden Anfänger gilt,> dass sein Code OHNE Warnungen compiliert werden MUSS bzw. er muss jede> Warnung erklären können. Als Anfänger kann er sie aber nicht beurteilen.> Damit er sich um diesen Schritt nicht drücken kann, gilt -Werror.
Du sprichst hier von Leuten auf Kompetenzlevel 2!
Die bewusst Inkompetenten.
Die wissen, dass sie nix wissen und alles lernen wollen.
Selbst dann halte ich -Werror noch für etwas überzogen.
Arduino setzt noch eine Stufe tiefer an.
Der niederschwellige Einstieg in die µC Welt.
Kompetenzlevel 1
----
Jede neue Compilerversion kann neue Warnungen mitbringen....
Auch ganz nervige Dinger!
z.B. so geschehen bei switch/case, mit seinem Durchfall.
Ein hübsches Mittel gegen die Warnungen kam dann 1 bis 2 Gcc Versionen
später.
Der Compiler liest den Kommentar /* fall through */ und unterdrückt die
Warnung. Und jetzt dann
Ich bin begeistert!
Man soll das wohl in Zukunft so schreiben:
> PORTB = PORTB | (1<<PB5);
Was alleine daran für ein Arsch voll Meldungen hängt.
Hunderttausende Codezeilen sind davon betroffen.
Arduino Fanboy D. schrieb:> Arduino setzt noch eine Stufe tiefer an.> Der niederschwellige Einstieg in die µC Welt.> Kompetenzlevel 1
Dazu gehört allerdings, dass man die Sprache schon beherrschen sollte.
Und eine neue Sprache auf dem µC zu lernen, ist ja eine ganz schlechte
Idee. Also zurück zum Start sprich PC und die Sprache (C / C++) lernen
mit -Werror.
Wenn einige Weicheier das nicht mögen, dann werden wir sie nicht
vermissen.
Arduino Fanboy D. schrieb:> Ich bin begeistert!> Man soll das wohl in Zukunft so schreiben:>> PORTB = PORTB | (1<<PB5);
Und dieses Beispiel ist wirklich gut gewählt ;-) Der Anfänger sollte
sich nun hinsetzen und lesen, oder eben einen Profi fragen, warum diese
Warnung jetzt kommt.
Arduino Fanboy D. schrieb:> Was alleine daran für ein Arsch voll Meldungen hängt.> Hunderttausende Codezeilen sind davon betroffen.
Es zwingt dich ja niemand, älteren Code mit dem C++20-Sprachstandard zu
kompilieren. Und wenn du das trotzdem tust, nennt dir der Compiler ja
freundlicherweise die Warnung, die das auslöst, und damit ist es eine
Sache von wenigen Sekunden, die zu deaktivieren.
Oliver
Arduino Fanboy D. schrieb:> Was alleine daran für ein Arsch voll Meldungen hängt.> Hunderttausende Codezeilen sind davon betroffen.
Das kommt halt davon, wenn man sich auf einem µC tatsächlich C++ hat
aufschwatzen lassen. Mit C wäre das nicht passiert.
Wilhelm M. schrieb:> Arduino Fanboy D. schrieb:>> Arduino setzt noch eine Stufe tiefer an.>> Der niederschwellige Einstieg in die µC Welt.>> Kompetenzlevel 1>> Dazu gehört allerdings, dass man die Sprache schon beherrschen sollte.
Nein!
Auf Kompetenzlevel 1 beherrscht man die Sprache noch nicht.
Es ist der erste Kontakt.
Auf Kompetenzlevel 2 erkennt man erst, dass man die Sprache lernen muss,
damit es weiter geht.
Auf Kompetenzlevel 3 kann man sie, oder weiß zumindest wo man Details
nachlesen kann.
Du schwebst auf Ebene 4
Der Lernprozess fängt mit Level 1 an.
Auch wenn dir das nicht schmeckt.
---
Oliver S. schrieb:> Es zwingt dich ja niemand, älteren Code mit dem C++20-Sprachstandard zu> kompilieren. Und wenn du das trotzdem tust, nennt dir der Compiler ja> freundlicherweise die Warnung, die das auslöst, und damit ist es eine> Sache von wenigen Sekunden, die zu deaktivieren.
Halt!
Hier in diesem Thread ist die Rede davon, dass man die Meldungen
aktivieren muss, das abschalten wird ja gerade verurteilt.
Zudem hilft die "Ignorier/Abschalt Krücke" nur über 1 Jahr, oder 2.
Arduino Fanboy D. schrieb:> Wilhelm M. schrieb:>> Dazu gehört allerdings, dass man die Sprache schon beherrschen sollte.> Nein!> Auf Kompetenzlevel 1 beherrscht man die Sprache noch nicht.> Der erste Kontakt.
Dein Kompetenzlevel 1 Noob sollte eben nicht auf einem µC anfangen, eine
neue Sprache zu lernen. Du wirfst zwei Sachen in einen Topf: den Umgang
mit µCs zu erlernen wie auch das Erlernen einer neuen
Programmiersprache. Der Umgang mit etwas Elektrotechnik (was ist
Spannung, was ist Strom, was ist ein Widerstand, was ist das Ohm'sche
Gesetz, ...) ist die eine Sache, die Sprache eine andere.
Du scheinst ja gewissermaßen auch als Tutor unterwegs zu sein. Dann
sollte es zu Deiner didaktischen Kompetenz auch gehören zu erkennen,
dass die Vermischung beider Lernziele schlicht dumm ist.
Wilhelm M. schrieb:> Dein Kompetenzlevel 1 Noob sollte eben nicht auf einem µC anfangen, eine> neue Sprache zu lernen
Und ich dachte, ich würde eure Überheblichkeit überzeichnen.
A. S. schrieb:> Falsche Einrückung? Einer variable zweimal einen Wert zugewiesen ohne> zwischendrin zu lesen? Ein a=b+c mit ints ohne vorher auf Überlauf zu> testen? Lern erst Mal C, Du Lusche!
Gelang mir nicht.
Wie nennt man noch Mal Leute, die anderen Lasten auferlegen, die sie
selbst nicht tragen?
Wilhelm M. schrieb:> Und der Profi hat natürlich immer die Möglichkeit, sich (ggf. durch> pragma) über bestimmte Warnungen hinweg zu setzen.
Wilhelm M. schrieb:> Du wirfst zwei Sachen in einen Topf: den Umgang> mit µCs zu erlernen wie auch das Erlernen einer neuen> Programmiersprache.> Dann> sollte es zu Deiner didaktischen Kompetenz auch gehören zu erkennen,> dass die Vermischung beider Lernziele schlicht dumm ist.
Was ich erkenne, ist eine Sache.
Was du erkennst, offensichtlich eine andere.
Interessanter Weise, ist es gerade Arduino, was dann irgendwie beides
unter einen Hut bekommt.
Auch wenn es nicht deinen Ansprüchen gerecht wird.
! Zielgruppe !
Arduino Fanboy D. schrieb:> Interessanter Weise, ist es gerade Arduino, was dann irgendwie beides> unter einen Hut bekommt.
Kannst Du bitte die Formulierung "irgendwie" näher ausführen? Wenn ich
diesen Satz lese, übersetze ich dieses "irgendwie" im Kopf lediglich
durch "mit Ach und Krach". Nix ganzes, noch nichtmal halbes.
Die meisten Arduino-Anwender, die ich hier im Forum mit ihren
Programmierproblemen kennenlerne, sind für mich keine richtigen
Programmierer, sondern eher welche, die sich unter anderem mit
Halbwissen irgendwelche Libs zusammenklicken, ohne überhaupt zu
verstehen, was sie da machen.
Wenn's dann nicht funktioniert und sie sich hier im Forum melden, muss
ich mich manchmal über die vorherrschende Ahnungslosigkeit einfach nur
noch wundern. Das fängt schon mit den falschen Basis-Vorstellungen, was
bei Arduino ein "Analog-Ausgang" überhaupt ist, an. "PWM? Was ist denn
das?!?".
Von den Unterschieden Analog- und Digital-Inputs will ich erst gar nicht
reden. Entsprechend ist auch die Codequalität, die da produziert wird.
Nur wenige von ihnen schaffen den Absprung von Arduino, um sich dann
wirklich mit einer µC-Familie (sei es AVR, sei es STM32) und deren
hardwarenahe Programmierung intensiv zu beschäftigen und die Vorgänge
auch verstehen zu wollen.
Tut mir leid, dass ich hier mal wieder ein Klischee bestätigen muss.
Aber meines Erachtens ist es so, dass die Arduino-Plattform nicht gerade
die Fähigkeit fördert, sich wirklich mit der Materie beschäftigen zu
wollen. Alles ganz easy! Ganz im Gegenteil: durch die ziemlich tief
liegende Deppenschranke wird auch die Produktion von viel Mist
gefördert.
Frank M. schrieb:> Die meisten Arduino-Anwender, die ich hier im Forum mit ihren> Programmierproblemen kennenlerne, sind für mich keine richtigen> Programmierer, sondern eher welche, die sich unter anderem mit> Halbwissen irgendwelche Libs zusammenklicken, ohne überhaupt zu> verstehen, was sie da machen.
Das ist aber auch die Zielgruppe von Arduino. Leute, die eigentlich was
ganz anderes machen wollen, und wo der Arduino nur ein Hilfsmittel ist.
Beispielsweise Modelleisenbahner. Die wollen eigentlich Modellbahn
machen, nicht aber sich mit µC-Programmierung befassen. Dafür ist das
schon gut, einfach einen Sketch runterzuladen und einzuspielen sowie die
Shields zusammenzustecken.
Nur, diese Anfänger dann ohne aktivierte Warnungen programmieren zu
lassen, das wird absehbar in frustrierende Fehler führen, die sie nicht
verstehen und auch nicht finden, weil sie ohne Compiler-Hilfestellung
nichtmal wissen, wonach sie suchen müssen.
Es ist umgedreht übrigens auch ein Grund, wieso es bei einer Bewerbung
auf eine Stelle in der embedded-Branche ein ziemlicher Minuspunkt ist,
wenn man "Arduino" als Erfahrung angibt, weil es nichts Gutes über einen
Bewerber aussagt, wenn er das als relevante "Erfahrung" betrachtet. Da
kann man auch gleich in die Bewerbung schreiben "ich bin meistens
pünktlich".
Da die Hardware aber günstig verfügbar ist, ist sie auch beliebt z.B.
für Uni-Arbeiten, Prototyping oder Teststandsaufbauten - aber auch nur
die Hardware. Wenn man sich damit bewirbt, bezeichnet man das besser
nicht als Arduino, sondern als Board mit dem jeweiligen µC.
Frank M. schrieb:> Kannst Du bitte die Formulierung "irgendwie" näher ausführen? Wenn ich> diesen Satz lese, übersetze ich dieses "irgendwie" im Kopf lediglich> durch "mit Ach und Krach". Nix ganzes, noch nichtmal halbes.
Ich versuchs vielleicht mal...
Aber zuerst ein anderer Aspekt.
In jedem Absatz deines Beitrags arbeitest du intensiv mit Projektionen.
Du projizierst deine Sicht der Dinge auf die Arduino Anfänger.
Natürlich siehst du dann auch nur das, was du auf diese Leute
projizierst.
Wenn ich den typischen Arduino Anfänger beschreiben sollte, dann sehe
ich einen männlichen oder weiblichen Menschen, im Alter zwischen 10 und
75. Irgendeiner beliebigen Nationalität. Und damit dieser Mensch auf dem
Kompetenzlevel 1 landet, ist er völlig fachfremd.
Hat keine Ahnung, von gar nichts.
Und genau dort wird er von Arduino begrüßt!
- Einfache Installation.
- USB Bords anstecken kann jeder.
- Beispiel kompilieren, und läuft.
Niederschwellig, so niederschwellig, wie es kein anderes "µC
Programmiersystem" bisher geschafft hat.
Natürlich stellt sich irgendwann die Frage nach den LED Vorwiderständen.
Da muss jeder durch.
Auch du bist da durch (auch wenn du es mittlerweile vergessen hast).
U.a. auf Grund der Niederschwelligkeit starten recht viele mit dem
System.
Zuhause, weil das Einsteigerset unter dem Weihnachtsbaum liegt, in der
Schule, weil es auf dem Programm steht, im Studium/Ausbildung....
Wenn ich mal schätzen soll, dann würde ich mal sagen, dass ca 10% der
Arduino Anfänger das "Programmierer Gen" besitzen, also die Chance
irgendwann die Kompetenzstufe 4 zu erreichen.
Und das ist auch der Grund, warum ich dich in der Rolle des Moderator in
diesem Forum bitten möchte:
Auch wenn du weißt, dass nur 10% durchkommen, verprelle sie nicht. Denn
ich glaube nicht dass man/du sie leicht erkennen kann.
Ja, sie haben keine Ahnung. Aber sie stehen am Anfang. Da hat man keine
Ahnung, sonst wäre es ja nicht der Anfang.
Wem das Gen fehlt, wird sich irgendwann ein anderes Hobby suchen.
Aber die wenigen, welche durchkommen können zu verprellen, ist nicht
sonderlich nett.
Frank M. schrieb:> Tut mir leid, dass ich hier mal wieder ein Klischee bestätigen muss.> Aber meines Erachtens ist es so, dass die Arduino-Plattform nicht gerade> die Fähigkeit fördert, sich wirklich mit der Materie beschäftigen zu> wollen. Ganz im Gegenteil: durch die ziemlich tief liegende> Deppenschranke wird auch die Produktion von viel Mist gefördert.
Das ist schon fast das klassische Arduino Bashing.
Natürlich bauen Anfänger Mist.
Und viele Anfänger machen viel Mist.
> Eine Kuh macht Muh.> Viele Kühe machen Mühe.
Dazu sage ich:
Der Profi, welcher von einem Anfänger Genialität erwartet, der ist ein
Depp.
----
Ich weiß nicht auf welchem Kompetenzlevel du wohnst, vielleicht 3 oder
4.
Einen Level kann man sich mit mühe runter denken.
Darum verstehe ich auch, dass du die Leute mindestens auf Kompetenzlevel
2 erwartest.
Das ist aber an der Realität vorbei.
Viele tauchen mit NULL Ahnung in das Gebiet ein, auf Level 1
---
Jetzt habe ich das Kompetenzstufen Modell schon dutzende male verwendet.
Hier mal ein Link dazu:
https://de.wikipedia.org/wiki/Kompetenzstufenentwicklung
Arduino Fanboy D. schrieb:> Wenn ich den typischen Arduino Anfänger beschreiben sollte, dann sehe> ich einen männlichen oder weiblichen Menschen, im Alter zwischen 10 und> 75. Irgendeiner beliebigen Nationalität.
Bist Du noch binär? Du hast divers vergessen!
Arduino Fanboy D. schrieb:> Hat keine Ahnung, von gar nichts.> Und genau dort wird er von Arduino begrüßt!
Und genau hier sehe ich das Problem. Wie sagte doch schon Einstein: "Man
soll alles so einfach wie möglich machen, aber nicht einfacher".
Den Leuten wäre mehr gedient, wenn man Ihnen erst einen
Kosmos-Elektronikgrundbaukasten gibt, und erst danach die
Multiparadigmensprache C++. Oder umgekehrt. Nachdem an beidem ein Haken
dran ist, kann man mit Arduino beides zu einem Brei verrühren.
Das Arduino-Ecosystem gaukelt den Leuten eine Einfachheit zum Nulltarif
vor, die es so nicht gibt. Viele Wissen ja noch nicht einmal, dass sie
dort in C++ programmieren. Für die ist es ein Sketch - für mich ist das
ein Sketch in einem anderen Sinn.
Natürlich war jeder bzw. ist jeder ein Einsteiger in irgendeinem Gebiet.
Allerdings macht man es den Leuten schwerer als es ist: sie lernen weder
das Wesen des Programmierens schnell und sinnvoll (und schon gar nicht
C++), und sie lernen auch wenig sinnvolles über Elektrotechnik. Maxwell
versteht man auch ohne die Grundrechenarten und den Stokeschen
Integralsatz nicht.
Es bleibt jedem unbenommen, sich mit Arduino zu beschäftigen. Doch halte
ich es eben für keine gute Herangehensweise (s.o.). Ja, und auch um C
oder im Arduinofall C++ zu lernen, sollte man es zuerst auf dem PC (mit
-Werror) versuchen.
Wilhelm M. schrieb:> Den Leuten wäre mehr gedient
Lass die Leute doch machen, was sie selbst für richtig halten.
Es ist ein Hobby. Das muss weder effizient noch effektiv sein.
MaWin schrieb:> Wilhelm M. schrieb:>> Den Leuten wäre mehr gedient>> Lass die Leute doch machen, was sie selbst für richtig halten.> Es ist ein Hobby. Das muss weder effizient noch effektiv sein.Wilhelm M. schrieb:> Es bleibt jedem unbenommen, sich mit Arduino zu beschäftigen.
Genau das steht ja in meinem Post.
Wilhelm M. schrieb:> Genau das steht ja in meinem Post.
Nein, das steht nicht da. Du beklagst die Effizienz und teilweise die
Effektivität des Vorgehens. Und das ist halt Quatsch bei einem Hobby.
MaWin schrieb:> Wilhelm M. schrieb:>> Genau das steht ja in meinem Post.>> Nein, das steht nicht da. Du beklagst die Effizienz und teilweise die> Effektivität des Vorgehens. Und das ist halt Quatsch bei einem Hobby.
Die Leute können machen, was und wie sie wollen. Ich habe allerdings
eine Meinung zu einem bestimmten Vorgehen. Und das tue ich kund.
Wilhelm M. schrieb:> Ich habe allerdings> eine Meinung zu einem bestimmten Vorgehen. Und das tue ich kund.
Du darfst deine Meinung haben.
Ich entnehme deinem Posting, dass du Arduino scheiße findest.
Gut, deine Meinung will und kann ich dir nicht nehmen.
Aber deine Gesinnung kann ich anzweifeln!
z.B:
Wilhelm M. schrieb:> Wenn einige Weicheier das nicht mögen, dann werden wir sie nicht> vermissen.
Hier vertrittst du die Linie, diejenigen auszugrenzen, welche sich nicht
deiner Projektion fügen können/wollen.
Deine Bereitschaft die Leute bei NULL abzuholen, ist offensichtlich
NULL.
Obwohl du genau weißt, dass das lernen von C++ Jahre in Anspruch nimmt,
erwartest du dass Arduino Anfänger das schon hinter sich haben.
In dem Bild ist die Kausalkette gestört.
Deine Erwartung ist Paradox.
Du kommst mir vor, wie ein Vater, der sein Kind mit Verachtung
überschüttet, und beschimpft, weil es nicht sofort laufen kann, und sich
nicht gemäß seinen Erwartungen verhält.
Tipp:
Mit einem solchen Verhalten fördert man nicht die Entwicklung, sondern
man behindert sie.
Eine ähnliche Einstellung findet man auch bei Frank M. (ukw)
(Moderator).
Er urteilt auch über die Arduino Leute, auf Grundlage seiner
Projektionen, seiner eigenen Erwartungshaltung. Seine Urteile haben mehr
mit ihm selber zu tun, als mit den Leuten, über die er urteilt, denn die
wechseln sich ja stetig ab.
Natürlich ist es viel einfacher zu pauschalisieren und ihnen generell
den Lernwillen abzusprechen, als die Personen als Individuum zu
betrachten.
Beispiel, hier im Forum (habe vergessen wo) gabs mal einen Fall, wo
jemand etwas recht einfaches gefragt hat. Der/diejenige wurde
erniedrigend behandelt. Einige Arduinohasser haben sich gegenseitig
aufgeschaukelt und wie sich später (in einem anderen Forum) gezeigt hat,
ein 11 jähriges Kind mit Verachtung und Häme überschüttet.
Ein Rudel intelligenter erwachsener Männer, die stolz darauf waren,
einen 11 jährigen geschlagen zu haben.
Bravo!
Mein Rat:
Jeder soll sich mal bewusst machen, wie lange es dauert(es bei ihm
gedauert hat), ohne Vorwissen, einigermaßen C++ zu beherrschen, die
Besonderheiten der µC Programmierung und die elektronischen Grundlagen
(Schaltungsentwicklung) in den Griff zu bekommen.
Ich sage: Jahre ziehen darüber ins Land!
Und das ist genau die Zeit die ein Anfänger einfach benötigt.
Etwas anderes zu erwarten, zeugt von einer bornierten, abgehobenen,
arroganten Einstellung.
Kann ja durchaus sein, dass es "schnellere" Wege gibt. Aber Arduino ist
eben einer der Anlaufpunkte, wo die Nichtwisser einschlagen.
Wenn nicht sogar mittlerweile DER Anlaufpunkt, in Sachen µC.
Vergleich, auch wenn er etwas hinkt:
Ich behaupte, dass jeder Bauingenieur in seiner Kindheit mit Lego oder
Stabilo gebastelt hat, lange bevor er/sie/es in der Lage war
Autobahnbrücken oder Hochhäuser zu konstruieren.
Erst Fahrrad fahren lernen, dann das Semester Fahrphysik.
Erst laufen lernen, Jahrzehnte später auch mal einen Marathon
bestreiten.
Nicht jeder, der diese Wege beschreitet, hat den Anspruch oder gar das
Talent, zu einem "Weltmeister" zu werden.
Arduino Fanboy D. schrieb:> Du darfst deine Meinung haben.
Danke!
> Ich entnehme deinem Posting, dass du Arduino scheiße findest.> Gut, deine Meinung will und kann ich dir nicht nehmen.
Das ist Deine Projektion, Deine Interpretation.
Arduino Fanboy D. schrieb:> Obwohl du genau weißt, dass das lernen von C++ Jahre in Anspruch nimmt,> erwartest du dass Anfänger das schon hinter sich haben.
Auch falsch: ich erwarte gar nichts. Ich empfehle den Leuten nur eine
andere Lernstrategie. Ob sie das dann tun oder nicht, ist ihre Sache.
Wer allerdings Fragen stellt und es sich dabei herausstellt, dass er das
Pferd vom falschen Ende her aufzäumt, dem werde ich es sagen.
Arduino Fanboy D. schrieb:> Tipp:> Mit einem solchen Verhalten fördert man nicht die Entwicklung, sondern> man behindert sie.
Der Kompetenz- und Lernpsychologe hat gesprochen.
Arduino Fanboy D. schrieb:> Mein Rat:> Jeder soll sich mal bewusst machen, wie lange es dauert(es bei ihm> gedauert hat), ohne Vorwissen, einigermaßen C++ zu beherrschen, die> Besonderheiten der µC Programmierung und die elektronischen Grundlagen> (Schaltungsentwicklung) in den Griff zu bekommen.
Und genau aus dieser Erfahrung heraus habe ich eine andere Sichtweise
als Du auf die Lernstrategie.
Arduino Fanboy D. schrieb:> Ich sage: Jahre ziehen darüber ins Land!> Und das ist genau die Zeit die ein Anfänger einfach benötigt.> Etwas anderes zu erwarten, zeugt von einer bornierten, abgehobenen,> arroganten Einstellung.
Ich habe nirgendwo davon gesprochen, dass das schnell gehen soll oder
muss. Das hat auch nichts mit Arroganz oder Borniertheit zu tun. Sondern
es ist einfach eine andere Meinung zum Thema Lernstrategie. Du scheinst
ein Problem damit zu haben, dass jemand zu diesem Thema eine andere
Meinung hat. Du bist derjenige, der hier mit gutgemeinten Tipps und
Ratschlägen um sich wirft. Die Selbstreflexion, die Du von anderen
erwartest, solltest Du jetzt auch einmal an den Tag legen.
Arduino Fanboy D. schrieb:> hier im Forum (habe vergessen wo) gabs mal einen Fall, wo> jemand etwas recht einfaches gefragt hat. Der/diejenige wurde> erniedrigend behandelt.
Ich dachte das gehört auf µC.net zum guten Ton. ;)
Spaß beiseite.
Ich stimme dir voll und ganz zu.
Wilhelm M. schrieb:> Die Selbstreflexion, die Du von anderen> erwartest, solltest Du jetzt auch einmal an den Tag legen.
Ich danke dir für diesen Rat!
Möchte dazu aber bemerken:
Wilhelm M. schrieb:> Ich empfehle den Leuten nur eine> andere Lernstrategie. Ob sie das dann tun oder nicht, ist ihre Sache.> Wer allerdings Fragen stellt und es sich dabei herausstellt, dass er das> Pferd vom falschen Ende her aufzäumt, dem werde ich es sagen.
Die eine Sache, ist eine Empfehlung!
Gut und schön, jeder nach seinem Gusto.
Das andere ist ein wertende Aussage.
Selbst wenn diese Wertung dir richtig erscheint, muss sie doch nicht auf
andere, schon gar nicht auf alle, übertragbar sein!
------
Wilhelm M. schrieb:> ich erwarte gar nichts.
Falsch!
Du widersprichst dir selber.
Wilhelm M. schrieb:> Arduino Fanboy D. schrieb:>> Arduino setzt noch eine Stufe tiefer an.>> Der niederschwellige Einstieg in die µC Welt.>> Kompetenzlevel 1>> Dazu gehört allerdings, dass man die Sprache schon beherrschen sollte.
Das ist ganz klar eine Erwartungshaltung.
Hier sogar eine, welche in endloser Zahl enttäuscht wird.
Es ist an dir, dass du deine Haltung mal überprüfst.
Oder magst du Enttäuschungen?
Es kann natürlich auch sein, dass dir diese Enttäuschungen ein gewisses
Überlegenheitsgefühl verschaffen....
Dann tut dir das vielleicht gut, aber nicht den Anfängern, die es mit
dir zu tun bekommen.
MaWin schrieb:> Ich dachte das gehört auf µC.net zum guten Ton. ;)
Irgendwann, ist schon lange her, da hat ein Moderator einen Arduino
Frischling zusammen gefaltet, wegen irgendeinem trivialem Tüddelproblem.
Wohl nicht in der Moderatoren Rolle, sondern in der User Rolle, auf
Ebene 4 schwebend.
Auf meine Anfrage, ob denn hier Anfänger (z.B Arduino User) erwünscht
sind oder generell abgewiesen werden sollen, kam dann ein "Erwünscht".
Das hat mich einerseits erfreut, zeigt aber dann doch deutlich die
Diskrepanz zwischen Anspruch und handeln.
Wenn ich einen Wunsch äußern dürfte, dann dass die Moderatoren mehr
lenkend in die Diskussionen eingreifen. Nicht unbedingt nur durch
löschen von Beiträgen, oder durch ausgrenzen von Personen, sondern
sanfter. Durchaus häufiger die Diskussion moderieren, freundlich.
Und ja, bevor das kommt, ich weiß schon worüber ich rede.
Arduino Fanboy D. schrieb:> Wenn ich einen Wunsch äußern dürfte, dann dass die Moderatoren mehr> lenkend in die Diskussionen eingreifen. Nicht unbedingt nur durch> löschen von Beiträgen, oder durch ausgrenzen von Personen, sondern> sanfter. Durchaus häufiger die Diskussion moderieren, freundlich.> Und ja, bevor das kommt, ich weiß schon worüber ich rede.
Na ja, davon verstehen die Moderatoren hier aber nicht viel. Vielleicht
am ehesten noch ein Chris D. Generell sind es auch zu wenige Moderatoren
und die wenigen sind zu selten anwesend, gemessen daran dass es hier um
ein Forum mit hoher Besucherzahl pro Tag geht.
Arduino Fanboy D. schrieb:> Die eine Sache, ist eine Empfehlung!> Gut und schön, jeder nach seinem Gusto.> Das andere ist ein wertende Aussage.
Im Kern ist das eine Wenn-Dann Aussage. Dieselbe Form von Aussage, die
auch Du verwendest - zu Recht. Allerdings stehen unsere Kernaussagen
diametral gegenüber.
Arduino Fanboy D. schrieb:> Hier sogar eine, welche in endloser Zahl enttäuscht wird.
Ich habe gar keine Erwartungshaltung an Dich oder Arduino-Nutzer. Wenn
mir jemand allerdings sein Vorgehen schildert, und ich das für falsch
halte - z.B. die Reihenfolge der Lernpakete - dann sage ich das auch
genau so. Dafür ist dieses Forum ja da.
Das werden die üblichen rants von Moby sein, und der Vogel hat hier aus
gutem Grund Hausverbot. Der Betreiber hat nunmal das Hausrecht, genauso
wie eine Säuberungspflicht. Also alles gut.