Christoph Zurnieden: Fragen zu C++

Beitrag lesen

Hallo,

Etwas auf die Standardausgabe auszugeben ist intern ein recht komplizierter Vorgang. Da müssen Dateien geöffnet und beschrieben werden, alles kontrolliert und evt gebuffert, Speicher alloziert und freigegeben usw.
Das kannst Du selbstverständlich auch alles selber machen, allerdings solltest Du das doch tunlichst den entsprechenden Bibliotheken überlassen, das ist erheblich bequemer.
Das sowieso! Aber woher weiß man sowas vorher ;-)

Tja, das muß man lernen. Zumindest sollte man wissen, wo man nachschlagen kann ;-)

Ein Linker ist ein kleines Progrämmchen, das die Funktionen aus Deinem Programm raussucht und mit den entsprechenden Funktionen in den passenden Bibliotheken verknüpft und in die rechte Reihenfolge bringt (wenn er gut ist). Außerdem kann er auch noch verschiedene Teilbinaries zusammenfassen.
Mich wundet auch das mein Hallo-Welt Programm so groß ist - 442 KB, ist das nicht etwas Happig für so ein lächerliches Programm?

Das sind die statisch gelinkten Bibliotheken. Netto an Programm sind da ca 250 Bytes(!) drin.
Du könntest auch mal 'strip' probieren.

Udn was hat es mit den verschiedenen header-Dateien aus sich? Du hast gesagt Du hast mit der <iostream.h> lange nicht mehr garbeitet, was verwendest Du sonst und wieso? Muß ich dann für jede Header-Datei total umlernen?

Nein, nicht umlernen, sondern nur lernen. Es gibt eine Reihe von Standardfunktionen, die in einer kleinen Reihe Header defniniert werden. Die gilt es zu lernen, die sollten sitzen, es sind auch nicht viele.
Naja, da muß man wohl mal durch...

Ja, da kommst Du nicht rum.

Außerdem sollte bekannt sein, wie so ein Header funktioniert, damit man auch fremde Header lesen kann, denn in diesen Headern ist die nötige Information um unbekannte Funktionen nutzen zu können.
Das auch noch? Au man... ich seh schon, das ist sogar noch komplizierter als ich mir das vorgestellt habe...

Nein, ist schon alles relativ logisch aufgebaut. Richtig viel zu lernen gibt es da kaum, nur zu verstehen gibt es sehr viel.

Hab auch noch nie richtig mit Linux gearbeitet, eigentlich fast nur auf meinem webserver mit SSH. Scheint aber ne Ecke komplizierter zu sein als PHP/PERL, vor allem da ich in C++ ja leider nicht die vielen schönen Funktionen und Module habe wie ich PHP und MySQL!

Direkt nicht, indirekt vielleicht, denn es ist durchaus möglich, das sich schonmal jemand hingesetzt hat und eine entspr Bibliothek geschrieben hat.
Nur gilt es die zu finden ;-)
Und was sind DLLs?

_D_ynamic _L_oadable _L_ibrarues (Dynamisch ladbare Bibliotheken)

Die kann man ja auch nicht lesen(warum?),

Auch die kann man lesen, sonst käme der Linker ja nicht damit zurecht.
Allerdings sind sie compiliert, also in Maschinencode, nicht "human readable" ("Human" ist lediglich eine Untermenge aller Menschen, es gibt durchaus noch eine handvoll Leute, die auch mit Maschinencode zurechtkommen)

werden die auch aus C-Code kompiliert?

In welcher Sprache die geschrieben wurden ist nachträglich nicht mehr feststellbar (Praktisch, theoretisch gibt es schon ein paar Möglichkeiten, aber unsicher). Allerdings ist anzunehmen, das C++ Bibliotheken auch hauptsächlich in C++ geschrieben wurden.

Wie erstellt man denn eigene DLLs?

Das ist nicht immer einfach und kommt auf den jeweiligen Linker, die Architektur und den Compiler an.
Das bauen von Bibliotheken kommt aber auch nicht gerade am Anfang der Lernkurve, das hat Zeit.

