# Visual Basic/Inleiding tot Visual Basic

Visual Basic .NET is een programmeertaal die door Microsoft ontwikkeld is. Het is afgeleid van BASIC. In dit handboek wordt Visual Basic 2015 gebruikt (Onderdeel van Visual Studio 2015).

## Waarom Visual Basic?

Visual Basic is een erg fijne taal om mee te beginnen. Zelfs voor degenen die zich nog nooit in een programmeertaal verdiept hebben, is dit te doen. Vandaar ook de naam: Visual Basic. Dit betekent echter niet dat het minder bruikbaar is door de eenvoud: de mooiste en grootste programma's kunnen best geschreven zijn met behulp van Visual Basic.

## Geschiedenis Basic

BASIC is een relatief oude programmeertaal (1965, dus al 50 jaar oud) die speciaal ontwikkeld is voor beginners. Dat is ook te merken aan de naam: BASIC is een afkorting voor Beginner's All-purpose Symbolic Instruction Code. Al vóór de komst van de PC was er de home-computer. Deze home-computers (uit de jaren 70, vooral de tweede helft) werden vaak geleverd met een versie van BASIC. 90% van de instructies van deze eerste BASIC-versie komen nog altijd voor in Visual Basic. Na deze eerste BASIC-versie volgden diverse andere dialecten, zoals GW-BASIC, QBASIC en QuickBASIC. Deze versies maakten gebruik van een interpreter. Dit was een programma dat het BASIC-programma teken voor teken las, analyseerde wat er stond en de instructies uitvoerde. Dat ging natuurlijk langzaam. Daarom zijn er later compilers ontwikkeld die het oorspronkelijke programma vooraf in zijn geheel konden omzetten in machinetaal, waardoor de uitvoer veel sneller ging.
Het bijzondere van deze vroege versies van BASIC was dat je na een uurtje studeren al eenvoudige programma's kon schrijven. Dat komt enerzijds door het beperkte aantal instructies en anderzijds door de eenvoudige opbouw van de taal. Het bekende "Hallo Wereld!"-voorbeeld dat iedere programmeertaal als voorbeeld gebruikt, ziet er in BASIC als volgt uit:
De nummers vooraan in de regels zijn regelnummers en deze zijn geen onderdeel van BASIC.
Deze eerste versies van BASIC ontwikkelden zich langzaam, maar dit kwam in een stroomversnelling bij het verschijnen van Windows. Het bleek met BASIC namelijk niet mogelijk om Windows-programma's te maken. Dit gold ook voor andere talen. Daarop werden er nieuwe versies ontwikkeld voor Windows. In het begin was het programmeren voor Windows heel moeizaam, maar later verschenen speciale IDE's waarmee je de interface (de vensters) kon ontwikkelen in een WYSIWYG-interface (What You See IS What You GET). Dat betekende dat je b.v. voor een venster niet meer een definitie-bestand hoefde te schrijven met allerlei posities, groottes en kenmerken, maar dat je vensters (en andere elementen) gewoon op het scherm kon tekenen. In de negentig jaren verschenen diverse versies van Visual Basic voor Windows, met als laatste versie Visual Basic 6.
In 2002 kwam Microsoft met een nieuw concept. In dat jaar werd Visual Basic .NET gelanceerd. Het grote verschil is de toevoeging ".NET". Dit geeft aan dat er gebruik wordt gemaakt van het .NET Framework, te vergelijken met de Virtuele Machine van Java (JVM). Deze combinatie bood veel extra mogelijkheden, maar maakte het ontwikkelen van programma's ingewikkelder. Over het Framework vind je verderop meer informatie.

## BASIC en visueel programmeren

Na het verschijnen van Windows veranderde alles drastisch. Niet alleen voor BASIC, maar voor alle programmeertalen. Het programmeren voor Windows is veel ingewikkelder dan voor bijvoorbeeld DOS. Want je moet rekening houden met vensters, de muis en de verschillende schermresoluties. Ook verloopt een Windows-programma niet recht-toe-recht-aan zoals onder DOS, maar wordt het programma getriggerd door de gebruiker. Iedere beweging van de muis, iedere toetsaanslag en allerlei andere gebeurtenissen zorgen ervoor dat steeds weer een ander deel van het programma wordt aangeroepen dat die gebeurtenis moet afhandelen. Meestal doet een programma niet veel anders dan wachten op een gebeurtenis, deze afhandelen en vervolgens weer opnieuw wachten.
Voor Windows-programma's bleek het (bijna) noodzakelijk te zijn om objectgeoriënteerd te werken. Het programma bevat een aantal objecten die met elkaar en de buitenwereld samenwerken. Men noemt dit OOP: Object Oriented Programming ofwel objectgeoriënteerd programmeren. Een programmeur kan een eenvoudig programma schrijven dat geen gebruik lijkt te maken van objecten, maar achter de schermen doet hij dat wel. De bibliotheek die met Visual Studio wordt meegeleverd bestaat voor het grootste deel uit objecten. Zo is ieder venster, iedere knop, ieder invoerveld een object. En de programmeur kan daar gebruik van maken zonder iets van OOP te weten. Het is zelfs mogelijk grote en ingewikkelde programma's te schrijven zonder gebruik te maken van zelf-gedefinieerde objecten. Maar vaak zijn objecten toch nodig. Zo is het bijvoorbeeld gemakkelijk om objecten die voor programma A zijn gemaakt ook te gebruiken in programma B. Bij een traditionele manier van programmeren gaat dit veel moeilijker.

