scholarly journals ReSpecTX: Programming interaction made easy

2018 ◽  
Vol 15 (3) ◽  
pp. 655-682 ◽  
Author(s):  
Giovanni Ciatto ◽  
Stefano Mariani ◽  
Andrea Omicini

In this paper we present the ReSpecTX language, toolchain, and standard library as a first step of a path aimed at closing the gap between coordination languages ? mostly a prerogative of the academic realm until now ? and their industrial counterparts. Since the limited adoption of coordination languages within the industrial realm is also due to the lack of suitable toolchains and libraries of reusable mechanisms, ReSpecTX equips a core coordination language (ReSpecT) with tools and features commonly found in mainstream programming languages. In particular, ReSpecTX makes it possible to provide a reference library of reusable and composable interaction patterns.

2012 ◽  
Vol 9 (3) ◽  
pp. 1187-1202
Author(s):  
Zalán Szűgyi ◽  
Márk Török ◽  
Norbert Pataki ◽  
Tamás Kozsik

Nowadays, one of the most important challenges in programming is the efficient usage of multicore processors. All modern programming languages support multicore programming at native or library level. C++11, the next standard of the C++ programming language, also supports multithreading at a low level. In this paper we argue for some extensions of the C++ Standard Template Library based on the features of C++11. These extensions enhance the standard library to be more powerful in the multicore realm. Our approach is based on functors and lambda expressions, which are major extensions in the language. We contribute three case studies: how to efficiently compose functors in pipelines, how to evaluate boolean operators in parallel, and how to efficiently accumulate over associative functors.


2013 ◽  
Vol 1 (1) ◽  
pp. 1-13 ◽  
Author(s):  
Chia-Chu Chiang ◽  
Roger Lee

Programming open distributed systems will be of rapidly growing importance in the coming decades to the scientists and engineers that will be using these techniques to solve society’s most pressing problems. Even today, the authors see a growing number of critical applications such as MRI spin relaxometry, gene sequence analysis, climate modeling, and molecular modeling of potential bioactive compounds that require massive amounts of computation. The demands for intensive computational power will only grow in the future, as society tackles more complex problems. Existing concurrent programming languages are not well-suited to the development of open distributed systems. Middleware technologies provide the support for the development of open distributed systems. However, the technologies suffer the same problems of existing concurrent programming approaches which the software evolution of the systems are not supported well. The resulting systems are difficult to maintain due to the changes. This has led to the design and implementation of a variety of coordination models and languages for open distributed systems. The main purpose is to separate the concerns of the complexities including communication, coordination, computation, and heterogeneity in the development of open distributed systems. The models manage the concerns to improve the maintenance of the systems.


2002 ◽  
Vol 12 (4-5) ◽  
pp. 469-510 ◽  
Author(s):  
P. W. TRINDER ◽  
H.-W. LOIDL ◽  
R. F. POINTON

Parallel and distributed languages specify computations on multiple processors and have a computation language to describe the algorithm, i.e. what to compute, and a coordination language to describe how to organise the computations across the processors. Haskell has been used as the computation language for a wide variety of parallel and distributed languages, and this paper is a comprehensive survey of implemented languages. We outline parallel and distributed language concepts and classify Haskell extensions using them. Similar example programs are used to illustrate and contrast the coordination languages, and the comparison is facilitated by the common computation language. A lazy language is not an obvious choice for parallel or distributed computation, and we address the question of why Haskell is a common functional computation language.


1996 ◽  
Vol 11 (4) ◽  
pp. 303-316
Author(s):  
Paolo Ciancarini

AbstractSoftware process modelling is the activity of formalising the production lifecycle of large software systems. Its aim is to formally describe a software development process, which is then effectively used and possibly enacted by an environment able to support the geographically distributed and coordinated activities involved in the process itself. I show that rule-based languages, especially logic programming languages, are an important technology for the specification, modelling, enactment and coordination of software processes. This is because most routine activities in any development process can be defined by rules. Some initial proposals aimed at simply simulating the software process by a Prolog-like program embedding some development rules. A further step toward the integration of rule-based languages in the software process has been taken using a dynamic knowledge base as project database, and a number of special primitives have been introduced to support process programs. Currently there is a trend toward more complex programming environments, called process-centred development environments. I show how some rule-based coordination language have been used to build an environment of this kind.


2019 ◽  
Vol 15 ◽  
pp. 117693431986901
Author(s):  
Pascal Costanza ◽  
Charlotte Herzeel ◽  
Wilfried Verachtert

elPrep is an extensible multithreaded software framework for efficiently processing Sequence Alignment/Map (SAM)/Binary Alignment/Map (BAM) files in next-generation sequencing pipelines. Similar to other SAM/BAM tools, a key challenge in elPrep is memory management, as such programs need to manipulate large amounts of data. We therefore investigated 3 programming languages with support for assisted or automated memory management for implementing elPrep, namely C++, Go, and Java. We implemented a nontrivial subset of elPrep in all 3 programming languages and compared them by benchmarking their runtime performance and memory use to determine the best language in terms of computational performance. In a previous article, we motivated why, based on these results, we eventually selected Go as our implementation language. In this article, we discuss the difficulty of achieving the best performance in each language in terms of programming language constructs and standard library support. While benchmarks are easy to objectively measure and evaluate, this is less obvious for assessing ease of programming. However, because we expect elPrep to be regularly modified and extended, this is an equally important aspect. We illustrate representative examples of challenges in all 3 languages, and give our opinion why we think that Go is a reasonable choice also in this light.


2021 ◽  
pp. 53-74
Author(s):  
László Nikházy ◽  
Áron NOSZÁLY ◽  
Bence DEÁK

In most programming languages, the built-in (standard library) sort() function is the most convenient and efficient way for ordering data. Many software engineers have forgotten (or never knew) the underlying algorithms. In programming contests, almost all of the tasks involving sorting can be solved with only knowing how to use the sort() function. The question might arise in young students: do we need to know how it works if we only need to use it? Also, why should we know multiple efficient sorting algorithms, is not one enough? In this paper, we help the teachers to give the best answers to these questions: some beautiful tasks where the key to the solution lies in knowing a particular sorting algorithm. In some cases, the sorting algorithms are applied as a surprisingly nice idea, for example, in an interactive task or a geometry question.


Author(s):  
A. V. Crewe

We have become accustomed to differentiating between the scanning microscope and the conventional transmission microscope according to the resolving power which the two instruments offer. The conventional microscope is capable of a point resolution of a few angstroms and line resolutions of periodic objects of about 1Å. On the other hand, the scanning microscope, in its normal form, is not ordinarily capable of a point resolution better than 100Å. Upon examining reasons for the 100Å limitation, it becomes clear that this is based more on tradition than reason, and in particular, it is a condition imposed upon the microscope by adherence to thermal sources of electrons.


Sign in / Sign up

Export Citation Format

Share Document