Knowledge programming, which makes use of the explicit representation and interpretation of knowledge to create intelligent programs, requires specialized languages and tools to help programmers. Prolog, an implementa...
详细信息
Knowledge programming, which makes use of the explicit representation and interpretation of knowledge to create intelligent programs, requires specialized languages and tools to help programmers. Prolog, an implementation of a logic programming language, provides some of these tools; it and other languages have been argued to be the "best" way to do such knowledge programming. This paper raises questions which suggest that any single paradigm of programming (e.g., logic programming or object-oriented programming) benefits by being integrated in a single environment with other paradigms of programming.
The knowledge of the most common programming paradigms, and the basic abstractions provided by each paradigm, are competencies to be attained by Software Engineering undergraduate students. These abstractions also inc...
详细信息
The knowledge of the most common programming paradigms, and the basic abstractions provided by each paradigm, are competencies to be attained by Software Engineering undergraduate students. These abstractions also include the basis of concurrent and parallel programming, present in different programming paradigms. In an existing Software Engineering degree, these competencies were assigned to the programming Technology and paradigms course. We present the approach followed in the design of that course to teach object-oriented, functional, concurrent and parallel programming to second year undergraduate students with basic knowledge of Java. The time limitations of the course prevented us from using various programming languages. After analyzing different alternatives, we chose C# to teach the course. We describe the most important challenges faced and how we addressed them. The course success rate is slightly greater than the rest of courses in the same year and degree, while performance rates and average marks are analogous. There is no influence of age and gender on the final mark, but students retaking the course have significantly worse evaluation than those enrolled for the first time. The students' self-evaluation revealed that the proposed course has a strong influence on the achievement of the expected learning outcomes, and their satisfaction with the course was significantly higher than with the rest of courses in the same degree. (C) 2016 Elsevier Ltd. All rights reserved.
Various paradigms that support high-level programming are discussed independently of supporting languages. The paradigms are grouped according to their approach to problem solving. The operational approach describes s...
详细信息
Various paradigms that support high-level programming are discussed independently of supporting languages. The paradigms are grouped according to their approach to problem solving. The operational approach describes step-by-step how to construct a solution. The demonstrational approach is a variation on it that illustrates the solution operationally for specific examples and lets the system generalize these example solutions for other cases. The definitional approach is different. It states properties about the solution to constrain it without describing how to compute it. These three approaches are viewed on a continuum from operational to definitional. A pure language solution to the problem of sorting a list into some linear order is presented for each paradigm.
The prevalence of graphical tools suggests that current software design has become too complex to easily manage. Returning to more compact textual programming requires new programming languages and paradigms.
The prevalence of graphical tools suggests that current software design has become too complex to easily manage. Returning to more compact textual programming requires new programming languages and paradigms.
Fault localization is to identify faulty program elements. Among the large number of fault localization approaches in the literature, coverage-based fault localization, especially spectrum-based fault localization has...
详细信息
ISBN:
(纸本)9781450397803
Fault localization is to identify faulty program elements. Among the large number of fault localization approaches in the literature, coverage-based fault localization, especially spectrum-based fault localization has been intensively studied due to its effectiveness and lightweightness. Despite the rich literature, almost all existing fault localization approaches and studies are conducted on imperative programming languages such as Java and C, leaving a gap in other programming paradigms. In this paper, we aim to study fault localization approaches for the functional programming paradigm, using Haskell language as a representation. We build up the first dataset on real Haskell projects including both real and seeded faults, which enables the research of fault localization for functional languages. With this dataset, we explore fault localization techniques for Haskell. In particular, as typically for SBFL approaches, we study methods for coverage collection as well as formulae for suspiciousness scores computation, and carefully adapt these two components to Haskell considering the language features and characteristics, resulting in a series of adaption approaches and a learning-based approach, which are evaluated on the dataset to demonstrate the promises of the direction.
Animations are an essential part of many modern user interfaces. They are often de fined programmatically, which allows for parametrization and reuse. Two programming paradigms to de fine animations are common: Proced...
详细信息
ISBN:
(纸本)9781450341554
Animations are an essential part of many modern user interfaces. They are often de fined programmatically, which allows for parametrization and reuse. Two programming paradigms to de fine animations are common: Procedural animation programming allows the developer to make explicit updates to object properties at each frame, allowing maximum control over behavior. Declarative animation programming allows the developer to specify keyframes, i.e., the value of an object's property at a given point in time. All frames between two keyframes are automatically interpolated by the animation library. In this paper, we investigate how these common programming paradigms differ in terms of developers' productivity. In a controlled laboratory study, we asked developers to implement a set of simple animations using both paradigms. We found that developers can implement a given behavior faster using declarative animation programming, but the abstraction introduced by automatically creating the animation through keyframe interpolation left participants with unexpected behavior for some tasks.
This paper presents an observational study that takes an initial step towards answering the question of how the selection of a programming paradigm affects the maintainability of a software system. Answers to this que...
详细信息
ISBN:
(纸本)9781728168074
This paper presents an observational study that takes an initial step towards answering the question of how the selection of a programming paradigm affects the maintainability of a software system. Answers to this question are important because they can provide insight on how the maintainability characteristics of different programming paradigms could be leveraged to improve software-engineering education. The observational study compares developers' effectiveness and speed performing pre-determined maintenance tasks on two equivalent variations of a web-based application: one based on Procedural programming and one based on Object-Oriented programming. Presented within this paper are the study's design, metrics measuring maintenance effectiveness and speed, and a statistical analysis of the results, which provides evidence that the maintainability characteristics of the two paradigms are different within the context of this research. In addition, as an observational study, some of its important contributions are lessons learned about the experiment design process and ideas for new hypotheses. These are presented in preparation for a future, broader research, and larger-scale experiment. Finally, we discuss some forward-thinking ideas about how differences in the maintenance characteristics of programming paradigms may influence on software-engineering education.
Educators recommend that students become acquainted with different programming paradigms in order to acquire alternative ways of computational thinking [3] and various approaches for problem solving [2]. Since student...
详细信息
ISBN:
(纸本)9781605588209
Educators recommend that students become acquainted with different programming paradigms in order to acquire alternative ways of computational thinking [3] and various approaches for problem solving [2]. Since students, learning different paradigms show both, positive and negative transfer effects, instructors should address it directly in the study track by relating to the characteristics of each paradigm, and specifically to the differences and similarities between them. In this poster, we investigate two programming paradigms- object-oriented programming and logic programming in the context of using inheritance for knowledge representation and problem solving.
Python is a multi-paradigm programming language that fully supports object-oriented (OO) programming. The language allows writing code in a non-procedural imperative manner, using procedures, using classes, or in a fu...
详细信息
ISBN:
(纸本)9781450394130
Python is a multi-paradigm programming language that fully supports object-oriented (OO) programming. The language allows writing code in a non-procedural imperative manner, using procedures, using classes, or in a functional style. To date, no one has studied what paradigm(s), if any, are predominant in Python code and projects. In this work, we first define a technique to classify Python files into predominant paradigm(s). We then automate our approach and evaluate it against human judgements, showing over 80% agreement. We then analyze over 100k open-source Python projects, automatically classifying each source file and investigating the paradigm distributions. The results indicate Python developers tend to heavily favor OO features. We also observed a positive correlation between OO and procedural paradigms and the size of the project. And despite few files or projects being predominantly functional, we still found many functional feature uses.
Quantum technology and its application in quantum computing has been gaining relevance and making incredible strides in the achievement of practical implementations of this new form of hardware acceleration. However, ...
详细信息
ISBN:
(纸本)9781510654761;9781510654754
Quantum technology and its application in quantum computing has been gaining relevance and making incredible strides in the achievement of practical implementations of this new form of hardware acceleration. However, in order to really succeed as a computational choice in the many application fields - from science to economy-, the devices need to be programmable and within reach to non-quantum users. There are multiple approaches to solve the quantum computing riddle. This paper looks at two of them, Boson sampling and qubit gate-based quantum accelerators, and compares their implementation and programmability of a common problem: the maximum clique problem.
暂无评论