# PowerBASIC

PowerBASIC is een uiterst moderne variant van het aloude BASIC-front. PowerBASIC werkt met een compiler.
PowerBASIC is de opvolger van Borlands TurboBASIC. Programmeur Robert Zale kocht in 1991 de rechten van Borland terug (hij was de oorspronkelijke ontwikkelaar) en ontwikkelde de taal verder. In 1991 werd PowerBASIC 2.0 (als opvolger van TurboBASIC 1.1) uitgebracht.
Kenmerken van de taal zijn:
* uitgebreide lijst van commando's en functies;
* drie versies: een DOS-versie, twee 32 bit-Windowsversies: PB/CC en PB/DLL (later hernoemd tot: PB/WIN);
* de DOS-versie is 99% sourcecode compatibel met QBasic en QuickBASIC;
* compiler die uiterst kleine en snelle applicaties genereert (oorspronkelijk was PB ontwikkeld om Visual Basic-delen die traag waren, te versnellen, als een DLL);
* geen run-timebestanden nodig (alles wat nodig is, zit in de EXE).
* delen van de source code mogen assembly language bevatten: dus eenvoudige integratie van machinetaal.
* Ook de compiler en zijn IDE-omgeving zijn klein: de PB/WIN compiler (versie 10) is 836kB en de IDE is 1549kB. Met alle hulpprogramma's erbij is alles net kleiner dan 10MB. En de totale installatie (inclusief alle demo-programma's) is slechts 30MB.
PowerBASIC is de verdere ontwikkeling van Borlands TurboBASIC, die tezamen met TurboC en TurboPascal destijds een revolutie in pc-land betekenden: kleine compilers (op één floppydisk) die een enorme kracht en snelheid aan zelf geschreven programma's kon geven. Tot die tijd was men aangewezen op grote compilers (UCSD-compiler bijvoorbeeld) die alleen op grote mainframes konden draaien.
Destijds al een enorme snelheid, maar aangezien de ontwikkeling van TurboBASIC tot PowerBASIC tot in 2003 is voortgezet, is PowerBASIC een uiterst modern product, met alle moderne mogelijkheden van moderne talen. Zo bevat bijvoorbeeld PowerBASIC for DOS vanaf versie 3.2 al pointers. Dit was de enige Basic-compiler die pointers aanbood. De Windows versie is tot 2011 doorontwikkeld.

## Opmerkelijk

* Op voorstel van de beta-testers (veelal ervaren programmeurs) heeft Robert Zale een functie ingebouwd om de grootte van het eindproduct kunstmatig te vergroten: #BLOAT. Voor veel opdrachtgevers was het moeilijk te begrijpen dat alle functionaliteit in een dusdanig kleine applicatie aanwezig kan zijn en/of dat men betaalde voor zo'n kleine toepassing. Om veel discussies te voorkomen is het mogelijk om met #BLOAT de compiler opdracht te geven om het eindresultaat tot precies de opgegeven grootte op te blazen.
* De Windows-versies (PBWIN vanaf versie 8, PBCC vanaf versie 4) zijn 32-bit toepassingen en werken vanaf Windows 2000, maar hiermee zijn ook applicaties te maken die op versie vóór Windows 2000 draaien (windows NT4).
* De eerdere versies werken ook onder Windows NT4.
* PB/DLL was ontwikkeld om als toevoeging op VisualBasic te dienen: om die delen die VB traag uitvoerde te isoleren, en in PowerBasic tot DLL te compileren, die vervolgens werd aangeroepen vanuit VB. PowerBasic is voor veel rekentaken, stringmanipulaties en array-bewerkingen (waaronder sorteren) vele malen sneller van VB. Maar na de komst van PB/DLL hebben een aantal beta-testers (waaronder vanuit Nederland) Robert Zale overgehaald om duidelijk te maken dat er ook uitstekend zelfstandige applicaties mee konden worden gemaakt. Dit leidde tot de naamswijziging: PB/WIN.

## Versies

* PowerBASIC for DOS, versies 2.0 (1991), 2.1 (1992), 3.0 (1993), 3.1 (1994), 3.2 (1995), 3.5 (1997)
* PowerBASIC for Windows
** PB/DLL, versies 1.0 (16 bit), 1.1 (16 bit), 2.0 (16 bit + 32 bit), 5.0 (32 bit), 6.0 (32 bit), 6.1 (32 bit), 6.2 (32 bit)
** PB/Win, versies 7.0, 8.0 (2005), 9.0 (eind 2008) en 10.0 (2011)
* PowerBASIC console compiler PB/CC, versies 1.0, 1.1, 2.0, 3.0, 3.1, 3.2, 4.0 (2005), 5.0 (2008), 6.0 (2011)
Sinds versie 7.0 van de Windowscompiler is deze van PB/DLL naar PB/Win hernoemd, omdat deze perfect geschikt is om complete programmatuur te schrijven en niet specifiek voor schrijven van DLL's is bedoeld.
Sinds versie 9.0 beschikt PB/WIN over uitgebreide mogelijkheden voor objectgeoriënteerd programmeren (OOP).