Visual Dataflex

Sinds 4 juli kwam ik in contact met Visual Dataflex. Dit is de programmeertaal die gebruikt wordt op mijn werk. Bij deze stel ik de taal ook even voor aan nieuwsgierigen maar ook of deze taal de moeite is uit eigen ervaringen. Visual Dataflex (VDF afgekort) is een vierde generatie programmeertaal. Een vierde generatie taal is een programmeertaal op hoog niveau en met een doel ontwikkeld. Visual Dataflex heeft als doel om snel database toepassingen te ontwikkelen. Zo hoef je geen SQL te kennen (maar in de praktijk heb je SQL wel nog veel nodig) en heb je snel een venster gemaakt met veldjes, knoppen, afbeeldingen, … die gekoppeld zijn aan tabellen. VDF leent zich ook goed uit aan multi-user omgevingen. Je kan makkelijk met meerdere gebruikers hetzelfde programma gebruiken.

Visual Dataflex noemt zichzelf ook een OOP taal maar hier gaat het wel serieus in de mist. Het is een taal dat bestaat uit een aantal klasses met properties, functies en procedures en daar stopt. Het kent overerving (zelfs multiple overerving) en als ik mij niet goed vergis ook abstracte methodes. Zaken zoals interfaces, private/public/protected, packages, … kent het taaltje niet echt. Het laat ook niet toe om patronen toe te kennen omdat je geen klasses kan gebruiken als property type. Je kan wel objecten toekennen aan handle’s maar zolang er geen interfaces zijn en geen klasses als type kan gebruiken kan je niet spreken van een volwaardige OOP taal.

Objecten zijn ook wat raar om te zien in het begin. Een object behoord tot een bepaalde klasse. Tot zover niets nieuws. In Java en C# kan je bepaalde methodes overschrijven die enkel voor dat objecten gelden. Dit gebeurt uitzonderlijk. Als je een eventhandler wilt schrijven, ga je een subklasse maken en dan de eventhandling code typen, een object maken van je subklasse en wanneer er een event gebeurt wordt zijn code uitgevoerd. In VDF doe je niets anders dan methodes gaan overschrijven in objecten. Dat maakt het lastig aan de taal. Je weet niet altijd even goed of je code gaat schrijven op klasseniveau of op objectniveau. Je kan een functie maken op klasseniveau maar dan is toegankelijk voor alle objecten, of je schrijft een functie op object niveau maar dan kan enkel dat object die functie gebruiken.

Datadictionaries! VDF is een taal voor databases. Dat is iets wat je vrij snel door hebt. Een database heeft tabellen en per tabel kan je een datadictionairy (DD) maken. Een DD is klasse met allemaal businesscode. Je wilt dat tijdens iedere update van de tabel een bepaald stukje code wordt uitgevoerd (een mail sturen, andere data updaten, …). Daarnaast vormt een DD een laag tussen je interfaces en je tabellen. Als een persoon iets schrijft in een tekstvak en op opslaan drukt, dan gaat de DD zijn werk doen en alles opslaan in de tabel. Maar ook als je data opvraagt in je tekstvak gaat de DD alle data tevoorschijn halen uit de tabel en die in het tekstvak plaatsen.

Beetje zoals Java. De code van VDF wordt gecompiled tot een EXE maar die kan niet draaien zonder VDF. Dus die code draait in een soort van virtuele omgeving zoals Oracle doet met de bytecode van Java.

Omdat VDF niet echt een populaire taal is (er is zelfs geen syntax highligter op pastebin.com :p) wil ik een paar tutorials schrijven om een goed applicatie te maken. Ook is er maar 1 goed forum en dat is van VDF zelf. Dat vind ik wel wat jammer. Van VDF bestaat er een gratis versie maar dan mag je de commerciƫle toer niet mee opgaan.

Mijn mening

De taal bezorgt mij toch vaak wat frustraties omdat het niet alles van OOP ondersteund. Maar dat zal zijn doel niet zijn. De taal leert zeer vlot (een boek is handig!) en schrijft ook vlot. Ook jammer is dat VDF enkel op Windows systemen draait. Ondersteuning van Mac/Linux/… was handig geweest. De taal bestaat al 30 jaar maar heeft nog geen ondersteuning voor mobiele zaken (tablets, smartphones, scanners, …). Allemaal van die zaken waarvan je denkt dat dit zeer jammer is.

In de volgende blogpost gaan we een eerste kennismaking doen met de taal en de studio. Daarna volgt een eerste project en geleidelijk aan laten we dat project groeien tot een programma.