Umstieg von Blitz auf Pure

Anfängerfragen zum Programmieren mit PureBasic.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Umstieg von Blitz auf Pure

Beitrag von Dare Devil »

Hallo Leute.
Ich bin neu hier und in Pure Basic allgemein.
Ich habe bis jetzt in Blitz Basic 2D programmiert (nur Spiele) und habe mich nun entschieden endgueltig wegen der vielen Vorteile die Pure Basic einfach hat auf Pure Basic umzusteigen.
Da beide Sprachen Basic-Dialekte sind habe ich mir gedacht wird das schon nicht so schwer sein.
Nun habe ich mir mal das wikibook von Pure Basic komplett durchgelesen und musste festellen, dass der Umstieg haerter ist, als ich angenommen habe.

Warum so viele Variablentypen? In Blitz Basic gibt es den Integer und Float fuer Zahlen ... in PB gibt es aber noch Long, Double, Word usw... wozu?

Desweiteren muss ich mir auch angewohnen nach dem If kein "Then" mehr zu schreiben, den String in der Print-Anweisung in Klammern zu setzen usw.

Mich interessiert auch wie ich z.B. einen String in einen Integer konviertiere und umgekehrt... In BB war das einfach so moeglich:
string$ = int%. Ich schaetze mal das ist in PB ganz anders.

Was habe ich als ehemaliger BB-Coder nun zu beachten? (moechte in Zukunft nur noch in PB coden... waere ja auch sehr verwirrend beide Sprachen zu benutzen, weil sie sich einfach so aehnlich sind und man schnell durcheinander kommt)
Gibt es vielleicht sogar Tuts und/oder Beitraege hier, die sich mit dem Umstieg beschaeftigen (hab keine gefunden)?
Gibt es hier unter euch Coder, die ehemals in BB gecodet haben?
Wenn ja waere es nett wenn ihr mir eure Erfahrungen schildert ;)

Gruss,
Dare Devil
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Welcome on Board. :D

also.. direkt zu deinen Fragen...

> Warum so viele Variablentypen? In Blitz Basic gibt es den Integer und Float fuer Zahlen ... in PB gibt es aber noch Long, Double, Word usw... wozu?

in PB gibt es auch sozusagen "nur" Integer und Float aber du kannst für beide verschiedene Größen festlegen.

bei integer Byte = 8bit, Word = 2byte = 16bit, Long = 4byte = 32bit und Quad = 8byte = 64bit.
(bachte: Integer sind in PB immer signed)
bei Float halt Float = 4byte und Double = 8byte

diese Datentypen existieren grundsätzlich in der Welt der Programmiersprachen,
und wenn man z.B. Datenbank-Anwendungen schreiben will, muss man sie benutzen können.
schon bei manchen API-Aufrufen muss man ein Word benutzen können.


> Desweiteren muss ich mir auch angewohnen nach dem If kein "Then" mehr zu schreiben, den String in der Print-Anweisung in Klammern zu setzen usw.

yo, das sollte ja erlernbar sein.... PB ist ein bißchen von C beeinflußt, kein ganz "reinrassiges" Basic...


> Mich interessiert auch wie ich z.B. einen String in einen Integer konviertiere und umgekehrt... In BB war das einfach so moeglich:
> string$ = int%. Ich schaetze mal das ist in PB ganz anders.

das ist dann in Blitz sehr ungewöhnlich gelöst, eher wie in einem GameMaker als wie in einer Programmiersprache.

in PB ist es relativ standardmäßig:
Wert.l = Val( ZahlString$ ) bedeutet "Value von" bzw.
String$ = Str( Wert ) bedeutet "String aus"

... in 4.2 gibt es aus performancegründen noch unterschiedliche funktionen für die unterschiedlichen typen:
StrF und StrD, um aus Float/Double einen String zu machen, StrQ um das aus einem Quad zu tun,
bzw. ValF, ValD, ValQ, um den Zieltyp für die Umwandlung aus einem String festzulegen.

mag man als mehrarbeit für den Programmierer ansehen, aber der sollte im allgemeinen ja wissen, was für ein Typ seine Variable ist und welche Funktion er dann benutzen muss.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Kaeru Gaman hat geschrieben:Welcome on Board. :D
danke :)
also.. direkt zu deinen Fragen...

> Warum so viele Variablentypen? In Blitz Basic gibt es den Integer und Float fuer Zahlen ... in PB gibt es aber noch Long, Double, Word usw... wozu?

in PB gibt es auch sozusagen "nur" Integer und Float aber du kannst für beide verschiedene Größen festlegen.