## Het .NET Framework

Toen Microsoft de eerste versies van Visual Studio ontwikkelde, maakte men ook het .NET Framework, meestal kortweg Framework genaamd. Het .NET Framework is zowel een ontwikkelingsplatform als (vooral) een uitvoeringsomgeving waarin verschillende programmeertalen en programmeertalen met elkaar kunnen samenwerken. Het Framework is een laag tussen diverse programma's en Windows en zorgt ervoor dat alle programma's beter gebruik kunnen maken van de mogelijkheden van Windows. Voor Java-programmeurs: het Framework is vergelijkbaar met JVM: de Java Virtual Machine. In eerste instantie wordt het Framework vooral gebruikt voor programma's die met behulp van Visual Studio geschreven zijn in BASIC, C++ of een andere taal van Microsoft. Maar ook andere leveranciers maken hun talen of versies daarvan geschikt voor het Framework.
De gemiddelde programmeur heeft geen kennis nodig van het Framework. Het is een soort "zwarte doos" die je kunt gebruiken zonder er iets vanaf te weten. Wat Visual Basic betreft: het Framework wordt gebruikt bij Visual Basic 2002 en hoger.
Het Framework heeft de volgende kenmerken:
* taalonafhankelijkheid: componenten die geschreven zijn in een willekeurige .NET-taal kunnen gebruik maken van andere componenten die geschreven zijn in een willekeurige (andere) .NET-taal. Daardoor kun je voor elk component de meest geschikte taal kiezen. Deze taalonafhankelijkheid wordt gerealiseerd doordat alle componenten worden vertaald naar een soort "tussentaal", die CIL (Common Intermediate Language) heet
* Common Language Runtime: de gecompileerde componenten en programma's in de tussentaal worden uitgevoerd door de CLR (Common Language Runtime), die ook zorgt voor zaken als automatisch geheugenbeheer
* vereenvoudigde installatie van applicaties: het is niet meer nodig om componenten te registeren (ken je nog het register en het bijbehorende programma?). In plaats daarvan hoeven alleen de programmabestanden en eventuele configuratiebestanden gekopieerd te worden
* Base Class Library: de BCL is een verzameling van bibliotheken die samen met het Framework wordt geleverd en die allerlei functies bevat om programma's te maken en uit te voeren
* interoperabiliteit: het Framework werkt samen met bestaande COM-bibliotheken (de voorloper van .NET). Daardoor kunnen oude en nieuwe programma's samenwerken
* beveiliging: De zogenaamde Code Access Security maakt het mogelijk de uitvoeringsrechten van code te controleren op basis van afkomst waardoor het mogelijk is om uitvoerbare code te isoleren in een beschermde omgeving.
* standaardisatie: zowel de CLS, de CLI en de taal C# zijn gestandaardiseerd door ECMA
* convergentie: meerdere technieken zijn samengevoegd in één framework, onder andere MGC (Microsoft Foundation Classes), ATL (Active Template Library) en COM (Component Object Model). Ook is ASP gemigreerd naar ASP.NET
* Web Services: deze vormen een manier om systemen over het internet of een netwerk met elkaar te verbinden en te integreren. Web Services zijn gebaseerd op de XML-standaarden en SOAP (Simple Object Access Protocol). Hierdoor zijn deze services onafhankelijk van taal en platform
Let niet teveel op al die cryptische afkortingen en benamingen. Voor het "gewone" programmeerwerk zijn ze niet nodig. Waar ze wel nodig zijn, worden ze verder uitgelegd.
Iedere versie van Visual Studio heeft zijn eigen versie van het Framework. Bij Visual Studio 2015 hoort Framework versie 4.6.
Het .NET Framework bestaat grofweg uit twee onderdelen: de Common Language Runtime (CLR) en de Framework Class Library (FCL).
De Common Language Runtime is de virtuele machine van het .NET Framework, te vergelijken met de Java Virtual machine (JVM). Alle .NET-programma's worden gecompileerd naar een tussentaal, die tijdens het uitvoeren van het programma door een aparte compiler wordt omgezet in machinetaal-instructies. Daarnaast zorg de CLR voor het geheugenbeheer, het verwerken van exceptions, garbage collection (het opruimen van niet meer gebruikt geheugen) en beveiliging. Een groot voordeel van de CLR is dat verschillende .NET-programmeertalen gemakkelijker samenwerken, doordat ze allemaal gecompileerd worden naar dezelfde tussentaal.
De Framework Class Library is een verzameling van objecten die de programmeur ter beschikking staan om zijn programma's te schrijven. Denk hierbij bijvoorbeeld aan grafische elementen als labels, tekstvakken, keuzeknoppen, maar ook diverse dialoogschermen en andere elementen die in dit handboek beschreven worden. De FCL bestaat uit duizenden klassen, die je gelukkig niet allemaal hoeft te kennen. Wat je wel moet weten is dat de FCL is verdeeld in groepen, de namespaces. Zo bevat de namespace System.Windows.Forms alle klassen die te maken hebben met formulieren, dialoogvensters, enz. Veel namespaces worden automatisch geïmporteerd in Visual Studio. Andere, die veel gebruikt worden, moet je handmatig importeren.