Narrow your search

Library

KU Leuven (23)

Thomas More Kempen (1)


Resource type

dissertation (24)


Language

Dutch (24)


Year
From To Submit

2024 (1)

2023 (4)

2022 (3)

2021 (2)

2020 (2)

More...
Listing 1 - 10 of 24 << page
of 3
>>
Sort by

Dissertation
Analyse en implementatie van medisch dossier inwendige geneeskunde
Author:
Year: 1993 Publisher: Geel HIK-KIHK

Loading...
Export citation

Choose an application

Bookmark

Abstract

Keywords


Dissertation
Van Specificatie naar Implementatie: Automatische Eliminatie van Transitiviteit uit Systemen met Subtyping

Loading...
Export citation

Choose an application

Bookmark

Abstract

Designers van programmeertalen die een taal willen voorzien van een typesysteem, dienen hiervoor twee artefacten op te stellen. Eerst en vooral moeten ze instaan voor de specificatie van het typesysteem. Daarnaast moeten ze een typechecker implementeren die gebruikt zal worden in de compiler van de programmeertaal. Het is lastig om beide artefacten aan te maken en te bestuderen maar vooral om er voor te zorgen dat ze op elkaar afgestemd blijven tijdens dit proces. Hierbij kunnen fouten en ongewenste eigenschappen geïntroduceerd worden. Het doel van deze thesis is om te onderzoeken hoe men automatisch van de specificatie van een typesysteem naar een typechecker kan gaan. Zo kan een programmeertaalde- signer zich focussen op het ontwerp van het typesysteem zelf, zal hij minder werklast ervaren en zal hij snel prototypes kunnen ontwikkelen van typesystemen. Om tot deze automatische vertaling te komen, zijn in dit werk twee typesystemen onderzocht: Simply Typed Lambda Calculus (STLC) en het typesysteem dat ge- bruikt wordt voor de decompilatie van MinX naar MinC. De typeringsregels van dit laatste typesysteem kunnen niet automatisch worden vertaald omdat ze een expliciete transitiviteitsregel bevatten. Daarom zijn de typeringsregels eerst manueel omgevormd naar andere regels die wel automatisch vertaald kunnen worden. De juistheid van deze manuele transformatie werd wiskundig bewezen. Vervolgens is een algoritme gedefinieerd om de typeringsregels van een typesysteem automatisch te ver- talen zodanig dat de transitiviteitsregel verwijderd wordt. Verder is een programma ontwikkeld dat gebruik maakt van dit algoritme om een automatische vertaling naar een typechecker te realiseren. Het algoritme is toegepast op enkele typesystemen en de resultaten hiervan zijn correct. Verder onderzoek is nodig om na te gaan of het algoritme op ieder typesysteem kan worden toegepast en om hiervan het bewijs te leveren. De resultaten van deze thesis openen alvast perspectieven om ontwikkelaars van programmeertalen in de toekomst een automatische tool aan te reiken die hen kan ondersteunen in hun opdracht.

Keywords


Dissertation
vLambda: Streamlining Java Loops

Loading...
Export citation

Choose an application

Bookmark

Abstract

Bij de release van Java 8 in 2014 werden concepten uit het functioneel programmeren geïntroduceerd, zoals de Stream API om gegevens te verwerken. Vele projecten maken nog steeds gebruik van for-lussen om gegevens te verwerken, omdat het manueel aanpassen van code een grote tijdsinvestering vergt en ook kan leiden tot nieuwe bugs. Toch brengt deze wijziging een meerwaarde met zich mee, omdat het code eenvoudiger maakt om te begrijpen, wanneer ze voorgesteld wordt als een keten van operaties en leidt het vaak ook tot minder lijnen code. In deze thesis onderzoeken we tools die for-lussen correct kunnen herschrijven naar equivalente code die gebruik maakt van de Stream API. We onderzoeken de ondersteuning voor zulke operaties die reeds aanwezig is in de moderne IntelliJ IDEA software die ontwikkeld wordt door JetBrains. Vervolgens beschrijven we de werking van het systeem dat verantwoordelijk is voor deze herschrijfoperaties en geven een overzicht van operaties die reeds ondersteund worden. Tenslotte implementeren we zelf nieuwe herschrijfoperaties in de IDE van JetBrains. Elk van deze herschrijfoperaties passen we toe op 100 populaire open-bron projecten om een inzicht te verwerven in de relevantie van deze herschrijfoperaties.

Keywords


Dissertation
Property Based Debugging - Debugging Haskell Programma’s aan de hand van Gebruiker Gespecificeerde Eigenschappen

Loading...
Export citation

Choose an application

Bookmark

Abstract

