Nederlands (NL-nl)English (United Kingdom)
Verslag Rascal workshop
Gepubliceerd door freek   

Dit verslag is geschreven door Jeroen van den Bos (@jvandenbos) . Bedankt Jeroen!

In het indrukwekkende pand van TTY in het hartje van Amsterdam organiseerde Devnology haar tiende maandelijkse bijeenkomst. Het doel deze avond was om de metaprogrammeertaal Rascal te leren kennen door er met z'n allen een aantal problemen mee op te lossen -- de beste manier om een programmeertaal te leren kennen is tenslotte om er iets nuttigs mee te doen.

Jurgen Vinju starte het programma met een korte introductie over de achtergrond van de taal Rascal, waarin hij vooral inging op waar je het nou voor zou kunnen gebruiken. Een belangrijke conclusie is dat het domein van Rascal erg groot is: van software analyse tot de implementatie van refactorings en van grootschalige automatische migratie tot de ontwikkeling en constructie van volledige compilers voor domein-specifieke talen.

Daarna richtte Jurgen zich op praktische details om met Rascal aan de slag te gaan. Om het makkelijk te maken om met de taal te beginnen lijkt de syntax sterk op Java. Vrijwel alle bekende constructies zijn aanwezig, behalve de object-georienteerde, die ontbreken vrijwel volledig. Naast de vertrouwde syntax zijn er dan heel veel functies, zowel in de taal zelf als in de bijgeleverde bibliotheken die de specifieke metaprogrammeertaken vergemakkelijken. Zaken als het automatisch extraheren van feiten uit Java-projecten, ingebouwde ondersteuning voor het visitor-pattern, het simpel definieren en werken met bomen van datastructuren en het visualiseren van allerlei relaties.

Tijd voor actie! Jurgen stelde voor om eerst even de syntax te oefenen door een programma te schrijven dat alle priemgetallen teruggeeft tussen 1 en 100. Een aantal minuten later al waren er diverse oplossingen, waarvan de volgende de uitdrukkingskracht van Rascal goed laat zien:

[p | p <- [1..100], all(i <- [2..p], p != i ==> p % i !=0)]

Het echte werk lonkte: het analyseren van een Java project. Door de functies om allerlei feiten uit een Eclipse Java project te extraheren heb je in een paar statements een flinke dataset tot je beschikking waarmee je door middel van uitgebreide analyses (die veelal qua vorm sterk lijken op de voorbeeldregel hierboven) andere datasets kunt opbouwen. Om uiteindelijk inzicht te krijgen in de resultaten kan dan de visualisatiebibliotheek van Rascal worden aangeroepen, die in veel gevallen via een enkele aanroep een aangeleverde datastructuur omzet in een te kiezen visualisatie, van pie charts en diagrammen tot word clouds of complexere plaatjes.

Het mag duidelijk zijn dat Rascal een speciale domein-specifieke taal is. Waar veel DSLs een zeer beperkte uitdrukkingskracht hebben (vaak om de focus heel smal te houden) is Rascal een zeer omvangrijke en breed inzetbare taal. Dit zorgt ervoor dat de metaprogrammeur zich niet hoeft in te houden in het soort analyses dat hij wil uitvoeren. Het domein-specifieke zit hem hier dan ook duidelijk in alles dat er extra in of bij de taal wordt geleverd. Deze functies zijn puur gericht op het domein van Rascal en zorgen ervoor dat je je niet overmatig hoeft bezig te houden met zaken als data importeren of resultaten visualiseren. Dat gaat allemaal vrijwel vanzelf. Zo kun je al je aandacht richten op het schrijven van effectieve analyses.

Dat deden de Devnology bezoekers dan ook zeer fanatiek, waardoor er flink wat t-shirts zijn uitgedeeld voor het snelst oplossen van een van de opgaven. Uiteindelijke winnaars van de avond waren echter het duo @Rick en @Frank, die het tijdens de bijeenkomst op zich namen om een bug in de Windows-versie van Rascal ter plekke op te lossen.

De presentatie en opgaven van deze avond zijn te vinden op de website van Rascal.

     

Trackback(0)
Comments (0)Add Comment

Write comment
You must be logged in to post a comment. Please register if you do not have an account yet.

busy
 

Bijeenkomsten

Prijzen sponsors

VisualSVN logo

Infragistics logo

JetBrains logo



Foto's

Bekijk alle foto's van Devnology op Flickr.

Waarom bijeenkomsten?

Bijeenkomsten van Devnology zijn erop gericht enthousiaste ontwikkelaars bijeen te brengen om kennis en ervaring uit te wisselen, te discussiƫren en te netwerken - geek to geek.

Over ons

Vanuit Devnology willen wij vooral kijken naar concepten binnen software ontwikkeling. Als zich nieuwe ontwikkelingen voordoen zullen we vooral kijken naar het concept erachter en deze in een breed kader van eerdere technieken en/of bestaande platformen plaatsen. Lees meer...