Umstiegt von PHP zu C++?!

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
dead_cox
Beiträge: 56
Registriert: 05.05.2007 13:25
Wohnort: Stasi 2.0

Beitrag von dead_cox »

Danke schon mal fuer eure Antworten.

Wenn ich das so lese mit der Portierbarkeit von C++, schreckt mich das einwenig ab. ;( Gibt es da vlt tricks wie man das in C++ besser realisieren kann=

Kann ich denn in C auch OOP Programmieren? Leuft das mit C auch so ab wie bei C++ in Sachen Portierbarkeit?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Kann ich denn in C auch OOP Programmieren?

nein, das ist der (wichtigste) unterschied zwischen C und C++
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Naja, grundsätzlich kann man auch OOP programmieren, das ist ja letztendlich nur 'ne Frage des Konzepts. Auch in PB programmiere ich OOP. Der Unterschied ist jedoch, daß C++ eine "objektorienterte Sprache" ist, was bedeutet, daß Dir die Sprache dabei "hilft" bzw. Dir die entsprechenden Keywords und Operatoren zur Verfügung stellt.

PB und C sind dagegen prozedurale Sprachen, aber auch hier kann man, wenn man sich an gewisse Regeln hält, objektorientiert programmieren. Das ist auch zu empfehlen. Man hat halt z.B. kein "class"-Keyword und keine private- und public-Variablen, aber das Prinzip der Objektorientierung ist durchaus umsetzbar.

Dennoch ist es natürlich zu empfehlen, eine objektorienterte Sprache zu verwenden, wenn man OOP lernen / einsetzen will. Daher rate ich Dir zu C++ (wobei es auch kein Fehler ist, zu wissen, wie man in reinem C programmiert), denn da hast Du eben von der Sprache Unterstützung, was OOP angeht.

Das mit der Portierbarkeit ist wirklich kein großes Übel, man muß halt wissen, wie man's macht. Wenn Du Spiele programmierst, darfst Du halt kein DirectX oder MFC verwenden, weil Du dann Linux schonmal vergessen kannst. Du solltest Dir am besten eine Lib wie SDL anschauen, denn die ist bereits plattformunabhängig, sodaß Du ein Programm, das NUR C++ und SDL benutzt, problemlos auch auf anderen Plattformen nutzen kannst. Und wenn Du wirklich an einer Stelle etwas einbauen mußt, was nur für eine bestimmte Plattform in Frage kommt (z.B. weil Du die Bytes aus Deiner Leveldatei umdrehen mußt, um sie auf dem Mac einlesen zu können), dann mußt Du Dir halt entsprechend mit Präprozessor-Kommandos zwei Alternativen basteln (sowas wie CompilerIf ist das), um je nach Plattform eben unterschiedlichen Code zu kompilieren.

Ist alles halb so wild, wenn man grundsätzlich Libs verwendet, die eh schon plattformunabhängig sind. Probier's einfach mal aus!


EDIT: Was Portierbarkeit angeht, gibt es keinen Unterschied zwischen C und C++. Aber wie gesagt, ist halb so wild. Denke dran, daß Du Dir ein paar typedefs anlegst für die kritischen Datentypen (also da, wo Du 100% Gewißheit haben willst, daß der Typ eine bestimmte Größe hat - z.B. wenn Du eine binäre Datei einliest oder sowas).
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

-Und arbeite immer mit sizeof statt Vermutungen über die Beschaffenheit von irgendetwas anzustellen.

-Setze wo immer es nur geht auf Arrays und nutze nur da speicherbuffer, wo es keine gute alternative gibt, denn sonst gibt es da evtl byteorder Probleme und Fehleranfälliger ist es auch

-sei achtsam im Umgang mit Pointern

-denke vor allem daran, dass Pointerinkrementierungen auf unterschiedlichen Plattformen eventuell unterschiedlich weit springen

-automatisiere das anlegen und freigeben von Resourcen so weit wie möglich und auf eine konsistente weise

-pass auf Unterschiede in den Compilern auf (wie zb #pragma)

-setze *niemals* Funktionen direkt in Assembly um. Schreibe immer erst einen C++ Prototyp und portiere den nach Assembly.

-lass dich nicht von Meterlangen Fehlermeldungslisten verunsichern... oft ist nur ein Fehler Ursache für ein Duzend Fehlermeldungen und die Behebung recht einfach.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Hallo,

durch diesen Thread neugierig geworden, würde ich gern einen kurzen C++ Kurs aktiv durcharbeiten.

Habt ihr einen Tipp, welche IDE dazu gut geeignet ist?
Ich möchte einfach nur die Aufgaben des Tutorials umsetzen können. Es muß also keine superfette RAD-IDE sein, die mir die Platte zumüllt.

Und wenn ich selbst auch noch ein paar Dateien schieben muß und manuell linken oder so, kann das ja auch nicht schaden. Ich kenne mich allerdings absolut nicht aus was C betrifft. Suche also entweder eine einfache Entwicklungsumgebung (Code tippen, compilieren, fertig) oder, wenn commandlinebasiert, dann noch ein paar Infos wie der workflow beim compilieren und linken abläuft.

Danke schon mal. :allright:

Gruß Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@Kurzer

dann schau mal in den Thread "Welcher C++-Compiler?", dort werden einige empfolen und drüber diskutiert. :wink:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Danke für den Tipp. :allright:

Habe mir jetzt das MinGW Developer Studio installiert.
Ist zwar nicht gerade ein schlankes Produkt (IMHO), aber sah für mich erstmal so aus, als wäre es eine gutmütige, stabile und sauber programmierte C++ Entwicklungsumgebung. Macht sich bisher ganz gut, keine Probleme mit der Bedienung und Einrichtung.

Einzig die 711KB exe für das erste "Hello World" haben mich etwas zusammenzucken lassen. Wie ich dann rausbekommen habe, lags aber an den aktivierten Debugoptionen. Ohne Debugger sind nur noch 15KB... in etwa wie ichs erwartet habe.

Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Schlingel
Beiträge: 30
Registriert: 28.06.2007 20:06

Beitrag von Schlingel »

Irgendwo auf Seite 2 haben paar Leute was von D geschrieben... aber ich muss sagen schon allein wegen dem Klang D find ich das eher abschreckend...

C klingt da eher Scharf und net so matt und klanglos...
:lol:
Aber die können sich ruhig richtige Namen einfallen lassen.. so einfallslos...
Erst A,B,C,D ... wann sind wir bei Z ?

Oder stehen die Buchstaben für irgendwelche Namen ?
Antworten