PureBasic - PureBasic

PureBasic
PureBasic IDE 5.10.png
PureBasic VD.png
Paradigme struktureret , bydende nødvendigt , proceduremæssigt
Familie GRUNDLÆGGENDE
Designet af Fantaisie Software
Udvikler Fantaisie Software
Først dukkede op 1998 (AmigaOS)
2000 (Windows)
Stabil frigivelse
5.73 LTS / 23. november 2020 ; 8 måneder siden ( 2020-11-23 )
OS på tværs af platforme : Microsoft Windows , Linux , macOS (aktiv)
AmigaOS (ophørt, open source )
Licens kommerciel
Filnavneudvidelser .pb, .pbi, .pbf, .pbp, .pbv
Internet side www .purebasic .com

PureBasic er en kommercielt distribueret proceduremæssig computer programmeringssprog og integrerede udviklingsmiljø baseret på BASIC og udviklet af Fantaisie Software til Windows 32/64-bit, Linux 32/64 bit, og MacOS . En Amiga- version er tilgængelig, selvom den er afbrudt, og nogle dele af den frigives som open source . Den første offentlige udgivelse af PureBasic til Windows var den 17. december 2000. Den er løbende opdateret siden.

PureBasic har en "levetidslicensmodel". Som citeret på hjemmesiden har den første PureBasic-bruger (som registrerede sig i 1998) stadig fri adgang til nye opdateringer, og dette vil ikke ændre sig.

PureBasic kompilerer direkte til x86 , x86-64 , PowerPC eller 680x0 instruktionssæt og genererer små enkeltstående eksekverbare filer og DLL'er, der ikke har brug for runtime-biblioteker ud over standard systembiblioteker. Programmer udviklet uden brug af de platformsspecifikke applikationsprogrammeringsgrænseflader (API'er) kan let bygges fra den samme kildefil med ringe eller ingen ændringer.

PureBasic understøtter inline-samling , så udvikleren kan inkludere FASM-samlekommandoer inden for PureBasic-kildekoden, mens de variabler, der er angivet i PureBasic-kildekoden, bruges, så erfarne programmører kan forbedre hastigheden af ​​hastighedskritiske sektioner af kode. PureBasic understøtter og har integreret OGRE 3D-miljøet. Andre 3D-miljøer såsom Irrlicht Engine understøttes uofficielt.

Programmeringssprog

Egenskaber

PureBasic er en indfødt cross platform 32 bit og 64 bit BASIC compiler. Aktuelt understøttede systemer er Windows, Linux, macOS. AmigaOS-versionen er arv og open source. Compileren producerer indfødte eksekverbare filer, og syntaksen for PureBasic er enkel og ligetil, sammenlignelig med almindelig C uden parenteser og med native unicode-strenghåndtering og et stort bibliotek med indbyggede supportfunktioner. Det kan kompilere konsolapplikationer, GUI-applikationer og DLL-filer.

Hello World-eksempel

Den følgende enkelt linje med PureBasic-kode opretter en uafhængig x86-eksekverbar (4.5 KiB (4.608 byte) på Windows-version), der viser en meddelelsesboks med teksten " Hello World ".

 MessageRequester("Message Box", "Hello World")

Og den følgende variant af den samme kode, som i stedet bruger et integreret Windows API- opkald uden behov for erklæringer eller andre eksterne referencer, vil skabe en endnu mindre 2,0 KiB (2.048 byte) standalone x86, der kan køres til Windows.

 MessageBox_(0, "Hello World", "Message Box", 0)

Følgende er en konsolversion af Hello World-eksemplet.

 OpenConsole()          ; Open a console window. 
 Print("Hello, World!")

Procedurel programmering

PureBasic er et "Anden generation BASIC" -sprog, med strukturerede betingelser og sløjfer, og procedureorienteret programmering understøttes. Brugeren er ikke forpligtet til at bruge procedurer, så en programmør kan vælge en kodestil , der inkluderer Goto, Gosub Label og Return .

Nedenfor er en prøveprocedure til sortering af en matrix, selvom SortArray nu er en indbygget funktion af PureBasic.

 Procedure bubbleSort(Array a(1))
   Protected i, itemCount, hasChanged
  
   itemCount = ArraySize(a())
   Repeat
     hasChanged = #False
     itemCount - 1
     For i = 0 To itemCount
       If a(i) > a(i + 1)
         Swap a(i), a(i + 1)
         hasChanged = #True
       EndIf 
     Next  
   Until hasChanged = #False
 EndProcedure

Nedenfor er et eksempelprogram, der viser en betydelig teksteditor med to menupunkter.

;Create Window:
OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 600, "Simple Text Editor", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget)

;Add 2 menus:
CreateMenu(0, WindowID(0))
MenuItem(1, "&OK")
MenuItem(2, "&Cancel")

