Das sieht auf jeden Fall nach ziemlich viel Arbeit aus bis alles so steht wie es soll.
Ich benutze vim schon ziemlich lange, habe aber mich ehrlich gesagt nie
besonders in ihn eingearbeitet, sondern nur eine simple vimrc gehabt.
Syntax-Highlighting und Code-Folding hat mir eigentlich gereicht. Was ich am
Vim so mochte war, dass man dank seiner Modi unschlagbar effizient alle Arten
von Text bearbeiten kann. Ich denke, dass ist auch nach wie vor der größte
Vorteil von ihm. Man muss nicht alle Bewegungskommandos kennen, aber schon mit
relativ wenigen kann man sehr effizient arbeiten.
Ich würde deshalb sagen, dass man sich da langsam herantasten kann. Es ist
nicht so, dass man sofort alles können muss, um mit dem vim gut arbeiten zu
können.
Ich installiere auch nach wie vor, kaum Plugins. Taglist und Snipmate sind die
einzigen.
Zwischendurch habe ich den Emacs längere Zeit benutzt; der ist auch sehr gut,
wenngleich meiner Meinung nach am Anfang deutlich komplexer. Für C++ ist er
aber wegen der echt guten GDB Integration zu empfehlen.
Diese Seite ist leider nicht verfügbar.
Komisch, bei mir funktionert der Link.
Was sagst du zu dem Buch?
Bin ehrlich gesagt noch nicht zu einem Vim-Buch gekommen und kann dazu nichts
sagen. Lese zur Zeit einfach zu viel über Latex, Haskell, Lisp. Denke aber,
dass das Buch wenn es gut ist, die Einstiegszeit massiv verkürzt. Die
Hilfe-Seite des Vims ist sehr gut dokumentiert, aber nicht wirklich dazu
geeignet, dass man daraus etwas lernt, wenn man nicht schon gut ist.
Also von make habe ich schon mal was gelesen. Ist es das Programm, welches alle
Abhängigkeiten von einem Programm sucht und zusammenlegt? Habe was auf
Wikipedia gefunden, doch wirklich alles verstehe ich nicht was da steht?
Make ist ein generische Build-Tool. Damit kann man eigentlich alles mögliche
bauen lassen; man braucht dazu aber teilweise etwas Wissen über
Shell-Scripting.
Abhängigkeiten sucht es nicht selbst, da es halt generisch ist. Deshalb musst
du selbst dafür sorgen, dass make die Abhängigkeiten kennt. Bei C++ gibt es mit
dem gcc entsprechende Kompiler-Optionen, um zum Beispiel die Abhängigkeiten der
Dateien herauszufinden und dann make mittzuteilen.
Cross-Compiling ist in dem Sinne mit make auch möglich, sofern es mit deinem
Compiler möglich ist. Die Frage ist aber auch, ob Cross-Compiling /nötig/ ist.
Wenn du eine Programme auch auf Windows testen willst, wirst du sie wohl auch
unter Windows ausführen und debuggen müssen, dass heißt, du kannst auch direkt
unter Windows kompilieren. Die ganzen Linux-Tools sind auch für Windows
vorhanden.
Git hört sich an wie subversion. Kann man damit auch ein Versionsserver
auflegen, um aktuelle Files zu synchronisieren, wenn mehrere Leute an einem
Projekt arbeiten?
Aber natürlich; git ist besonders gut dafür geeignet um die Arbeit mehrere zu
organisieren. Git ist aber auch gut um ohne jeden Server die eigene Arbeit zu
versionieren.
Es gibt im Forum aber einige die noch auf SVN schwören. Also wenn du es kannst
und magst, ist es für dich vielleicht auch besser bei SVN zu bleiben (ich
persönlich mag es nicht besonders).
Wenn ich's richtig verstanden habe, dann ist gdb ein Debugger, welcher mit der
Konsole genutzt werden kann.
Genau. Will aber noch erwähnen, dass der gdb in der Konsole selbst nicht sooo
gut zu verwenden ist und ncurses Programme sich damit nicht vernünftig debuggen
lassen. Als ich C++ programmierte, war das noch unter Emacs und ich habe dort
die gdb Integration genutzt. Ich weiß nicht, ob der vim auch eine gdb
Integration anbietet, oder ob es entsprechende unabhängig Frontends gibt (es
gibt den ddd, aber den fand ich nicht so toll).
Gibt es auch Bücher zu c++ mit make, gdb, git und weiteren nützlichen Tools,
welche das Leben erleichtern könnten? (bzw. c++ unter Linux richtig nutzen?)
Hatte mal ein Buch gelesen, das ich ganz gut fand, kann mich aber einfach nicht
an den Titel erinnern. Ich würde eventuell auch eher zu einer Bibliothek gehen
und schmökern. Gute Bücher sind ziemlich teuer.
Ich würde eventuell einfach versuchen die Amazon-Kritiken zu lesen. Ich glaube gute
C++-Bücher gibt es eine Menge. Eventuell sind die von Stroustrup am
empfehlenswertesten, immerhin hat er die Sprache entworfen.
Ich weiß nicht, wie gut eine Programmiererfahrungen sind. Für den Anfang ist es
aber vielleicht besser sich auf make und eine simple Konfiguration des vim zu
beschränken und dann sukzessive fortbilden. Zumindest mir geht es so, dass es
besser läuft, wenn ich mich auf wenige Sachen intensiv konzentriere und
versuche sie möglichst vollständig zu verstehen, bevor ich weiter gehe.
Vielleicht seien trotzdem noch zwei Sachen erwähnt: Es gibt noch valgrind mit
dem man Speicherlecks in Programmen identifizieren kann. Spätestens wenn die
C++-Programme nicht mehr trivial sind, findet man (oder zumindest ich) solche
Speicherlecks ohne einen Profiler gar nicht mehr.
Schließlich sei noch erwähnt, dass make selbst ziemlich „Low-Level” ist.
Spätestens, wenn du Plattformunabhängige Programme schreiben willst, skaliert
make nicht mehr so gut, weil du das Makefile für jede Plattform anpassen musst
(finde /ich/ persönlich nicht so wild und eine Sache von ein paar Minuten, aber
ich habe auch noch nicht wirklich komplexe C++-Programme geschrieben).
Dafür gibt es dann „Make-Makes“, also Build-Systeme die Makefiles je nach
Plattform generieren. Da gibt es einige wie Scons, Cmake, Autotools, etc etc.
Ich finde sie alle urst kompliziert, insbesondere die Autotools, die Flickwerke
aus mehreren diversen Systemen sind, aber zur Zeit noch den Standard unter Unix
darstellen.
Also auch wenn es sich nach Träumerei und Blabla anhört, habe ich vor mit C++
optimal zu programmieren.
Das ist bei C++ ein hehres Ziel. Ich will offen sein: Ich finde die Sprache
beschissen. Ebenso wie C übrigens. Beides sind ganz schrecklich designte
Sprachen (Stroustrup hatte mal gemeint, er hätte alles in die Sprache
reingenommen, was interessant zu implementieren wäre, und das merkt man auch)
wenn man sie mal mit sauber designten Sprachen die aus der gleichen Zeit
stammen vergleicht, wie etwas Pascal oder später Modula. Durch die neuen
Sprachstandards wird die Sprache auch immer komplexer (natürlich wurde das aus
meiner Sicht wichtigste nicht aufgenommen, nämlich einen Garbage Collector und
ein Modul-System).
Na ja, andererseits kommt man um C++ ab gewissen Momenten nicht drum herum,
weil es sich leider als Standard in ziemlich vielen Bereichen etabliert hat.
Gerade bei Spieleprogrammieren ist C++ noch Quasi-Standard (ich weiß nicht
warum. Die Performance kann es eigentlich nicht sein.)
Und ich muss dazu sagen, dass ich eigentlich keine Sprache wirklich mag (am
ehesten noch Ruby und Common Lisp;).
Mein späteres Ziel wird dann sein - und das ist nun der Träumerteil - dass ich
Computerspiele für Linux und Windows programmiere. Ich jedoch noch nicht mal
weiß ob es möglich ist Spiele mit C++ "quasi plattformunabhängig" zu
Programmieren, wegen DirectX, Windowsschnittstellen & Co und ob es überhaupt
Crosscompiler für solche Fälle gibt. Oder muss man alles in OpenGL machen? Wie
gesagt, ich habe noch nicht wirklich Ahnung von der Linuxseite und von
Spieleprogrammierung, doch hoffe ich, dass es trotzdem klappt.
Ja klar geht das; sogar ziemlich gut. Es gibt ja auch eine Reihe von
Plattformunabhängigen Spielen, wie etwas Quake4 und diverse Indie-Title.
Für solche Fälle gibt es plattformneutrale Bibliotheken und
Schnittstellen. Ich glaube für Spieleprogrammierung ist SDL recht verbreitet.
Kenne ich damit aber nicht aus, da ich eher selten graphische Sachen
programmiere.