scholarly journals Multiple Dispatch in Practice

2021 ◽  
Author(s):  
◽  
Radu Muschevici

<p>Multiple dispatch uses the run time types of more than one argument to a method call to determine which method body to run. While several languages over the last 20 years have provided multiple dispatch, most object-oriented languages still support only single dispatch - forcing programmers to implement multiple dispatch manually when required. This thesis presents an empirical study of the use of multiple dispatch in practice, considering six languages that support multiple dispatch. We hope that this study will help programmers understand the uses and abuses of multiple dispatch; virtual machine implementors optimise multiple dispatch; and language designers to evaluate the choice of providing multiple dispatch in new programming languages.</p>

2021 ◽  
Author(s):  
◽  
Radu Muschevici

<p>Multiple dispatch uses the run time types of more than one argument to a method call to determine which method body to run. While several languages over the last 20 years have provided multiple dispatch, most object-oriented languages still support only single dispatch - forcing programmers to implement multiple dispatch manually when required. This thesis presents an empirical study of the use of multiple dispatch in practice, considering six languages that support multiple dispatch. We hope that this study will help programmers understand the uses and abuses of multiple dispatch; virtual machine implementors optimise multiple dispatch; and language designers to evaluate the choice of providing multiple dispatch in new programming languages.</p>


Author(s):  
Vincenzo De Florio

The programming language itself is the focus of this chapter: Fault-tolerance is not embedded in the program (as it is the case e.g. for single-version fault-tolerance), nor around the language (through compilers or translators); on the contrary, faulttolerance is provided through the syntactical structures and the run-time executives of fault-tolerance programming languages. Also in this case a significant part of the complexity of dependability enforcement is moved from each single code to the architecture, in this case the programming language. Many cases exist of fault-tolerance programming languages; this chapter proposes a few of them, considering three cases: Object-oriented languages, functional languages, and hybrid languages. In particular it is discussed the case of Oz, a multi-paradigm programming language that achieves both transparent distribution and translucent failure handling.


1987 ◽  
Vol 16 (230) ◽  
Author(s):  
Ole Lehrmann Madsen

Programming languages that support the object-oriented perspective on programming may be divided into two groups. One group of languages originating from Simula follows the Algol tradition with respect to block structure, static name binding and compile-time type checking. Another group of languages originating from Smalltalk is more in the style of the Lisp tradition with a flat set of definitions (classes), dynamic name binding and run-time type checking. The purpose of this paper is to analyze the role of block structure in object-oriented languages. It will be demonstrated that block structure is useful from both a conceptual and technical viewpoint.


1996 ◽  
Vol 25 (506) ◽  
Author(s):  
Rene Wenzel Schmidt

<p>Object-oriented programming languages are excellent for expressing abstractions in many application domains. The object-oriented programming methodology allows real-world concepts to modelled in an easy and direct fashion and it supports refinement of concepts. However, many object-oriented languages and their implementations fall short in two areas: dynamic extensibility and reflection.</p><p>Dynamic extensibility is the ability to incorporate new classes into an application at runtime. Reflection makes it possible for a language to extend its own domain, e.g., to build type-orthogonal functionality. MetaBETA is an extension of the BETA language that supports dynamic extensibility and reflection. MetaBETA has a metalevel interface that provides access to the state of a running application and to the default implementation of language primities.</p><p>This report presents the model behind MetaBETA. In particular, we discuss the execution model of a MetaBETA program and how type- orthogonal abstractions can be built. This includes precentation of dynamic slots, a mechanism that makes is possible ectend objects at runtime. The other main area covered in this report is the implementation of MetaBETA. The central component of the architecture is a runtime system, which is viewed as a virtual machine whose baselevel interface implements the functionality needed by the programming language.</p>


2010 ◽  
Vol 20 (3-4) ◽  
pp. 303-352 ◽  
Author(s):  
BRUNO C. D. S. OLIVEIRA ◽  
JEREMY GIBBONS

