Hallo, ich möchte in einer if - Anweisung prüfen, ob ein int == 2 ist und ein bool == true. Ich habe folgendes gemacht:
1 | if (choise == 2 && executed == true) |
Funktioniert leider nicht, er kennt das && nicht. Wie geht das in C++? Schöne Grüße.
|
Forum: Compiler & IDEs UND operator in if - Anweisung funktioniert nichtHallo, ich möchte in einer if - Anweisung prüfen, ob ein int == 2 ist und ein bool == true. Ich habe folgendes gemacht:
Funktioniert leider nicht, er kennt das && nicht. Wie geht das in C++? Schöne Grüße. :
Verschoben durch Moderator
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 :
Bearbeitet durch User
Vielleicht meckert der Compiler auch die Variable "choise" an (falls du sie in der Deklaration richtig geschrieben hast). 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"?
Beitrag #6668347 wurde von einem Moderator gelöscht.
Vielleicht hilft eine Überdosis an Klammern? Also: if ( ( choise == 2 ) && ( executed == true ) )... Vielleicht aber auch nicht. 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. ??? helpme91 schrieb: > executed == true Traust du dem Compiler nicht zu, "true" selbstständig als "true" zu erkennen, oder warum diese Verknüpfung? 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 Mehrere Klammern funktionieren leider auch nicht. Es gibt keine Fehlermeldung. Er compeliert alles einwandfrei. 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 Du brauchst Hilfe die es hier nicht gibt. Ich habe den Fehler gefunden, danke für die Hilfe. Ich habe beim bool aus versehen beim initialisieren execute == true statt execute = true gemacht. also sehr wahrscheinlich Compiler Warnungen ignoriert. Die kann man sogar in der Arduino IDE einschalten. 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.
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 Arduino Fanboy D. schrieb: > Tipp, Initialisierungen nur so machen: >> bool execute {true}; Ist in dem Fall egal.
kompiliert eh nicht. Also war das auch nicht der Fehler. Eine fehlerhafte „Zuweisung“
kompiliert, und erzeugt die Warnung „statement has no effect“ Oliver :
Bearbeitet durch User
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ückte Johannes 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:
:
Bearbeitet durch User
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. Nach meiner Erfahrung ist die Anzahl der Warnungen mit "-Wall" meist umgekehrt proportional zur Code-Qualität... :
Bearbeitet durch User
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:
und in den Funktionen dann ein
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. :
Bearbeitet durch User
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... :
Bearbeitet durch User
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:
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. In dem Fall wäre aber ein
und ein Kommentar dazu an passender Stelle deutlicher. Oliver Oliver S. schrieb: > In dem Fall wäre aber ein >
> > und ein Kommentar dazu an passender Stelle deutlicher. das ist noch deutlicher:
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. :
Bearbeitet durch User
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 immer alle 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: > Und das werden > die meisten hier auch gleich wieder falsch verstehen. Ja! Zudem heißt es: Stop teaching C! 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. Wo steht es im C-Standard, dass man alle Parameter einer Funktion im Funktionskörper zu benutzen hat? 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 Was hat das dann mit C zu tun? (oder mit C++?) Nichts. 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! Vor allem bestätigen sich so alle Vorurteile gegenüber lernresistenten Arduino Usern. 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. Johannes S. schrieb: > Klar, alle die versuchen Compilermeldungen zu verstehen sind > überheblich. Sonst noch was? 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? ;-) Einen hab ich noch: Wer keine Compilerwarnungen mag, der soll in JavaScript programmieren. So, gute Nacht. 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. Sheeva P. schrieb: > für Profis wie uns Du bist doch kein Profi, oder? Wo arbeitest du, nicht das ich da versehentlich ein Teil kaufe. ;-) 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. Johannes S. schrieb: > das sind sicher die Regeln wie man besser programmiert O'Reilly hat da was: „Weniger schlecht programmieren“ 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. Martin H. schrieb: > O'Reilly hat da was: „Weniger schlecht programmieren“ Und wer das langweilig findet: "Elements of Programming", A.Stepanow 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"
Beitrag #6673761 wurde von einem Moderator gelöscht.
Beitrag #6673779 wurde von einem Moderator gelöscht.
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.
Beitrag #6676500 wurde von einem Moderator gelöscht.
So, und wieder von vorn.... schrieb im Beitrag #6676500:
> :)))
Aus welcher Ballerburg bist du den ausgebüxt?
Arduino Fanboy D. schrieb: > Aus welcher Ballerburg bist du den ausgebüxt? Moby sind offensichtlich wieder die Pillen ausgegangen. 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:
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. :
Bearbeitet durch Moderator
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.
Beitrag #6679653 wurde von einem Moderator gelöscht.
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. :
Bearbeitet durch User
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. :
Bearbeitet durch Moderator
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.
Beitrag #6680342 wurde von einem Moderator gelöscht.
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.
Beitrag #6680440 wurde von einem Moderator gelöscht.
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. Dirk B. schrieb: >> Es gibt keine ungefährlichen Warnungen. > > „Variable defined, but never used“ Umgekehrt wär's schlimmer ;-) 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
https://en.cppreference.com/w/cpp/language/attributes/fallthrough Super gemacht! Neuerdings ab version 10.2.0 C++20 mag der Gcc solche Ausdrücke nicht mehr: > PORTB |= (1<<PB5); Und beglückt einen mit einer Warnung.
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. :
Bearbeitet durch Moderator
Beitrag #6680949 wurde von einem Moderator gelöscht.
Beitrag #6680952 wurde von einem Moderator gelöscht.
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 Frank M. schrieb: > Tut mir leid,... Darum lese ich auch die Beiträge vom Fanbübchen erst gar nicht. ;-) 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.
Beitrag #6681307 wurde von einem Moderator gelöscht.
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.
Beitrag #6681574 wurde von einem Moderator gelöscht.
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.
Beitrag #6681617 wurde von einem Moderator gelöscht.
Beitrag #6681630 wurde von einem Moderator gelöscht.
Beitrag #6682019 wurde von einem Moderator gelöscht.
Beitrag #6682347 wurde von einem Moderator gelöscht.
Beitrag #6682352 wurde von einem Moderator gelöscht.
Beitrag #6682361 wurde von einem Moderator gelöscht.
Beitrag #6682643 wurde von einem Moderator gelöscht.
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.
Beitrag #6682654 wurde von einem Moderator gelöscht.
Arduino Fanboy D. schrieb: > Wenn ich einen Wunsch äußern dürfte würde ich das Fanbübchen sperren. ;-) Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
|
|