Was sollte ein professioneller C++ Entwickler kennen und können?



  • asc schrieb:

    Ich mag zwar auch C++ Programmierer, aber nicht nur dies sein. Und wenn eine Frage speziell nach C++ kommt, sollte diese auch die Themengrundlage sein, und nicht ein Schwanzvergleich.

    Zu spät. Es ist schon längst nur noch ein Schwanzvergleich. 😞

    dfgdfgfffff schrieb:

    Du hast keine Argumente.

    Das hat hier fast jeder. 😞



  • fghfghfghfhfghfgh schrieb:

    dot schrieb:

    Nenn mir eine dieser sogenannten modernen Sprachen die ein ähnlich mächtiges Werkzeug zur generischen Programmierung wie templates besitzen.

    Haskell. Ähnlich mächtiges Werkzeug? Nein, mächtiger als in C++. Viel mächtiger.

    Und dazu auch noch viel komplizierter. Bei c++ kann ich sehr gut abschätzen wie lange etwas dauert und einfach eine Datei schreiben, etwas auf der Konsole printen. Man hat dann zwar noch mit dieser ganzen Pointerscheiße und 80 Zeichen typennamen zu kämpfe, aber so ist das halt.

    Bei Haskell muss man um einfach einen Text Auszugeben irgendwelche total hirnverbranten theoretischen mathematischen Konzepte wie Monaden verstehen und dann kommt noch so ein penner „Oh mit Monaden kann ich mir Objekte und Coninutations bauen um dann exceptions zu bauen“ in C++ kann ich einfach so Objekte und Exceptions benutzen und Leuten erklären wie die implementiert sind nur mit dem Verständnis von Sprungadressen auf Prozessorebene.
    Dazu ist Haskell Lazy. Es ist praktisch unmöglich irgendetwas über Laufzeit zu einen bestimmten Zeitpunkt (Ich will in jedem Programm 60Frames/s)auszusagen. Die einzige Lösung für dieses Problem bei auch nur Ansatzweise interaktiven Programmen ist ausprobieren und beten das es mit der nächsten GHC Version gleich bleibt.

    Wer keine Interaktiven Programme will die nicht mit der Umgebung zusammenarbeiten und deren Laufzeit total wahrlos ist, ist mit Haskell gut bedient.



  • irgendwelche total hirnverbranten theoretischen

    Du hast keine Ahnung.

    um dann exceptions zu bauen

    Du hast keine Ahnung.

    Es ist praktisch unmöglich irgendetwas über Laufzeit .. ausprobieren und beten

    Du hast keine Ahnung.
    ...
    Ich fasse zusammen: Du hast keine Ahnung.

    PLT-Scheme kommt bei diesem Schwanzvergleich wohl am besten weg.



  • IPH schrieb:

    Und dazu auch noch viel komplizierter. Bei c++ kann ich sehr gut abschätzen wie lange etwas dauert und einfach eine Datei schreiben, etwas auf der Konsole printen. Man hat dann zwar noch mit dieser ganzen Pointerscheiße und 80 Zeichen typennamen zu kämpfe, aber so ist das halt.

    Weder C++ noch Haskell (noch jede andere Computersprache) sind für jeden Bereich das optimale Werkzeug. Und Unwahrheiten machen deine Aussagen nicht besser.

    1. Ist es auch unter C++ recht einfach Ausgaben zu erzeugen, und man braucht dafür auch keine hochmathematischen Kenntnisse.

    2. Moderne C++ Projekte verwenden Zeiger nur in homöopathische Dosen, wenn du dabei auf Zeigerarithmetik ansprichst. C++ hat sehr viele Mittel um die Speicherverwaltung zu übernehmen, und gerade die STL ist eher auf Objekte, den auf Zeiger, ausgelegt. Von einer Dereferenzierung und einen new-Aufruf (den man auch in einigen anderen Sprachen durchaus hat) abgesehen, benötigt man selten direkt irgendwelche Zeigerarithmetik.

    3. Wenn du auf Typnamen mit 80 Zeichen ansprichst, meinst du sicherlich Templates. Ähnliches hast du aber auch in anderen Sprachen mit Generics etc. Zudem besitzt auch C++ mit dem kommenden Standard (wobei einige Compiler es bereits umsetzen) Mechanismen um auch dieses Problem massiv zu entschärfen. Anderseits ist gerade der Templatemechanismus von C++ eine der Bereiche die ich in anderen Sprachen vermisse (Policy-Based Design etc.).

    4. C++ muss nicht komplex sein, aber kann es sein. Es kommt immer darauf an was man von C++ verwendet, und ich kenne viele C++ Entwickler für die das komplizierteste noch das verwenden einfachster Templates ist. Man kann natürlich alles in das extrem treiben, aber beispielsweise die Templatemetaprogrammierung brauchen die wenigsten.

    Und um auf den Thread zurück zu kehren (gerade im Bezug auf den Punkt 4):
    - Man sollte die Grundlagen der Sprache verstehen und anwenden können.
    (Templates in der einfacher Form, nicht aber Templatemetaprogrammierung, sind hier auch ein Thema)
    - Grundlegende Kenntnisse der C++ Standardbibliothek und deren Konzepte.
    - Grundlegendes logisches Denkvermögen.

    Und dies alles muss nicht wirklich komplizierter als andere Sprachen sein.



  • Wieso verwendest du C++ als Synonym vom produzierten Code eines Programmiers?



  • knivil schrieb:

    irgendwelche total hirnverbranten theoretischen

    Du hast keine Ahnung.

    um dann exceptions zu bauen

    Du hast keine Ahnung.

    Es ist praktisch unmöglich irgendetwas über Laufzeit .. ausprobieren und beten

    Du hast keine Ahnung.
    ...
    Ich fasse zusammen: Du hast keine Ahnung.

    Gleichfalls

    PLT-Scheme kommt bei diesem Schwanzvergleich wohl am besten weg.

    Auch ein blindes huhn findet mal ein korn. PLT Racket ist super



  • rthrthrt schrieb:

    Rate mal warum wir alle C++ so doof finden. Weil es nichts taugt.

    Mal von der Ausführungsgeschwindigkeit abgesehen kann jede beliebige Sprache C++ ersetzen und das viel besser!

    Welche modernen Sprachelemente? Das wäre mir neu.

    Top Programmiersprachen? Der einzige Grund warum C++ immer noch so weit verwendez wird ist, wie du es oben erwähnt hast, der vorhandene Code, sowie die unzähligen C++ Programmierer, die man halbwegs günstig bekommt.

    C++ hat nunmal nichts zu bieten. Wow, die std lib bietet Sachen an, mit denen man einfach segfaults verursachen kann. Unglaublich! Diese dynamischen Datenstrukturen sind in richtigen modernen Sprachen sowas von selbstverständlich. In C++ wird damit immer noch angegeben. Armselig sowas ist.

    Mal meinen Senf dazugeben:
    Java, C# , CLI und was sich da noch so tummelt, genau betrachtet alles C++ mit eigenem Framwork, deren Might am Ende des Framworks endet(Nur ordnunghalber mal erwähnen das deren Laufzeitumgebung in C++ geschrieben ist, warum blos ? ).

    Andere Sprachen sind dann welche die sich in Programmierparadigmen und Syntax unterscheiden, da gibt es mit Sicherheit welche die sich für das eine oder andere besser eignen als C++ .

    So und Senf zum Topic:
    -Erfahrung, Erfahrung , Erfahrung
    -Syntax
    -OOP
    -Design
    -Visualisierung von Konzepten
    -Boost
    -Mindestens ein Framwork
    -Winapi und Posix verstehen
    -Sql sollte man können, die großen 3 DB sollte mann sich schonmal angeschaut haben ( IBM Db2 , Oracle , MS SQL ( Sybase ).
    -Netzwerk ( Protokollem, Osi, LDAP, Routing ..... )

    -Und ganz wichtig, die Fähigkeit nicht IT lern IT Inhalt verständlich zu vermitteln.

    -Nicht IT ler sind immer der Meinung ( und gerade Chefs ) das IT ler alles was IT ist können muß , die Breitbandigkeit ist den wenigsten bewußt . Hier sollte man sich in vieles schnell einarbeiten können.

    Im MS Umfeld halte ich die MFC für einen sehr guten Basis Skill, auch wenn man andere Frameworks wie Qt benutzt.



  • Zabou schrieb:

    Mal meinen Senf dazugeben:
    Java, C# , CLI und was sich da noch so tummelt, genau betrachtet alles C++ mit eigenem Framwork, deren Might am Ende des Framworks endet

    Merkst du was? Bei C++ endet die "Might" auch mit dem eigenen Framework. Leider hat C++ kein eigenes Framework. Ich glaube das ist einer der Haken an C++.

    Zabou schrieb:

    (Nur ordnunghalber mal erwähnen das deren Laufzeitumgebung in C++ geschrieben ist, warum blos ? ).

    Nur mal ordnungshalber, warum wird C++ in maschinensprache beim compilieren übersetzt, warum bloß? Weil das eine mit dem anderen nichts zu tun hat. ps: Die Laufzeitumgebungen kannst du auch in C oder asm oder jeder beliebigen sprache schreiben.



  • Leider hat C++ kein eigenes Framework. Ich glaube das ist einer der Haken an C++.

    Selten dämliches Argument...

    C++ ist nicht perfekt, aber es verbindet hohe Abstraktion mit schneller Ausführgeschwindigkeit wie keine andere Sprache - wenn man es richtig macht. Wenn's nicht schnell gehen muss, greife auch ich lieber zu Python.

    ....



  • [quote="ddddddf
    Merkst du was? Bei C++ endet die "Might" auch mit dem eigenen Framework. Leider hat C++ kein eigenes Framework. Ich glaube das ist einer der Haken an C++.

    Nur mal ordnungshalber, warum wird C++ in maschinensprache beim compilieren übersetzt, warum bloß? Weil das eine mit dem anderen nichts zu tun hat. ps: Die Laufzeitumgebungen kannst du auch in C oder asm oder jeder beliebigen sprache schreiben.[/quote]

    Es gibt wohl kaum eine Sprache wo es mehr Auswahl an Framworks gibt als C++ ^^ , da endet nix an irgendeinem Framwork nur am Lötkolben, was mit C++ nicht geht muß gelötet werden ^^ auch wen es nicht immer Sinn macht.

    Und um deine 2 Frage mal nicht zu beantworten, weißt du eigentlich wovon du so sprichst ?



  • Zwangs-OOPisierung :schland:



  • zwangs-OOpisierung , Wo ?



  • nach schlag schrieb:

    zwangs-OOpisierung , Wo ?

    Na überall. Lieber eine Klasse bestehend aus einer (von der Klasse unabhängigen) methode, als einfach eine funktion zu schreiben. Letzteres wäre ja C und C ist ja laut C++-Propaganda per Definition Gefrickel pur.



  • Warum sollte man das machen ?
    C++ kann muß aber nicht OOP .
    C hinngegen kann kein OOp



  • OOP ist kein Sprachfeature...



  • fghfghffssss schrieb:

    Na überall. Lieber eine Klasse bestehend aus einer (von der Klasse unabhängigen) methode, als einfach eine funktion zu schreiben. Letzteres wäre ja C und C ist ja laut C++-Propaganda per Definition Gefrickel pur.

    Schwachsinn, C++ ist eine Multiparadigmensprache und OO ist nur ein Sprachkonzept unter vielen in C++. Das ändert aber nichts daran, das man in C++ dennoch anders als in C programmiert (in der Regel auch weniger Zeigerlastig).

    Meine C++ Programme sind zwar weitgehend OO, aber nicht ausschließlich (Manchmal machen Funktionen mehr Sinn).



  • dot schrieb:

    OOP ist kein Sprachfeature...

    Wird aber durch Sprachbestandteile besser oder schlechter unterstützt.



  • Hmmmm schrieb:

    C hinngegen kann kein OOp

    das stimmt nicht, das geht sehr wohl. FILE ist das beste Bsp dafür, oder GTK+, da hast du sogar Klassenvererbung.



  • Das ist eine Implementierung von GTK+ welche aber nicht zum Sprachumfang von C gehört.
    C ist eine Prozedurale Sprache.
    OOP ist auch weit mehr als Klassen und Klassenvererbung.

    Was nicht bedeutet das C eine schlechtere Sprache als C++ ist, sie hat in einigen Bereichen ihre Stärken was sie für bestimmte Problemlösungen zur besten Wahl werden läßt, ebenso C++ in seinem Bereich.

    Manchmal erinnern mich in dem Forum hier die "Diskusionen" schon ein wenig an die Mantafraktion, meine Sprache hat mehr PS ^^.

    Wat soll dat eigentich bringen ?

    Ausser vieleicht das Buchhandlungen gerade feststellen das C und C++ gar nicht mehr verwendet wird, MFC seit Jahren schon abgelöst ist (O Ton des Verkäufers) und icke mir mein Buch beim Versand bestellen kann, deswegen nur noch Restbestände, in 3 Buchhandlungen . 😡



  • ^^ schrieb:

    Ausser vieleicht das Buchhandlungen gerade feststellen das C und C++ gar nicht mehr verwendet wird,...

    Okay, C und C++ kommen zusammen nur etwa auf die Buchverkaufszahlen von Java oder C#, das heißt aber nicht, das es nicht mehr verwendet wird (Zumal man auch bedenken muss das sich sowohl in C, wie auch in C++, seltener etwas Entscheidendes ändert, als beispielsweise in Java oder C#, und auch schon ein deutlich größerer Buchbestand schon Regale diverser Firmen und Personen füllen).

    Das heißt aber nicht, das es nicht mehr verwendet wird (ich kenne noch sehr viele Firmen im C++ Umfeld, weniger im C-Umfeld - aber ich bin auch in der Anwendungsentwicklung und nicht im Umfeld von Treibern und Embedded Systems tätig (wo C wiederum einen höheren Stellenwert geniest).

    Die Aussage ist daher Schwachsinn (und auch gulp & Co sprechen eine andere Sprache, selbst wenn der Anteil etwas zurückgegangen ist).

    ^^ schrieb:

    MFC seit Jahren schon abgelöst ist (O Ton des Verkäufers)...

    Von den Büchern her stimmt das auch. Wenn man zum Thema MFC Bücher sucht, muss man auf sehr alte Bestände zurück greifen, das gilt aber auch für einige andere Frameworks. Das hat aber nichts damit zu tun, das MFC nicht mehr eingesetzt wird. Die MFC hat noch immer einen sehr hohen Verbreitungsgrad im C++ Umfeld.

    Leider werden auch nicht die alten Bücher mehr nachgedruckt, was es einen Einsteiger in MFC um so schwerer macht, oder neue (und sei es mit wenigen Aktualisierungen) heraus gebracht.


Anmelden zum Antworten