AbstractDatatype-generic programming (DGP) involves parametrization of programs by the shape of data, in the form of type constructors such as ‘list of’. Most approaches to DGP are developed in pure functional programming languages such as Haskell. We argue that the functional object-oriented language Scala is in many ways a better choice. Not only does Scala provide equivalents of all the necessary functional programming features (such as parametric polymorphism, higher-order functions, higher-kinded type operations, and type- and constructor-classes), but it also provides the most useful features of object-oriented languages (such as subtyping, overriding, traditional single inheritance, and multiple inheritance in the form of traits). Common Haskell techniques for DGP can be conveniently replicated in Scala, whereas the extra expressivity provides some important additional benefits in terms of extensibility and reuse. We illustrate this by comparing two simple approaches in Haskell, pointing out their limitations and showing how equivalent approaches in Scala address some of these limitations. Finally, we present three case studies on how to implement in Scala real DGP approaches from the literature: Hinze's ‘Generics for the Masses’, Lämmel and Peyton Jones's ‘Scrap your Boilerplate with Class’, and Gibbons's ‘Origami Programming’.


2020 ◽  
Vol 17 (1) ◽  
pp. 181-203
Author(s):  
Tina Beranic ◽  
Marjan Hericko

Without reliable software metrics threshold values, the efficient quality evaluation of software could not be done. In order to derive reliable thresholds, we have to address several challenges, which impact the final result. For instance, software metrics implementations vary in various software metrics tools, including varying threshold values that result from different threshold derivation approaches. In addition, the programming language is also another important aspect. In this paper, we present the results of an empirical study aimed at comparing systematically obtained threshold values for nine software metrics in four object-oriented programming languages (i.e., Java, C++, C#, and Python).We addressed challenges in the threshold derivation domain within introduced adjustments of the benchmarkbased threshold derivation approach. The data set was selected in a uniform way, allowing derivation repeatability, while input values were collected using a single software metric tool, enabling the comparison of derived thresholds among the chosen object-oriented programming languages.Within the performed empirical study, the comparison reveals that threshold values differ between different programming languages.


2016 ◽  
Vol 5 (2) ◽  
pp. 37-46
Author(s):  
Mohamed Osman Imam ◽  
Adil Yousif ◽  
Mohammed Bakri Bashir

Cloud computing is a general term for anything that involves delivering hosted services over the Internet. It is a construct that allows you to access applications that actually reside at locations other than your computer or other Internet-connected devices. Software as a Service (SaaS) is a software delivery model in which software resources are accessed remotely by users over the internet. Enterprises prefer using SaaS because of its low cost. SaaS requires sharing of application servers among multiple tenants for low operational costs. Several SaaS Toolkits are available and used to develop cloud SaaS applications. However, most of these Toolkits are very complex. This paper aims to build a new simple and easy SaaS Toolkit to develop SaaS applications and to avoid the difficulties and complexity in the current cloud SaaS Toolkits. The proposed Toolkit is based on java virtual machine and the popular web programming languages HTML and PHP. To evaluate the proposed Toolkit an empirical study has been conducted. The result of the empirical study revealed that the proposed Toolkit outperforms the current Toolkits in terms of complexity, understandability and learnability.


DYNA ◽  
2014 ◽  
Vol 81 (186) ◽  
pp. 242 ◽  
Author(s):  
Francisco Ortin ◽  
Jose M. Redondo ◽  
Jose Quiroga ◽  
Miguel Garcia

2002 ◽  
Author(s):  
◽  
Jeanette Wendy Wing

Computer programming has been a science for approximately 50 years. It this time there havebeen two major paradigm shifts that have taken place. The first was from “spaghetti code” to structured programs. The second paradigm shift is from procedural programs to object oriented programs. The change in paradigm involves a change in the way in which a problem is approached, can be solved, as well as a difference in the language that is used. The languages that were chosen to be studied, are COBOL and Java. These programming languages were identified as key languages, and the languages that software development are the most reliant on. COBOL, the procedural language for existing business systems, and Java the object oriented language, the most likely to be used for future development. To complete this study, both languages were studied in detail. The similarities and differences between the programming languages are discussed. Some key issues that a COBOL programmer has to keep in mind when moving to Java were identified.


2014 ◽  
Vol 543-547 ◽  
pp. 2953-2956 ◽  
Author(s):  
Sheng Wen Gong

Java is a computer programming language that is class-based, object-oriented, java is, as of 2013, one of the most popular programming languages in use. The Java Development Kit (JDK) is an implementation of java language, which consists of a Java Virtual Machine and all of the java class libraries. There are thousands of classes in the java class libraries, and there are many kinds of relationships between classes. In this paper, we use complex network theory to study the topology of the java class libraries, according to analyzing to the networks feature characters, important classes and interfaces in java class libraries are found, we hope to find the relationship between the characters of complex networks and software reliability.


Sign in / Sign up

Export Citation Format

Share Document