|
Dit verslag is geschreven door Mendelt Siebenga(@mendelt) . Bedankt Mendelt!
Op woensdag 7 April waren we welkom op het Delftse kantoor van OGD
voor het Devnology Tetris Codefest. De OGD heeft een makkelijk bereikbaar
kantoor aan de rand van Delft met op de bovenste verdieping een kantine
voorzien van bar, dakterras, flipperkast en een arcade machine. Kortom
een goede plek om met een stel programmeurs een avond lang in code te
duiken.
Natuurlijk moest er eerst gegeten worden. Onder het genot
van enkele biertjes, frisdrank en de indrukwekkende hoeveelheid chinees
die door onze gastheer was besteld werden alvast de verschillende Tetris
implementaties waar iedereen mee bezig was geweest besproken. Na
het eten kregen de deelnemers nog een half uur de tijd om de laatste
hand te leggen aan hun code, hierna gingen we van start. Het was leuk om
te zien dat er grote verschillen waren in aanpak. De meest in het oog
springende versies waren de Tetris compiler in ANTLR en Tetris in SQL. De
ANTLR versie gebruikte een met ANTLR gegenereerde parser voor het
inlezen van tekst-bestanden met Tetris spelsituaties waarna een stukje
Java code zich gedroeg als speler en de juiste zetten deed. De
resulterende spelsituaties werden weer in een tekst-bestand
weggeschreven en kon als invoer dienen voor de parser waarna de java
code een volgende zet kon verzinnen. Hiermee was meteen de grootste
onvolkomenheid in traditionele Tetris implementaties geƫlimineerd, de
menselijke speler. De SQL versie gebruikte een database voor het
opslaan van spelsituaties. Alle logica zoals het draaien van stenen en
dergelijke was in SQL geschreven. De gebruikersinterface was geschreven
in C#. Veel van de logica in Tetris is erg goed in SQL set-based
operaties uit te drukken, dus dit was niet eens zo'n gekke
implementatie. Ook de OGD zelf had ook een inzending. Zij
demonstreerden een C# versie die normaal voor de interne
programmeer-cursussen gebruikt werd. Dit was duidelijk de meest
uitgebreide versie met een tetromino editor waar gebruikers zelf nieuwe
blokken mee kunnen bouwen en meerdere front-ends voor verschillende UI
frameworks. Verder werden nog een compleet functionele aanpak in Haskel
gedemonstreerd, een functionele implementatie in Scala met een Java en
JavaFX front-end. Twee Javascript versies en een Python Tetris. Behalve
de verschillende programmeertalen was het ook erg leerzaam om
verschillen in aanpak te vergelijken. Implementatie-details zoals het
roteren van blokken dat op een aantal verschillende manieren
geimplementeerd was tot verschillen in methodologie, van TDD tot
testloos en van functioneel to OO. Helaas was er niet genoeg tijd
om alle Tetrissen te bespreken, wat dat betreft was het goed dat geen
van de drie aanwezige Devnology bestuursleden code had meegenomen, ze
hebben het natuurlijk al druk genoeg met het organiseren van dit soort
events. Ik zou hun en de mensen van de OGD graag willen bedanken voor
een leuke en leerzame avond.
Trackback(0)
 |