;Add Editor:
EditorGadget(0, 0, 0, 0, 0)
SetGadgetFont(0, LoadFont(0, "Courier New", 10))

;Process window messages until closed:
Repeat
    Select WaitWindowEvent()
    Case #PB_Event_Menu
        Select EventMenu()
        Case 1: MessageRequester("OK clicked directly or with '&' mnemonic.", GetGadgetText(0))
        Case 2: Break
        EndSelect
    Case #PB_Event_SizeWindow: ResizeGadget(0, 0, 0, WindowWidth(0, #PB_Window_InnerCoordinate), WindowHeight(0, #PB_Window_InnerCoordinate))
    Case #PB_Event_CloseWindow: Break
    EndSelect
ForEver

Bemærk, at PureBasic ikke undgår dobbelt anførselstegn i strenge, så disse skal sammenkædes med Chr (34) .

Objektorienteret programmering

Fred, udvikleren af ​​PureBasic, har udtalt, at PureBasic aldrig vil være objektorienteret . Imidlertid har mange brugere oprettet objektorienterede supportsystemer.

Datatyper

Variabel datatype, der er angivet, når du bruger den første gang (og eventuelt - i fremtiden) og er adskilt fra navnet på punktet. Der er et sæt grundlæggende typer - .f, .d (float og dobbelt tal), .b, .c, .w, .l, .q (heltal - fra enkeltbyte og 8-byte), .s - strenge.

Type Suffiks Hukommelsesforbrug Numerisk rækkevidde
Byte b 1 byte (8 bit) −128 ... +127
Ascii -en 1 byte (8 bit) 0 ... +255
Karakter c 1 byte (8 bit) (ascii) 0 ... +255
Ord w 2 byte (16 bit) −32768 ... +32767
Unicode u 2 byte (16 bit) 0 ... +65535
Karakter c 2 bytes (16 bit) (unicode) 0 ... +65535
Lang l 4 byte (32 bit) −2147483648 ... +2147483647
Heltal jeg 4 bytes (32 bit) x86 −2147483648 ... +2147483647
Flyde f 4 byte (32 bit) Afhængigt af forholdet mellem decimaltallet.
Heltal jeg 8 byte (64 bit) x64 −9223372036854775808 ... +9223372036854775807
Quad q 8 byte (64 bit) −9223372036854775808 ... +9223372036854775807
Dobbelt d 8 byte (64 bit) Afhængigt af forholdet mellem decimaltallet.
Snor s ( Strenglængde + 1) * SizeOf (tegn) Ingen grænse.
Fast streng s {længde } (Strenglængde) * SizeOf (karakter) Ingen grænse.
  • Bemærk: Len (streng), der bruges til at tælle længden af ​​en streng, overstiger ikke det første null-tegn ( Chr (0) ).

Ud over grundlæggende typer kan brugeren definere konstruktionstypen via

Structure type_name
   field_name.type ; Single field. Perhaps the structures attachment.
   field_name[count].type ; Static arrays.
   ; ... 
   ; Optional construction StructureUnion .. EndStructureUnion allows you
   ; to combine multiple fields into one area of memory
   ; that is sometimes required for the conversion types.
   StructureUnion
      type_name.type
      ; ... 
   EndStructureUnion 
EndStructure

Variabler kan være enkle (faktisk standardvariabler), dynamisk array (erklæret ved hjælp af en linket liste ( ), et associerende array (i nye versioner af sprog) ( ) Dim var_name.type_name (size1, size2, ... )List() var_name.type_nameMap var_name.type_name()

Form Designer RAD

PureBasic har sin egen form, designer til at hjælpe med at skabe former for applikationer, men andre tredjeparts løsninger er også tilgængelige. Den originale ikke-integrerede Visual Designer blev erstattet med en ny integreret Form Designer den 14. februar 2013.

Brugerfællesskab

PureBasic giver et online forum, hvor brugerne kan stille spørgsmål og dele viden. Den 6. maj 2013 havde det engelsksprogede forum 4.769 medlemmer og indeholdt 44.043 tråde bestående af 372.200 indlæg siden 17. maj 2002.

Talrige kodedelingswebsteder viser, at PureBasic bruges til at oprette værktøjer og spil på en hurtig og nem måde og dele store mængder open source-kode.

Yderligere læsning

  • Willoughby, Gary (2006). Purebasic: En begynders guide til computerprogrammering . ISBN 1-4276-0428-2.
  • Logsdon, John. Programmering af 2D-rullespil .Denne bog kan nu downloades frit
  • Grundlæggende kompilatorer: QuickBASIC, PureBasic, PowerBASIC, Blitz Basic, XBasic, Turbo Basic, Visual Basic, FutureBASIC, REALbasic, FreeBASIC . ISBN 1-155-32445-5.

Referencer

Generelle referencer

eksterne links

Artikler
Biblioteker og arkiver med open source-kode