Static Typing vs. Dynamic Typing: the Typing Challenge

Download Report

Transcript Static Typing vs. Dynamic Typing: the Typing Challenge

Static Typing vs. Dynamic Typing: the Typing Challenge
Promotor: Prof. dr. ir. Marko van Dooren ([email protected])
Doelgroep: Master wiskundige informatica
Achtergrond
In statisch getypeerde programmeertalen wordt de code door de programmeur geannoteerd met de types
van de berekeningen. Dit laat de compiler toe om fouten zeer vroeg te detecteren, en bovendien vormen
de types een belangrijk deel van de documentatie van de code. In dynamisch getypeerde talen wordt
de code niet geannoteerd met types. Hierdoor kunnen een aantal controles pas worden gedaan als het
programma wordt uitgevoerd. Het voordeel van deze aanpak is dat de programmeur minder moet typen
…
Probleemstelling
… Of dat beweert men toch. In de tijd dat programmeeromgevingen nog primitieve tekst editors gebruikten
was dit inderdaad waar. In moderne programmeeromgevingen krijgt de programmeur echter allerlei
hulpmiddelen die de hoeveelheid typewerk sterk reduceren, zoals code completen en refactorings. En
veel van deze hulpmiddelen steunen op de aanwezigheid van type informatie om hun werk te doen.
Voor het annoteren van de type informatie is extra typewerk nodig, maar dankzij die hulpmiddelen is er
hierdoor minder typewerk nodig om methode-oproepen en variabelen te typen. De vraag is dus of deze
claim vandaag nog klopt.
Doelstelling
In deze masterproef zal je onderzoeken welke typering het minste typewerk vergt. Hierbij vergelijk je
statische typering met en zonder type inferentie, en dynamische typering. Hierbij vertrek je van code
die volledig statisch getypeerd is zodat voor elke methode, variable, en expressie geweten is welk type
ze heeft. Vervolgens analyseer je hoeveel typewerk nodig is om het programma te schrijven. Hierbij
gebruik je verschillende strategieën om code completion te simuleren.. Vervolgens onderzoek je ook de
impact van type inferentie. Type inferentie laat toe om bepaalde type annotaties automatisch af te leiden
zodat ze niet meer expliciet geschreven moeten worden. Ten slotte analyseer je hoeveel typewerk nodig
is om het programma te schrijven zonder type annotaties. Ook hier gebruik je verschillende strategieën
voor code completion, maar deze zullen noodgedwingen minder krachtig zijn. Wat het eindresultaat zal
zijn is niet te voorspellen, maar één ding is zeker: het zal stof doen opwaaien!