bei integer Byte = 8bit, Word = 2byte = 16bit, Long = 4byte = 32bit und Quad = 8byte = 64bit.
(bachte: Integer sind in PB immer signed)
bei Float halt Float = 4byte und Double = 8byte

diese Datentypen existieren grundsätzlich in der Welt der Programmiersprachen,
und wenn man z.B. Datenbank-Anwendungen schreiben will, muss man sie benutzen können.
schon bei manchen API-Aufrufen muss man ein Word benutzen können.
Ich schaetze mal das wird die groesste Huerde fuer mich werden, da ich damit noch ueberhaupt nichts anfangen kann ...

> Desweiteren muss ich mir auch angewohnen nach dem If kein "Then" mehr zu schreiben, den String in der Print-Anweisung in Klammern zu setzen usw.

yo, das sollte ja erlernbar sein.... PB ist ein bißchen von C beeinflußt, kein ganz "reinrassiges" Basic...
Sind ja nur mal zwei Beispiele... Das Umdenken ist halt einwenig schwierig, vor allem wenn sich die Sprachen so aehneln dann kommt man ganz leicht durcheinander ... aber was solls, ich bin sehr motiviert ;)

> Mich interessiert auch wie ich z.B. einen String in einen Integer konviertiere und umgekehrt... In BB war das einfach so moeglich:
> string$ = int%. Ich schaetze mal das ist in PB ganz anders.

das ist dann in Blitz sehr ungewöhnlich gelöst, eher wie in einem GameMaker als wie in einer Programmiersprache.
Das war halt sehr praktisch, wobei die PB-Loesung auch nicht viel komplizierter ist (bis auf den letzten Punkt)
... in 4.2 gibt es aus performancegründen noch unterschiedliche funktionen für die unterschiedlichen typen:
StrF und StrD, um aus Float/Double einen String zu machen, StrQ um das aus einem Quad zu tun,
bzw. ValF, ValD, ValQ, um den Zieltyp für die Umwandlung aus einem String festzulegen.

mag man als mehrarbeit für den Programmierer ansehen, aber der sollte im allgemeinen ja wissen, was für ein Typ seine Variable ist und welche Funktion er dann benutzen muss.
Aber man kann die allgemeinen val() und str()- funktionen, die du vorher erwaehnt hast trotzdem noch weiterhin benutzen in 4.2. oder?
Wenn ja, dann verstehe ich den Sinn der einzelnen Funktionen (ValF, ValD usw) nicht.


Ich bin noch sehr verwirrt, hoffe aber dass ich das schnell lernen werde. Habe bereits einige Tutorials heruntergeladen, die ich am Wochenende durcharbeiten moechte ...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Ich schaetze mal das wird die groesste Huerde fuer mich werden, da ich damit noch ueberhaupt nichts anfangen kann ...

dann würde ich genau da anfangen, weil die weilt der Datenverarbeitung sich um Daten dreht, und damit natürlich auch um ihren Speicherbedarf.

in einem Byte kannst du Zahlen von 0-255 speichern (bzw. von -128 bis 127, wenn du mit Vorzeichen arbeitest)
in einer Quad (8byte) natürlich sehr viel größere Zahlen, nämlich von -9.223.372.036.854.775.808 bis +9.223.372.036.854.775.807

... wenn du Zahlen speichern willst, die sehr groß werden können, nimmst du Quad.
dafür brauchst du natürlich mehr speicher, und bekommst in 1 Megabyte "nur" 131.072 Zahlen hintereinander.

wenn dur nur kleine Zahlen speichern willst, z.b. ein paar Buchstaben und Zahlen und so,
(wie z.b. einen String im ASCII-format), dann brauchst du nur 256 unterschiedliche Werte,
kannst also Byte benutzen, und bekommst dann 1.048.576 Zahlen hintereinander in das selbe Megabyte.


... und die unterschiedlichen Val* und Str* funktionen sind eben dafür da, dass man die typen korrekt umwandeln kann.


PS:
diese Datentypen und das Drumrum lernen zu müssen ist übrigens kein spezifisches "Blitz to Pure" problem...
das muss man immer, wenn man seine erste "richtige" Programmiersprache lernt.
in jeder Programmiersprache, mit der man auch Anwendungen schreiben kann, muss man Datentypen kennen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

Hallo Dare Devil und willkommen hier.

Das Forum hier ist spitze. Man bekommt oft schnell Hilfe ( mit schnell meine ich innerhalb von 1 Stunde oder noch weniger ).

Was PureBasic angeht, habe ich vieles über die Hilfefunktion gelernt ( hatte früher QBasic gemacht ). Beispiele benutzen und verändern um aus den Unterschieden vom Verhalten des Programmes zu lernen.

