Miguel García Rodríguez

Miguel García Rodríguez
University of Oviedo | UNIOVI · Department of Information Technology

Bachelor Degree in Computer Science, Master Degree in Web Engineering, Master Degree in Internet Services and Systems

About

31
Publications
4,017
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
165
Citations

Publications

Publications (31)
Article
Full-text available
Parsers are used in different software development scenarios such as compiler construction, data format processing, machine-level translation, and natural language processing. Due to the widespread usage of parsers, there exist different tools aimed at automizing their generation. Two of the most common parser generation tools are the classic Lex/Y...
Article
Full-text available
The measurement of the resources consumed by an application at runtime is an important task in different scenarios such as program optimization, malware and bug detection, and hardware scaling. Although different tools exist for this purpose, they sometimes show some limitations such as operating system and hardware dependencies, performance overhe...
Article
Full-text available
With the abrupt nationwide lockdown caused by the COVID-19 pandemic, many universities suspended face-to-face activities. Some of them decided to continue their academic courses, adapting traditional approaches to online learning. An important challenge was to deliver programming labs over the Internet without important methodological changes, that...
Article
Full-text available
Open-source code repositories are a valuable asset to creating different kinds of tools and services, utilizing machine learning and probabilistic reasoning. Syntactic models process Abstract Syntax Trees (AST) of source code to build systems capable of predicting different software properties. The main difficulty of building such models comes from...
Article
Full-text available
Both static and dynamic typing provide different benefits to the programmer. Statically typed languages support earlier type error detection and more opportunities for compiler optimizations. Dynamically typed languages facilitate the development of runtime adaptable applications and rapid prototyping. Since both approaches provide benefits, gradua...
Article
Full-text available
Dynamically typed languages have become popular in scenarios where high flexibility and adaptability are important issues. On the other hand, statically typed languages provide important benefits such as earlier type error detection and, usually, better runtime performance. The main objective of hybrid statically and dynamically typed languages is...
Article
Dynamic languages are suitable for developing specific applications where runtime adaptability is an important issue. On the contrary, statically typed languages commonly provide better compile-time type error detection and more opportunities for compiler optimizations. Because both approaches offer different benefits, there exist programming langu...
Article
Full-text available
Multiple dispatch allows determining the actual method to be executed, depending on the dynamic types of its arguments. Although some programming languages provide multiple dispatch, most widespread object-oriented languages lack this feature. Therefore, different implementation techniques are commonly used to obtain multiple dispatch in these lang...
Conference Paper
Type systems are mainly aimed at providing the absence of erroneous behaviors. Their formalization is commonly used to prove specific safety properties, but those formal specifications are not usually used to implement the language. Once a type system has been proven to be sound, a type checker must be developed in the implementation of the languag...
Article
The development of service robots has gained more attention over the last years. Advanced robots have to cope with many different situations emerging at runtime, while executing complex tasks. They should be programmed as dynamically adaptive systems, capable of adapting themselves to the execution environment, including the computing, user, and ph...
Article
Robotic and ambient intelligent environments are much more demanding regarding the knowledge a robot needs to have. A skilled robot performs human-scale manipulation tasks, interacts with a variety of objects, understands instructions given by humans ...
Article
Full-text available
Type systems are aimed at preventing programming language constructions from having wrong behavior at runtime. Different formalisms are used to guarantee that a type system is well defined. However, the type systems implemented in commercial language processors (type checkers) do not commonly use tools that translate these formalisms into code. We...
Article
Some programming languages such as CLOS, Xtend and Dylan provide multiple dispatch through multi-methods. Multiple dispatch is a language feature for dynamically determining the actual method to be executed, depending on the dynamic types of its arguments. However, many widespread languages such as Java, C# and C++ only support single dispatch by m...
Conference Paper
Aspect-Oriented Software Development (AOSD) facilitates the modularisation of different crosscutting concerns in software development. In AOSD, aspect weaving is the composition mechanism that combines aspects and components in an aspect-oriented application. Aspect weaving can be performed statically, at load time or at runtime. These different ki...
Conference Paper
Dynamically typed languages have recently turned out to be suitable for developing specific scenarios where dynamic adaptability or rapid prototyping are important issues. However, statically typed programming languages commonly offer more opportunities for compiler optimizations and earlier type error detection. Due to the benefits of both approac...
Article
Multiple dispatch is a feature provided by some programming languages, in which the actual method to be executed is dynamically determined by the runtime types of its arguments. Although some programming languages such as CLOS, Xtend and Dylan provide this feature, many widespread languages such as Java, C# and C++ only support single dispatch by m...
Article
Full-text available
Distributed systems are commonly required to be flexible and scalable, as the number and arrangement of their (potentially mobile) devices may easily change. Security in distributed systems is a complex issue which can produce several problems such as eavesdropping, phishing or denial of service. To overcome these problems, there are various securi...
Article
Grounding is the process in charge of linking requests and responses of web services with the semantic web services execution platform, and it is the key activity to automate their execution in a real business environment. In this paper, the authors introduce a practical solution for data grounding. On the one hand, we need a mapping language to re...
Conference Paper
The Tease Apart Inheritance is a big refactoring technique used to separate different responsibilities tangled along a class hierarchy. This refactorization associates two parallel hierarchies through their roots in order to use one from the other. The interface of the root class in the used hierarchy is commonly too general to be employed by the c...
Article
Although static typing provides undeniable benefits for the development of applications, dynamically typed languages have become increasingly popular for specific scenarios. Since each approach offers different benefits, the StaDyn programming language has been designed to support both dynamic and static typing. This paper describes the minimal cor...
Conference Paper
The Tease Apart Inheritance refactoring is used to avoid tangled inheritance hierarchies that lead to code duplication. This big refactoring creates two parallel hierarchies and use delegation to invoke one from the other. One of the drawbacks of this approach is that the root class of the new refactored hierarchy should be general enough to provid...
Conference Paper
Full-text available
The development of service robots has Rained more and more attention over the last years. Advanced robots have lo cope with many different emerging al runtime situations, while executing complex tasks. They should be programmed as context-aware systems, capable of adapting themselves to the execution environment. Including the computing, user and p...
Article
Although static typing provides early type error detection, better legibility and abstraction, and more opportunities for compiler optimizations, dynamic typing supplies a high degree of runtime adaptiveness, providing an agile and interactive development suitable for rapid prototyping. In this article, the minimal core type system of a programming...
Article
Full-text available
Dynamic languages are becoming increasingly popular for different software development scenarios such as Web engineering, rapid prototyping or the construction of applications that require runtime adaptiveness. These languages are built on the idea of supporting reasoning about (and customising) program structure, behaviour and environment at runti...
Conference Paper
Data management is a key factor in any software effort. Traditional solutions, such as relational databases, are rapidly losing weight in the market towards more flexible approaches and data models due to the fact that data stores as monolithic components are not valid in many current scenarios. The World Wide Consortium proposes RDF as a suitable...
Conference Paper
Dynamic languages are becoming increasingly popular for developing different kinds of applications, being rapid prototyping one of the scenarios where they are widely used. The dynamism offered by dynamic languages is, however, counteracted by two main limitations: no early type error detection and fewer opportunities for compiler optimizations. To...
Conference Paper
En ingeniería del software una aplicación Web es aquella que los usuarios usan desde un servidor Web a través de Internet o de una intranet. Las aplicaciones Web son populares debido a la ubicuidad del navegador como un cliente, así como la habilidad para actualizar y mantener aplicaciones Web sin distribuir e instalar software en miles de potencia...

Network

Cited By