C++ Spezialisierung



  • Guten Tag,

    Also, ich bin ein blutiger Anfänger in C++, und bin noch weit von dem Entfernt nach was ich Frage, aber ich glaube es schadet nicht sich schonmal zu entscheiden.

    Leider gibt es hier in dem Forum kein Bereich in den das hier so wirklich reinpasst, auch nicht in Frameworks, da ich, und das ist mein anligen in diesem Post, nichts über sie weiss, und auch nicht, welches ich benutzen (?) / erlernen (?) soll.

    Ich Weiss nicht was Frameworks sind, ich glaube zu wissen sie enthlaten spezielle Bibliotheken.

    Es gitb die C++ Standart Bibliothek, die Beinhaltet grundlegendste Sachen.

    Ohne Irgendwelche Zusätze, also das reine ISO C++ kann nur mit der Konsole Arbeiten, richtig ? Also ist es, ausser als Fundament für andere Bibliotheken oder Frameworks und der ganz Systemnahen Programmierung ( Treiber ), kaum in Gebrauch ?

    dh. Wenn nun zb. ein Unternehmen ein Spiel machen will, und zb. ( ich weiss nicht wofür C++ bei Spieleentwicklung genau eingesetzt wird ) die Engine in C++ schreiben will, benutzt es doch irgendeinen Zusatz ?

    Könnt ihr mir Beispile nennen ?

    Mein Gott, ich weiss ncihtmal wie ich meine Fragen formulieren soll...
    Was hat Visual C++ mit dem ganzen zu tun ?
    Ich habe mal Visual C++ 2008 Express Edition geladen und nichtmal das Hello World programm hingekreigt ?!
    Verwendet Visual C++ das .NET Framework?
    Muss man bei Frameworks anders schreiben ? also die syntax ändern oder ähnliches ?

    Ohne Frameworks bringt man es nicht weit, ich wil mich jetzt aber nicht auf ein Framework, und somit auf ein "geändertes C++" spezialisieren, sodass für mich später ein Umstieg schwer wird.

    Könnt ihr mir Frameworks nennen, udn auf was sie Spezialisiert sind ?
    Ich weiss zb .NET von Micro$oft Auf Windows Anwendungen und Spiele.
    Jedoch wnen ich Windows Anwendungen uns Spiele machen will sollte ich dann nciht gleich C# lernen, da es "enger" mit .NET arbeitet?

    Ich hoffe ihr verzeiht mir meinen total unstrukturierten Post, ich habe so viele Fragen und so wenig wissen über dieses Thema, und vorallem resultierend aus meinem nciht vorhandenem Wissen, glaube ich das die mehrheit meiner Fragen sich für sachkundge total noob-artig anhören.

    Dankeschön im Vorraus für Anworten!



  • Hi.
    Hehe. Du klingts in der Tat recht verwirrt, aber das ist kein Problem. So geht es den meisten am Anfang. Also keine Panik. Das kommt noch. 😉

    Ein Framework ist ein Rahmengerüst, mit dem man einfacher Anwendungen schreiben kann. Es folgt dem Prinzip, dass man das Rad nicht 2 mal erfinden muss. Z.b gibt es Frameworks für GUI Anwendungen, mit denen man ganz einfach Fensteranwendungen schreiben kann, ohne sich zuerst mühsam mit der System API rumzuschlagen.
    Oder in der Spieleentwicklung gibt es die "Engines", die eigentlich auch nichts anderes sind, als Frameworks, die den Entwicklern helfen.

    Standard C++ kennt tatsächlich nur die Konsole. Mehr ist für die meisten Anwendungen eigentlich auch gar nicht nötig. Das klingt auf den ersten Blick sehr unglaubwürdig, aber man kann praktisch alles mit der Konsole machen. Das einzige, was man dort beanstanden kann, ist die Benutzerfreundlichkeit, wesshalb es dann auch die GUI's gibt, die das ganze für jeden einfach benutzbar macht.

    In der Spieleentwicklung wird Heutzutage eigentlich C++ in Verbindung mit DirectX oder OpenGL benutzt. Das ist dann die Basis, wodrauf dann die Frameworks (Enignes) basieren, mit denen die Spiele dann geschrieben werden.

    Visual C++ ist die Implementierung von Microsoft des C++ Standards und damit ist meist ein Compiler und die IDE gemeint.

    .NET kann man mit C++ (da heisst das dann C++/CLI), Visual Basic und C# machen. (afaik grundsätzlich auch noch andere Sprachen, sind aber weniger verbreitet). C# ist ein (sehr grosses) Framework für die Anwendungsentwicklung und beinhaltet von Grundlagensachen, wie Listen, Algorithmen, Datenbankanbinundug bis Fenster alles.
    Mit C# spiele zu entwicklen ist vor allem im XBox Bereich anzutreffen, wo mit XNA (ein Spieleentwicklungsframework) gearbeitet wird, ist aber am PC (kommerziell) kaum/nicht anzutreffen.

    Und nein für Frameworks muss man die Syntax nicht ändern, da die (meist) auf der selben Sprache basieren, mit der sie genutzt werden. Es gibt allerdings eine Ausnahme. Wenn man mit C++ .NET machen will, musst man wie gesagt auf C++/CLI umsteigen, was dann nicht mehr viel mit ISO C++ zu tun hat.

    Ich hoffe, dass das ein wenig Licht ins dunkle gebracht hat. Ich würde mir keinen allzu grossen Kopf machen, wenn du noch keinen Durchblick hast. Der kommt noch, wenn du dich ein wenig länger mit dem ganzen beschäftigst. Fang einfach an C++ zu lernen ( mit einem Anfängerbuch ) und dann kommt das ganze ganz automatisch. 😉


  • Administrator

    under_cover schrieb:

    Also, ich bin ein blutiger Anfänger in C++, und bin noch weit von dem Entfernt nach was ich Frage, aber ich glaube es schadet nicht sich schonmal zu entscheiden.

    Kleiner Tipp im voraus:
    Lern erst mal vernünftig C++. Es schadet nicht, sich zuerst ein zwei Jahre mit reinem C++ auseinander zu setzen.

    under_cover schrieb:

    Leider gibt es hier in dem Forum kein Bereich in den das hier so wirklich reinpasst, auch nicht in Frameworks, da ich, und das ist mein anligen in diesem Post, nichts über sie weiss, und auch nicht, welches ich benutzen (?) / erlernen (?) soll.

    Wie schon gesagt, lern zuerst reines C++. Je nach dem, was du später machen willst, kann man dir dann entsprechende Frameworks angeben. Es gibt da ziemlich viele davon. Was ein Framework ist, kannst du hier nachlesen:
    http://de.wikipedia.org/wiki/Framework

    under_cover schrieb:

    Es gitb die C++ stan**** Bibliothek, die Beinhaltet grundlegendste Sachen.

    Man schreibt Standard mit d 😉

    under_cover schrieb:

    Ohne Irgendwelche Zusätze, also das reine ISO C++ kann nur mit der Konsole Arbeiten, richtig ?

    Jein. Standard C++ kennt keine GUIs, also graphische Benutzeroberflächen. Dazu muss man system spezifische APIs ( http://de.wikipedia.org/wiki/Programmierschnittstelle ) verwenden oder Frameworks, welche diese APIs kapseln. Aber C++ hat auch noch File IO und wenn man eine Bibliothek schreibt, braucht man meistens gar keine UI (User Interface) Möglichkeiten. Mit reinem C++ ist bereits extrem viel möglich.

    under_cover schrieb:

    Also ist es, ausser als Fundament für andere Bibliotheken oder Frameworks und der ganz Systemnahen Programmierung ( Treiber ), kaum in Gebrauch ?

    Nein, C++ wird auch in vielen anderen Bereichen eingesetzt, zum Beispiel auch der Spieleprogrammierung 😉
    Ok, zum Teil wird sogar nicht C++ sondern noch C verwendet.

    under_cover schrieb:

    dh. Wenn nun zb. ein Unternehmen ein Spiel machen will, und zb. ( ich weiss nicht wofür C++ bei Spieleentwicklung genau eingesetzt wird ) die Engine in C++ schreiben will, benutzt es doch irgendeinen Zusatz ?

    Es wird zum Beispiel die C Schnittstelle von DirectX verwendet, welche auch über C++ angesprochen werden kann. Oder verwendet OpenGL, auch über C++ ansprechbar. Oder womöglich verwenden sie gleich ein Spieleframework, welches alles bereits schön in C++ Klassen kapselt, was von diesen Schnittstellen (OpenGL oder DirectX) zur Verfügung gestellt wird und noch mehr bietet.

    under_cover schrieb:

    Mein Gott, ich weiss ncihtmal wie ich meine Fragen formulieren soll...

    Lern zuerst einmal C++, der Rest kommt dann automatisch mit der Zeit, würde ich sagen.

    under_cover schrieb:

    Was hat Visual C++ mit dem ganzen zu tun ?

    Visual C++ ist eigentlich ein Kompiler oder IDE von Microsoft.

    under_cover schrieb:

    Ich habe mal Visual C++ 2008 Express Edition geladen und nichtmal das Hello World programm hingekreigt ?!

    Wo war das Problem?
    Neues Projekt -> C++ -> Empty Project -> Add Item -> CPP File -> Hello World reinmachen -> F7 -> F5
    Ganz grob gesagt 🙂

    under_cover schrieb:

    Verwendet Visual C++ das .NET Framework?

    Jein. Grundsätzlich ist Visual C++ für C++ zuständig. Es gibt allerdings einen Switch, mit welchem man C++/CLI anstellen kann. C++/CLI ist eine eigene Sprache, welche auf C++ aufbaut und das .NET Framework verwendet, aber grundsätzlich nichts mit C++ zu tun hat.

    under_cover schrieb:

    Muss man bei Frameworks anders schreiben ? also die syntax ändern oder ähnliches ?

    Nein, ein Framework wird eigentlich oft für eine Sprache geschrieben. Ein C++ Framework bleibt ein C++ Framework. Also man programmiert wie in C++ darin. Zum Beispiel ist Boost ein reines und sehr schönes C++ Framework für viele unterschiedliche Aufgaben, allerdings keine graphische Benutzeroberflächen.

    under_cover schrieb:

    Ohne Frameworks bringt man es nicht weit, ich wil mich jetzt aber nicht auf ein Framework, und somit auf ein "geändertes C++" spezialisieren, sodass für mich später ein Umstieg schwer wird.

    Ein geändertes C++ gibt es normalerweise nicht bei Frameworks. Wenn die Sprache geändert würde, würde sie nicht mehr dem Standard entsprechen und wäre somit nicht mehr C++. Aber wie gesagt, lern zuerst einmal reines C++, das wird dir in der Zukunft fast nur Vorteile bringen.

    under_cover schrieb:

    Könnt ihr mir Frameworks nennen, udn auf was sie Spezialisiert sind ?

    Boost -> Allgemeine Aufgaben rund um C++
    wxWidgets -> GUI und mehr Framework, nicht sehr schönes C++ aber ist auch C++
    MFC -> GUI und mehr Framework, kapselt die WinAPI Schnittstelle
    OpenSceneGraph -> Ein Renderer für Spiele und anderes im 3D Bereich für C++, kapselt die OpenGL Schnittstelle

    usw. gibt ein paar Tausend minimum 😃

    under_cover schrieb:

    Ich weiss zb .NET von Micro$oft Auf Windows Anwendungen und Spiele.

    Wäre mir neu, dass man .NET für Spiele einsetzt. Im allgemeinen wird .NET eher für Business Anwendungen verwendet, zumindest habe ich es bisher so verstanden.

    under_cover schrieb:

    Jedoch wnen ich Windows Anwendungen uns Spiele machen will sollte ich dann nciht gleich C# lernen, da es "enger" mit .NET arbeitet?

    Nein, C++ ist genau die richtige Sprache für Spiele. Wie gesagt, .NET wird nicht wirklich für Spiele eingesetzt. Moderne Spiele gehören in den Profibereich von C++.

    under_cover schrieb:

    Dankeschön im v****** für Anworten!

    "voraus" wird mit einem r geschrieben 😉

    Grüssli



  • Hui 😃
    ihr 2 habt mir wirklich sehr geholfen 😉
    Jetzt blicke ich schon weitaus mehr durch...

    Und, ja ich bin bereits am lernen des "reinen" C++, habe das alles hier gefragt da ich befürchtete ( durch die erfahrung mit Visual C++ 2008 Express Edition, in der es mir ein Hello World Programm, welches in DEV C++ und code:Blocks funktioniert, bemängelte, warscheinlich durch diese umstellung auf CLI C++ )
    das man wenn man Frameworks benutzt, man automatisch, ein "geändertes C++" benutzt. Jedoch weiss ich nun, ein trugschluss durch das CLI.
    Aah, fühle mcih richtig erfrischt und beruhigt zugleich 😃
    Danke vielmals, ich klemm mich dann mal wieder hinter mein Buch 😋

    Edit: Achja, deine Verwunderung das .NET etwas mit Spielen zu tun hat, ist höchstwarscheinlich begründet.
    Durch mein chaotisches hamstern von Informationen quer durch dass Internet habe ich Warscheinlich .NET ( das von Mcrosoft stammt ) und XNA ( was ja auch etwas mit Microsoft zu tan hat, vll. sogar auch daovn stammt, ich bin jetzt lieber vorsichtig um nicht nochmer falsches zu schreiben 😃 ) zusammengewürfelt, und die Spieleentwicklung mit .NET meinem "wissen" hinzugedichtet.

    mfg



  • nochmal zu den frameworks ne frage von mir...
    ist das mit den programmiersprachen nicht alles ein enorm großer haufen
    von frameworks?? Weil programmiersprachen ja eigentlich nur dazu da sind den computercode also binärzählsystem zu vereinfachen??

    edit:
    na gut ^^ ich versuchs
    die frameworks sind ja dafür da um programmiersprachen/programme zu vereinfachen/verbessern.
    oder seh ich das falsch? falls nein dann weiter ^^
    und mann könnte dem computer auch mit dem binären system (01010) sagen was er tun soll.. sowas wie lowlevel sprache...
    und wenn ich jetzt ein c++ programm habe

    int main()
    {
      return 0;
    }
    

    dann müsste der compiler es ja in maschinencode umwandeln (das ist ja grade die aufgabe vom compiler oda nicht?)
    der compiler hats also umgewandelt
    so würde das programm dann jetzt im binären system aussehen (nur ein beispiel)
    0100101001010110110
    so... das heißt der compiler hat meinen c++ programm vereinfach/verbessert damit meine ich für den computer lesbar gemacht. Das würde dann ja heißen das c++ nur ein framework ist um benutzern das binärsystem zu vereinfachen. Genauso wie alle anderen programmiersprachen. Zum schluß nochmal alles in meiner frage zussamengeschoben:
    sind alle programmiersprachen frameworks?



  • Hmm...
    Ich weiss leider nicht, was genau du wissen willst...

    Und auch wenn du dich genauer ausdrückst, denke ich werde ich dir nicht helfen können.
    Aber falls ja jemand in den Thread hier schaut der Ahnung hat, wäre es hilfreich wenn du deinen Beitrag schonmal editierst, und dich genauer ausdrückst, sodass die warscheinlichkeit auf eine Antwort ( eine die dein Anliegen auch beantwortet ) höher.

    mfg 🙂



  • Verdammt Doppelpost... 😡
    Aber würde ich nochmals editieren, würde die Übersicht für den Leser verloren gehen.

    Ich bin noch Anfänger, und kann dir nicht weiterhelfen, aber ich möchte mal einen ( meinen, und möglicher weise falschen ) Ansatz einer Antwort beschreiben:

    Du sagtest: Frameworks vereinfachern/verbessern Programme/Programmiersprachen.
    ( mist, bin zu blöd zum zitieren 😃 )

    Wenn C++ ein Framework wäre ( es ist keines, wenn doch, hieße es nicht Programmiersprache 😃 tut mir leid aber eine korrekte, bzw. eine bessere Begründung bekommst du nur von jemandem der sich damit auskennt )
    auf welche Programmiersprache würde es sich beziehen?

    Eine mögliche Antwort: na auf das Binärsystem, aber, Programmiersprachen sind in etwa so definiert:

    Sie stellen eine Zwischensprache dar, zwischen Binärsystem/Maschinencode und einer von Menschen verstandenen Sprache, zb. English, dar.

    Sie ist für den Menschen mit Übung verständlich, aber durch strikte Regeln, eben nicht zu kompliziert als dass ein Programm ( der Kompiler ) es nicht in Maschinencode übersetzen könnte.

    Oder in anderen Worten:
    Programmiersprache wird zu Framework, Binärsystem/Maschienencode wird zur Programmiersprache, aber dann gibts nichts mehr, was als Binärsystem herhalten könnte.

    So, es ist sehr warscheinlich das ich hier 'ne Menge Unfug geschrieben habe, naja, wenn hier jemand etwas dazu schreibt, und deine Frage beantwortet, kann er/sie ja auch erwähnen ob meine Begründung irgendwo Falsch ist.

    Aber deine Bemerkung: Frameworks vereinfachern Programmiersprachen, Programmiersprachen vereinfachern das Binärsystem/Maschienencode, stimmt schon, je nachdem wie man das "vereinfacht" definiert, ich kann dir nicht sgaen wie es definiert sein muss, damit deine Bemerkung zutrifft, da ich noch nicht mit Frameworks gearbeitet habe.

    mfG und der Hoffnung keine Fehlinformationen verbreitet zu haben
    under_cover



  • Bevor ihr euch noch um Kopf und Kragen redet tut es vielleicht ein einfacher Blick auf Wikipedia

    http://de.wikipedia.org/wiki/Framework



  • Ach da wurde doch noch 100011101... gefragt 😉
    Ja es ist möglich eine CPU mit DIP-Schaltern zu füttern und die Ergebnisse
    mit LEDs auszulesen. Wird aber wahrscheinlich nur zu Schulungszwecken und
    für spezielle Aufgaben gemacht.



  • Also so weit seit ihr mit dem "Framework-Gedunsel" nicht. Schlussendlich ist ein Framework lediglich eine Abstraktionsebene, was eine Programmiersprache ebenfalls ist.
    Richtig. Schlussendlich will man ja nur 1en und 0en haben und da ein Mensch Millionen von 1en und 0en hintereinander nicht wirklich lesen kann, gibt es da zuerst einmal Assembler, der das ganze einfach in Mnemomics, die das ganze ein wenig lesbarer machen. Weil das mit der Zeit aber ebenfalls immernoch zu wenig hergibt, um es gut und verständlich lesen zu können ging man einen Schritt weiter und erschuf die Hochsprachen, ala C und später C++, die das ganze schon recht schön darstellen können. Und da man in C++ nicht ständig alles neu erfinden muss, wie z.B Listen, Physik oder Kollisionserkennung gibt es für praktisch alles irgendwelche Frameworks, die das für einen übernehmen. Diese sind meistens in dynamischen Librarys verpackt (.dll's) und somit mehr oder weniger Sprachenneutral. (viele Libs sind in C geschrieben, können aus C++ aber ohne Probleme genutzt werden).

    Die ganzen Abstraktionen machen das ganze einfacher, weniger fehleranfällig, einfacher zu warten, lesbarer, effizienter, stabiler und nicht zu letzt sicherer.

    sind alle programmiersprachen frameworks?

    Ein Framework bezeichnet das ganze auf einer anderen Stufe, aber schlussendlich ist ein Framewokr, wie ich schon gesagt habe eine Abstraktion und eine Programmiersprache ebenfalls. Also haben beide eigentlich die gleiche Aufgabe.



  • das wollte ich wissen danke 😃


Anmelden zum Antworten