C++ auf allen Betriebssystemen?



  • ich wüste nicht wie so das programmierne auf linux besser seinen sollte 😮
    Ich denke es ist er glecihwertig, ich weiß nur das du bei linux teilweise andere methoden aufrufen kannst, aber die heißen bei lunix nur anders



  • Linux ist halt ein Hacker-OS. Du bekommst die meisten Programmierwerkzeuge und Bibliotheken mit einem Klick/einer Zeile in der Shell auf den Rechner und sie werden automatisch aktuell gehalten. Das ist viel frickliger unter Windows. Hängt eben damit zusammen dass der Grundgedanke war dass alle Software für Linux OpenSource ist und man sich den Krempel selbst kompiliert, da wäre es umständlich das für alle Abhängigkeiten selbst machen zu müssen.

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest, kannst dir als Anfänger ja mal CodeBlocks ansehen. Je nach Anwendungsfall gibt es viele portablke Bibliotheken, was möchtest du denn machen?



  • Ethon schrieb:

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest?

    Mein Bullshit Detektor ist grade explodiert.

    VC++ hat den besten Compiler und Debugger für Windows Systeme.
    Und die Unterschiede in der STL Implementation sind marginal.



  • Besonders gut an VC++ ist auch der Variadic-Template-Support und dass sie auch sonst so schnell alle neuen C++-Features einbauen. Wenn ich da an gcc oder clang denke, bekomme ich das Grausen!



  • Also ich bin da hin- und hergerissen bzgl MinGW64 und VC++ unter Windows. Bei jedem Ansatz gibt es etwas zu meckern.

    Debuggen ist per MinGW64 etwas anspruchsvoller, zumindest wenn man direkt mit dem GDB arbeitet. Geheimtipp: Wenn einem eine Assertion um die Ohren fliegt vor dem Start under GDB folgendes eintippen:

    (gdb) break _assert
    

    denn dann kann man den Aufrufstack noch nachvollziehen. Unter Linux muss man das nicht machen. Da hält er schon automatisch bei einer Assertion Failure an. Es gibt auch noch keine ansatzweise funktionierende std::thread/async/etc Unterstützung unter Windows sondern muss dann auf so Dinge wie Boost.Threads zurückgreifen. Die per MinGW64 erzeugten Binaries sind auch irgendwie riesengroß. Gut, die hängen dann wenigstens nicht von irgendwelchen VCRT90.DLL-Dateien ab.

    Das, was mich an VC++ stört, ist die relativ schlechte Unterstützung der C++11 Features. Es kommt öfters vor, dass ich Workarounds finden muss, weil der Compiler bzgl des einen oder anderen C++11-Features buggy ist. Die variadischen Templates sind auch relativ spät dazugekommen (in einem Update von VC++ 2012, wenn ich das richtig in Erinnerung habe). Ich habe aber nicht wirklich Lust von VC++ 2010 auf VC++ 2012 umzusteigen. Als ich mal die Testversion von 2012 installierte, dauerte das fast eine Stunde (!), das User Interface sah richtig schei**e aus und die Reaktionszeit des Programms war nicht besonders hoch.

    Pick your poison.



  • Ethon schrieb:

    Linux ist halt ein Hacker-OS. Du bekommst die meisten Programmierwerkzeuge und Bibliotheken mit einem Klick/einer Zeile in der Shell auf den Rechner und sie werden automatisch aktuell gehalten. Das ist viel frickliger unter Windows. Hängt eben damit zusammen dass der Grundgedanke war dass alle Software für Linux OpenSource ist und man sich den Krempel selbst kompiliert, da wäre es umständlich das für alle Abhängigkeiten selbst machen zu müssen.

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest, kannst dir als Anfänger ja mal CodeBlocks ansehen. Je nach Anwendungsfall gibt es viele portablke Bibliotheken, was möchtest du denn machen?

    Das ist aber sehr negativ ausgedrückt. Ich habe das Gefühl, du magst Linux nicht. Und warum es frickelig ist, wenn die Software mit einem Klick oder einer Zeile installiert wird und automatisch aktuell gehalten wird, erschießt sich aus Deinem Kommentar nicht so wirklich.

    Die Wurzeln von Linux sind aber Unix. Und Unix ist kein Hacker-OS, sondern ein professionelles Betriebssystem von Technikern für Techniker. Unix ist auch im Serverbereich weit verbreitet. Und Linux bringt die Eigenschaften von Unix in die Open-Source Welt. Es sollte erwähnt sein, dass das nicht nur Linux macht, sondern auch die BSD-Varianten.

    So, und jetzt wird es weniger Objektiv. Ich programmiere halt gerne unter Linux und Unix, da mir dort viele leistungsfähige Tools zur Verfügung stehen. Unter Linux ist man im Vergleich zu Windows beim Programmieren viel näher am Eisen. Man fängt unter Linux an, indem man in einen Editor Quellcode eingibt und dann im Terminal den Compiler laufen lässt. Eventuell schreibt man sich dann ein Makefile. So lernt man gleich, was da eigentlich passiert.

    Unter Windows verwendet man eher eine große IDE, wie VC++, die vieles abstrahiert. Dann kommt es schon mal vor, dass man beispielsweise viel später erst den Unterschied zwischen Compiler und Linker versteht.

    Ich entwickele auch heute noch (ich mache C++ seit etwa 20 Jahren) am liebsten mit einem Editor und Makefiles. Das mag archaisch klingen und das ist es wohl auch. Aber mir macht es halt Spaß.



  • krümelkacker schrieb:

    Das, was mich an VC++ stört, ist die relativ schlechte Unterstützung der C++11 Features. Es kommt öfters vor, dass ich Workarounds finden muss, weil der Compiler bzgl des einen oder anderen C++11-Features buggy ist. Die variadischen Templates sind auch relativ spät dazugekommen (in einem Update von VC++ 2012, wenn ich das richtig in Erinnerung habe).

    Im Prinzip sind sie noch gar nicht da, sondern nur in Form eines Beta-Previews, war natürlich nicht für den produktiven Einsatz taugt. Die STL ist natürlich auch noch nicht angepasst.



  • @tntnet du hast den Post falsch verstandne. Da steht, dass _Windows_ viel frickeliger ist.



  • Ethon schrieb:

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest, kannst dir als Anfänger ja mal CodeBlocks ansehen. Je nach Anwendungsfall gibt es viele portablke Bibliotheken, was möchtest du denn machen?

    Ja ich möchte plattformunabhängig programmieren. Ich möchte mal (wenn es so weit ist) so Minispiele programmieren (Snake,Tetris,...).

    Mich würde mal interessieren was so richtige IT Firmen für C++ Spiele für Editroren verwenden (plattformunabhängig) Kann man das pauschal sagen
    ? Oder ein paar aufzählen?.



  • Für Snake, Tetris und so Kleinkram: Java

    Richtige IT-Firmen machen keine Spiele 😃



  • DevBeat schrieb:

    Ethon schrieb:

    Ich würde mich von Visual C++ fernhalten wenn du plattformunabhängigen Code schreiben möchtest, kannst dir als Anfänger ja mal CodeBlocks ansehen. Je nach Anwendungsfall gibt es viele portablke Bibliotheken, was möchtest du denn machen?

    Ja ich möchte plattformunabhängig programmieren. Ich möchte mal (wenn es so weit ist) so Minispiele programmieren (Snake,Tetris,...).

    Mich würde mal interessieren was so richtige IT Firmen für C++ Spiele für Editroren verwenden (plattformunabhängig) Kann man das pauschal sagen
    ? Oder ein paar aufzählen?.

    Wie ich oben schrieb: Das ist absoluter Bullshit was Ethon da schreibt. Es gibt einige wenige Unterschiede in der STL, aber die kann man nachsehen und wenn man sich dran hält kann man die vermeiden, da alle Standardimplementationen funktionieren.

    Als Beispiel gibt erase() bei MS einen iterator auf das neue nächste Element zurück, das macht die STL Implementation von MinGW/GCC nicht. Aber wenn man sowas weiss, kann man das einfach nicht benutzen. Denn das was der Standard vorschreibt, geht immer.

    Platformunabhängige Spiele erzeugst du am besten mit Engines wie Ogre3D, Irrlicht oder Unity3D (C#) und anderen. Und wenn man die benutzt isses wayne ob man nun MSVC oder MinGW nimmt, da man eh eine High Level API verwendet.

    Aber wenns ums Debuggen geht und damit verbringt man viel Zeit, ist der MSVC die beste IDE. Da beisst die Maus kein Faden ab.



  • Scorcher24 schrieb:

    Das ist absoluter Bullshit was DevBeat da schreibt.

    Du meinst Ethon, oder?



  • DirkB schrieb:

    Für Snake, Tetris und so Kleinkram: Java

    Ich weiss ich programmiere in Java auch schon ein paar Monate. Aber mir ist es wichtig mal auch C++ schreiben zu lernen.

    manni66 schrieb:

    Scorcher24 schrieb:

    Das ist absoluter Bullshit was DevBeat da schreibt.

    Du meinst Ethon, oder?

    Hab mich auch gewundert 🙂

    Hat jemand eine leicht verständliche Antwort auf die Fragen:
    Welches Programm zB verwenden große Firmen, die mit C++ Spiele programmieren?

    Ich hab mal gehört das der integrierte Compiler in Eclipse in vergleich zu Anderen sehr langsam ist. Stimmt das ? Bzw wie heißt dieser?



  • DevBeat schrieb:

    Hat jemand eine leicht verständliche Antwort auf die Fragen:
    Welches Programm zB verwenden große Firmen, die mit C++ Spiele programmieren?

    Microsoft sagt, das ein großteil der Programme für Windows mit
    dem Visual Studio geschrieben werden.

    0x0ERROR



  • Du wirst viele Möglichkeiten finden, und Visual Studio ist für professionelle Softwareentwicklung sicher nicht unbeliebt.

    Ich muss zustimmen, dass Ethon da Unsinn schreibt: C++ ist eine plattformunabhängige Sprache, welchen Editor oder welche Entwicklungsumgebung du verwendest spielt keine wesentliche Rolle. Es gibt zwar kleine Abweichungen zwischen den Compilern, aber keine zentralen Unterschiede.

    Von den IDE-Features ist Visual Studio Code::Blocks massiv überlegen, du kannst dir damit recht viel Entwicklungszeit sparen. Gerade wenn es um Dinge wie Debugging, Echtzeit-Kompilierung, Autovervollständigung oder Profiling geht.

    Die C++11-Unterstützung ist mit g++ generell besser, allerdings sieht man regelmässig wieder Dinge, die g++ noch nicht umgesetzt hat, VC aber schon (relativ lange nullptr, und momentan z.B. Move-Semantik für Iostreams). Als C++-Anfänger dürfte dir der Variadic-Template-Support aber eher egal sein.

    <:xmas2:>



  • Gibt es eine vergleichbare IDE die sich mit Visual Studio messen kann, alerdings für plattformunabhängige Projekte?

    Beispielsweise Eclipse wobei ich da behauptungen sind, das der Compiler von Eclipse nicht gerade der beste/schnellste ist.



  • DevBeat schrieb:

    der Compiler von Eclipse

    Es gibt keinen Eclipsecompiler.



  • manni66 schrieb:

    DevBeat schrieb:

    der Compiler von Eclipse

    Es gibt keinen Eclipsecompiler.

    Aber Eclipse verwendet doch einen?! Wie heist der ?



  • DevBeat schrieb:

    manni66 schrieb:

    DevBeat schrieb:

    der Compiler von Eclipse

    Es gibt keinen Eclipsecompiler.

    Aber Eclipse verwendet doch einen?! Wie heist der ?

    Eclipse ist eine reine IDE, den Compiler musst du zusätzlich installieren. Möglicherweise gibt es Pakete, die auch einen Compiler enthaltem, den muss man aber nicht zwingend benutzen.



  • manni66 schrieb:

    DevBeat schrieb:

    manni66 schrieb:

    DevBeat schrieb:

    der Compiler von Eclipse

    Es gibt keinen Eclipsecompiler.

    Aber Eclipse verwendet doch einen?! Wie heist der ?

    Eclipse ist eine reine IDE, den Compiler musst du zusätzlich installieren. Möglicherweise gibt es Pakete, die auch einen Compiler enthaltem, den muss man aber nicht zwingend benutzen.

    Ein Plugin ist dafür notwendig. CDT hab ich herausgefunden. Nur ist der angeblich sehr langsam. Stimmt das ?


Anmelden zum Antworten