PureBasic - PureBasic
| 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
|
| 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 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
- Hale Ligh, Michael (2010). Malware-analytikere Kogebogsværktøjer til at modvirke ondsindede angreb . Indianapolis, IN: John Wiley & Sons Inc. s. 241. ISBN 978-0-470-61303-0.
- Galbreath, Nick (2002). Kryptografi til internet- og databaseapplikationer: udvikling af hemmelige og offentlige nøgleteknikker med Java . Indianapolis, Ind .: Wiley. s. 300 . ISBN 978-0-471-21029-0.
- "At lære at knække kode" . Manly Daily . 25. juni 2004.
- Georges, Philippe. "La programmering avec PureBasic" . PROgrammez (141).
- Svoboda, Luboš (2012). Překvapivý PureBasic (Overraskende PureBasic: En tjekkisk e-bog til potentielle brugere af PureBasic) . s. 89.
eksterne links
- Artikler
- PureBasic - The Perfect Cross-Platform & Native Development Language (2015)
- En lille PureBasic-anmeldelse (2019)
- Biblioteker og arkiver med open source-kode