Wieviel Prozent von C++ muss man wirklich können um ordentliche C++ Programme zu schreiben?



  • Und wie lange dauert es etwa, diese Prozentzahl zu erreichen, wenn man am Ball bleibt?

    C++ bietet ja oftmals mehr Sprachfeatures als man in der Praxis dann wirklich braucht. Was ist also wirklich wichtig?



  • Keiner weiß wieviel 100% von C++ sind.



  • undefined... schrieb:

    Keiner weiß wieviel 100% von C++ sind.

    Unsinn, der Sprachumfang von C++ ist definiert durch die aktuelle C++ Spezifikation.
    Das sind 100 %, mehr gibt's nicht.



  • Du meinst den C++ Standard? Kannst ihn ja mal auswendiglernen, aber C++ kannst du deswegen noch lange nicht. Der C++ Standard ist auch nicht ohne Fehler http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html und wie man richtig effizient mit C++ programmiert steht da auch nicht drin, sonst gäbe es wohl kaum so betitelte Bücher.



  • Prozent schrieb:

    Wieviel Prozent von C++ muss man wirklich können um ordentliche C++ Programme zu schreiben?



  • Prozent schrieb:

    C++ bietet ja oftmals mehr Sprachfeatures als man in der Praxis dann wirklich braucht. Was ist also wirklich wichtig?

    Aha, so so. Von wessen Praix redest du denn?

    PS: Im übrigen bietet C++ nur einmal, nämlich immer, seine Sprachfeatures an ...



  • Ich lerne seit 6 Jahren C++(mit Unterbrechungen) und kann immer noch nicht überall mitreden. Liegt aber auch daran, dass ich vieles gar nicht brauche für meine Miniprojekte.

    Die 100 Regeln was man alles machen kann und sollte, lasse ich einfach weg sonst würde ich wohl bis heute nicht ein Programm geschrieben haben. Auch mixe ich C mit C++ wenn mir danach ist und erfinde auch das Rad neu wenn mir danach ist.

    Kurz, fang einfach an zu programmieren. Wenn dir was fehlt lerne es dazu, wenn dir nix fehlt hast du viel richtig gemacht.

    Ich bezweifle, dass ich jemals richtig C++ lernen werde. Denn ich sattle gerade voll auf Android und Linux um, da ich hier die Zukunft der nächsten Jahre sehe. Das heißt erst mal Java und OpenGL ES und dann schaue ich mir auch noch C++ mit dem NDK an. Microsoft sehe ich in Zukunft immer weiter absaufen. Windows8 ist der IE der OS und über die neue XBox wird sich auch keiner freuen. Das kann nur den Bach runter gehen, wenn sie nicht schnell handeln.



  • Wieviel Prozent von C++ muss man wirklich können um ordentliche C++ Programme zu schreiben?

    Auf jeden Fall reicht 1% um Anfängerbücher über C++ zu schreiben. 😃



  • Prozent schrieb:

    Das sind 100 %, mehr gibt's nicht.

    Natürlich gibts mehr. Wenn du die Sprach- und Bibliotheksfeatures kennst, kannst du noch lange keine ordentlichen Programme schreiben. Du musst vieles über Softwareentwicklung im Allgemeinen sowie C++-spezifische Techniken und Idiome lernen. Diese wurden erst mit der Zeit entdeckt, guter C++-Code von 2000 und 2010 sieht komplett anders aus.

    B4andit schrieb:

    Die 100 Regeln was man alles machen kann und sollte, lasse ich einfach weg sonst würde ich wohl bis heute nicht ein Programm geschrieben haben. Auch mixe ich C mit C++ wenn mir danach ist und erfinde auch das Rad neu wenn mir danach ist.

    Die Regeln, wie sie du nennst, brauchen zwar einige Zeit um sie zu lernen. Aber sie führen dazu, dass du besseren Code schreibst, weniger Entwicklungszeit benötigst, und schliesslich mehr Programme entwickelst. Alleine was z.B. RAII an Zeit einspart...



  • Eine Sache ist es, C++ zu kennen. Aber selbst wenn Du 100% C++ kennst, ist das noch kein Garant, dass Du ordentliche Programme schreiben kannst. C++ selbst ist nur das Werkzeug. Mir sind schon Leute begegnet, die durchaus C++ können, aber deren Programme möchte ich nicht warten müssen oder gar in der Produktion verantworten.

    Programme zu entwickeln hat etwas von Kunst. Man muss Phantasie haben und kreativ sein um gute Programme zu schreiben. Und wie der Künstler auf der einen Seite natürlich wissen muss, mit welchem Pinsel er welchen Strich machen kann, muss er daneben eben auch überlegen, welchen Strich er wie haben möchte. Und je mehr er mit den Pinseln machen kann, desto mehr Möglichkeiten hat er, seiner Kreativität freien lauf zu geben. So in etwa steht das mit der Programmierung.



  • Ist die Frage, ob du architekturelle Fragen C++ oder Programmierung allgemein unterordnest. Nehmen wir Mal an, dass das nicht zu C++ an sich gehört. Nehmen wir ferner an, dass Du mit dem C++-Wissen eine notwendige Bedingung meinst, diese allerdings nicht die einzige notwendige Bedingung ist (weil man beispielsweise auch noch programmierungs-spezifisches Wissen benötigt, das man aber nicht direkt C++-Wissen zuordnen würde).

    Dann denke ich, dass Du ziemlich wenig Wissen brauchst. Templates sind außerordentlich hilfreich, man kommt aber auch sehr gut ohne aus, es ist dann eben mehr Arbeit. Polymorphie sollte man natürlich im Griff haben, ohne lässt sich wohl nur wenig bewerkstelligen. Und RAII/RRID ist auch ein Grundkonzept, ohne dass es sich nicht so gut leben lässt. Containerwissen ist auch wichtig, aber man muss ja nicht alles so ganz genau wissen... wenn man den vector beherrscht, ist das meiste geschafft.

    Für single-threaded-Programme reicht das also vermutlich. Keine Ahnung, wie viel sonst noch im Standard steht. Für dieses Wissen benötigt man zum lernen unterschiedlich lange, je nach Programmiervorkenntnissen vielleicht nur wenige Monate, komplett ohne möglicherweise Jahre. Aber auch hier ist komplett vernachlässigt, wie viele Stunden man pro Monat voraussetzt. Ich würde bei meiner Schätzung vermutlich 20-80 Stunden pro Monat anrechnen.



  • ca. 15 Prozent



  • B4andit schrieb:

    Das heißt erst mal Java und OpenGL ES und dann schaue ich mir auch noch C++ mit dem NDK an.

    LOL, Java = Just Another Vulnerability Added



  • Prozent schrieb:

    Und wie lange dauert es etwa, diese Prozentzahl zu erreichen, wenn man am Ball bleibt?

    Ich denke, man sollte etwa 75% erreicht haben, bevor man sich ernsthaft mit Softwareentwicklung beschäftigt. Diese 75% sind dann aber auch der alltägliche Umfang, den man so braucht und meines erachtens leicht zu erlernen.
    Für Spielereien reicht durchaus auch weniger, aber ist eben nicht "ernsthaft".

    Hier kannst Du je nach Vorkenntnissen und Vorstellungsvermögen binnen weniger Wochen ankommen und produktiv damit arbeiten. Das schließt dann aber eben auch ein paar Wochen ernsthafte Beschäftigung damit ein und nicht einmal die Woche 'ne Stunde oder so...

    Der Rest ist eher das Zeug, dass man im Ausnahmefall benötigt, wenn man nicht gerade regelmäßig im Ausnahmebereich programmiert. Ich programmiere jetzt seit bald 20 Jahren C++ und würde mich bei 90% sehen, vorrangig, weil ich mit C++11 auch wieder neues dazugekommen ist und ich nicht sicher abschätzen kann, was ich davon noch nicht gesehen habe.

    Wir reden hier aber von C++ - nicht vom Programmieren allgemein. Hier geht es um Erfahrung und die sammelt man halt immer weiter. Meiner Erfahrung nach, entwickelt sich die Welt der Informatik auch schneller in die Breite als ich hinterherkomme, die Bereiche zu überblicken.
    Das gehört aber durchaus zum Reiz der Programmierung: Es gibt immer wieder was Neues.

    C++ ist wirklich fähig. Bis man alles mal selbst ausprobiert und erfahren hat, da sollte man durchaus viel Zeit für einrechnen.

    Prozent schrieb:

    C++ bietet ja oftmals mehr Sprachfeatures als man in der Praxis dann wirklich braucht. Was ist also wirklich wichtig?

    Wenn Du Dir Java-Entwickler anschaust, die bekommen ihre Probleme ja in der Regel auch gelöst. Das Aufrufen von Funktionen eines Frameworks führt zu nutzbaren Programmen. Für viele Probleme reicht das. Vielleicht ist das also das wichtigste.

    Ich persönlich halte es für wichtig, dass man Probleme lösen kann, wo keine fertige Lösung existiert. Und das möglichst auch noch "schön", also ohne sichtbare Hacks und performant.
    Da sind wir dann aber schnell wieder im Bereich von Jahren.



  • Unterschätze mal die Entwicklung für Android nicht. Ich knie mich da jetzt voll rein und lassen Microsoft komplett hinter mir, habe es noch nicht mal mehr auf der Platte. Ich kann mich auch irren, aber ich denke schon dass Android eine große Zukunft hat.



  • B4andit schrieb:

    Ich lerne seit 6 Jahren C++(mit Unterbrechungen) und kann immer noch nicht überall mitreden. Liegt aber auch daran, dass ich vieles gar nicht brauche für meine Miniprojekte.

    Die 100 Regeln was man alles machen kann und sollte, lasse ich einfach weg sonst würde ich wohl bis heute nicht ein Programm geschrieben haben. Auch mixe ich C mit C++ wenn mir danach ist und erfinde auch das Rad neu wenn mir danach ist.

    Kurz, fang einfach an zu programmieren. Wenn dir was fehlt lerne es dazu, wenn dir nix fehlt hast du viel richtig gemacht.

    Ich bezweifle, dass ich jemals richtig C++ lernen werde. Denn ich sattle gerade voll auf Android und Linux um, da ich hier die Zukunft der nächsten Jahre sehe. Das heißt erst mal Java und OpenGL ES und dann schaue ich mir auch noch C++ mit dem NDK an. Microsoft sehe ich in Zukunft immer weiter absaufen. Windows8 ist der IE der OS und über die neue XBox wird sich auch keiner freuen. Das kann nur den Bach runter gehen, wenn sie nicht schnell handeln.

    Danke, die erste brauchbare Antwort.

    Nathan schrieb:

    Wieviel Prozent von C++ muss man wirklich können um ordentliche C++ Programme zu schreiben?

    Auf jeden Fall reicht 1% um Anfängerbücher über C++ zu schreiben. 😃

    Danke auch an dich.

    Genau das habe ich nämlich vor.
    Ich möchte C++ vermitteln können und daher ein Buch für Anfänger schreiben, so ganz nach dem Vorbild der C++ Bücher von Jürgen Wolf.
    Ich werde also etwa diese 1 % lernen und dann meine super C++ Bücher schreiben, so wie ihr mir hier empfohlen habt.



  • Eisflamme schrieb:

    Ist die Frage, ob du architekturelle Fragen C++ oder Programmierung allgemein unterordnest. Nehmen wir Mal an, dass das nicht zu C++ an sich gehört. Nehmen wir ferner an, dass Du mit dem C++-Wissen eine notwendige Bedingung meinst, diese allerdings nicht die einzige notwendige Bedingung ist (weil man beispielsweise auch noch programmierungs-spezifisches Wissen benötigt, das man aber nicht direkt C++-Wissen zuordnen würde).

    Dann denke ich, dass Du ziemlich wenig Wissen brauchst. Templates sind außerordentlich hilfreich, man kommt aber auch sehr gut ohne aus, es ist dann eben mehr Arbeit. Polymorphie sollte man natürlich im Griff haben, ohne lässt sich wohl nur wenig bewerkstelligen. Und RAII/RRID ist auch ein Grundkonzept, ohne dass es sich nicht so gut leben lässt. Containerwissen ist auch wichtig, aber man muss ja nicht alles so ganz genau wissen... wenn man den vector beherrscht, ist das meiste geschafft.

    Für single-threaded-Programme reicht das also vermutlich. Keine Ahnung, wie viel sonst noch im Standard steht. Für dieses Wissen benötigt man zum lernen unterschiedlich lange, je nach Programmiervorkenntnissen vielleicht nur wenige Monate, komplett ohne möglicherweise Jahre. Aber auch hier ist komplett vernachlässigt, wie viele Stunden man pro Monat voraussetzt. Ich würde bei meiner Schätzung vermutlich 20-80 Stunden pro Monat anrechnen.

    Danke auch deine Antwort ist sehr hilfreich.

    Allerdings brauche ich aufgrund der Leistungsanforderungen die Leistung der anderen CPUs, Threading gehört also dazu.



  • Gibt es bei dem Termindruck überhaupt ein ordentliches C++ Programm mit nennenswerten LOC?



  • B4andit schrieb:

    Gibt es bei dem Termindruck überhaupt ein ordentliches C++ Programm mit nennenswerten LOC?

    Die Frage ist - glaube ich - nicht Sprachabhängig.

    In dem Moment, wo eine Deadline von Anfang an drückt, macht man häufig den Fehler in Aktionismus zu verfallen. Das ist aber ein Fehler, der häufig im Vertrieb gemacht wird, wo ein "Experte" weiß "Wir haben da doch schon was, das ist zwar was anderes, aber der Kunde will Geld loswerden, das nehmen wir mit."
    Dann kommt der Vorgesetzte in die Entwicklung und sagt: "Wir haben da doch schon was, das muss man doch nur umarbeiten." gefolgt von "Wir haben dem Kunden versprochen, das in drei Monaten zu liefern."
    Als Variante davon habe ich mal erlebt, dass eine Firma ein ZIP Archiv geliefert hat, mit einem Programm, das nicht startete. Die Lieferung war pünktlich, die Rechnung konnte im richtigen Quartal gebucht werden, anschließend folgten Bugfixes - man könnte auch sagen, man begann das Programm zu entwickeln. 😉

    Diese Methode hat sich in meiner Berufserfahrung zu drei Lehren entwickelt: Erstens: Kein Mensch interessiert sich für ordentliche Programme, aber wenn sie nicht ordentlich sind, sind die depperten Entwickler schuld, die dann schnellstmöglich Patches nachreichen sollen und zweitens: Es ist erstaunlich, was alles (auch zeitlich) machbar ist, obwohl der Entwickler es für unmöglich hält, wenn der "Experte" im Vertrieb es schon verkauft hat.
    Achja... und drittens: Das eine Projekt, was der "Experte" im Vertrieb verkauft hat und auch nach 10 Jahren Entwicklungszeit unmöglich vollständig und vertragsgemäß umzusetzen ist, macht Millionenverluste (irgendwer muss die Entwickler ja auch bezahlen) und die Strafzahlung frisst einen Großteil der Rücklagen auf, die mit viel Betriebsamkeit und Hektik in den letzten 10 Jahren von den anderen Entwicklern aufgebaut wurden.

    Meiner Erfahrung nach ist C++ nicht das Problem. 🙂



  • Ja, da hast du natürlich Recht. Das hat nix mit C++ zu tun. Ich habe auch ein paar Jahre als Entwickler gearbeitet und bis auf einmal waren nur Projekte dabei, so wie du sie beschrieben hast.

    Das war auch mit ein Grund warum ich nicht mehr für Firmen arbeite die Software entwickeln und verkaufen. Wenn, dann arbeite ich nur noch an Inhouse-Lösungen. Ich habe keine Lust mehr immer das "Ich bin schuld, wenn es nicht rechtzeitig und gut fertig ist" T-Shirt zu tragen.

    Mir tun die armen Schweine Leid, die sich so was jeden Tag antun müssen.


Anmelden zum Antworten