Verslag Rascal workshop

04-03-2010

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.

[  

   ](http://www.flickr.com/photos/devnology/sets/72157623552682234/)

News @devnologynl

@michielovereem @JoyOfCoding OOOOPS! It is June 30th!

21-03-2017 at 09:20

RT @JoyOfCoding: Very early bird tickets available for the fifth anniversary conference! Check out our new web site and order yours https:/…

09-03-2017 at 08:47

@JeroenSoeters The jury’s still out on that one. Come and talk to us in April :)

06-03-2017 at 15:27

Qwan 5dff39510bacfcefb54e89f953eddfc1a7a21185b7128d96ff6b466f56acb6d9
Macaw 06e9331a5321067b592bf45ea39db7df6792dc976000d24d3ee4043d99203514
Finalist e304343cdbeb0996cc1e7a26527993a5fa2db87ca53a81fb15dca22a35d7f28c

Devnology is a non-profit organisation and thus depends on sponsors. Thanks to our wonderful sponsors all Devnology events are free!