Eigene Klassenbibliothek
-
Nexus schrieb:
Da muss das grundlegende Design neu gemacht werden. Viel moderner, ohne Vererbung, im STL-Stil und auch mit ihr kompatibel.
Dann hat er die STL nachprogrammiert.
-
SeppJ schrieb:
Dann hat er die STL nachprogrammiert.
Darum "STL als Backend wo möglich"... wenn nur noch
sum()undaverage()als freie Funktionen bleiben, ist der Aufwand umso kleiner
@mgaeckler: Sich zu überlegen, wie die gleiche Funktionalität unter Benutzung der STL realisiert werden könnte, ist so oder so eine gute Idee. Dann würdest du wahrscheinlich einige der hier genannten Punkte genauer verstehen.
-
Nexus schrieb:
im STL-Stil und auch mit ihr kompatibel. Wo möglich würde ich auch die STL als Backend einsetzen. Das ist die einzige Möglichkeit, das 21. Jahrhundert zu erreichen.
Ach, STL ist so 98er ...
-
Nexus schrieb:
SeppJ schrieb:
Dann hat er die STL nachprogrammiert.
Darum "STL als Backend wo möglich"... wenn nur noch
sum()undaverage()als freie Funktionen bleiben, ist der Aufwand umso kleiner
sum gibt's ja schon als accumulate und ob man jetzt eine extra Funktion für eine Division braucht? Vor allem da der richtige Rückgabetyp und der exakte Typ der Division bei average ein wenig unklar ist, wenn man generisch programmieren möchte.
-
Nexus schrieb:
SeppJ schrieb:
Dann hat er die STL nachprogrammiert.
Darum "STL als Backend wo möglich"... wenn nur noch
sum()undaverage()als freie Funktionen bleiben, ist der Aufwand umso kleiner
sum()undaverage()und evtl. seine XML/HTML Klassen.
-
Nexus schrieb:
Xin schrieb:
Es schadet nicht, wenn jemand sich Quelltext ansieht und daraus lernen kann.
Doch, und zwar massiv. Das Ausmass davon erkennst du daran, wie viele Leute dank Wolfsbüchern nicht richtig C++ können.
Ich habe Assembler aus einem Buch gelernt in dem Programme abgedruckt waren, die nicht funktionierten. Trotzdem funktionierten meine Programme.
Wer irgendwas für die endgültige Wahrheit hält, hat das wichtigste nicht gelernt.
Wer denkt, dass er aus einem modernen Buch richtiges C++ lernen kann, wird enttäuscht werden, weil das in 5-10 Jahren eben auch kein "richtiges" C++ mehr ist.
Eine Information muss nicht korrekt oder perfekt sein, um den eigenen Horizont zu erweitern. Und wer nichts anderes zulässt, wird kaum über einen großen Horizont verfügen.Jedes Buch, jedes Tutorial und jedes Posting in diesem Forum ist eine Meinung, eine Perspektive, eine Inspiration - wobei einige hier schreiben, als hätten sie die Wahrheit für sich gepachtet.
Ich habe ein Buch von Jürgen Wolf. Ich finde es inspirierend. Ich finde auch Bücher von Kerningham inspirierend. Und in beiden Fällen ist es nicht die endgültige Wahrheit. Und veraltet sind sie auch.
Genauso kann ich mir eine alte Lib angucken und darin Dinge finden, die vom ersten Eindruck heute vielleicht altmodisch aussehen. Und morgen vielleicht State of Art sind.
-
Xin schrieb:
Wer irgendwas für die endgültige Wahrheit hält, hat das wichtigste nicht gelernt.

