Ab wann setzt ihr eigene Klassen ein?



  • Wenn ich soviel Zeit brauche um den Umgang mit Klassen zu lernen, kann ich die Zeit auch besser machen und einfach meine Programme weiter C-Like schreiben. Das ist einfach und hat sich bei mir bewährt.

    Wie große Softwareprojekte funktionieren interessiert mich eigentlich nicht, da ich nie große Softwareprojekte machen werde. Ihr könnt mich auch als Handwerker diskreditieren bis euch euer Titel aus dem Arsch kommt, aber das ändert nix an der Sache, dass Klassen anscheinend nicht für jeden etwas Wertvolles bedeuten.

    Ach ja, und wenn man gar nicht mehr weiter weiß, wird dann der berühmte Troll-Spruch in die Runde geworfen.

    Also entweder bin ich dumm oder ein Troll, weil ich keinen Sinn für mich in eigenen Klassen sehe. Da hätte ich mir die Frage auch sparen können.

    Danke an die, die ernsthaft versucht haben mir die Vorteile der Programmierung mit eigenen Klassen näher zu bringen.



  • Klassenmachen schrieb:

    Danke an die, die ernsthaft versucht haben mir die Vorteile der Programmierung mit eigenen Klassen näher zu bringen.

    Ist im Nachhinein etwas schade, dass wir dich nicht von den Vorteilen überzeugen konnten -- Features wie RAII sind simpel genug, um sie in ein paar Stunden perfekt zu verstehen und anwenden zu können, im Gegenzug dazu können sie dir tagelange Arbeit sparen. Ich würde nicht einfach behaupten, ich bräuchte sie nicht. Du kamst leider mit einer etwas voreingenommenen Einstellung hier hin, ich verstehe nicht ganz wieso du die Frage überhaupt gestellt hast.

    Die Diskussion hier führt zu nichts mehr als gegenseitigen Anschuldigungen. Ich würde dir raten, die genannten Argumente nochmals in Ruhe anzuschauen und dann selbstständig eine endgültige Entscheidung zu treffen, ohne dich durch negative Posts beeinflussen zu lassen.


  • Mod

    Kommt mir manchmal so vor als ob die drauf warten dass man ihnen sagt sie sollen irgendwo ne Unterfunktion verwenden, oder ne eigene Klasse schreiben. So nach dem Motto "im Auftrag steht nix davon drin dass ich hier eigene Klassen schreiben muss". WTF?

    Das ist ein Scherz, oder? Das kann ich irgendwie nicht wirklich glauben.



  • Klassenmachen schrieb:

    Wenn ich soviel Zeit brauche um den Umgang mit Klassen zu lernen, kann ich die Zeit auch besser machen und einfach meine Programme weiter C-Like schreiben. Das ist einfach und hat sich bei mir bewährt.

    Du gehst auch lieber zu FUß als mit dem Auto zu fahren, weil es so lange dauert, einen Führerschein zu machen, oder?



  • Hallo Klassenmachen,

    Klassenmachen schrieb:

    Den ganzen Kram mit RAII lasse ich mal weg, da ich solche Probleme, genau wie Speicherlecks, nie lange im Programm habe. Das sind die Fehler, die man am schnellsten und als erstes findet.

    🙄
    Du hast selbst geschrieben, dass Du Amateur bist, kannst es also nicht besser wissen.

    Kleine wahre(!) Story aus der Praxis:
    Wir haben in unserem Projekt praktisch keine Speicherleaks mehr seit wir Smartpointer einsetzen (das sind kleine Klassen, die den Speicher wieder aufräumen - und das ist RAII in Reinkultur).
    Den letzten Speicherleak hatten wir vor ca. 3,5 Jahren. Er befand sich in einem Stück Code, welches damals bereits ca. 8 Jahre alt war. Aufgetreten ist er nur deshalb weil sich ein Prozess des Anwenders (nicht der Software!) geändert hatte und damit die Frequenz, mit der dieses Code-Segment aufgerufen wurde, drastisch erhöht hatte. Der Fehler machte sich aber erst nach ca. 10h Programmlaufzeit bemerkbar, da jeweils nur wenige Byte allokiert wurden. Wir haben mehrere Wochen danach gesucht und ich schätzte nur die Kosten der Suche auf mehrere 1000€.
    Soviel zum Thema "Fehler, die man am schnellsten und als erstes findet"

    Gruß
    Werner



  • Klassenmachen schrieb:

    Ihr könnt mich auch als Handwerker diskreditieren bis euch euer Titel aus dem Arsch kommt

    Du wirst diskreditiert weil Du Dich in Deiner Anmaßung gegen das Wissen und die Erfahrung aller Informatiker und Softwareentwickler hier stellst und alles in den Dreck ziehst was wir als gute und sinnvolle Entwicklerpraxis und -erfahrung verinnerlicht haben. Was bildest Du Dir eigentlich ein wer Du bist oder was Du kannst Du hohle Nuss?


  • Mod

    µ schrieb:

    Was bildest Du Dir eigentlich ein wer Du bist oder was Du kannst Du hohle Nuss?

    Komm mal wieder runter, kein Grund so aggressiv zu werden. Wenn er dich nervt, verlass doch den Thread. Keiner zwingt dich, ihn ernst zu nehmen oder ihn zu beleidigen.



  • Klassenmachen schrieb:

    Den ganzen Kram mit RAII lasse ich mal weg, da ich solche Probleme, genau wie Speicherlecks, nie lange im Programm habe. Das sind die Fehler, die man am schnellsten und als erstes findet.

    Hmmm interessant, poste mal Code von dir, irgendwas wo du viel mit Ressourcen hantierst also Sockets, Dateien, Speicher, etc. Denn das sind eigentlich die Fehler die man so gut wie nie findet, weil sie das Programm nicht unmittelbar zum Absturz bringen.



  • Ich habe jetzt ehrlich gesagt hier keine Lust Code zu posten, daher müsst ihr mir einfach glauben, dass ich nie lange mit Ressourcen oder Speicherfehler zu kämpfen habe. Meine Programme sind ja auch klein und übersichtlich, deswegen ja auch meine Frage ob sich Klassen für mich lohnen würden.

    Hier nochmal zu dem grottenschlechten Beispiel mit dem Führerschein. Auto fahren lerne ich in ein paar Wochen. So wie ich hier gelesen haben braucht man für C++ extrem lange. Die Zeit davor schreibt man wohl unheimlich schlechten Code. Warum soll ich mir das antun, für meine Miniprogramme?

    Hier wurde auch groß getönt dass ich keine Ahnung habe und dass man bei großen Projekten praktisch ohne C++ gar nicht auskommt. Nun, da frage ich mich wie der Linux-Kernel oder Gimp so lange und gut überleben können. Auch alles nur hohle Nüsse, so wie ich hier sehr nett betitelt wurde?

    Wie gesagt meine Fragen beziehen sich nur auf mich, denn was interessieren mich große Projekte? Ich bin nur ein kleiner Handwerker mit Hauptschulabschluss, ein Amateur, der hier die Götter um Rat fragt und die Antworten in Frage stellt. Das ist mein gutes Recht, da ich den Sinn für mich persönlich herausfiltern muss. Und erst wenn ich keine Zweifel mehr habe, bin ich überzeugt.



  • Klassenmachen schrieb:

    Ab wann setzt ihr eigene Klassen ein?

    8:37 Uhr



  • Klassenmachen schrieb:

    Ich habe jetzt ehrlich gesagt hier keine Lust Code zu posten, daher müsst ihr mir einfach glauben, dass ich nie lange mit Ressourcen oder Speicherfehler zu kämpfen habe.

    👍 Dann bist du wohl einfach ein göttlicher Programmierer, denn die ganzen Generationen vor dir haben das nicht geschafft.



  • Es hat nie jemand ein kleines C-Programm geschrieben, was keine Speicher oder Ressourcenfehler hat? Jetzt bin ich allerdings überrascht.

    Ja ist schon schwer wenn man eine Datei öffnet, ließt und dann wieder schließt. Da brauch man unbedingt Klassen, RAII und Exceptions, ohne das geht es gar nicht gut und ich habe automatisch mit Speicher- und Ressourcenfehlern zu kämpfen. Ach ja ich vergaß, was die Massen denkt muss richtig sein.

    Sind das wirklich die Kernargumente für Klassen? Ich muss zugeben dass ich mir ein Lächeln nicht verkneifen kann. Es soll also niemand in der Lage sein ohne den ganzen genannten Kram kleine Programme ohne größere Fehler zu produzieren? Den Standpunkt wollt ihr nicht im ernst beibehalten?

    Ich bin mal gespannt was jetzt von der "geistigen Elite" noch so kommt. Wie gesagt es geht hier immer um kleine Hobbyprogramme, für die die nicht richtig lesen können, aber vielleicht ein Diplom haben, ob nun zu recht oder unrecht.

    Also bis auf ein, zwei Leute kam hier bis jetzt nur gedanklicher Durchfall, wie kann so etwas Geld damit verdienen?



  • Kilroy was here!



  • Also erstmal, das herumhacken von µ auf deinem Beruf war etwas fehl am Platz. Wenn deine Projekte unter 100 Zeilen haben und seeehr einfach sind muss man auch keine Klasse machen, nur damit mans hat. Trotzdem macht OOP (ob jetzt in C oder C++) viel Modellierung einfacher. Dein Problem ist nunmal, dass du einfach noch nicht dran gewöhnt bist, und es deshalb vermeidest - selbst dann, wenn es eben einfacher wäre wenn man das Prinzip verstanden hat. Ich erinnere mich an den ersten Versuch einer Klasse, der so unglaublich daneben war, weil ich OOP einfach nicht verstanden habe. Das die Moduellierung einfacher wird ist natürlich gerade erst bei größeren Projekten relevant - das heißt aber trotzdem nicht dass es bei kleineren sinnlos ist.

    Mal davon abgesehen, dein Ton ist auch nicht der beste, darfst dich also nicht unbedingt wundern wenn andere etwas gereizt reagieren.

    Aber mal konkret: Wie groß sind deine Projekte, und was machen sie? Taschenrechner? Was schreibst du so für Sachen?


  • Mod

    Jetzt bin ich allerdings überrascht.

    Merkst du eigentlich, dass ich so ziemlich der einzige bin, der dir noch ernsthafte Antworten gibt? (Edit: Oben kam noch einer)

    Den Standpunkt wollt ihr nicht im ernst beibehalten?

    Es geht nicht um die Möglichkeit. Jeder könnte ein kleines Programm ohne Fehler schreiben. Mit RAII ist es deutlich einfacher und sicherer. Das sind Argumente, die du nicht ignorieren oder wegreden kannst. Es ging nie darum, ob man etwas tun könnte, sondern darum, sich einfach Arbeit abnehmen zu lassen. Willst du dir das Leben unnötig schwer machen?

    Ach ja ich vergaß, was die Massen denkt muss richtig sein.

    Und ein dahergelaufener Anfänger versteht die Programmierung besser als die Menschen, die damit bereits dutzende Jahre verbracht haben? (Dazu zähle ich offensichtlich nicht, aber einige, die hier gepostet haben)
    Du hast einfach offensichtlich nicht genug Erfahrung, um OOP richtig kritisieren zu können. Du kommst immer mit dem Nullargument, dass OOP prinzipiell nicht gebraucht wird.

    Computer brauchen wir auch nicht, das ist doch so viel Arbeit, die Software installieren, die Elektrizität bezahlen, Antivirendatenbank aktualisieren, eine Minute am Start warten, und ab und zu friert mal der Bildschirm ein. Scheußlich!

    @µ: ES tut mir Leid, das ist tatsächlich eine hohle Nuss. Nehme alles zurück.

    Wenn deine Projekte unter 100 Zeilen haben

    DAnn sind es keine Projekte. Kleine Projekte haben etwa einige tausend LOC.



  • Arcoth schrieb:

    Wenn deine Projekte unter 100 Zeilen haben

    DAnn sind es keine Projekte. Kleine Projekte haben etwa einige tausend LOC.

    Mein Hello-World-Projekt:

    #include <iostream>
    int main()
    {
        using std::cout;
        cout << "Hello world!";
    }
    


  • Arcoth schrieb:

    Kommt mir manchmal so vor als ob die drauf warten dass man ihnen sagt sie sollen irgendwo ne Unterfunktion verwenden, oder ne eigene Klasse schreiben. So nach dem Motto "im Auftrag steht nix davon drin dass ich hier eigene Klassen schreiben muss". WTF?

    Das ist ein Scherz, oder? Das kann ich irgendwie nicht wirklich glauben.

    Nein, das ist kein Scherz.

    Glaubst du mir dass ich hier Programme mit Funktionen mit > 1000 Zeilen habe?
    Glaubst du mir dass ich hier Programme mit Funktionen habe wo neue Fallunterscheidungen in Funktionen eingebaut wurden, indem ihr gesamter Code kopiert wurde, 1x in den "if" Zweig und 1x in den "else" Zweig, und das ganze 2-3 Ebenen tief (also 4-8 Kopien des selben Codes, jeweils leicht modifiziert)?
    Glaubst du mir dass ich hier Programme habe wo an > 50 Stellen die selben 2-3 Zeilen wiederholt werden ala

    CString msg;
    msg.Format("ERROR: %03d Blah blab blah %s in FunktionsNameDirektReingeschriebenDamitErNachDemNächstenRefactoringNimmerStimmt.", errorCode, foo);
    LOG(msg);
    

    ?
    (Das Format der Ausgaben ist in einem Fall vom Kunden vorgeschrieben, und diese Vorgabe wird dadurch erreicht dass es bei allen Ausgaben eben richtig dort steht. Also nicht 1x pro Message-Art (Fehler, Warning, ...) sondern 1x pro Message-Ausgabe-Stelle.)

    Glaubst du mir dass ich hier Programme habe wo der selbe Business-Logic Code and 2+ Stellen wiederholt ist, so dass das Programm gröber Mist baut wenn man bei Änderungen eine Stelle übersieht?



  • Klassenmachen schrieb:

    Es hat nie jemand ein kleines C-Programm geschrieben, was keine Speicher oder Ressourcenfehler hat? Jetzt bin ich allerdings überrascht.

    Ich hab kurze Zeit in C programmiert, und danach lange in C-Style C++ Programme geschrieben. Die hatten auch keine (mir bekannten oder sich irgendwo manifestierenden) Resource-Leaks. Schön zu lesen oder gut wartbar würde ich die aber nicht nennen. Und einige Corner-Cases hab' ich dabei vermutlich auch oft übersehen.

    Heute verwende ich halbwegs modernes C++, schön mit vielen eigenen Klassen und RAII, und bin damit viel produktiver. Und vor allem ist das Schreiben solcher Programme SO viel entspannter...

    Ja ist schon schwer wenn man eine Datei öffnet, ließt und dann wieder schließt. Da brauch man unbedingt Klassen, RAII und Exceptions, ohne das geht es gar nicht gut und ich habe automatisch mit Speicher- und Ressourcenfehlern zu kämpfen.

    Wenn du solche Sachen zigfach in einem Programm machst, dann nervt es einfach den selben langweiligen Cleanup-Code an zig Stellen zu wiederholen.
    Vor allem wenn man es richtig machen möchte.
    Ich hab' bisher kaum Programme gesehen die auf RAII verzichten und alle Corner-Cases abgedeckt haben.
    Nur weil du den Fehler nicht siehst, und weil er bei deinen Tests nicht aufgetreten ist, heisst das nicht, dass er nicht da ist.

    Sind das wirklich die Kernargumente für Klassen?

    Es ist das Kernargument für RAII. Für Klassen spricht auch viel, sogar wenn man RAII nicht verwenden kann. In Java war lange Zeit kein vernünftiges RAII möglich (die Zeit vor try-with-resources) - trotzdem wurden da Klassen verwenden. Stichwort Kapselung.
    Wirst du aber auch nicht verstehen wenn du noch nie ein grösseres Projekt gemacht hast. Und ist bei einem 1000 Zeilen Programm auch nicht wirklich so wichtig. Bei einem 500.000 Zeilen Programm sieht die Welt aber anders aus. Und wenn man's einmal gewöhnt ist, macht man es halt immer. Weil's nicht wirklich mehr Arbeit ist, und die so entstehenden Programme meist auch viel besser zu lesen sind.

    Ich muss zugeben dass ich mir ein Lächeln nicht verkneifen kann.

    Ich muss zugeben dass ich dich für einen überheblichen und ignoranten Klotz halte.

    Es soll also niemand in der Lage sein ohne den ganzen genannten Kram kleine Programme ohne größere Fehler zu produzieren? Den Standpunkt wollt ihr nicht im ernst beibehalten?

    Kleine Programme interessieren niemanden.

    Wie gesagt es geht hier immer um kleine Hobbyprogramme

    Siehe oben: die interessieren niemanden. Ausser vielleicht dich.

    Also bis auf ein, zwei Leute kam hier bis jetzt nur gedanklicher Durchfall, wie kann so etwas Geld damit verdienen?

    Ich muss es nochmal wiederholen: kleine Programme interessieren niemanden.

    Wieso nimmst du dann an, dass Leute die ihr Geld damit verdienen grosse Programme zu schreiben besonders viel Sinnvolles darüber zu sagen haben, wie jemand der ihre Art zu arbeiten grundsätzlich ablehnt kleine Programme schreiben kann oder nicht kann?

    BTW: zeig mal eines der grösseren deiner kleinen Programme. Dann können wir ja mal gucken wie viele Fehler wir darin finden.


  • Mod

    hustbaer schrieb:

    Glaubst du mir dass ich hier Programme mit Funktionen mit > 1000 Zeilen habe?

    Naja, das ist nicht das extremste, von dem ich gehört habe (main() mit 18000 Zeilen). Aber erschreckend.

    Glaubst du mir dass ich hier Programme mit Funktionen habe wo neue Fallunterscheidungen in Funktionen eingebaut wurden, indem ihr gesamter Code kopiert wurde, 1x in den "if" Zweig und 1x in den "else" Zweig, und das ganze 2-3 Ebenen tief (also 4-8 Kopien des selben Codes, jeweils leicht modifiziert)?

    Ok, jetzt scherzt du aber. Welcher Programmierer ist dumm genug, DRY so dermaßen zu verletzen? Das hätte allerhöchstens ein Anfänger getan!

    Glaubst du mir dass ich hier Programme habe wo an > 50 Stellen die selben 2-3 Zeilen wiederholt werden

    Ja, das glaube ich.

    Das Format der Ausgaben ist in einem Fall vom Kunden vorgeschrieben, und diese Vorgabe wird dadurch erreicht dass es bei allen Ausgaben eben richtig dort steht.

    Den Funktionsnamen könnte man leicht durch __func__ ersetzen (wobei __func__ seit C++11 kein Makro ist, sondern ein char const -Array).
    Eine zusammenfassende Funktion ist (soweit ich sehe) problematisch, weil dann der Funktionsname nicht mehr stimmt, außer man übergibt __func__ als Argument. Die Lösung ist ein Makro, das wiederum ist aber möglicherweise ein wenig unschön...



  • hustbaer schrieb:

    Ich muss es nochmal wiederholen: kleine Programme interessieren niemanden.

    Es geht aber in meiner Frage um mich und die kleinen Programme. Es soll in meinem eigenen Thread nicht um meine Fragen und Bedürfnisse gehen, dann macht doch der ganze Thread keinen Sinn? Solche Aussagen, wie die deinen, sind doch grotesk.

    Für das Protokoll: Ich habe nie bezweifelt, dass Klassen, RAII, etc. für größere Projekte sinnvoll sind.

    Ich denke der Thread kann geschlossen werden, da ich nie mit mehreren Ressourcen gleichzeitig zu tun haben werde und auch meine Programme werden nie über tausende von Zeilen gehen.

    Fazit: Klassen machen für mich keinerlei Sinn.


Anmelden zum Antworten