-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconclusie.tex
27 lines (18 loc) · 3.94 KB
/
conclusie.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
%%=============================================================================
%% Conclusie
%%=============================================================================
\chapter{Conclusie}
\label{ch:conclusie}
%% TODO: Trek een duidelijke conclusie, in de vorm van een antwoord op de
%% onderzoeksvra(a)g(en). Wat was jouw bijdrage aan het onderzoeksdomein en
%% hoe biedt dit meerwaarde aan het vakgebied/doelgroep? Reflecteer kritisch
%% over het resultaat. Had je deze uitkomst verwacht? Zijn er zaken die nog
%% niet duidelijk zijn? Heeft het onderzoek geleid tot nieuwe vragen die
%% uitnodigen tot verder onderzoek?
Na dit complete onderzoek kan er geconcludeerd worden dat het weldegelijk mogelijk is om door middel van artifiële intelligentie en op basis van natuurlijke taal programmeercode te genereren. Dit was ook al één van de conclusies die men kon trekken na de literatuurstudie uit hoofdstuk \ref{ch:stand-van-zaken}. Tools en algoritmen die hiervoor kunnen gebruikt worden zijn onder andere de \textit{Microsoft DeepCoder}, \textit{NLIDBS} en \textit{NL2Prog}.
Er dient wel een kanttekening gemaakt te worden bij dit gegeven. Tijdens de uitvoering van het experiment, waarbij \textit{WikiSQL}, \textit{SQLNet} en \textit{Seq2SQL}, werd het al snel duidelijk dat de uitvoering van de algoritmen niet volledig op punt stonden. Het WikiSQL-algoritme was het enige algoritme dat enigzins leek te werken. Maar hier kwamen de verkregen resultaten niet overeen met de verreiste resultaten. Dit kwam omdat de training van het algoritme niet op punt stond. Dit is natuurlijk een belangrijk gegeven. Een neuraal netwerk dient getraind te worden opdat het algoritme op een correcte manier uitgevoerd kan worden.
Het Seq2SQL-algoritme werkte ook, maar tijdens de uitvoering leek het algoritme zich in een oneindige lus te bevinden waardoor het niet mogelijk was hier resultaten bij te verkrijgen. Uiteindelijk was het niet mogelijk om het laatste algoritme, \textit{SQLNet}, werkende te krijgen. De reden hiervoor was enerzijds de nood aan een NVIDIA-GPU en de correcte drivers voor deze GPU, en anderzijds de correcte versie van de CUDA Toolkit, welke geïnstalleerd dient te zijn op het lokale systeem.
Voor deze algoritmen werden Python-scripts gebruikt voor de uitvoering. Deze scripts dienen uitgevoerd te worden met een aantal parameters. Eén van de parameters die kunnen meegegeven worden, is de dataset waarop het model dient uitgevoerd te worden. De nodige datasets worden gegeven in SQLite-formaat. Verder kunnen er jsonl-bestanden gegeven worden die op hun beurt de tabellen nog eens bespreken. Ook worden er bestanden gegeven met vragen en mogelijke query's om het algoritme te kunnen trainen.
Na de uitgevoerde literatuurstudie bleek dat het mogelijk was om voor bijna alle programmeertalen code te genereren via AI en op basis van natuurlijke taalvragen. Microsoft DeepCoder is bijvoorbeeld een mechanisme dat stukken code, welke de gebruiker nodig heeft, opzoekt op websites als \textit{StackOverflow} om deze in de concrete code te verwerken. Echter, dit mechanisme genereert de code niet, maar zoekt ze op.
De complete generatie van programmeercode is enkel mogelijk voor de generatie van programmeertalen welke behoren tot de vierde generatie. Een programmeertaal die tot de vierde generatie programmeertalen behoort, is een programmeertaal die nauw aanleunt bij de natuurlijke taal. SQL is hier een voobeeld van. Het is dan ook een logisch gevolg dat deze programmeertalen makkelijker te generen zijn dan bijvoorbeeld programmeertalen zoals Java of Python.
Code genereren door middel van AI op basis van natuurlijke taal is een nieuwe techniek. De modellen zijn nog niet volledig en zullen in de loop der tijd uitgebreider en beter worden. Net zoals dat artificiële intelligentie ook nog altijd zal blijven verbeteren. In de praktijk blijkt dat nog enkel maar Google's AutoML compleet operationeel is. Andere mechanismen zijn deels operationeel, maar de meeste hebben nog meer onderzoek nodig.