C++ und C, Unterschied


  • Mod

    Bitte ein Bit schrieb:

    Ich lege dir mal alle meine mikrooptimierten Programme vor, du erklärst mir dann, wie ich die Komplexitätsklasse hätte verbessern können?

    Was soll das? 😡

    Es soll dich darauf aufmerksam machen, dass die Anmerkung, mal eben so die Komplexitätsklasse zu verbessern, Unsinn ist, wenn es um ein Argument gegen Mikrooptimierung geht.

    Wenn du so weit bist, dass du optimierst, dann liegt die Auswahl des Algorithmus schon lange hinter dir und natürlich hat man den allerbesten Algorithmus gewählt, man ist ja nicht doof. Aber der soll natürlich auch noch möglichst schnell laufen. Daher Optimierung.



  • Für mich ist C++ im Gegensatz zu C eine Mehrparadigmensprache auf Systemebenen. Wenn es nicht anderes Sinn macht versuche ich mich auch in C oder auch C++. Spaß machen aber beide Sprachen nicht wirklich, es gibt einfach zu viel was einen von der eigentlichen Arbeit(Implementieren von Algorithmen, etc,) ablenkt.

    Am meisten Spaß macht mir derzeit Java mit Eclipse, da habe ich ganz wenig mit der Sprache selbst zu kämpfen und kann mich auf das Problemlösen konzentrieren.

    Aber das war ja auch nicht die Frage und fast jeder Entwickler programmiert eh mit unterschiedlichen Sprachen. Ich persönlich habe bis jetzt Kontakt gehabt mit: C, C++, PHP, Javascript, Python, Bash und Java.

    Hochoptimierte Software wurde noch nie verlangt und ich habe auch keinen Kollegen bis jetzt kennen gelernt, der so etwas abliefern musste. In meine Augen sind so etwas absolute Spezialfälle.



  • B4ndit schrieb:

    Für mich ist C++ im Gegensatz zu C eine Mehrparadigmensprache auf Systemebenen. Wenn es nicht anderes Sinn macht versuche ich mich auch in C oder auch C++. Spaß machen aber beide Sprachen nicht wirklich, es gibt einfach zu viel was einen von der eigentlichen Arbeit(Implementieren von Algorithmen, etc,) ablenkt.

    C++ hat mehr Algorithmen, als man in einem normalen Programm braucht. 🙄



  • Nathan schrieb:

    C++ hat mehr Algorithmen, als man in einem normalen Programm braucht.

    C++ hat sehr viele Algorithmen, die kein normales Programm braucht, aber es fehlen Algorithmen, die viele normale Programme brauchen würden.

    Trifft nicht nur auf Algorithmen, sondern auch auf Container und das IO-Gedöns zu.



  • Nathan schrieb:

    B4ndit schrieb:

    Für mich ist C++ im Gegensatz zu C eine Mehrparadigmensprache auf Systemebenen. Wenn es nicht anderes Sinn macht versuche ich mich auch in C oder auch C++. Spaß machen aber beide Sprachen nicht wirklich, es gibt einfach zu viel was einen von der eigentlichen Arbeit(Implementieren von Algorithmen, etc,) ablenkt.

    C++ hat mehr Algorithmen, als man in einem normalen Programm braucht. 🙄

    Die meisten C++-"Algorithmen" sind doch völlig triviale Schleifen. Deine Reaktion geht auch völlig an der Kritik von B4ndit vorbei, nämlich dass C++ die Aufmerksamkeit vom Wesentlichen ablenkt. Und damit hat er recht.



  • Hört hört...

    Dann mach doch Visual Basic und werd glücklich.



  • @Bitte ein Bit In meinem Fall ist es der SMO-Algorithmus zur Maximierung von quadratischen Problemen mit Box-Constraints. Da man in dem Algorithmus fundamental Speicherbandbreitenlimitiert ist, kann man dort durch Parallelisierung mehr als linearen Speedup erreichen(n cores => >n fach schneller). Die Schleife die ich da optimiert habe, war nicht wirklich teuer, durch Parallelisierung hat man da alleine nicht viel gewinnen können. Das Einzige was man gewann war, das durch das konsequente Teilen des Problems auf n Kerne der L1+L2 Cache eines Kerns in der Schleife nicht geflusht wurde. Das unnötige malloc mit dem cache miss tat dann schon weh. Mit VLA wäre das ein no-brainer gewesen, jetzt drufte ich mir überlegen, wie ich das pre-allokieren kann. Am Ende wurde es ein normales Array auf dem Stack mit recht großzügiger Dimensionierrung. Naja, muss ich mit leben.

    OpenMP selbst kostet fast nichts, das ist wirklich fix implementiert. Es ist ja auch dafür gedacht, relativ einfache Schleifen zu parallelisieren. Keine Panik, wir Benchmarken schon unsere Programme 😉



  • µ schrieb:

    Nathan schrieb:

    B4ndit schrieb:

    Für mich ist C++ im Gegensatz zu C eine Mehrparadigmensprache auf Systemebenen. Wenn es nicht anderes Sinn macht versuche ich mich auch in C oder auch C++. Spaß machen aber beide Sprachen nicht wirklich, es gibt einfach zu viel was einen von der eigentlichen Arbeit(Implementieren von Algorithmen, etc,) ablenkt.

    C++ hat mehr Algorithmen, als man in einem normalen Programm braucht. 🙄

    Die meisten C++-"Algorithmen" sind doch völlig triviale Schleifen. Deine Reaktion geht auch völlig an der Kritik von B4ndit vorbei, nämlich dass C++ die Aufmerksamkeit vom Wesentlichen ablenkt. Und damit hat er recht.

    Das kann ich jetzt aber nicht so ganz nachvollziehen. Bin ich betriebsblind oder seid ihr noch nicht fit in C++? Anfangs war ich trotz gesammelter Programmiererfahrung in anderen Sprachen von C++ überwältigt und wusste nicht, wie ich an was Design-technisch rangehen sollte. Aber das legt sich halt mit der Zeit, wenn dann die Sprache besser sitzt. Wo lenkt dich C++ denn gegenüber von C vom Problem ab? Vielleicht hast Du Nathan auch nicht ganz verstanden? Ich fühle mich z.B. vom Problem abgelenkt, wenn ich mir erst irgendwelche Datenstrukturen und Algorithmen-Bausteine selbst basteln muss, wenn ich mich darauf konzentrieren muss, diverse Resourcen manuell wieder freizugeben. Ich weiß nicht, wie repräsentativ das ist, was ich da für C Code gesehen habe, aber mir kommt das oft so vor, als würde da ständig das Rad neuerfunden. C an sich bietet kaum was an und anscheinend haben auch wenige Lust dazu, sich von anderen Bibliotheken abhängig zu machen. Vielleicht liegt es aber auch daran, dass C, was generische Programmierung angeht, schwach ist, so dass deswegen sich viele ihre Räder selbst nachbauen. Nee, ich denke nicht, dass ich betriebsblind bin. Ich empfinde C als eine eher unproduktive Sprache. Ich habe einfach keine Lust, mich bei der Wahl der Sprachmittel so beschränken zu müssen. Und ich nutze gerne die Dinge aus der C++ Standardbibliothek. Ich nutze gerne RAII aus. Ich mag Typsicherheit. Und ich mag nicht Dinge neu erfinden, die mir schon in der Standardbibliothek geboten werden. Das wäre doch verschenkte Zeit und lenkt ab.



  • Player894 schrieb:

    Kann mir das bitte jemand einmal genau aufdröseln, was man jetzt wie machen kann, wie die Sprachen [C und C++] zusammenhängen etc.?

    Viel zu unscharf, die Frage. Du kannst jetzt nicht erwarten, dass dir jemand dazu einen 3-Seiten-Aufsatz präsentiert. Wenn du konkrete Fragen hast, stell' sie.



  • @krümel
    Nun, ich weiß nicht warum Du jetzt C++ C gegenüberstellst. Davon war doch garnicht die Rede und hätte ich nur die Wahl zwischen C und C++, würde ich letzteres bedingungslos vorziehen.

    B4ndit schrieb, dass ihm beide Sprachen keinen Spaß machen und er mit Java sehr viel direkter zum wesentlichen Problemlösen kommen kann. Ich bin zwar kein Javaianer aber in C# merke ich es ebenfalls. C++ ist sicherlich keine schlechte Sprache, aber sie bürdet dem Programmierer sehr sehr viel mehr Randprobleme auf die es zu beachten gilt.
    Und gerade in perfektionsgetriebenen Foren sieht man immer wieder schön, wie die Beschätigung mit C++ zum reinen Selbstzweck verkommt.



  • Ok, da hat mich wohl das Thema vom Thema abgebracht. ^^

    C# ist glaub'ich ganz nett.


Anmelden zum Antworten