"Alle Generalisierungen sind falsch."Xin schrieb:
wobei einige hier schreiben, als hätten sie die Wahrheit für sich gepachtet.
*meld*
Xin schrieb:
Ich habe ein Buch von Jürgen Wolf. Ich finde es inspirierend.
Es gibt nicht viele Ledernacken wie uns. Die meisten gehen davon einfach kaputt.
Xin schrieb:
Ich finde auch Bücher von Kerningham inspirierend.
Mehr als das.
Xin schrieb:
Genauso kann ich mir eine alte Lib angucken und darin Dinge finden, die vom ersten Eindruck heute vielleicht altmodisch aussehen. Und morgen vielleicht State of Art sind.
Jo, kommt vor. Hier wohl nicht.
edit: Beispiele:
Rekursive Abstiegscompiler: Offensichtlich das, was man im Sinne hat, aber ein Funktionsaufruf/-rücksprung kostet "Sprungziel lesen, IP schreiben, SP inkrementieren, IP=Sprungziel, SP für lokale Variablen erhöhen"/"SP wieder erniedrigen, Rücksprungziel lesen, SP dekrementieren, IP=Rücksprungziel" oder so, unendlich teuer, man baut 50 Jahre lang endliche Automaten und so, um mehr Speed zu haben. Nu haben die Prozessorbauer in die Befehle call/ret so hammerviele Transistoren reingesteckt, der native Stil ist auf einmal besser.
Ein Thread pro Connection: Dauert noch ein Weilchen, ist aber absehbar und zwangsläufig.
-
So.
Nachdem ich jetzt selbst mal in das PDF reingeguckt habe...: da sind ja noch viel mehr Sachen drinnen als die Strings und Container.
u.A. nen HTTP Server (oder zumindest die Basis dafür), nen Soap Client usw.=> Könnte schon einige Dinge geben wo man sich 'was abgucken kann. Gibt ja nicht nur das Design als Ganzes. Manchmal sieht man auch in der Implementierung Dinge die man selbst viel komplizierter gemacht hätte.
-
Nexus schrieb:
Aber du solltest nicht das Gefühl haben, dass es mit kleinen Fehlerbehebungen wie Const-Correctness getan ist. Das ganze Java-Paradigma muss von Grund auf ausgewechselt werden.
Was meinst Du mit Java-Paradigma? Wegen den vielen Ableitungen? Ich programmiere kaum mit Java, daher denke ich nicht, daß mich diese Sprache allzusehr beeinflußt hat.
mfg Martin
-
mgaeckler schrieb:
…
Sachen, die man jetzt nicht mehr in C++ macht, die man aber in Java oft sieht. Das heißt nicht, daß Du sie von Java abgeschaut hättest. Und daß Du nicht bei Java geschaut heißt, beweist nicht, daß die Lib nicht an manchen Stellen javaesk wäre.
Auch wills mir erscheinen eher als 80-er-Jahre-Stil. Daran ändert es nichts, wenn Du die Lib erst nach 1990 gebaut hast, dann hattest Du eben da schon die nicht frischesten Bücher.
-
Hallo,
ich habe jetzt die Bibliothek ein wenig überarbeitet, die Doku entsprechend angepasst und auch ein wenig erweitert:
http://www.cresd.de/edv/ger/Products/gaklib.pdfWer mag, kann auch schon mal einen Blick auf die Quellen werfen:
http://www.cresd.de/edv/archiv/GAKLIB.zip (12.28MB)Die Containerbibliothek ist, auch wenn der eine oder andere sich das anders wünschte, nach wie vor enthalten. Der Aufwand sie zu entfernen, ist mir derzeit noch zu groß.
Interessant ist, daß die Standardbibliothek meiner Borland Compiler langsamer ist, wie meine eigene. Mit GNU unter Linux und Mac OS X ist es aber umgekehrt. Bei Visual Studio 2010 sind die Ergebnisse in beiden Fällen jenseits von gut und böse (hab extra wegen denen die Datenmenge von 10000 auf 1000 reduziert, damit der Test in endlicher Zeit endet) Muß aber dazu sagen, daß ich mit VS2010 nur 'ne Debugversion gebaut habe und VS2010 setzt dann noch ziemlich viel Testcodes ein, was zwar eine praktische Sache ist, eine Performanzaussage kann man damit aber nicht machen.
Über konstruktive Kritik, freut sich wie immer
der Martin
-
Danke für die UML-Diagramme. Jetzt verstehe ich die Klassen viel besser.
Viel Erfolg!
-
volkard schrieb:
Danke für die UML-Diagramme. Jetzt verstehe ich die Klassen viel besser.
Viel Erfolg!Ich hoffe das war nicht ironisch gemeint
Bei der UML-Spec hätten nämlich die Pfeile genau anders rum gehen müssen. Das finde ich aber nicht sehr intuitiv.Wie dem auch sein, nicht wundern das das Archiv doch nicht 12 MB groß ist, ich vergaß die Intelisense DB von Visual Studio zu löschen. jetzt sind es nur noch ca 600 KB.
mfg Martin
-
Selbst seine Webseite sieht aus als wenn sie aus dem Jahr 2000 stammt. Ich glaube der ist irgendwann stehen geblieben bei der Weiterbildung.

-
2014 schrieb:
Selbst seine Webseite sieht aus als wenn sie aus dem Jahr 2000 stammt. Ich glaube der ist irgendwann stehen geblieben bei der Weiterbildung.

