KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: C Programmieren
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Sooo hab mal kurz ne Fráge, ich hatte damals mal mit C++ Programmiert, jetzt wollte ich wieder anfangen, könntet ihr mir Tipps geben welche sprache mann am besten lernt für die PSP und vllt ein wenns geht kostenfreies programm? wäre sehr dankbar^^

MyKey

Ich würde sagem mit C und dem Programm PSP SDK Wink.
also kann ich jetzt mit dem PSP SDK ganz normal programieren??^^
C oder C++.
C ist leichter Big Grin

MyKey

LtotheX :
also kann ich jetzt mit dem PSP SDK ganz normal programieren??^^

Ja müsste gehen Wink (am besten fragst du mal Hackman er ist absoluter Pro hier Wink).

C++ ist einfacher zu lernen, denn es gibt einfach viel mehr Tuts/Guides/Code Schnippsel dafür.

Die C-Syntax ist einfacher zu lernen.

Im Großen und Ganzen nehmen sie sich aber kaum etwas.
Für die PSP ist C eindeutig besser.

Hier ist alles was du fürs erste brauchst:
http://sourceforge.net/projects/minpspw/

Dann erstellst du eine .bat datei mit dem inhalt "cmd". (am besten in einem Projekt ordner, den du irgendwo erstellst)
Jetzt noch einen texteditor mit syntax-highlighting besorgen (z.b. notepad++). Fertig.

Oder du bindest die SDK in irgendeine beliebige entwicklungsumgebung ein. (z.b. Microsoft Visual Studio)

Edit:
http://www.pspking.de/forum/showthread.php?tid=10865
Durch Templates wird das leben sogar viel einfacher. Dann kann ich noch Operatoren Überladung oder Funktions Überladung nennen. Ich finde C hat ausgedient. C++ gehört der Markt.

Unbekannt :

m33 :
C oder C++.
C ist leichter Big Grin


?
C++ ist nicht schwerer, bloß gibt es Klassen in C++ und Dient der Objektorientierung.


Objektorientierung ist Schrott, der nur dazu führt das Speicher verschwendet wird und der Code IMHO schlechter lesbar ist.

C ist auf jedenfall besser. Es ist leichter zu erlernen, eignet sich viel besser für Systemprogrammierung, und die meisten PSP-Projekte sind in C.

@Unbekannt
Wieso ist C++ besser ?
Ich hab noch nie gesehen,dass einer jemanden C++ vorschlägt,und dabei sollte es eigentlich auch bleiben !

@HacKmaN
Du schreibst irgendwie nur im Development bereich,why ?

mfg

emink123 :
@Unbekannt
Wieso ist C++ besser ?
Ich hab noch nie gesehen,dass einer jemanden C++ vorschlägt,und dabei sollte es eigentlich auch bleiben !

@HacKmaN
Du schreibst irgendwie nur im Development bereich,why ?

mfg



Weils sein Hobby ist Smile

Objektorientierung ist kein Schrott.
Wo bitte wird da Speicher verschwendet?
Die Methoden ( Funktionen ) brauchen keinen extra Speicher. Die Elemente ( Variablen ) werden beim erstellen der Instanz ( Objekt ) in den Stack gelegt. Sollte es sich um eine lokale Instanz handeln, so wird das Objekt genauso wie eine lokale Variable vernichtet.

Also ist eine Klasse nichts anderes als eine Struktur die in ihrem Scope auch noch ein paar Funktionen einbindet. Somit wird der Quellcode allgemein lesbarer da die Modularisierung logischer aufgebaut ist, als mit ein paar "extern" Verweisen in der Headerdatei =)

Vergiss bei den Vorteilen bitte nicht die Templates und die Überladungen Big Grin

Edit: Mir ist noch Vererbung, Polymorphismus und Exception Handling eingefallen Big Grin
Also ich empfehle dir C wie Hackman schon gesagt hat es ist einfacher und mit C werden auch die meisten Projekte programmiert. Ich fange gerade auch mit C an und muss sagen das ich bis jetzt das meiste verstehe.
@Hackman hättest du vielleicht ein paar tipps für einen Anfänger, Danke

