Wie beginnen? C oder C++



  • 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...


Anmelden zum Antworten