Du Feigling hast ja nicht mal den Mumm hier mit einem erkennbaren Usernamen zu arbeiten. Schäm Dich!
-
2014 schrieb:
Selbst seine Webseite sieht aus als wenn sie aus dem Jahr 2000 stammt. Ich glaube der ist irgendwann stehen geblieben bei der Weiterbildung.

Vielen Dank für Deine Meinung.
- Ich setzte aktuelle Technologien gerne ein. Aber nur dann wenn es auch einen Vorteil bringt. Wenn nicht oder es gar schadet, laß ich es sein.
- In diesem Thread geht es nicht um Webdesign und -technologien sondern um eine C++ Klassenbibliothek. Der Unterschied sollte selbst Dir klar sein.
- Wenn Dir der Begriff "konstruktive Kritik" nichts sagt, dann bitte doch eine erwachsene Person Deines Vertrauens um Aufklärung. Wird Deiner Weiterentwicklung sicherlich nicht schaden.
Gute Nacht Martin
-
mgaeckler schrieb:
2014 schrieb:
Selbst seine Webseite sieht aus als wenn sie aus dem Jahr 2000 stammt. Ich glaube der ist irgendwann stehen geblieben bei der Weiterbildung.

Vielen Dank für Deine Meinung.
- Ich setzte aktuelle Technologien gerne ein. Aber nur dann wenn es auch einen Vorteil bringt. Wenn nicht oder es gar schadet, laß ich es sein.
- In diesem Thread geht es nicht um Webdesign und -technologien sondern um eine C++ Klassenbibliothek. Der Unterschied sollte selbst Dir klar sein.
- Wenn Dir der Begriff "konstruktive Kritik" nichts sagt, dann bitte doch eine erwachsene Person Deines Vertrauens um Aufklärung. Wird Deiner Weiterentwicklung sicherlich nicht schaden.
Gute Nacht Martin
Das war aber streng! Ab jetzt habe ich Angst vor Dir und sage zu der Lib keinen Ton mehr.
-
volkard schrieb:
Das war aber streng! Ab jetzt habe ich Angst vor Dir und sage zu der Lib keinen Ton mehr.
Warum? Dir muß man ja den Begriff "konstruktive Kritik" nicht beibringen. Bisher waren alle Beiträge in diesem Thread nützlich. Nur bei so nutzlosen Aussagen wie die von "2014" werd ich sauer. Mit konstruktiver Kritik kann ich umgehen, auch wenn ich nicht immer die Meinung teile. Auch so Aussagen wie "mir gefällt xy nicht", kann ich akzeptieren.
mfg Martin
-
Konstruktive Kritik? Ich empfehle Dir: lass es. Erspare uns Deine Bibliothek.
Du sagst selbst, dass die Bibliothek 20 Jahre alte Designentscheidungen enthält, die Dich nerven. Und dass vieles schon jetzt bei der ersten Veröffentlichung obsolet ist.
Und wenn ich nur irgendeinen Header auf mache, dann sehe ich bei jeder 2. Zeile Dinge, die man hier diskutieren könnte. Teilweise zeigt es wie andere hier schon gesagt haben, C++-Stil von vor 20 Jahren. Nur weil mir das gerade mal aufgefallen ist: in csv.h wird ostream ohne std:: verwendet. Warum geht das? Weil irgendwo in irgendeinem Header ein using std::ostream steht. Das ist etwas was so gar nicht sein darf.
Wozu sollte jemand so etwas verwenden? Und nachher schaut sich irgendein Anfänger das an und kommt hier her und stellt dämliche Fragen, da er es doch so in einer open source Bibliothek gesehen hat.
-
tntnet schrieb:
Und wenn ich nur irgendeinen Header auf mache, dann sehe ich bei jeder 2. Zeile Dinge, die man hier diskutieren könnte. Teilweise zeigt es wie andere hier schon gesagt haben, C++-Stil von vor 20 Jahren. Nur weil mir das gerade mal aufgefallen ist: in csv.h wird ostream ohne std:: verwendet. Warum geht das? Weil irgendwo in irgendeinem Header ein using std::ostream steht. Das ist etwas was so gar nicht sein darf.
Stimmt, ist ein Problem. Dumm nur, daß das ganze noch mit einem Compiler übersetzt werden muß, der keine Ahnung vom namespace std hat
. So einfach ablösen kann ich den Compiler auch nicht, weil ich hier noch ein Projekt habe, das ich nur mit diesem übersetzen kann.Ja ich sollte diesen gammligen Compiler endlich über den Jordan hauen und das eine Projekt so umschreiben, daß es auch mit anderen Compilern übersetzbar ist.
mfg Martin