Chaosduckman :
Objektorientierung ist kein Schrott.
Wo bitte wird da Speicher verschwendet?
Die Methoden ( Funktionen ) brauchen keinen extra Speicher. Die Elemente ( Variablen ) werden beim erstellen der Instanz ( Objekt ) in den Stack gelegt. Sollte es sich um eine lokale Instanz handeln, so wird das Objekt genauso wie eine lokale Variable vernichtet.

Also ist eine Klasse nichts anderes als eine Struktur die in ihrem Scope auch noch ein paar Funktionen einbindet. Somit wird der Quellcode allgemein lesbarer da die Modularisierung logischer aufgebaut ist, als mit ein paar "extern" Verweisen in der Headerdatei =)

Vergiss bei den Vorteilen bitte nicht die Templates und die Überladungen Big Grin

Edit: Mir ist noch Vererbung, Polymorphismus und Exception Handling eingefallen Big Grin


Mhm, ich hätt mich besser ausdrücken sollen. Die Objektorientierung selber verschwendet ja keinen speicher, aber die meisten Programmierer machen es. Die denken sich anscheinend, dass eh jeder genug RAM hat, und sie deshalb keinen Speicher mehr freigeben müssen.

Ich hab schon unzählige male gesehen, dass mit 'new' Speicher angefordert, aber dieser nie mehr freigegeben wird.
Und seltsamerweiße sieht man dies fast nur in C++/Java, in C hab ich bis jetzt nur sehr selten gesehen, dass Speicher nicht freigegeben wird.

Exception Handling ist keine reine C++ Sache, die PSP stellt Funktionen dafür bereit. Außerdem kann man mit assert bzw. mit eigenen IF-Statements das allerselbe erreichen.

Naja, der Rest ist Ansichtssache. Ich finde, dass Sachen wie Überladen den Code grausam schlecht machen, es sollte meiner Meinung nach nicht mehrere Funktionen mit dem selben Namen geben. Überladen kann zur riesigen Fehlerquelle werden, wenn man beispielsweiße ein Argument vergisst, und damit eine ganz andere Funktion aufgerufen wird.

Ich finde, dass ein C-Code der gut in verschiedene Quellcodes aufgeteilt ist, wesentlich besser ist.
Ich mach mir beispielsweiße fast immer eine utils.c mit "utility" Funktionen wie memset/memcpy/malloc/etc. (ich benutz auf der PSP nicht gern die libc Funktionen, ich schreib mir diese lieber mit PSP-Funktionen wie sceKernelAllocPartitionMemory selber).
Dazu natürlich eine utils.h, mit den Funktionsprototypen.
Falls dann z.B. Funktionen zu Modulen dazu kommen, erstell ich mir eine module.c, mit den Funktionen, und eine module.h mit den Prototypen/Strukturen.
So erstell ich mir zu alllem was zusammengehört eine Quell- und eine Headerdatei, und in der main.c kommen nur Sachen wie GUI und die Funktionsaufrufe.
Auf diese Art und Weiße kann man schon halb-objektorientiert mit C programmieren, ohne den Code mit Schrott wie Überladen unlesbar zu machen.

Viele Grüße,
HacKmaN

Das Dynamischen Speicher nichtmehr freigegen wird hängt wohl vom Programmierer ab^^
Ich habe da eine Theorie warum bei C++ oder Java oft Memory Leaks entstehen.
Das ist eine Sprache die man auch schon vom Normalen Computer kennt. Z. B. "Visual C++ Runtime" für Spiele oder Java vom Browser. Jetzt will man auch mal eine Programmiersprache lernen. Natürlich nimmt man eine, von der man schonmal etwas gehört hat. Somit kommen immer mehr Programmierer die keine Ahnung haben ( Damit könnte auch ich gemeint sein ;-) ) und machen die Anfänger Fehler.

Zu dem Exception Handling: In C++ muss man erst einen Scope erstellen, in dem dann der Exceptions "geworfen" und "gefangen" werden kann. Der Vorteil ist halt hierbei, das wenn ein Exception "geworfen" und "gefangen" wurde, der gesammte Code in dem Scope rückgängig gemacht wird. D.h. lokale Variablen und angelegter dynamischer Speicher werden einfach wieder gelöscht. Dann kann das Programm einfach wieder weiterlaufen ohne mit einem Kryptischen Fehlercode beendet oder mit Speicherleichen weiter laufen zu müssen ;-)

