Wie beginnen? C oder C++
-
Ich mag an C++, dass man viele Möglichkeiten hat - man kann sehr maschinnenah programmieren, aber auch auf hohem Abstraktionslevel entwickeln, das andere Sprachen in der Form nicht einmal kennen (Stichwort Templates).
Genau das ist der Punkt, der es meiner Meinung nach ausmacht in C++ zu programmieren. Man hat keinerlei Einschränkungen. Ich meine auf eine Art ist das der Grund, warum ich angefangen habe zu programmieren. Wegen den unbeschränkten Möglichkeiten. Man kann alles tun. Auf eine saubere und auf eine unsaubere Art, ohne Frage, aber man hat keine Barieren.
Aber so die Grundaussage von dem Thread im anderen Forum war ja, dass C++ nicht für grosse Software Projekte geeignet seie. Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden. Nichts desto trotz bin ich der Meinung, dass es möglich und auch durchaus wünschenswert ist solche Projekt in C++ zu machen. Ich meine auf eine Art verliert es sich wieder, wie viel Code das Projekt hat, bei dem man mitarbeitet, da man üblicherweise ja nicht alle kennt, geschweige denn im Kopf hat. Man ist dann ja lediglich User von anderen Komponenten, welche "zufälligerweise" im gleichen Projekt sind. Das ist dann das gleiche, ob ich eine externe Bibliothek benutzt.. Man kann eh nicht mehr als ein paar (10)-Tausend Zeilen im Kopf haben, was auch in Hobbyprojekten relativ leicht erreicht wird. Irgendwann benutzt man lediglich noch die Schnittstellen, die man mal am Anfang geschrieben hat. Ich bin sogar der Meinung, dass teilweise Hobbyprojekte bessere Design haben, als solche Millionen Zeilen Projekte, weil man sich wirklich Zeit nehmen kann für das Design und weder Druck, noch Zeitmangel hat und auch gut mal das gesamte Design umkremplen kann, wenn man möchte.
-
Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden.
Ich bin sogar der Meinung, dass teilweise Hobbyprojekte bessere Design haben, als solche Millionen Zeilen Projekte,
Merkst du etwas??
-
Ich arbeite an einem C++ Projekt mit mehr als 1 Millionen Zeilen und C++ ist bei uns nicht das große Problem. Die Komplexität und teilweise schlechtes und altes Desgin sind die Probleme. Aber die Probleme gibts glaub ich bei jeder SW die über Jahre wächst.
-
drakon schrieb:
Aber so die Grundaussage von dem Thread im anderen Forum war ja, dass C++ nicht für grosse Software Projekte geeignet seie. Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden.
wenn du in dem forum 'nen account hast, dann poste mal diesen link: http://www.mistybeach.com/articles/WhyIDontLikeCPlusPlusForLargeProjects.html
-
ppppppppppppppp schrieb:
Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden.
Ich bin sogar der Meinung, dass teilweise Hobbyprojekte bessere Design haben, als solche Millionen Zeilen Projekte,
Merkst du etwas??
Das ist eine Meinung, kein Faktum, wenn du das ansprechen willst. Es kann sein, dass ich mich irre und dann kann mir das jeder mit Fakten aufzeigen, dass ich das tue. Wenn mir jemand aufzeigen kann, WARUM ein "kleines" Projekt kein besseres Design haben KANN, als ein grosses, dann soll er das tun und dann ändere ich meine Meinung vielleicht, aber solange das niemand tut, oder ich die Erfahrung selbst mache, glaube ich daran.
Oder auf was willst du hinaus?
-
Ich arbeite beruflich mit an einer Software, die mehrere Millionen Zeilen umfasst. Ich denke man kann das Design einer solchen Software einfach nicht mit einem kleinen 10k-Zeilen-2Mann-Projekt vergleichen:
In einem Mammut-Projekt gibt es mehrere Designer und Architekten, lediglich das ganz grobe Design ist abgestimmt, auf Skalen, die jenseits dessen sind, was das 10k-Zeilenprojekt je umfassen wird. Auf so großen Skalen ist es einfach irgendwann nicht mehr wirtschaftlich bei größeren Anforderungen ein entsprechendes Redesign vorzunehmen, statt dessen muss angeflickt werden und die Teildesigns gehen an einigen Stellen Kompromisse ein, die es in einem Kleinprojekt icht braucht. Viele Entwickler und Designer arbeiten an vielen Teilprojekten, so dass sich die Designs der einzelnen Teile grundlegend unterscheiden können, was einen unregelmäßigen Eindruck vermittelt. Gerade bei nach außen hin sich schnell entwickelnder Software liegen die innersten Kernkomponenten mmernoch in der Größenordnung des Kleinprojektes, aber es fasst sie niemand an, weil sie ihren Zweck erfüllen, auch wenn sie durch 10 Jahre altes Design altbacken scheinen. Es ist nunmal so, dass bei der Skalierung um den Faktor 1000 nicht die Zeilen 1000mal so lang werden, auch nicht die Funktionen oder Klassen, sondern die Anzahl der Funktionen, Klassen und Module sich vergrößert, was genau die Ebene ist, auf der Design stattfindet. Man kann ein Bilderbuchdesign, dass im State-of-the-Art Buch mit 100 Zeilen skizziert wird, vielleicht auf ein 10k Zeilen Projekt übertragen. Man kann es aber nicht auf ein 10M Zeilen Projekt skalieren.
-
;fricky schrieb:
^^
Es ist irgendwie alles zuviel des Guten, es ist kein Anfänger Buch, es ist kein Style-Guide für Fortgeschrittene, es ist auch keine Reference. Gut gemeint, aber nicht gut gemacht.
P.S.: Man könnte "Zuviel des Guten" auch über C++ selbst sagen. In diesem Sinn passt das Buch zur Sprache und dessen Schöpfer.http://www.amazon.de/product-reviews/0321543726/ref=cm_cr_dp_all_summary/275-9852612-0662225
*frech grins*
Die Rezension ist wohl kaum zitierwürdig. Sehr schlechtes Deutsch, er kritisiert, dass in dem Buch Vor- und Nachteile der Herangehensweisen diskutiert werden (will er ein Buch lesen oder ein ewig langes Quellcodelisting?), usw. usf.
-
;fricky schrieb:
drakon schrieb:
Aber so die Grundaussage von dem Thread im anderen Forum war ja, dass C++ nicht für grosse Software Projekte geeignet seie. Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden.
wenn du in dem forum 'nen account hast, dann poste mal diesen link: http://www.mistybeach.com/articles/WhyIDontLikeCPlusPlusForLargeProjects.html
Der typ der den Artikel geschrieben hat, hat keine ahnung. Labert wieso er "C++" nicht mag, aber benutzt C.
-
jesus was black schrieb:
;fricky schrieb:
drakon schrieb:
Aber so die Grundaussage von dem Thread im anderen Forum war ja, dass C++ nicht für grosse Software Projekte geeignet seie. Worauf wir beide leider nicht aus Erfahrung reden können, dass es geht, darum hoffe ich auf Leute, die sich tatsächlich auch im Millionen Zeilen Bereich befinden.
wenn du in dem forum 'nen account hast, dann poste mal diesen link: http://www.mistybeach.com/articles/WhyIDontLikeCPlusPlusForLargeProjects.html
Der typ der den Artikel geschrieben hat, hat keine ahnung. Labert wieso er "C++" nicht mag, aber benutzt C.
wo benutzt er C?
-
pumuckl schrieb:
Ich arbeite beruflich mit an einer Software, die mehrere Millionen Zeilen umfasst.
was macht diese software, wenn ich mal ganz frech fragen darf?
-
jesus was black schrieb:
Der typ der den Artikel geschrieben hat, hat keine ahnung.
Naja, er schliesst aufgrund von "erfahrenen" C++-Programmierern, die keine Punkt-Klasse schreiben können, darauf, dass C++ zwangsläufig kompliziert und zu gefährlich für grössere Projekte ist.
This really isn't a C++ issue. Failing to initialize pointers in C structs is equally bad. The new problems are: [...]
Testing for NULL before calling delete is unnecessary (since 'delete 0' is defined to be harmless), but causes no damage other than slowing down the program slightly.Eindeutig ein schlimmes Problem, das ja in C mit
free()
ganz anders war.NamedPoint now trashes the heap if any NamedPoint objects are passed by value (like, for example, returning a NamedPoint object from a function). This is because the copy constructor that C++ gives us for free copies the 'name' pointer, but does not copy the contents. Now, calling the destructor on the first shared 'name' returns the memory to the heap (although the second copy will continue to use it, EVEN IF THE MEMORY GETS ALLOCATED TO SOME OTHER USE). Calling the destructor on the second shared 'name' probably corrupts the heap by deleting memory that was not, at that time, allocated (the second delete isn't required to corrupt the heap, but this is how most C++ heap managers work).
It has similar problems with the default assignment operator.Auch das kommt natürlich erst mit C++, da man in C viel ausgereiftere Kopiersemantiken hat und beliebig Objekte mit Zeigern per Value herumschieben kann, ohne jemals Probleme zu haben. Natürlich ist es auch realitätsnah, für jede kleine Klasse besitzende Zeiger hinzuzufügen und möglichst zu vergessen, sinnvolle Semantiken zu implementieren.
One solution is to do a lot more stuff with things like STL string objects and generally try to hide the heap allocation. The auto_ptr<> and similar classes help here, too. But they only help. The fundamental problem still remains -- it is too easy to write subtly wrong code and the language is littered with booby-traps.
Äh ja. Es ist einfach, Fehler zu machen, wenn man sichs einfach macht. Wenn man wirklich erfahren und nicht nur "erfahren" ist, hat man kaum noch Probleme, weil man seine Punkt-Klasse entweder mit
std::string
oder mit sinnvollen Memberfunktionen versieht. Aber es stimmt natürlich - solche Dinge muss man in C++ wirklich lernen, wobei man in anderen Programmiersprachen bereits vieles durch Herumprobieren und ohne grosses Hintergrundwissen anwenden kann. Aber ob das immer ein Vorteil ist...