Hoe verhoudt GEARS zich met andere software ontwikkel-tools?

Het korte antwoord is: GEARS is een volledige nieuwe generatie van softwareontwikkeling en biedt, zoals bij iedere nieuwe generatie, een drastische verbetering in softwareontwikkeling, zowel in efficiëntie, als ook in kwaliteit. En dat was ook tijd ook, want de vorige 2 generaties bestaan al sinds 1968 en 1972. Die uit 1968 is nu bekend als low/no-code en die uit 1972 is nu bekend als declaratief of functioneel programmeren. Een meer detailleerd antwoord begint met het volgende overzicht wat niet alleen de historie weergeeft, maar ook welke verbetering dit heeft opgeleverd in efficiëntie en kwaliteit.

Gelukkig programmeren de meeste niet meer met de 1ste of 2de generatie tools. Daarin moest je namelijk direct aan de CPU van de computer instructies geven wat deze moest doen in welke volgorde. Hedendaagse conventionele softwareontwikkelprojecten gebruiken vrijwel allemaal programmeertalen en tools van de 3de en 4de generatie.

In de 3de generatie vertel je nog steeds wat de computer moet doen, maar nu staat dit onafhankelijk van de specifieke CPU. De logica die hierin wordt gebruikt bepaalt de volgorde waarin de instructies worden uitgevoerd. Bekende talen in deze generatie zijn COBOL, Java, JavaScript C#, PHP, Perl, Python en Kotlin waarin iedere taal zijn eigen voor en nadelen heeft. 

De 4de generatie werkt in essentie niet anders, maar er worden hierin wel veel extra tools, frameworks en libraries/componenten gebruikt om de ontwikkelsnelheid te verhogen en daar waar het voor geschikt is ook de kwaliteit. Denk aan tools waarmee processen, schermen en datamodellen gemodelleerd kunnen worden. Denk aan frameworks waarbij sneller user interfaces gemaakt kunnen worden, denk aan libraries/componenten die al veel functionaliteit bieden die je vervolgens niet zelf hoeft te maken. Vrijwel alle no/low-code tools vallen in deze generatie. Denk bijv. aan Mendix, OutSystems, Pega, MS Flow en Power Apps. Let op: veel tools gebruiken misleidende termen en plaatsen zichzelf onterecht in deze categorie. Zo zijn er tools die zichzelf no-code noemen, maar ze doen niets meer dan een mooi kleurig blokje maken van de '+' functie. En er zijn ook tools waarin die pretenderen enkel requirements op te hoeven schrijven, terwijl 1 requirements niets meer is als een instructie voor de computer. In dat geval zijn het in werkelijkheid 3de generatie ontwikkeltools.

Bij 5de generatie talen en tools wordt voor het eerst niet meer gezegd aan de computer wat hij moet doen in welke volgorde en in welke omstandigheden, maar wordt enkel het gewenste eindresultaat gespecificeerd en wordt aan de tool overgelaten hiervoor ook een stuk software te maken wat dit gewenste eindresultaat kan bereiken. Voorbeelden zijn talen/tools zoals Prolog, Lisp, Haskell. Deze zijn nog steeds vrij academisch van aard en zijn daarom nog niet veel in gebruik. Gelukkig wordt deze "declaratieve" of functionele aanpak steeds meer toegepast. Ook bijv. in talen en tools die voorheen enkel als 3de generatie talen werden beschouwd. Denk bijv. aan Python, C# en Java. 

GEARS gebruikt hetzelfde paradigma als de 5de generatie talen, maar dan zo eenvoudig mogelijk en op een veel hoger niveau, namelijk voor gehele bedrijfsprocessen. Oftewel, specificeer enkel het gewenste eindresultaat van je bedrijf(sproces) en laat GEARS hiervoor volledig automatisch de hiervoor benodigde bedrijfsprocessen als ook alle onderliggende software voor maken. 

Bij iedere nieuwe generatie geldt dat de productiviteit en kwaliteit verhoogd. Dit hangt ook af van het type functionaliteit wat je wilt ontwikkelen maar grosso modo zal een 3de generatie taal/tool beduidend minder productief en ook software opleveren met meer gebreken of niet overeenstemmend met de requirements versus een 4de generatie taal/tool. Hetzelfde geldt voor een 4de versus een 5de en een 5de versus een volgende generatie taal/tools als GEARS. Het advies is dus om altijd de hoogste generatie te kiezen die geschikt is voor de gewenste functionaliteit.

Vrijwel alle generaties talen/tools hebben de mogelijkheid om lagere generatie talen/tools te incorporeren. Zo kun je 2de generatie assembly gebruiken binnen 3de generatie en die weer binnen 4de en die weer binnen 5de, etc. Hetzelfde geldt voor GEARS die de mogelijkheid bied om eenvoudig alle lagere generatie te incorporeren binnen een met GEARS ontwikkeld systeem.