Hallo, ich möchte nur kurz auf folgendes Projekt hinweisen: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md Bjarne Stroustrup und Herb Sutter erklären, wie C++ gemeint ist und verwendet werden sollte. Sicher kann das mal zu einer ganz brauchbaren Richtlinie werden. Das Projekt ist noch in einem ziemlich frühen Stadium, also bitte etwas Nachsicht und Geduld walten lassen.
Schönes Projekt. Für den "normalen" C++ Programmierer oversized, aber das ist natürlich auch nicht der Anspruch hier. Gibt es so etwas für C? Bekannt wäre mir ähnliches von MISRA und PC_lint.
AVRJohnny schrieb: > Schönes Projekt. Für den "normalen" C++ Programmierer oversized, aber > das ist natürlich auch nicht der Anspruch hier. Naja, ich denke, dass auch "normale" C++ Programmierer i.d.R. daran interessiert sind, die Sprache bestimmungsgemäß zu verwenden ;). Für Einsteiger sind die Fragestellungen aber sicher etwas "abstrakt" ;) > Gibt es so etwas für C? Bekannt wäre mir ähnliches von MISRA und > PC_lint. Würde mich auch interessieren.
Das sind keine ratschläge die einem zeigen wie man sein problem löst sondern benimm-regel damit einem die Gouvernante nicht auf die Finger haut! Bsp: -- P.9: Don't waste time or space Reason This is C++. Note Time and space that you spend well to achieve a goal (e.g., speed of development, resource safety, or simplification of testing) is not wasted. -- Jajajaja, jetzt weiss ich genausoviel wie vorher und bekomme Gratis ein Schluck schlechtes Gewissen dazu wenn ich bspw. identifier zwei zeichen mehr spendiere. Ich will einen guten rat, einen Hinweis wo der Weg hinführt und keine massregelung immer freundlich die Nachbarin zu grüßen.
Nur die Harten kommen in den Garten schrieb: > Ich will einen guten rat, einen Hinweis wo der Weg hinführt und keine > massregelung immer freundlich die Nachbarin zu grüßen. Dann schau dir wohlwollend mal den Rest an. Du willst doch hier sicher keine Vorurteile über Programmierer befeuern? ;)
AVRJohnny schrieb: > Gibt es so etwas für C? Bekannt wäre mir ähnliches von MISRA und > PC_lint. MISRA ist ja ein Regelwerk und lint ein tool, oder? Bei MISRA ist ja viel sinnvolles dabei, aber auch einige Regeln, die den Code unnötigerweise verkomplizieren/unleserlicher machen und so imho mehr Fehler produzieren oder meiner Meinung sogar potentiell gefählich sind. zB die überall angemeckerten impliziten Typkonvertierungen, die eigentlich ok sind, aber durch einen Cast dann probleme verursachen, wenn der gecastete Datentyp in einen geändert wird, der nicht mehr ok ist, der Compiler aber durch den Expliziten Cast nicht mehr meckert.
Nur die Harten kommen in den Garten schrieb: > P.9: Don't waste time or space > Reason > > This is C++. > Note > > Time and space that you spend well to achieve a goal (e.g., speed of > development, resource safety, or simplification of testing) is not > wasted. > > Jajajaja, jetzt weiss ich genausoviel wie vorher und bekomme Gratis ein > Schluck schlechtes Gewissen dazu wenn ich bspw. identifier zwei zeichen > mehr spendiere. > Ich will einen guten rat, einen Hinweis wo der Weg hinführt und keine > massregelung immer freundlich die Nachbarin zu grüßen. This is C++. sagt doch alles aus ;) C++ verfolgt andere Ziele als z.B. Java,C# oder Python. C++ möchte alle Möglichkeiten (Programmierparadigmen) offenhalten, um Probleme Rechenzeiteffizient und Speichersparsam lösen zu können. Aber C++ hat nicht die Absicht eine Einsteigersprache zu sein ;) Und dann gibt es noch die enge Verzahnung mit C, was ein rießen Vorteil oder auch mal Nachteil sein kann ;)
Habs grad mal überflogen. Ich denke da stehen einige Wahrheiten drin, allerdings bin ich mit manchen Dingen überhaupt nicht einverstanden: z.B. >CPL.1: Prefer C++ to C >Reason > >C++ provides better type checking and more notational support. It >provides better support for high-level programming and often generates >faster code. > >Example > >
1 | char ch = 7; |
2 | void* pv = &ch; |
3 | int* pi = pv; // not C++ |
4 | *pi = 999; // overwrite sizeof(int) bytes near &ch |
>Enforcement > >Use a C++ compiler. Ich wusste gar nicht das C++ Code generiert? Meines Wissens macht das der Compiler, und da kommts vor allem darauf an welchen ich benutze... Es gibt g++, genauso gibts aber auch Plattformen für die ich einfach keinen C++ Compiler krieg. Also das ist einfach schmarn
AVRJohnny schrieb: > Schönes Projekt. Für den "normalen" C++ Programmierer oversized, aber > das ist natürlich auch nicht der Anspruch hier. > > Gibt es so etwas für C? Beim schnellen Überfliegen findet man die üblichen Ratschläge für C( bspw. zu Globale Variablen) auch in diesem C++. Was fehlt ist sind aber die ganzen Ratschläge zur Praxis die man zum Überleben braucht. Da empfiehlt sich: http://www.oreilly.de/catalog/wenschleprogger/ weit mehr. Das ist dann auch völlig Sprach- und Entwicklungsumgebungsunabhängig. MfG
-.-.- schrieb: > genauso gibts aber auch Plattformen für die ich einfach > keinen C++ Compiler krieg. > Also das ist einfach schmarn Na ja, das Werk ist nicht speziell für den Embedded-Bereich erstellt. Das richtet sich mehr an den großen Rest der Programmier-Menschheit, die ganz selbstverständlich einen C++-Compiler zur Verfügung hat. Oliver
Oliver S. schrieb: > Na ja, das Werk ist nicht speziell für den Embedded-Bereich erstellt. > Das richtet sich mehr an den großen Rest der Programmier-Menschheit, die > ganz selbstverständlich einen C++-Compiler zur Verfügung hat. Genau, das Ganze ist ein Werk von (akademischen) C++ Programmieren für (akademische) C++ Programmieren. Die frage wo C++ sinnvoll und alternativlos eingesetzt werden kann wird nicht betrachtet. Auch nicht das zum programmieren mehr gehört als die Kenntniss von tool Guidelines. Auch wenn man sich mit Kapiteln wie "philosophy" versucht einen universallen Anstrich zu geben.
Nur die Harten kommen in den Garten schrieb: > Genau, das Ganze ist ein Werk von (akademischen) C++ Programmieren für > (akademische) C++ Programmieren. ergänze: ein Werk u.A. des Entwicklers von C++
Di P. schrieb: > Nur die Harten kommen in den Garten schrieb: >> Genau, das Ganze ist ein Werk von (akademischen) C++ Programmieren für >> (akademische) C++ Programmieren. > > ergänze: ein Werk u.A. des Entwicklers von C++ Ich mag C++. Nur habe ich manchmal das Gefühl das es als das Wunderheilmittel gegen alle Probleme gesehen wird. Die Gefahr, mit C++ scheiß Code zu produzieren ist mindestens so hoch wie mit C, das wollen aber viele Leute nicht einsehen.
-.-.- schrieb: > Ich mag C++. Nur habe ich manchmal das Gefühl das es als das > Wunderheilmittel gegen alle Probleme gesehen wird. Die Gefahr, mit C++ > scheiß Code zu produzieren ist mindestens so hoch wie mit C, das wollen > aber viele Leute nicht einsehen. Ja, meist von denen die ausser C++ nix zur Problemstellung/analyse beitragen können und durch ihren Tunnenlblick auf C++ und OOP buzzwords die Schwierigkeiten noch erhöhen. Wie sagte Paul Watzlawick: "Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel"
Nur die Harten kommen in den Garten schrieb: > "Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen > Nagel" Mit einem Hammer kannst du dir auch übel aufs Knie oder den Finger hauen. Die o.g. Guidelines versprechen nicht, dass C++ einfach wäre.
:
Bearbeitet durch User
Nur die Harten kommen in den Garten schrieb: > Wie sagte Paul Watzlawick: > > "Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen > Nagel" Eigentlich schrieb er nur: "Sie können sich Ihren verdammten Hammer an den Hut stecken!"
Di P. schrieb: > Die o.g. Guidelines versprechen nicht, dass C++ einfach wäre. Ja ein Problem mit einem dafür ungeeigneten Werkzeug sauber zu lösen ist nicht einfach - das ist unbestritten.
Di P. schrieb: > Nur die Harten kommen in den Garten schrieb: >> "Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen >> Nagel" > > Mit einem Hammer kannst du dir auch übel aufs Knie oder den Finger > hauen. Genau darum geht's doch dabei. Wenn das Problem wirklich ein Nagel ist, und das passende Werkzeug ein Hammer, dann hilft das Papier dabei, die Aufgabe verletzungsfrei hinzubekommen. Nicht mehr und nicht weniger. Wer tatsächlich dazu noch ein Vorwort braucht, in dem explizit darauf hingewiesen wird, daß ein Hammer nicht das richtige Werkzeug für Schrauben ist (was ausgebildete Zimmerleute trotzdem nicht daran hindert, Schrauben per Hammer einzuschlagen), sollte lieber gleich die Finger von allen Holzarbeiten lassen. In diesem Sinne Oliver
-.-.- schrieb: > Ich wusste gar nicht das C++ Code generiert? Meines Wissens macht das > der Compiler, und da kommts vor allem darauf an welchen ich benutze... > Es gibt g++, genauso gibts aber auch Plattformen für die ich einfach > keinen C++ Compiler krieg. > Also das ist einfach schmarn Wenn es keinen C++ Compiler für die Zielplatform gibt kann man es natürlich nicht benutzen. Wenn es allerdings einen gibt finde ich es auch nicht verkehrt diesen zu benutzen, auch wenn man eigentlich nur etwas C ähnliches programmiert. Das gezeigte Beispiel finde ich z.B. gut. Die implizite Konvertierung von void* zu beliebigen anderen Pointern ist einfach nervig und Fehleranfällig wie ich finde (gut bei malloc spart es Tipparbeit, aber mit einem C++ Compiler kann man ja dann new schreiben). Noch ein super nerviges Beispiel aus C ist die implizite Deklaration von Funktionen beim Funktionsaufruf. Vor einige Zeit habe ich hier im Forum mal einen Beitrag gelesen (ich glaube es war von einem der Moderatoren, kann mich aber nicht mehr an den Namen erinnern), da wurde behauptet das C++ das bessere C ist. Dem kann ich nur zustimmen.
Sebastian V. schrieb: > Vor einige Zeit habe ich hier im Forum mal einen Beitrag gelesen (ich > glaube es war von einem der Moderatoren, kann mich aber nicht mehr an > den Namen erinnern), da wurde behauptet das C++ das bessere C ist. Dem > kann ich nur zustimmen. Bin prinzipiell deiner Meinung. Bitte aber keine C++ vs. C Diskussion starten. Dafür gibts andere Threads.
Nur die Harten kommen in den Garten schrieb: > Das sind keine ratschläge die einem zeigen wie man sein problem löst Dafür sind diese Ausführungen doch offensichtlich gar nicht gedacht, und dazu gibt es ja auch schon genug Literatur, etwa die C++-Annotations von Frank B. Brokken, oder auch massenhaft Lektüre über Codingstyles, Design Patterns sowie natürlich auch Antipatterns. > sondern benimm-regel damit einem die Gouvernante nicht auf die Finger > haut! Bsp: > > -- > P.9: Don't waste time or space > Reason > > This is C++. > Note > > Time and space that you spend well to achieve a goal (e.g., speed of > development, resource safety, or simplification of testing) is not > wasted. > > -- > > Jajajaja, jetzt weiss ich genausoviel wie vorher und bekomme Gratis ein > Schluck schlechtes Gewissen dazu wenn ich bspw. identifier zwei zeichen > mehr spendiere. Die Information steckt in dem, was Du nicht zitiert hast. Und wenn Du den Teil mal genauer liest, wirst Du schnell feststellen: dabei geht es nicht darum, daß ein Identifier zwei Zeichen zuviel hätte. :-)
.-. ..- . -... . -. -. .- ... . schrieb: > Ich wusste gar nicht das C++ Code generiert? Meines Wissens macht das > der Compiler, und da kommts vor allem darauf an welchen ich benutze... So ein Compiler folgt ja meistens gewissen Regeln, idealerweise denen, die von Standards für die betreffende Programmiersprache definiert sind. Darum ist ein C++-Compiler besser als ein C-Compiler, weil der C++-Compiler eine bessere Typsicherheit durchsetzt und Dir damit hilft, Programmierfehler zu vermeiden. Deswegen raten die C++ Core Guidelines auch: wenn man gezwungen ist, C-Code zu schreiben, sollte man sich auf das gemeinsame Subset von C und C++ beschränken und einen C++-Compiler benutzen. > Es gibt g++, genauso gibts aber auch Plattformen für die ich einfach > keinen C++ Compiler krieg. Für den Fall, daß Du keinen C++-Compiler für Deine Plattform bekommst, sind die C++ Core Guidelines sicherlich nur von begrenzter Relevanz, aber das ist zweifellos kein Problem von (sic!) "C++ Core Guidelines". ;-)
-.-.- schrieb: > Ich mag C++. Nur habe ich manchmal das Gefühl das es als das > Wunderheilmittel gegen alle Probleme gesehen wird. Ach Quatsch, das verwechselst du. Was du meinst, ist Java :-)
-.-.- schrieb: >>Example >> >>char ch = 7; > void* pv = &ch; > int* pi = pv; // not C++ > *pi = 999; // overwrite sizeof(int) bytes near &ch >>Enforcement >> >>Use a C++ compiler. > > Ich wusste gar nicht das C++ Code generiert? Meines Wissens macht das > der Compiler, Steht doch auch so da >>Use a C++ compiler. > und da kommts vor allem darauf an welchen ich benutze... Nein, bei dem Beispiel kommt es gerade in C++ eben darauf nicht an - im Gegensatz zu C. Die Sprachen C und C++ sind definiert und von der ISO genormt. Es gibt aber auch einige Freiheiten für den Compiler. Ein C-Compiler darf - sofern auf der Plattform char und int nicht gleich groß sind - mit obigem Code machen, was er will (undefined behaviour). Ein C++-Compiler dagegen muss mit Fehlermeldung abbrechen. > Es gibt g++, genauso gibts aber auch Plattformen für die ich einfach > keinen C++ Compiler krieg. Warum liest du dir denn überhaupt ein Dokument über bessere Verwendung von C++ durch, wenn du die Zielplattform gar nicht in dieser Sprache programmieren kannst?
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.