Introductie Workshop Basic door Gordon Rahman
Ik ben altijd HCC!BASIC lid geweest. Omstreeks 1980 bezat ik een TRS-80 (Tandy Radio Shack) en daarom werd ik lid van de TRS80 Gebruikersvereniging. Toen de HCC ook een TRS80 Groep oprichtte, werd ik ook lid van de HCC! Ik leerde BASIC kennen en wat machine taal van de Z80 microprocessor, die in de TRS80 wordt gebruikt. Later bouwde ik een 80286 kloon en leerde QBASIC en wat MS-DOS. Toen kwam Windows en ik startte met Visual BASIC.
Ik heb veel listings over getypt en vele listings geschreven. BASIC is mijn hobby. Ik heb een desktop met Windows 10 waarop ik ook mijn TRS80 (emulator) draai. Tot nu toe schrijf en kopieer ik nog steeds BASIC programma’s, maar nu bijna uitsluitend voor mijn Windows PC. Natuurlijk gebruik ik een BASIC taal die Windows programma’s en ook de ouderwetse TRS80 BASIC kan draaien. De nieuwerwetse Basics zijn EVENT-driven (muis bestuurd) en ze zijn geen interpreter meer.
Een andere reden voor mijn club lidmaatschap was het idee dat gezamenlijk hardware inkopen voordelen bracht. Dat gebeurde op de beurzen en HCC-dagen. Natuurlijk heb ik ook software goedkoop aangeschaft.
Maar de belangrijkste reden waarom ik in een vriendenclub wilde zitten met gelijk gerichte interesse was en is, dat ik voor mijn hobby en plezier programmeer en dat met anderen kan delen en aan andere hobbyisten kan tonen. De HCC biedt daarvoor het podium bij uitstek. Ik wil mijn eigen gemaakte Windows programma’s (de listings) demonstreren. Ik ben daar niet de enige in. Ik heb twee cursus boeken (over Liberty en JustBASIC en alles over HTML 5) van leden die er niet meer zijn en hun hobby daarom niet meer kunnen demonstreren en of propageren. De HCC is ons enig publiek en podium. Ik heb vrienden die smachten naar het moment dat ze hun hobby kunnen demonstreren en of uitdragen.
Ik wil (nu ik gepensioneerd ben), weer volop mijn BASIC programmeren achterstand inhalen. Ik ben weer enthousiast gaan programmeren. Ik zou natuurlijk mijn 7 GB aan bestanden (tien duizenden BASIC listings) willen demonstreren, maar ik heb een grotere wens. Ik wil vooral de vroegere BASIC programmeurs ook weer aan het BASIC programmeren krijgen. Ze eindelijk zo ver krijgen dat ze hun project afmaken en dat aan de hobby vereniging tonen.
Ok, maar wat als die zegt geen oude listings meer te hebben? Wat als hij of zij al zijn of haar vroegere programma’s reeds omgezet heeft naar “moderne” talen? Wat als hij of zij het programmeren vroeger al te moeilijk vond? Wat als hij of zij alles van BASIC programmeren al weer vergeten is? Geen nood. Vroeger leerde je in 24-30 uur BASIC programmeren. Daar gaan we nu 1-2 jaar over doen en slechts gemiddeld 3-5 uur per maand. BASIC is niet moeilijker geworden. Alleen de microprocessoren zijn groter en sneller geworden. Wat als je niet weet wat te programmeren. Geen nood. We gaan samen (iedereen individueel) een programma schrijven.
Ik start een project BASIC programmeren voor Windows. We gaan samen een programma maken. We doen dat in de “Workshop” vorm. U schrijft thuis een deel van het programma en demonstreert gewoon dat het werkt. Als u even vast zit (of u komt er helemaal niet uit) dan bezoekt u zo een workshop avond (of ochtend) en we zullen proberen daar wat aan te doen. In dergelijke gevallen moet u wel uw listing tonen en enigszins uit leggen wat die listing zou moeten doen. Meedoen kost niets. Ik zal een gratis Windows-BASIC taal gebruiken. JustBASIC voor de absolute starter of LibertyBASIC voor de “doorzetters”. JustBASIC is gratis, maar kent daarom zijn beperkingen. LibertyBASIC is shareware en die kunt met een zeer forse korting eenmalig aanschaffen voor al uw computers. Wilt u alleen eenmalig komen kijken of kijken of het wat zal worden? Meld je dan vooraf aan voor de eerste sessies. Neem een memory-stick mee. U krijgt van mij daarop 2 GB aan listings en dergelijke, waarin ook een ‘elektronisch’ cursusboek, lessen, de helpbestanden in het Nederlands enz. op uw memory stick mee terug. Ik programmeer als hobby. Daarom gebruik ik BASIC (voor Windows). De beste leer taal voor hobbyisten.
Benodigdheden voor deelname aan een workshop:
Een computer of laptop waarop Windows 10 draait. Met LibertyBASIC of JustBASIC daarop geïnstalleerd.
(Met Linux kan het waarschijnlijk ook via de Windows emulator Wine)
Neem ook een USB stick naar de wordkshop mee.
Geef vooraf een seintje zodat ik materiaal kan voorbereiden voor de USB stick.
Ik demonstreer de eerste keer (via de lessen-module van LibertyBASIC) hoe ik mijn intro-scherm van de game heb gemaakt. Extra aandacht geef ik hierbij aan: RND(0), maken van een mp3 bestand van een geschreven tekst en het gebruik van Photoshop om plaatjes te maken (fotoshoppen).
De eerste Workshop was op 25 september te Amstelveen.
De volgende Workshop (voor HCC leden) is op 23 oktober om 20:15 in de Meent, Orion 3, 1188 AM Amstelveen
(en verder op elke vierde woensdagavond van de maand behalve in december, juli)
Dit e-mailadres wordt beveiligd tegen spambots. JavaScript dient ingeschakeld te zijn om het te bekijken.
Voor het maken van Windows programma’s gebruik ik BASIC (Liberty BASIC)
(JustBASIC is een vereenvoudigde versie van LibertyBASIC)
Liberty BASIC is in elk geval geen “Visual” BASIC (visual GUI builder). Liberty BASIC wordt wel met een soort eigen (Visual GUI builder) geleverd, een BASIC listing (FreeForm.bas), waarmee je een listing kunt genereren van een venster waarin je objecten als knoppen, listboxen, comboboxen, radiobuttons enz. hebt gesleept en gevormd. De Liberty BASIC programmeertaal is eigenlijk een uitbreiding van QBASIC met EVENT DRIVEN Windows vensters. Je kunt dan ook nog gewoon in de console-mode (uit de MSDOS tijd) programmeren. Listings met regelnummers enz. Je kunt zelfs beide modes Windows en Console-mode gelijktijdig gebruiken. Liberty BASIC is een kleine, goedkope en zeer eenvoudige taal. Liberty BASIC is backward compatibel. Je kunt met weinig moeite oude listings (inclusief regelnummers) gewoon RUNNEN in de Console-mode van Liberty BASIC. Als je eenmalig een licentie aanschaft kun je LB op al je computers installeren en je hoeft nergens royalty’s voor te betalen. Liberty BASIC is uitstekend geschikt voor onderwijs doeleinden. Een speciale Lessen-mode geeft de mogelijkheid om projectmatig te werken. BASIC is een algemene opstap computertaal voor een ieder die in computertalen of programmeren geïnteresseerd is. Liberty BASIC is geen INTERPRETER maar een JIT-compiler (zoals JAVA). Liberty BASIC heeft een commando-set voor maken en controleren van SPRITES en uiteraard ook geluid WAV en MIDI en kan verder DLL bestanden gebruiken. DirectX, OPEN GL, ODBC, SQLite, MSQL enz.
Liberty BASIC is gemaakt door Carl Gundel speciaal voor “amateurs”, beginners en echte hobbyisten die Windows willen kunnen onderzoeken. LibertyBASIC is geschreven met de taal Smalltalk (zie Wikipedia). Smalltalk ligt aan de grondslag van talen als JAVA, PHP, Python enz.?
De “nitty-gritty” van Windows registers, hacken, virussen enz. bespreken is op ons forum (workshop) echter taboe. Liberty BASIC is overzichtelijk en eenvoudig waarmee je de draad eenvoudig weer kunt oppakken en snel weer aansluiting kunt vinden bij amateur programmeren. De kleine taal (Liberty BASIC) produceert geen modulaire listings, doch één listing per programma. Alle niet strikt noodzakelijke decoraties en declaraties worden door Liberty BASIC van de programmeur overgenomen. Bijvoorbeeld de nauwkeurigheid van numerieke variabelen wordt door Liberty BASIC zelf bepaald. Vooraf hoef dat dus niet gedeclareerd te worden (INTEGER, DOUBLE, SINGLE precision enz.). Omdat Liberty BASIC ook alle Windows DLL bestanden kan openen en aanroepen, zal een Liberty BASIC programmeur in die gevallen zich natuurlijk wel moeten houden aan de regels die gelden qua declaratie vooraf en nauwkeurigheid (grootte) van variabelen. Trouwens, zonder om daar nu dieper op in te gaan, merk ik op dat een CALL SUB ook lokale variabelen naast globale variabelen kent. Om onder andere rijtjes variabelen in een DLL in te voeren of uit te lezen heeft Liberty BASIC het STRUCT model ingevoerd.
Een vergelijking tussen Liberty BASIC en Visual BASIC.
Visual BASIC plaatst bijna elke listing module in een eigen aparte map. Dat is voor grote (gigantische) listings efficiënter en misschien ook beter, maar voor de beginners en programmeurs die nog geen specifieke computertaal hebben gekozen is het de ver van mijn bed show en het maakt dat het overzicht op de listings en daardoor opzoeken van structuren en fouten voor een amateur niet eenvoudiger wordt. Uiteraard betekent het ook voor de docent aan wie gevraagd zal worden te helpen bij het traceren waar een eventuele programma fout kan liggen “leiden in last”.
Het “drag and drop” werk is in VB zeer veel uitgebreider dan in LB, maar die manier van programma’s maken heeft ook zijn beperking omdat je niets origineels op je eigen manier kunt oplossen. Ook krijg je geen inzicht in hoe VB (of Windows) eigenlijk in elkaar zit. Je leert nooit van je fouten. Dus als je goed kunt omgaan met VB, goed dan ken je alleen VB goed.
Ik gaf eens aan absolute beginners opdracht om een bal (een cirkel met een kleur gevuld) over het scherm te laten bewegen en tegen de (4) zijkanten te laten weerkaatsen. In VB werd de bal in een eigen (grafisch) scherm geplaatst, waarna dat scherm werd bewogen en bij gedetecteerde botsing werd de bewegingsrichting van het balscherm aangepast.
De LB beginners tekenden gewoon alleen een bal op het scherm en detecteerden of de bal de schermgrenzen bereikten waarna de bewegingsrichting van de bal werd gewijzigd. De rand van de bal had de achtergrond kleur, om het effect van vloeiend bewegen zichtbaar te maken.
VB was ontwikkeld om het tikwerk (opent mogelijkheden voor syntax error ’s) te vereenvoudigen doordat je objecten kunt slepen en plaatsen in vensters, waarna een zeer uitgebreide listing van de opstelling wordt gegenereerd. Maar knippen en plakken in Liberty BASIC is even tijdrovend als slepen en plaatsen in VB, maar heeft in LB het voordeel dat de programmeur aan zijn efficiëntie gaat werken. De eenvoud straalt af van Liberty BASIC bij het vooraf declareren van variabelen. Dat hoeft NIET. Alleen wanneer een functie uit een DLL (Dynamische Library Listing) van Microsoft of iemand anders vereist dat de nauwkeurigheid van variabelen vooraf moeten worden aangegeven, dan moet dat in Liberty BASIC ook. Liberty BASIC beschouwd een venster, evenals een COM-poort als een object dat geopend kan worden. Dus je kunt je hardware gewoon rechtstreek aanspreken.
Hier zie je in één oogopslag VB5 (Visual BASIC 5) en Liberty BASIC 4.04
Visual BASIC editor Visual BASIC controls
Liberty BASIC editor Liberty BASIC controls
Visual BASIC heeft 21 besturingsfuncties (“controls”) ingebakken. Liberty BASIC heeft 11 besturingsfuncties ingebakken (“native”). Met beide bovenstaande programmeertalen kan elk programma ter wereld worden geschreven. Visual BASIC heeft in totaal meer dan 2000 vooruit ingebakken functies en subroutines. Liberty BASIC heeft er nog geen 200. Als een functie niet “native” (ingebakken) aanwezig is, dan kun je die functie uit de DLL van Windows halen of die functie zelf schrijven of aanpassen. Je kunt meestal Windows opdragen om even zijn eigen routine uit te voeren. Met het commando stylebits kun je bijna alle stijlen van een control wijzigen.
Belangrijke onderdelen van programmeer onderwijs zijn leren debuggen en de beschikbaarheid van goede les en studiemateriaal.
BASIC is aanvankelijk verguisd omdat de vakdocenten de fantastische knutselwerken van de studenten niet eenvoudig konden volgen en of op fouten konden controleren (debuggen). Bij de keuze van een computertaal als instructietaal in het onderwijs is de nauwkeurigheid van getal structuren, of de rekensnelheid van de rekenchip enz. van minder belang. Hoe een programma werkt is minder belangrijk dan als dat het programma goed werkt. Ik stel dat programmeer onderwijs nodig is, omdat we daarmee leren en vaardig worden in methodisch denken en ordenen en meer nog omdat programmeren het intuïtief zijn vergroot. Programmeren vereist naast organisatorisch talent ook creativiteit. Het lijkt paradoxaal, maar de NIET modulaire programma’s kunnen juist eenvoudiger op fouten gecorrigeerd (debuggen) worden, omdat er regel voor regel in één (vaak klein) bestand naar fouten en foute structuren gezocht kan worden.
De onderwijs gevende en de programma opdrachtgever hadden geen controle meer over de listings die door (BASIC)programmeurs geproduceerd werden. De eerste BASIC talen boden veel mogelijkheden tot “spaghetti” programma’s, waardoor de docenten hun “debug” taken niet konden uitvoeren. Die euvels aan de talen zijn intussen eenvoudig verholpen. BASIC kreeg bij de nieuwere versies structuur. Na de herintroductie van Visual BASIC door Microsoft werd procedureel BASIC toch verlaten ten favoriete van Object Georiënteerde Talen en netwerk integratie (VB.NET). Uiteindelijk is daarmee het programmeer onderwijs aan jongeren en op middelbare scholen verloren gegaan, omdat het debuggen van dergelijke talen al helemaal niet mogelijk is. Alle objecten worden geïmporteerd of zijn ontoegankelijk. Voor de productie is dat natuurlijk beter, “het wiel hoeft niet steeds opnieuw “… enz., maar voor het onderwijs is dat niet waar. De vroegere BASIC programmeur moest elke sub routine of procedure vroeger zelf schrijven en zelf regel voor regel debuggen. Daar leert een beginner het meeste van. Tegen het argument van de beginner “alles is reeds geprogrammeerd” kon ook een OOP taal of een taal die duizenden vooraf ingebakken functies heeft, niet op.
Nederlandstalig Liberty BASIC les en studiemateriaal en voorbeelden is aanwezig bij vele leden van de vroegere HCC BASIC Interesse Groep. Er werden constant door leden “opgeleid” om BASIC workshops te kunnen opzetten. Uiteraard ontbreekt het daar alleen aan didactische vaardigheden. Deze vaardigheden zijn in deze campagne niet nodig. We zijn een grote groep hobbyisten met veel tijd. We kunnen elke fout in elke BASIC listing vinden en verbeteren.
Hier volgt een mogelijke introductie sessie (eerste Workshop)
Programmeer een dergelijk plaatje als hier onder staat. Of maak een eigen introductie scherm voor uw game. Mijn game heet Rats Kert. Het voorbeeld zal neem ik als te behandelen voorbeeld. Ik laat een elektronische stem een introductie tekst uitspreken.
Ook is er reeds in dit eerste scherm een vorm van animatie.