C++ lernen / Programme schreiben
-
Ich will gar nicht behaupten, dass unser Code grundsätzlich schlecht ist, im Gegenteil. Man findet viele interessante Konstrukte darin. Unser C-Source ist strikt objektorientiert (Handle-structs); es wird dafür gesorgt, dass sich Wrapper aus Sicht des Aufrufers eigentlich nie ändern müssen; der Aufrufer hat z.B. auch keine Möglichkeit, Elemente eines Handles selbst zu ändern - durch globale Dummy-Typen ist der Typ zwar bekannt und kann weitergereicht werden, es kann aber nicht auf die Elemente zugegriffen werden - ; es wird viel Code automatisch generiert, um z.B. das Zugreifen auf Funktionen aus DLLs super-einfach zu gestalten (hier muss sich keiner mit LoadLibrary und GetProcAddress rumschlagen, eine DLL wird bei Bedarf geladen, Prototypen werden automatisch in globalen Headern generiert), usw. Da passiert mehr, als viele Leute C zutrauen. Aber es ist halt C, und auch die C++-Module sind entsprechend mehr C als C++. Die STL wird recht selten bemüht, eigene Template-Klassen habe ich noch gar nicht entdeckt (na ja, vielleicht verstecken die sich doch noch irgendwo in den 500.000 LOC
)... ich würde mir halt einfach ein wenig mehr C++ wünschen, damit meine eigenen Kenntnisse etwas gefördert werden. Aber wie gesagt, ich wollte unseren Code nicht schlechtreden.EDIT: Doch, eine Sache will ich schon noch bemeckern. Unser Source ist zu großen Teilen kaum bzw. gar nicht kommentiert! Das macht das Verstehen von Projekten, die man plötzlich zugeteilt bekommt, nicht immer einfach. Hier greift auch dein Argument, dass Codequalität nicht profitabel ist. Wer sich vornimmt, im Anschluss ausführlich und sinnvoll zu kommentieren (denn erstmal muss der Termin eingehalten werden), macht es ja sowieso nicht, da dann schon das nächste Projekt wartet...
-
Das ist halt das Problem an "alten" Projekten. Sie wachsen organisch und zu dieser Zeit hatten die wahrscheinlich noch gar nicht die Möglichkeit C++ zu nutzen, respektive sie waren noch Meilenweit davon entfernt, dass man die Features wirklich brauchen konnte.
Wie du sagst ist Firmerinterner Code meist kaum dokumentiert und man muss sich die Strukturen und Techniken aus dem Code lesen, oder man bekommt es von jemandem gesagt, aber es gibt kaum so etwas, wie etwas, dass dir die grössere Struktur erklärt, was es bei offenen Libs ja zu Hauf gibt und sich so jeder da recht schnell einarbeiten kann. Aber wozu sollte man das auch machen, wenn der Code läuft?
btw:
Darf ich fragen, wo du arbeitest?
-
drakon schrieb:
btw:
Darf ich fragen, wo du arbeitest?In welchem Bereich? AOI-Systeme (also Hardware-Ansteuerung und Bildverarbeitung).
-
_matze schrieb:
drakon schrieb:
btw:
Darf ich fragen, wo du arbeitest?In welchem Bereich? AOI-Systeme (also Hardware-Ansteuerung und Bildverarbeitung).
Ich habe Firma gemeint.

