Möglichkeiten von PureBasic? 3D-Engine? Newbie-Lektüre?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Zuerst einmal: Ich KANN C++ und Oberon, ich weiss auch, wieso diese
Sprachen OOP-Sprachen genannt werden und ich kenne den Unterschied
zu PB.
Wikipedia ist oft gut, aber dennoch nur von Hobbyautoren geschrieben..
Wissen.de schreibt:

Code: Alles auswählen

Objekt-Orientierung

Begriff aus der Softwaretechnik; grundlegender Gedanke dabei ist, dass Datenstrukturen und deren Eigenschaften (die wirkenden und möglichen Operationen) als eine Einheit betrachtet werden. Aus dieser Idee haben sich seit 1961 so genannte objektorientierte Computersprachen entwickelt. Bekanntestes Mitglied ist die 1983 von Bjarne Stroustrup entwickelte Programmiersprache C++.
Und ich kann dir sagen, dass das nicht die einzige Quelle ist!

> die möglichkeit den zugriff auf bestimmte eigenschaften eines objektes von aussen effektiv auszuschließen ist eine davon.
falsch! Das gehört nicht zur Definition von OOP, sonder zur Definition einer
OOP-Sprache!

> bei oop dürften nur die eigenschaften des objektes frei zugänglich sein, die zu seiner schnittstelle gehören, genauso wie dessen funktionen.
Schnittstelle? Interfaces? Ist ein grosser Unterschied zu OOP und hat nur
wenig damit zu tun..

Edit: Sry, wurde kurz unterbrochen:
Vielleicht verstehtst du Folgendes: Ich benutze lieber Longs als Floats.
(Denk mal drüber nach, was ich damit meine, kleines Rätsel :) )

Nach dir soll jede Sprache OOP gleich implementieren! Find ich nicht gut!
Jede Sprache will gelernt sein! Jede sollte ihr eigenes Konzept mitbringen
und wenn du PB und sein OOP richtig gelernt hast und es gewohnt bist,
hast du absolut keine Probleme mehr damit :D
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

mit schnittstelle meine ich nicht interfaces, sondern die menge der eigenschaften und funktionen eines objektes, die zu seiner verwendung bekannt sein sollen. einige sprachen bieten dazu zwar ein hilfskonstrukt an (zb java) aber das ist nicht notwendig.

was longs und floats jezt damit zu tun haben sollen verstehe ich nicht.

ist mir aber auch egal. ich habe keine lust auf noch so eine lächerliche diskussion, da programmiere ich doch lieber objektorientiert im lambda kalkül :lol:
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Was ist daran lächerlich? Das Verständnis ist die essenzielle Grundlage zum
Benutzen einer Technik!

> mit schnittstelle meine ich nicht interfaces, sondern die menge der eigenschaften und funktionen eines objektes
Eine Schnittstelle verstehe ich als eine Wand mit Fenstern, durch die Fenster
kann man hinein schauen und etwas herausnehmen. Wo ist da der Bezug
zur _Technik_ OOP? Welche Eigenschaften public sein sollen und welche
nicht, hat nichts mit OOP zu tun, glaub mir :)

> was longs und floats jezt damit zu tun haben sollen verstehe ich nicht.
Ich habs gern genau :wink:

greetz
Remi

PS: Gute Nacht, ich geh schlafen.
peak7810
Beiträge: 9
Registriert: 02.07.2005 17:21

Beitrag von peak7810 »

@remi: Ich hab mich schon mit C++ befasst, auch Assembler, BB3D sind keine Fremdbegriffe für mich.

Ich fang dieses Jahr mit Fachoberschule an, und dannach möchte ich Informatik studieren, somit haste schon recht, man kann nie genug lernen, und vorallem ists besser, wenn ich einiges schon eher kann.
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag von Sebe »

Auf diese "Paragraphenreiterei" habe ich eigentlich keine Lust.
Aber:

Objektorientierte Programmierung definiert sich aus 4 Grundlagen.
Diese 4 Grundlagen müssen mit einer Sprache umsetzbar sein, damit man sie objektorientiert nennen kann.
Diese 4 "Pfeiler" der objektorientierten Programmierung bzw. Entwicklung sind:

- Kapselung
- Verbergen von Daten
- Vererbung
- Polymorphie

Kapselung: Diese Grundlage ist je nach Auslegung bei beinahe allen Sprachen gegeben. Remi spricht von Kapselung von Daten, wobei er Daten als Variablen definiert. Ich schliesse in Daten auch noch Funktionen (die dann Methoden genannt werden) ein. Deshalb ist PureBasic für mich schonmal keine Sprache, die Objektorientierung unterstützt.

Verbergen von Daten: Die einzelnen Teile einer Klasse zu verwenden ohne zu wissen wie sie aufgebaut sind, sondern nur mit Kenntnis was sie bewirken unterstützen theoretisch auch alle Sprachen. Nur macht hier wieder die Auslegungssache, was denn "Daten" sind den Unterschied.

Vererbung: Spätestens hier lassen sich meiner Meinung nach die echten OOP Sprachen von den "unechten" Unterscheiden. PureBasic unterstützt weder, die Vererbung von normalen Klassen, noch die Vererbung von abstrakten Klassen (und genau hier liegt eigentlich das grosse Potential der Vererbung), da PureBasic gar keine richtigen abstrakten Klassen kennt.

