University of Oviedo
My main research topics are programming languages and software engineering. The following are more specific research lines I work in.
Big code. We apply big data and machine learning techniques to massive open source code databases to create tools that improve the software development process. Specific projects are aimed at improving decompilation, predicting performance gain of type annotations, program representation and analysis using overlaid graph representations, source code classification, and new algorithms of structured data mining for big amounts of data.
Hybrid static and dynamic typing languages. Most hybrid typing languages use the approach of gradual typing. Besides, gathering type information of dynamically typed code may be used to improve runtime performance. We have implemented the research language StaDyn to measure the real benefits of this approach.
Aspect-oriented software development. In particular, we do research on efficient dynamic aspect weavers. We implemented the DSAW Dynamic and Static Aspect Weaver.
Virtual machines. Optimization techniques to execute the common meta-programming features of dynamic languages. We implemented ЯRotor as an extension of the SSCLI implementation of .Net. I also participated in the design and implementation of the nitrO and Zero virtual machines.
Dynamic languages. With the experience gained from designing and implementing StaDyn, we are including type inference in dynamically typed languages such as Python. The objective is to statically detect type errors in programs with no type annotation.
Computational reflection. Definition of new levels of behavioral reflection to provide a high level of dynamic adaptiveness. In my PhD I implemented the nitrO non-restrictive computational reflective system.
Declarative programming for mobile devices. As part of the SERENOA FP7 research project, I worked on the design of DIMAG, a Device-Independent Mobile Application Generation framework; and Lizard, a wizard to create multi-platform GUI applications.
Runtime adaptable systems. Investigate the benefits of runtime adaptable systems in scenarios such as implicit persistence systems, robotics and e-Learning.