HCC!Forth

HCC!forth

Presentatie over SwiftForth en Parsing

door Leon Konings

SwiftForth is een van de Forth implementaties van Forth, Inc. ( http://www.forth.com/ )

Forth, Inc. is het bedrijf, dat in 1971 is opgericht door Chuck Moore (de uitvinder van Forth), Elizabeth Rather en Donald R. Colburn.

SwiftForth is de "integrated development environment". Er bestaan ook cross-compilers met de merknaam Swift-X.

Sinds 1971 is er hard gewerkt om een steeds betere, snellere en slimmere Forth ontwikkelomgeving te maken. SwiftForth is ontstaan uit al dit harde werken. Sinds kort is deze IDE ook beschikbaar voor Linux en MacOs. Het is mogelijk een evaluatieversie te kopiƫren ( http://www.forth.com/swiftforth/dl.html )

Ondanks al die jaren werk is deze IDE nog tamelijk minimalistisch. De documentatie is echter uitstekend. Er zijn meerdere PDF's beschikbaar, en het is mogelijk boeken te bestellen.

De Windows-versie heeft zeer goede faciliteiten om met DLL's te werken, en deze ook zelf te maken. Ook kunnen er natuurlijk turnkey .exe bestanden worden gecreƫerd.

Ik heb de SwiftForth IDE gepresenteerd. Het was de bedoeling een programma te presenteren, dat mijn VentureForth source-code vertaald naar het .cfs ColorForth formaat. Dit formaat is uitgevonden door Albert van der Horst. Ik maak bij de vertaling gebruik van de parsing-faciliteiten van SwiftForth.

Tevens maak ik gebruik van een SQLite database. Ik roep hiervoor een DLL aan. Ik was van plan om iets vertellen over het werken met deze handige database. Hiervan is maar zeer gedeeltelijk iets terecht gekomen.

Het presenteren van de SwiftForth IDE en enige interessante kleine programma's heeft alle presentatietijd opgeslokt.

IDE

Allereerst heb ik de Integrated Development Environment gepresenteerd met handige faciliteiten, zoals de uitstekende help functies en documentatie.

SEE <word> - om de code van een woord te bekijken.
LOCATE <word> - om te zien waar (in welk bestand) een woord gedefinieerd wordt.
WH <word> - om te zien waar een woord gebruikt wordt (Cross reference).

Variable WATCH en het geheugen in de gaten houden met MEM.

Aan de hand van een simpel programma liet ik zien, hoe gevolgd kon worden, wat er met variabelen, of een gedeelte van het geheugen gebeurde tijdens uitvoering. Dit was een aanloop naar het volgende onderwerp.

Forth code: watch

Multitasking

Chuck Moore was al tientallen jaren geleden goed in het maken van programma's, die gebruik maken van multitasking.

Aan de hand van twee programma's heb ik uitgelegd, hoe deze multitasking onder SwiftForth werkt. Er ontstond een korte discussie over het nut hiervan. Het is opvallend, hoe veel mensen multitasking niet of nauwelijks gebruiken.

Forth code: task en tasks

DLL's

Zeer veel interesse was er voor het onderwerp DLL. Ik heb de voorbeelden van SwiftForth laten zien. Deze voorbeelden hebben betrekking op zowel het maken als het gebruiken van DLL's.

Verder heb ik een ander Forth programma laten zien, dat bij SwiftForth wordt meegeleverd. Hierbij wordt de SQLite database DLL aangeroepen. Dit is een goed voorbeeld van een ingewikkeldere DLL.

Er dient onderscheid te worden gemaakt tussen DLL's geschreven in SwiftForth en in C. De C DLL's gebruiken de ingewikkeldere datatypes, waarmee C nu eenmaal werkt. SwiftForth DLL's zijn veel eenvoudiger, omdat alleen het aantal argumenten hoeft te worden opgegeven. Datatypes zijn hierbij niet van belang. SwiftForth ondersteund het werken met beide soorten DLL's.

Dit onderwerp werd door de groep met veel interesse gevolgd. Ook hierover heeft wel enige discussie plaatsgevonden.

Forth code: dll-create en dll-use

Vocabularies

Hierna heb ik nog enige voorbeelden van de werking van vocabularies gepresenteerd. Een aantal van de aanwezigen wist hier al veel van.

Forth code: vocabularies

Progress bar

Ter afsluiting heb ik nog de werking van een progress bar laten zien.

Forth code: progress

Het belang van SwiftForth voor ons interesse groep

Na de presentatie was het voor de aanwezigen wel duidelijk, dat SwiftForth een goede ontwikkelomgeving is. De gratis versie van SwiftForth kan heel veel. Er zijn enige beperkingen. Het is niet mogelijk een turnkey programma te maken. Waarschijnlijk geldt dit ook voor het maken van DLL's.

Ik hoop in de toekomst nog eens de tijd te krijgen om het onderwerp "Parsing in SwiftForth" aan te snijden.