Konzept von .NET und C++



  • inc7 schrieb:

    Vor kurzem hab ich angefangen mich intensiver mit C++ zu befassen. Mir ist schnell aufgefallen, dass die Punkte das .NET mitbringt oder so attraktiv/anziehend (Leichtigkeit, klares Design/Konzept, siehe oben) nicht in C++ vertreten ist oder nicht so präsent sind. Entweder fällt mir das nicht auf (weil ich noch Anfänger bin) oder es liegt wohl daran, dass C++ noch den Altbacken von C-Zeiten mit sich bringt.

    Das wird wahrscheinlich sehr schwer zu erörtern sein, da wir hier einen bräuchten, der sowohl in C++ als auch in C# + .NET fit ist. Ich kenne mich mit dem .NET-Kram und C# nicht aus. C# stelle ich mir als Java-Klon mit ein paar netten Erweiterungen (Operator Overloading, Benutzerdefinierte "Value Types", pass-by-reference, etc) vor.

    Dass die C++ Standardbibliothek recht spartanisch und klein ist im Vergleich zu dem, was man bei Java oder C# als Standardbibliothek serviert bekommt, bezweifelt keiner.

    inc7 schrieb:

    C++ ansich ist vom Kern her eine leichte Programmiersprache. C++ beabsichtigt Erneuerungen (wie z.B. C++0x) nicht direkt mit neuen Keywords zu ermöglichen, sondern mit bereits bestehenden Mitteln, die C++ On-Borad mitbringt (Beispiel wäre das auto-Keyword in C++0x).

    "auto" ist hier kein gutes Beispiel eigentlich. Zumindest nicht dafür, was ich glaube, was Du sagen wolltest. C++ ist low-level-technisch mächtig genug, dass man sich viele Dinge, die es in anderen Sprachen als Sprachkern-Feature gibt, als reine C++ Bibliothek implementieren kann. Warum sollte man dafür extra Features im Sprachkern einbauen, wenn man es per Bibliothek genauso gut lösen kann? "auto" ist schon ein neues Sprachkern-Feature.

    inc7 schrieb:

    Dennoch sehe ich kein klares Konzept in der STL. Es hat nicht sowas wie einen roten Faden oder klare Linien.

    Ich denke, dieses Gefühl kommt daher, dass Du noch nicht besonders vertraut mit der Standardbibliothek bist.

    inc7 schrieb:

    Mich würde es interessieren wie ihr es seht. Sehe ich da was mit völlig falschen Augen? Warum ist C++ nicht so .NET-like (im Bezug auf die Architektur)

    Ohne genau zu wissen, was du mit ".NET-like" meinst, kann man das sicherlich nicht zu Deiner Zufriedenheit beantworten. Es ist auch nicht gerade förderlich dass Du hier eine Sprache (C++) mit einem Framework (.NET) vergleichen willst.

    inc7 schrieb:

    und warum machen es die die C++-Entwickler immer so kompliziert (Beispiel locale-Header)? An .NET sieht man die Leichtigkeit/Einfachheit.

    Ich kenne mich leider weder mit dem locale-Zeugs noch mit ".NET" aus.

    Stelle sicher, dass Du die Sprache C++ nicht unterschätzt, was die Unterschiede zu Dir bekannten Sprachen angeht. Ein guter C++ Stil ist schon etwas sehr eigenes. Den solltest Du Dir erstmal angewöhnen. Nachdem Du die Sprache kennengelernt hast und weißt, was sie alles so kann, kannst Du Dir das Buch "Effective C++" besorgen. Damit lernst Du, wie du die Sprache effektiv einsetzen kannst, wie schon der Name treffend vermittelt. Wenn Du dann immer noch kein "Konzept" der Standardbibliothek erkennen kannst, könntest Du ja mal in "The C++ Standard Library - A Tutorial and Reference" reingucken.



  • An den Programmiersprachen hat sich doch seit den 1950er Jahren nichts geändert. Alle haben Bedingungen, Schleifen, Aufrufe usw.

    Dann haben Sprachen unterschiedliche Paradigmen, wo sie sich unterscheiden können. Also Procedural, Objektorientiert, Funktional usw.

    Was der grundlegende Unterschied zwischen .NET (und seinen Sprachen) und C++ für mich ist, ist die Resourcenverwaltung! Ob ich jetzt die Sprache C++ oder C# programmiere, ist eigentlich unerheblich. Aber für mich ist die Resourcen-Handhabung nicht egal. Das ist der Hauptunterschied zwischen den beiden, in meinen Augen.



  • rapso schrieb:

    c#/.NET wurde nicht von grund neu entworfen.
    Als Microsoft gegen SUN im streit um die Java sprache (bzw J++) verlor, hat MS die Visual Basic Runtime in .NET umbenannt und das j++ compiler front-end mit dem VB compiler back-end verheiratet und ziemlich genau ein jahr spaeter auf den markt gebracht.

    Sry, aber da würd ich jetzt wirklich gern eine Quelle sehen, denn das hat absolut mit Nichts zu tun was ich je zu wissen glaubte. Nichtmal ansatzweise...

    Das alte VB basierte afaik auf ActiveX/COM und ist mit VB.Net in keiner Weise vergleichbar. VB.Net ist am Ende des Tages nichts anderes als eine alternative Syntax für C# mit gewissen Ähnlichkeiten zum alten VB und sein Zweck war es, den damals sehr zahlreichen VBlern den Umstieg auf .NET schmackhaft zu machen.
    .Net ist vielleicht im Geiste der Nachfolger von VB, aber zusammen mit C# von Grund auf neu entwickelt.



  • dot schrieb:

    Sry, aber da würd ich jetzt wirklich gern eine Quelle sehen, denn das hat absolut mit Nichts zu tun was ich je zu wissen glaubte. Nichtmal ansatzweise...

    Ja, würde ich auch gerne sehen. Zumal es in VS 2002 und 2003 ja noch J#.net als Nachfolger von J++ gab.

    An C# waren, neben seinem Erfinder, noch einige andere vorherige Delphi-Entwickler beteiligt.



  • nn schrieb:

    An C# waren, neben seinem Erfinder, noch einige andere vorherige Delphi-Entwickler beteiligt.

    Redest du greade von Anders Hejlsberg, der von Borland nach Microsoft gegangen ist, denn andere Leute waren nie in Erwähnung?



  • Ja,

    er arbeitet mit seinem Team ja gerade am Projekt Roslyn, das den bisherigen VB und C#-Compiler ersetzen soll:
    http://channel9.msdn.com/Tags/anders+hejlsberg
    D.h. die beiden bisher getrennten Codelinien von VB und C# werden erst jetzt zusammengeführt, was stark gegen die obige Aussage spricht.

    Ein anderer Ex-Borländer der mir jetzt spontan einfällt ist Charly Calvert, von dem habe ich noch ein Buch zu C++ Builder 3, danach war er jahrelang im C# Team von MS.



  • 314159265358979 schrieb:

    Mechanics schrieb:

    Qt und boost sind auch schöne Frameworks.

    Qt alles andere als schön.

    Was ist an Qt unschön? Qt ist der Grund, wieso viele Programmierer immer noch mit C++ arbeiten. Hast du überhaupt schonmal Anwendungen mit Qt erstellt? Das nimmt dir einen Haufen Arbeit ab.



  • Hacker schrieb:

    Was ist an Qt unschön?

    3 Buchstaben: m o c



  • dot schrieb:

    Hacker schrieb:

    Was ist an Qt unschön?

    3 Buchstaben: m o c

    Ja, Meta-Object Compiler. Ich muss zwar ein moc-Programm schreiben, damit ich nicht gleich wieder in der Konsole rumhämmern muss, wenn ich bspw. einen neuen Slot erstelle, aber sonst hab ich noch nix bemerkt. Aber dann sag schnell, damit ich noch rechtzeitig umsteige.



  • dot schrieb:

    Hacker schrieb:

    Was ist an Qt unschön?

    3 Buchstaben: m o c

    Jein. Technisch vielleicht unschön, finde ich aber eher nebensächlich. Die API an sich finde ich aber sehr sauber und elegant und auch mächtig. Auf jeden Fall um Welten schöner, als alles was ich bis dahin in C++ benutzen musste. Ob du damit arbeiten willst oder nicht, ist natürlich deine Sache, wenn du mit was anderem besser zu Recht kommst, nur zu.



  • Was gibt's da groß zu sagen, die Tatsache dass er existiert sagt doch schon alles?

    Nichts desto trotz ist Qt wohl so ziemlich die beste derartige Library die es für C++ gibt...leider...



  • dot schrieb:

    Nichts desto trotz ist Qt wohl so ziemlich die beste derartige Library die es für C++ gibt...leider...

    Mechanics schrieb:

    dot schrieb:

    Hacker schrieb:

    Was ist an Qt unschön?

    3 Buchstaben: m o c

    Jein. Technisch vielleicht unschön, finde ich aber eher nebensächlich. Die API an sich finde ich aber sehr sauber und elegant und auch mächtig. Auf jeden Fall um Welten schöner, als alles was ich bis dahin in C++ benutzen musste.

    Das ist genau was ich meine. 👍



  • dot schrieb:

    Was gibt's da groß zu sagen, die Tatsache dass er existiert sagt doch schon alles?

    Vielleicht es mit Compiler Magic gleichstellen? 😃



  • Zeus schrieb:

    dot schrieb:

    Was gibt's da groß zu sagen, die Tatsache dass er existiert sagt doch schon alles?

    Vielleicht es mit Compiler Magic gleichstellen? 😃

    Von der halt ich genauso wenig 😉



  • C++ hat ein Konzept?

    So ein schrecklich nicht durchdachtes Konstrukt würden ja nicht mal die Griechen nehmen.



  • langsamlangsam schrieb:

    C++ hat ein Konzept?

    Sogar mehrere. Dass du es nicht siehst heißt noch lange nicht, dass es nicht da ist.



  • Artchi schrieb:

    An den Programmiersprachen hat sich doch seit den 1950er Jahren nichts geändert. Alle haben Bedingungen, Schleifen, Aufrufe usw.

    Lol. Leider ist es so, dass viele Programmierer in ifs und Loops denken. Und was sich geaendert hat: Lambda ist weggefallen, tolle Makrosysteme sind weggefallen, Objekte sind weggefallen. Doch alles wird wieder neu entdeckt: Herb Sutter hat Continuations fuer C++ erwaehnt, Lambdas sind wieder da, Loopless-Programming ist wieder in und wird durch die Algorithmen in C++ unterstuetzt, sogar ein Interface fuer garbage collection wird Standardisiert. Und immer wenn ich varadic templates sehe, erinnern sie mich an Scheme-Makros. Das ist der entscheidende Punkt: C++ ist das neue Lisp. Ich mag es. Viel Freiheit, viel Ausdruckskraft, viel Macht ueber Programm und Ressourcen.



  • knivil schrieb:

    Und was sich geaendert hat: Lambda ist weggefallen, tolle Makrosysteme sind weggefallen, Objekte sind weggefallen.

    In welcher Sprache wurden Objekte verwendet und sind wieder weggefallen?





  • knivil schrieb:

    Das ist der entscheidende Punkt: C++ ist das neue Lisp. Ich mag es. Viel Freiheit, viel Ausdruckskraft, viel Macht ueber Programm und Ressourcen.

    “Those who don't understand Lisp are doomed to reinvent it. Badly.”


Anmelden zum Antworten