-
@JENS SCHLAU
-
_matze schrieb:
[Ich beispielsweise bin eher ein C-Programmierer, der auch Klassen benutzt. Viele, gerade hier im Forum, verurteilen sowas, aber in meinem Betrieb gehts nicht anders...
Was ich bei sowas verurteile ist nicht, das es in der Praxis vorkommt, sondern das man solches Wissen teilweise als C++ vermittelt. Und ich glaube das geht anderen auch so.
Ich hatte in keiner Firma bislang wirklich sauberen C++ Code, aber in meiner aktuellen Firma haben sie mir relativ freie Hand bei der Programmierung gegeben, und sind manchmal doch über die Ergebnisse erstaunt (wenn z.B. aus einem 20ig Zeiler ein 4 Zeiler mit STL-Einsatz wird, der sogar noch besser lesbar ist...
cu André
-
Ich will keine Spiele, sondern (erstmal) Programme für Vista programmieren.
Online gibt es wenig gute Tutorials ...



Kann mir einer ein Buch (25 Euro sind ideal) empfehlen ?
Sonst greife Ich zu den Werken des Franzi's Verlag's. Die haben gute Autoren am Start.

-
http://www.research.att.com/~bs/programming.html
http://www.research.att.com/~bs/3rd.html
http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/382732274X
-
drakon schrieb:
_matze schrieb:
drakon schrieb:
btw:
Darf ich fragen, wo du arbeitest?In welchem Bereich? AOI-Systeme (also Hardware-Ansteuerung und Bildverarbeitung).
Ich habe Firma gemeint.

Nee, sorry...

-
[quote="JENS SCHLAU"]Ich will keine Spiele, sondern (erstmal) Programme für Vista programmieren.[quote]
Also so schlau muss man wirklich nich sein um exakter lesen zu können!
tja tja...
-
JENS SCHLAU schrieb:
Ich will keine Spiele, sondern (erstmal) Programme für Vista programmieren.
Vista ist aber bald tot. Warum sprichst du Vista an? Du solltest lieber lernen Programme zu schreiben die auf allen gängigen OS' funktionieren.
-
Wahrscheinlich meint er für Windows
-
JENS SCHLAU schrieb:
Ich selber bin sehr lernfähig (was ärtzlich nachgewiesen wurde).

JENS SCHLAU schrieb:
Ich will keine Spiele, sondern (erstmal) Programme für Vista programmieren.
Erstmal solltest du dich mit Standard C++ beschaeftigen - und das bedeutet plattformunabhaengiges programmieren.
Ich kann dir C++ von Ulrich Breymann empfehlen. Das arbeite ich zurzeit selbst durch und bin sehr zufrieden damit
Gruss
Cartman
-
Ich hab mir wo ich angefangen habe Bücher von Galileo-Computing geholt und ich bin mit denen Recht zufrieden^^
http://www.galileo-press.de/?GalileoSession=78962616A34VF2AMoT8
Ich würde dir "C++ von A bis Z" empfehlen, den genau das gleiche hab ich auch, da steht alles mögliche drin kostet aber jedoch 40€.
Gruß, Wikinger75.
PS: Ich bin auch 15^^
-
Also das C++ für Spieleprogrammierer soll auch gut sein, in der 2. Auflage machst du ganz zum Schluss so ein kleines Minigame, und es soll sehr lehrreich sein
-
Wikinger75 schrieb:
Ich hab mir wo ich angefangen habe Bücher von Galileo-Computing geholt und ich bin mit denen Recht zufrieden^^
http://www.galileo-press.de/?GalileoSession=78962616A34VF2AMoT8
Ich würde dir "C++ von A bis Z" empfehlen, den genau das gleiche hab ich auch, da steht alles mögliche drin kostet aber jedoch 40€.
Gruß, Wikinger75.
PS: Ich bin auch 15^^
"C++ von A bis Z" habe ich auch, finde es aber nicht allzu gut. Der Autor macht es teilweise auch einfach zu kompliziert. Warum nicht zum Beispiel von Anfang an den C++ Header <string> nutzen, sondern Char-Arrays?
Mit freundlichen Grüßen
DerRatlose
-
Das stimmt zwar, aber es ist nicht schlecht die funktionen von den c-strings zu kennen, da das immerhin noch ein standart datentyp, der C++ string ist ja ledeglich eine Klasse die mit char arbeitet und uns das benutzen von strings erleichtert und uns davon abhält fehler zu machen^^
-
Wikinger75 schrieb:
Das stimmt zwar, aber es ist nicht schlecht die funktionen von den c-strings zu kennen, da das immerhin noch ein stan**** datentyp, der C++ string ist ja ledeglich eine Klasse die mit char arbeitet und uns das benutzen von strings erleichtert und uns davon abhält fehler zu machen^^
Ein C-String ist kein Datentyp. Ein char, ein Zeiger auf ein Char sind z.B Datentypen, aber der C-String selbst ist dagegen einfach ein herkömmliches Konstrukt. Wohingegen std::string ein Standard Datentyp ist. Klar weiss ich, was du meinst, aber der std::string ist kein eingebauter Typ, aber zum Standard gehört er doch.
Allerdings gebe ich dir Recht, dass man schon ein wenig wissen darf, wie man mit C-Strings umgeht und was das so ist. Von der Benutztung würde ich aber abraten, sofern man kein gutes Argument für die Benutzung hat.
-
Wikinger75 schrieb:
Das stimmt zwar, aber es ist nicht schlecht die funktionen von den c-strings zu kennen, da das immerhin noch ein standard datentyp, der C++ string ist ja ledeglich eine Klasse die mit char arbeitet und uns das benutzen von strings erleichtert und uns davon abhält fehler zu machen^^
DerRatlose schrieb:
"C++ von A bis Z" habe ich auch, finde es aber nicht allzu gut. Der Autor macht es teilweise auch einfach zu kompliziert. Warum nicht zum Beispiel von Anfang an den C++ Header <string> nutzen, sondern Char-Arrays?
Also zum Beispiel gleich zum "C++ Primer" greifen. In diesem Buch kommt der C++ Header <string> auch vor den sogenannten C-Strings und das Buch ist zudem noch 10 € günstiger:
http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/3827326125/ref=sr_1_1?ie=UTF8&s=books&qid=1233684388&sr=1-1Ich bin jedenfalls mehr als zufrieden mit dem "C++ Primer" :).
-
C-Strings sind in C++ nicht die herkömmliche Herangehensweise zur Zeichenkettenverwaltung (sieht man ja auch am Namen: C-String). Da man für deren Verwendung recht gut über Zeiger und Speicherverwaltung Bescheid wissen muss, finde ich es auch sinnvoll, zuerst die Klasse
std::stringzu verwenden.