Debuggen in talen met lazy evaluatie is moeilijk doordat de volgorde van uitvoering niet altijd overeenkomt met de verwachtingen van de gebruiker. Declaratieve debuggers lossen dit probleem op door programma’s om te zetten naar beslissingsdiagrammen. De gebruiker kan dit diagram doorlopen door vragen te beantwoorden en op deze manier de locatie van de bug vinden. Deze debuggers hebben echter een aantal nadelen. Ten eerste kunnen de gestelde vragen zeer complex worden. Ten tweede zijn deze debuggers geheugen- of tijdsintensief voor grote programma’s. In deze thesis wordt een nieuwe debug methode onderzocht dat we Property Based Debugging (PBD) noemen. Hierbij probeert de gebruiker een beschrijving te geven van geobserveerde bugs. Dit gebeurt in de vorm van eigenschappen, gelijkaardig aan hoe in Property Based Testing programma eigenschappen worden gespecificeerd om bugs op voorhand te vinden. Vervolgens zal in PBD de debugger automatisch op zoek gaan naar de bug en informatie over de bug rapporteren. In deze thesis wordt een implementatie van PBD in de KU Leuven Haskell Compiler (KHC) voorgesteld. Ten slotte wordt aan de hand van een case studie gekeken in welke mate deze implementatie een verbetering teweeg brengt ten opzichte van voorgaande debug technieken.

Keywords


Dissertation
Een gecombineerde calculus voor algebraïsche, scoped en parallelle effecten

Loading...
Export citation

Choose an application

Bookmark

Abstract

Algebraïsche effecten en handlers zijn een populaire aanpak om neveneffecten te modelleren. De techniek laat modulaire compositie van syntaxis en semantiek van verschillende effecten toe. De algebraïsche effecten en handlers zijn echter niet in staat om alle soorten effecten te beschrijven met behoud van de gewenste eigenschappen, meer bepaald overloading van effecten, modulaire compositie en effectinteracties. Scoped effecten creeëren de mogelijkheid om effecten te modelleren over een bepaald specifiek bereik. De lambda_{sc}-calculus is een bestaande getypeerde calculus die programmeren met scoped effecten toelaat. Met parallelle effecten kan een gelijktijdige uitvoering van effectvolle programma's geschreven worden. De lambda^p-calculus is een bestaande ongetypeerde calculus die programmeren met parallelle effecten mogelijk maakt. Deze masterproef stelt een getypeerde operationele calculus lambda_{sc}^p voor die algebraïsche, scoped en parallelle effecten ondersteunt. De calculus bouwt verder op de lambda_{sc}- en lambda^p-calculi. De thesis stelt een syntaxis, operationele semantiek en typesysteem voor voor lambda_{sc}^p. Voor het typesysteem wordt de typeveiligheid bewezen door progress en preservation. De masterproef beidt een interpreter aan die programmeren met de drie computationele effecten mogelijk maakt. De thesis behandelt voorbeelden van parallelle en scoped effecten evenals combinaties van beide. De interpreter is ongetypeerd, maar door de typeannotaties kunnen types van voorbeelden nagekeken worden via het uitgewerkte typechecking algoritme.

Keywords


Dissertation
Constraint-gebaseerde test-cases voor Haskell.
Authors: --- --- ---
Year: 2009 Publisher: Leuven K.U.Leuven. Faculteit Ingenieurswetenschappen

Loading...
Export citation

Choose an application

Bookmark

Abstract

Keywords


Dissertation
Bewijsmethoden voor gecombineerde effecten met cut via equational reasoning

Loading...
Export citation

Choose an application

Bookmark

Abstract

In functionele talen gebeuren evaluaties als zuivere wiskundige functies. Functies hebben op deze manier geen last van neveneffecten (side-effects). Doordat neveneffecten afwezig zijn kan er eenvoudig, via equational reasoning, geredeneerd worden over programma's. Toch willen we ook in zuiver functionele talen toegang hebben tot bepaalde neveneffecten. Door gebruik te maken van monads kan men neveneffecten modelleren. In deze thesis modelleren we de cut, een neveneffect oorspronkelijk afkomstig uit Prolog, gecombineerd met nondeterminisme en state. Daarnaast bewijzen we de correctheid van de gecombineerde effect in een state-based voorstelling. We besteden ook een hoofstuk aan het bestuderen hoe we het beperken van het bereik (scope) van het cut-effect kunnen modelleren in Haskell. De motivatie voor het bestuderen van de mogelijkheden van de bewijsvoering komt van van het bestuderen van de Warren Abstract Machine, de abstracte machine van Prolog en hoe deze te modelleren in Haskell.

Keywords


Dissertation
Lambda merging: van lambdaklasse tot lambdagroep - JVM-bytecodeoptimalisatie voor de voorstelling van lambdafuncties in Kotlinapplicaties

Loading...
Export citation

Choose an application

Bookmark

Abstract