Ich weiß, kann man nicht pauschal beantworten, nur habe ich zur Zeit übehaupt keine Vorstellung was da auf mich zukommt, und geht das überhaupt vernünftig ohne MS Visual Studio oder Visual C++?

Es geht _nur_ vernünftig _ohne_ den Visual Crap.

Die enhaltenen Compiler sind nicht besonders und zusammenklicken kannst Du Deine GUI auch mit dem Designer von QT, der kost' nix, der ist schon dabei, falls Du QT nehmen solltest. Und die paar extra Bibliotheken, die da noch bei Visual* dabei sind, sind das Geld nicht wert. Das einzig Interessante wäre die ganze Dokumentation, aber die gibt es fast alle auch im Netz und vor allem: dafür soviel Kohle ausgeben? Na, ich weiß ja nicht ;-)

Ja, aber was bringt mir das wenn es kein anderes Programm für Windows gibt?

Es gibt doch jede Menge? Eine der Alternativen benutzt Du doch gerade!

Wenn es QT nicht gibt, was verwenden dann alle anderen die die ganzen C++ GUI-Tools schreiben?

Verschiedene Bibliotheken, manche verwenden auch die Windows eigene Fensterbibliothek.
Manch einer hat sich auch etwas Eigenes geschrieben.

ODer sollte man für GUI doch liber auf DELPHI oder JAVA zurückgreifen(was ich beides auch noch nicht kann aber auch lernen will, wenn es denn Sinn macht)

Die GUI selber zusammenbasteln ist meist ein Zusammenklicken. Das Schwierige ist das Programm. Wenn Du gerne C++ lernen möchtest, dann tue es ruhig, ist eine gute Sprache für GUIs. Lernen aber erstmal die Sprache beherschen, eine GUI zu basteln ist dann nachher kein Problem mehr.

Nein, bevor Du eine IDE nutzt solltest Du zumindest eineige kleiner Anwendungen mit GUI von Hand geschrieben haben, dann erst kannst Du IDEs auch richtig nutzen. Und wenn Du soweit bist, nimm keine IDEs von MS, es gibt für das Geld bessere.
ist QT und Visual C++ also eine IDE?

QT ist eine Fensterbibliothek (ist noch jede Menge anderer Kram drin, deshalb die Empfehlung), Visual Crap ist eine IDE.

Was heitß IDE?

_I_ntegrated _D_evelopment _E_nvironment.
Ein Programm, das, im Grobem, einen Editor, einen Designer (Fensterzusammenklickprogramm), sowie noch Compiler, Linker und einige Tools plus jede Menge Bibliotheken in sich vereinigt und gemeinhin schweineteuer ist.
Ist für einen Anfänger nicht zu empfehlen.

Ich selber programmiere seit etlichen Jahren (hauptsächlich C unter Unix) und habe noch mehr IDEs ausprobiert. Im Endeffekt hatte ich die stets nur genutzt, Fenster zusammenzuklicken, so ich ein graphisches UI brauchte. Also stets rausgeschmissen Geld. (Ich kann mich allerdings nciht entsinnen, je etwas bezahlt zu haben, die Dinger waren entweder zur Verfügung gestellt, eh umsonst, oder eine Demo ;-)

BTW: lernst Du eigentlich nach Buch?

Noch nicht, ich habe ja noch gar nicht richtig angefangen. Ich wollte mir erstmal einen kleinen Überblick mit Hilfe eines Tutorials von c-plusplus.de und dem Script eines Einführungskurses meiner Uni machen.

So Du denn einen Einführuingskurs an der Uni hast, sollten die auch Empfehlungen bezüglich der Austattung haben.
Frage einfach mal nach.

Dann wollt eich mir mal ein vernündfirges C++ Buch zulegen, hat da vielleicht jemand eine Empfehleung, in Anbetracht meiner doch sehr geringen Vorkenntenisse?

Tut mir leid, aber vielleicht liest einer mit und hat eine?

so short

Christoph Zurnieden