Ein anderes, auch noch zu empfehlendes Forum ist:
http://www.purebasic-lounge.com/

Sodelle - dann wünsche ich dir noch einen guten Start mit PureBasic.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Was habe ich als ehemaliger BB-Coder nun zu beachten? (moechte in Zukunft nur noch in PB coden... waere ja auch sehr verwirrend beide Sprachen zu benutzen, weil sie sich einfach so aehnlich sind und man schnell durcheinander kommt)
Vieles. Du kannst z.B nicht mehr so unsauber programmieren wie in BB(Siehe automatische Konvertierung von ints to strings und umgekehrt).
Gibt es hier unter euch Coder, die ehemals in BB gecodet haben?
Wenn ja waere es nett wenn ihr mir eure Erfahrungen schildert Wink
Also ich habe vor ca. 3 Jahren mit BB angefangen, da ich so fasziniert von der Spieleentwicklung war. Und Blitz3D schien damals eine für mich geeignete Programmiersprache zu sein: Integrierte, leistungsstarke Game Engine, BASIC Dialekt, zig andere nützliche Libs.
Leider erkannte ich sehr schnell die Schwächen von B3D: Nur 3 Variablentypen, keine Pointer, keine "richtigen" Structs(Gibt zwar "Types", aber die sind nicht so mächtig wie "Structs" in PB|C und außerdem noch mit einer LL verknüpft), keine LLs(Es sei denn man nimmt den Umweg über nen "Type") und keine DLLs erstellbar.
Tia, und somit konnte ich WinAPI etc. schonmal knicken.
Ne GUI Engine hatte B3D auch nicht, also machte ich mich auf die Suche nach einer besseren Sprache.
Zu dieser Zeit gab es ja BlitzMax, aber die IDE war so grottenschlecht, da hab ichs lieber gleich gelassen.
Und so bin ich dann durch Google auf PB gestoßen. :D
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag von Dare Devil »

Vieles. Du kannst z.B nicht mehr so unsauber programmieren wie in BB(Siehe automatische Konvertierung von ints to strings und umgekehrt).
naja gut ... Meine Meinung ist eher: Man kann mit jeder Programmiersprache unsauber programmieren ...
Also ich habe vor ca. 3 Jahren mit BB angefangen, da ich so fasziniert von der Spieleentwicklung war. Und Blitz3D schien damals eine für mich geeignete Programmiersprache zu sein: Integrierte, leistungsstarke Game Engine, BASIC Dialekt, zig andere nützliche Libs.
Leider erkannte ich sehr schnell die Schwächen von B3D: Nur 3 Variablentypen, keine Pointer, keine "richtigen" Structs(Gibt zwar "Types", aber die sind nicht so mächtig wie "Structs" in PB|C und außerdem noch mit einer LL verknüpft), keine LLs(Es sei denn man nimmt den Umweg über nen "Type") und keine DLLs erstellbar.
Tia, und somit konnte ich WinAPI etc. schonmal knicken.
Ne GUI Engine hatte B3D auch nicht, also machte ich mich auf die Suche nach einer besseren Sprache.
Zu dieser Zeit gab es ja BlitzMax, aber die IDE war so grottenschlecht, da hab ichs lieber gleich gelassen.
Und so bin ich dann durch Google auf PB gestoßen. :D
Dasselbe trifft wohl auf mich auch. Ausser das ich nicht durch Google auf PB gekommen bin sondern durch das Blitz Basic Forum :mrgreen: War naemlich auf der Suche nach einer Moeglichkeit, Assembler-Code in ein BB-Programm einzufuegen... dann fand ich einen Beitrag mit "das geht in BB nicht, nur in PB" ... und dann habe ich angefangen mich ueber PB zu informieren und war sehr beeindruckt von den vielen Moeglichkeiten, die PB bietet ... ja und jetzt bin ich hier :mrgreen:
Habe sogar extra mein aktuelles BB-Projekt abbgebrochen nur um PB zu lernen ... Werde dieses Projekt aber nach dem Lernen wieder fortzetzen, natuerlich in PB 8)


So und jetzt werd ich erstma bueffeln. Thx fuer eure Hilfe - ich werde sie vermutlich noch sehr oft brauchen :lol:
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

>Meine Meinung ist eher: Man kann mit jeder Programmiersprache unsauber programmieren ...
Habe ich etwa behauptet, man könne in PB nicht unsauber programmieren? Nein, ich habe nur behauptet, dass man in PB NICHT SO unsauber programmieren kann, wie in BB.
Antworten