Ecstatic – Type Inference for Ruby Using the Cartesian Product Algorithm
Authors
Madsen, Martin ; Sørensen, Peter ; Kristensen, Kristian
Term
4. term
Education
Publication year
2007
Abstract
Dette speciale beskriver Ecstatic, et værktøj til typeinferens i programmeringssproget Ruby. Typeinferens betyder, at værktøjet automatisk kan afgøre, hvilke datatyper der bruges, uden at udvikleren skriver dem selv. Ecstatic bygger på den Cartesian Product Algorithm (CPA), som oprindeligt blev udviklet til Self-sproget. Ved at implementere CPA for Ruby viser vi, at algoritmen kan tilpasses et nyt sprog. Ved hjælp af RDoc udvikler vi en metode til at håndtere både Rubys kernebibliotek og ekstern kode, som er implementeret i C. Med Ecstatic gennemførte vi en række eksperimenter, der gav indblik i, hvor meget polymorfi (objekter og metoder i flere former) der anvendes i Ruby-programmer. Vi præsenterer også en tilgang til enhedstest af et typeinferenssystem. Endelig sammenligner vi Ruby med Smalltalk og Self og konkluderer, at deres semantik er beslægtet.
This thesis presents Ecstatic, a type inference tool for the Ruby programming language. Type inference means the tool can automatically determine the data types used without developers writing type annotations. Ecstatic is based on the Cartesian Product Algorithm (CPA), originally developed for the Self language. By implementing CPA for Ruby, we show that the algorithm can be adapted to a new language. Using RDoc, we devise a method to handle Ruby’s core library and external code implemented in C. With Ecstatic, we ran experiments that offered insight into the degree of polymorphism (objects and methods used in many forms) in Ruby programs. We also present an approach to unit testing a type inference system. Finally, we compare Ruby to Smalltalk and Self and conclude that their semantics are similar.
[This abstract was generated with the help of AI]
Documents