Smartphones en de bijhorende applicaties zijn alomtegenwoordig. De beperkte opslagcapaciteit en bandbreedte maakt dat de applicatiegrootte een belangrijke factor is voor veel smartphonegebruikers. Tegelijk moeten de applicaties voldoende snel werken. Appontwikkelaars maken handig gebruik van reeds bestaande code die in de vorm van bibliotheken aan een applicatie wordt toegevoegd. Die bibliotheken bevatten echter heel wat ongebruikte extra code die juist bijdraagt aan de applicatiegrootte. De bytecodeoptimalisators ProGuard en R8 bieden een oplossing om die overbodige code te verwijderen. Door de JVM-bytecode van applicaties te analyseren, zijn ze in staat om de applicatie te verkleinen en enigszins te versnellen met behoud van de originele applicatielogica. Veel applicaties voor het besturingssysteem Android worden tegenwoordig in Kotlin geschreven. Daarbij gebruiken appontwikkelaars vaak bibliotheken die het gebruik van lambdafuncties stimuleren. Een lambdafunctie in Kotlin wordt in JVM-bytecode voorgesteld door een aparte lambdaklasse. Die representatie zorgt echter voor grotere applicaties. R8 bevat al een optimalisatietechniek die lambdaklasses tot lambdagroepen samenvoegt: een klasse met daarin verschillende lambda-implementaties. Die techniek heet lambda merging. ProGuard daarentegen mist die optimalisatie. Bovendien ontbreekt er in de literatuur een beschrijving van deze optimalisatietechniek. Wat de impact is van lambda merging op de applicatiegrootte en de performantie van lambdafuncties in Kotlin is ook niet geweten. Deze masterproef introduceert een aanpak om lambda merging te implementeren. Een evaluatie van de implementatie van die aanpak in ProGuard toont aan dat applicaties gemiddeld 12~\% kleiner worden dankzij lambda merging. Bovendien blijven de extra vertragingstijden bij het initialiseren en oproepen van de lambdafuncties beperkt tot de orde van nanoseconden. Op het vlak van reductie in codegrootte presteert deze implementatie in combinatie met de bestaande optimalisaties in ProGuard beter dan de classfile-modus van R8, maar slechter dan de dex-modus van R8. Die laatste is immers de modus waarin lambda merging wordt toegepast. Wat de performantie betreft, werken de lambdagroepen van R8 over het algemeen sneller, maar voor lambdafuncties zonder vrije variabelen en met een beperkt aantal argumenten lijkt R8 juist slechter te presteren.

Keywords


Dissertation
Coherence van typeclass resolutie met multi-parameter typeclasses en functional dependencies

Loading...
Export citation

Choose an application

Bookmark

Abstract

Deze thesis onderzoekt het gedrag van typeclass resolutie bij programma’s met multi-parameter typeclasses en functional dependencies, met een focus op coherence. Dit werk bouwt verder op het coherence bewijs van Bottu, Xie, Marntirosian en Schrijvers [2]. Coherence garandeert dat eenzelfde programma zich altijd hetzelfde zal gedragen, wat een gewenste eigenschap is wanneer de compilatie niet-deterministische processen zoals typeclass resolutie bevat. Coherence van typeclasses is lang verondersteld geweest. Het bewijs van Bottu et al. beperkt zich tot programma’s waarin typeclasses ´e´en parameter hebben. Multi-parameter typeclasses en functional dependencies staan programma’s toe die niet uitgedrukt kunnen worden met typeclasses met slechts ´e´en parameter. Om deze reden wordt het werk van Bottu et. al. in deze thesis uitgebreid om deze functionaliteit te ondersteunen. Dit werk biedt ook een implementatie van de uitbreiding. Hierdoor kan de correctheid ervan gecontroleerd worden, en het gedrag onderzocht. Op basis van dit onderzoek kan met een zeker vertrouwen de conclusie getrokken worden dat programma’s met multi-parameter typeclasses en functional dependencies voorspelbaar gedrag vertonen.

Keywords


Dissertation
vLambda: functional programming design patterns for Java

Loading...
Export citation

Choose an application

Bookmark

Abstract

De integratie van functionele concepten in imperatieve programmeertalen is een groeiende trend. Java 8 voegde Streams, Optionals en lambda-expressies toe aan Java. Deze concepten zijn geïnspireerd op concepten uit Haskell. Streams bieden gelijkaardige operatoren aan als de lijsten in Haskell. Optionals bieden dezelfde functionaliteit als de Maybe Monad uit Haskell. Deze functionele concepten bieden in theorie enkele voordelen: ze maken code compacter en duidelijker. Om dit te testen passen we deze concepten toe in een case study waarbij for-lussen vervangen worden door Stream-operaties. Om deze vervanging te kunnen uitvoeren, hebben we soms andere functionele concepten nodig. Hiervoor halen we de nodige inspiratie uit Haskell. De Monoid krijgt een volledige integratie in Java 8. Concepten als de Functor en Applicatieve Functor kunnen niet volledig geïntegreerd worden. De voornaamste oorzaak is het ontbreken van typeconstructoren in Java. We lossen dit op met individuele methodes die wel niet de generaliteit hebben die Haskell wel heeft. Niet alle for-lussen worden vervangen: Het combineren van Stream-operaties stuit hier op zijn grenzen. Vaak is dergelijke code van mindere kwaliteit en niet voldoende opgedeeld. Ook in Haskell ligt de voorkeur op meerdere kleinere functies dan één grote functie. Deze voorkeur zien we terug bij Streams. Een analyse van de vervanging leert ons dat de code met Streams minder codelijnen bevat. Wel zijn er meer karakters in de code. Dit is vooral te wijten aan de overhead van de Streams API en externe libraries.

Keywords

Listing 1 - 10 of 24 << page
of 3
>>
Sort by