Polymorphie: Bedeutet, dass eine Funktion, Klasse, etc. immer genau das tut, wofür sie gedacht ist. Wie es in PureBasic aussieht könnt ihr alle mal ausprobieren. Schon mal ne Procedure in PureBasic überladen? Wird gar nicht erst kompiliert, da das Überladen von Funktionen gar nicht unterstützt wird. Manch einer mag jetzt verstehen, warum ich Methoden auch als Daten bezeichne: so kann ich Polymorphismus anhand von überladenen Methoden besser erklären/erkennen :wink:
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

>Auf diese "Paragraphenreiterei" habe ich eigentlich keine Lust.
ich mags <)

>Objektorientierte Programmierung definiert sich aus 4 Grundlagen.
>Diese 4 Grundlagen müssen mit einer Sprache umsetzbar sein, damit man sie objektorientiert nennen kann.
Worauf bezieht sich das 'sie'? Von mir aus gesehen auf die Sprache! Das
ist ganz einfach eine Definition einer OOP-Sprache.

Ich glaube es gibt sogar Sprachen, die Polymorphie absichtlich nicht mehr
(mehr, da von C++ abgeschaut) drin haben...

Enzyklopädie schreibt dazu:

Code: Alles auswählen

Objektorientierte Programmierung (OOP) ist ein Verfahren zur Strukturierung von Computerprogrammen, bei dem zusammengehörige Daten und die darauf arbeitende Programmlogik zu Einheiten zusammengefasst werden, den sogenannten Objekten. 

Zumindest konzeptionell arbeitet ein Programm dann nicht mehr (wie bei der prozeduralen Programmierung) so, dass sequentiell einzelne Funktionsbereiche eines Algorithmus durchlaufen werden, der dabei eine Anzahl Daten verändert, sondern die Programmlogik entfaltet sich in der Kommunikation und den internen Zustandsveränderungen der Objekte, aus denen das Programm aufgebaut ist. 

Vorteile der objektorientierten Programmierung liegen in der besseren Modularisierung des Codes, dadurch bedingt in einer höheren Wartbarkeit und Wiederverwendbarkeit der Einzelmodule, sowie in einer höheren Flexibilität des Programmes insgesamt, insbesondere in Bezug auf die Benutzerführung, da Programme dieser Art weniger stark gezwungen sind, dem Benutzer bestimmte Bedienabläufe aufzuzwingen.
http://www.weblexikon.de/Objektorientie ... erung.html

Unten werden auch deine Dinge genannt, aber ganz klar abgetrennt unter
dem Titel Konzepte. Diese Dinge sind also nur ein Konzept
der OOP!

Soll ich noch mehr suchen?


@peak7810:
Also wenn du die grundlegenden Sachen der Programmierung ja schon
kennst, kannst du getrost irgendeine Sprache nehmen :)

greetz
Remi
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag von Sebe »

Ach, jetzt weiss ich wo du die Linie ziehst.
Das ganze aber als Konzept der OOP zu betrachten führt hier ein wenig in die Irre, da zumindest ich von Anfang an von OOP-Sprachen gesprochen habe.
Und selbst die Konzepte der OOP lassen sich meiner Meinung nach nur mit Sprachen vollständig umsetzen, die Funktionen innerhalb von Klassen unterstützen.
Darüberhinaus empfinde ich C++ nicht als ungeeignet für einen Anfänger. Der Mythos "C++ - die schwere Programmiersprache" trifft meines Erachtens nur dann zu, wenn man versuch gleich alle Aspekte der Sprache zu begreifen und anzuwenden.
Genauso ist Assembler nicht schwer, nur eben anders als alle anderen Programmiersprachen. :mrgreen:
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

> Das ganze aber als Konzept der OOP zu betrachten führt hier ein wenig in die Irre, da zumindest ich von Anfang an von OOP-Sprachen gesprochen habe.
Und ich musste 2 mal betonen, dass ich nicht von OOP-Sprachen rede? :?

> Und selbst die Konzepte der OOP lassen sich meiner Meinung nach nur mit Sprachen vollständig umsetzen, die Funktionen innerhalb von Klassen unterstützen.
Dein Konzept nicht, ja, aber meins :D (und hellhounds)

C++, Oberon, Assembler, PB sind alles keine schweren Sprachen zum er-
lernen. Wobei man aber bei PB meist die Libraries zur Sprache zählt, weshalb
man mit der Sprache PB schneller zu Erfolgen gelangt.
Bei C++ muss man da schon ein wenig mehr wissen, wie z.B. das Hinzulinken
von Libs, Headerfiles, all die OOP-Sachen, usw.
Assembler ist eine der einfachsten Sprachen, man sieht aber nur sehr langsam
Erfolge und das ist zum Beginnen einfach unmotivierend...

greetz
Remi
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Ich glaube es gibt sogar Sprachen, die Polymorphie absichtlich nicht mehr (mehr, da von C++ abgeschaut) drin haben...
doch, alle objektorientierten sprachen haben polymorphie (sogar die funktionalen objektorientierten sprachen), das ist schließlich einer der hauptvorteile einer solchen sprache. ich glaube du verwechselst das mit mehrfachvererbung. mehrfachvererbung findet sich wirklich kaum in sprachen nach c++.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Jo, ist möglich dass ich es verwechsel, hab nur noch so was im Hinterkopf
gehabt (deshalb auch das 'glaub').
Wobei PHP nach dieser Seite Polymorphie nicht unterstützt...
http://www.php-faq.de/q/q-klassen-polymorphie.html

Wenn diese Seite stimmt, dann ists wohl trotzdem nur ne frage des Konzeptes
:D
Antworten