Jetzt noch etwas zum Überladen von Funktionen ( Man kann auch Operatoren überladen ): Kein Programmierer würde in seinem Quellcode n Funktionen mit dem selben Namen erstellen, die jeweils etwas ganz anderes machen Big Grin Man benutzt die Überladung von Funktionen z.B. bei einer Funktion die 2 Zahlen zusammen rechnet:

Code:
int Addition( int Summand1, int Summand2 )
{
    return Summand1 + Summand2;
}

float Addition( float Summand1, float Summand2 )
{
    return Summand1 + Summand2;
}


Ich denke man versteht was ich meine^^
Bei einfachen Dingen wie oben bietet sich es auch an ein Template zu benutzen:

Code:
template <class Typ>
Typ Addition( Typ Summand1,  Typ Summand2 )
{
    return Summand1 + Summand2;
}

Aber wenn man nicht jeden beliebigen Typ einsetzen darf, würde ich Überladen Big Grin

Ja natürlich kann man mit C auch sehr gut Module basteln, aber da hat man die Hauptfunktionen in der Headerdatei und noch ein paar Nebenfunktionen in der Codedatei... Naja mir würde das nicht gefallen Big Grin

Ich denke auch das es Ansichtssache ist und ich würde vorschlagen, das wir uns auf ein Gleichgut einigen =)

Chaosduckman :
Das Dynamischen Speicher nichtmehr freigegen wird hängt wohl vom Programmierer ab^^
Ich habe da eine Theorie warum bei C++ oder Java oft Memory Leaks entstehen.
Das ist eine Sprache die man auch schon vom Normalen Computer kennt. Z. B. "Visual C++ Runtime" für Spiele oder Java vom Browser. Jetzt will man auch mal eine Programmiersprache lernen. Natürlich nimmt man eine, von der man schonmal etwas gehört hat. Somit kommen immer mehr Programmierer die keine Ahnung haben ( Damit könnte auch ich gemeint sein ;-) ) und machen die Anfänger Fehler.

Zu dem Exception Handling: In C++ muss man erst einen Scope erstellen, in dem dann der Exceptions "geworfen" und "gefangen" werden kann. Der Vorteil ist halt hierbei, das wenn ein Exception "geworfen" und "gefangen" wurde, der gesammte Code in dem Scope rückgängig gemacht wird. D.h. lokale Variablen und angelegter dynamischer Speicher werden einfach wieder gelöscht. Dann kann das Programm einfach wieder weiterlaufen ohne mit einem Kryptischen Fehlercode beendet oder mit Speicherleichen weiter laufen zu müssen ;-)

Jetzt noch etwas zum Überladen von Funktionen ( Man kann auch Operatoren überladen ): Kein Programmierer würde in seinem Quellcode n Funktionen mit dem selben Namen erstellen, die jeweils etwas ganz anderes machen Big Grin Man benutzt die Überladung von Funktionen z.B. bei einer Funktion die 2 Zahlen zusammen rechnet:

Code:
int Addition( int Summand1, int Summand2 )
{
    return Summand1 + Summand2;
}

float Addition( float Summand1, float Summand2 )
{
    return Summand1 + Summand2;
}


Ich denke man versteht was ich meine^^
Bei einfachen Dingen wie oben bietet sich es auch an ein Template zu benutzen:

Code:
template <class Typ>
Typ Addition( Typ Summand1,  Typ Summand2 )
{
    return Summand1 + Summand2;
}

Aber wenn man nicht jeden beliebigen Typ einsetzen darf, würde ich Überladen Big Grin

Ja natürlich kann man mit C auch sehr gut Module basteln, aber da hat man die Hauptfunktionen in der Headerdatei und noch ein paar Nebenfunktionen in der Codedatei... Naja mir würde das nicht gefallen Big Grin

Ich denke auch das es Ansichtssache ist und ich würde vorschlagen, das wir uns auf ein Gleichgut einigen =)


Okay, einigen wir uns auf Ansichtssache^^

Seiten: 1 2
Referenz-URLs