1,721,048 research outputs found
Understanding the development of modern programming languages in an evolutionary framework [Comprendere lo sviluppo dei moderni linguaggi di programmazione in chiave evolutiva]
The Evolutionary Theory has been used to analyze non biological systems, such as the evolution of technology and that of human languages. Even the history of programming languages can be observed in an evolutionary framework, since it displays variation and selection processes. In this paper, rather than casting programming languages evolution into the Darwinian account, we borrow the biological talking to unveil evolutionary patterns and driving forces that unfold behind the development of this rich scientific area
Algorithmic Thinking for the Legal Writing: The Case of Italian Election Law
We examine the Italian election law as a case study to illustrate how the algorithmic thinking can productively interoperate with the legal language to increase the transparency of the legal text, and to enable better reasoning about the procedural content of the law. The effort to rephrase the text of the law in algorithmic terms revealed that the election procedure is under-specified, so that the allocation of seats between constituencies may differ depending on the actual sequence of ballot operations performed by the scrutineers. This may lead to legal uncertainty in a critical section of the election law that one would expect to be fully determined. We then discuss the difference between algorithm and software in the legal context, illustrating how the algorithmic language acts as an interface between the textual description of a legal procedure and its mathematical or computational formalization. Hence we put forward the concept of algorithmic normativity, that is the power of the algorithmic language (different from software’s code) to legally express procedures at an appropriate abstraction level, balancing transparency with scientific precision
From Legal Contracts to Legal Calculi: the code-driven normativity
Using dedicated software to represent or enact legislation or regulation has the advantage of solving the inherent ambiguity of legal texts and enabling the automation of compliance with legal norms. On the other hand, the so-called code-driven normativity is less flexible than the legal provisions it claims to implement, and transforms the nature of legal protection, potentially reducing the capability of individual human beings to invoke legal remedies. In this article we focus on software-based legal contracts; we illustrate the design of a legal calculus whose primitives allow a direct formalisation of contracts’ normative elements (i.e., permissions, prohibitions, obligations, asset transfer, judicial enforcement and openness to the external context). We show that interpreting legal contracts as interaction protocols between (untrusted) parties enables the generalisation of formal methods and tools for concurrent systems to the legal setting
The role of concurrency in an evolutionary view of programming abstractions
In this paper we examine how concurrency has been embodied in mainstream programming languages. In particular, we rely on the evolutionary talking borrowed from biology to discuss major historical landmarks and crucial concepts that shaped the development of programming languages. We examine the general development process, occasionally deepening into some language, trying to uncover evolutionary lineages related to specific programming traits. We mainly focus on concurrency, discussing the different abstraction levels involved in present-day concurrent programming and emphasizing the fact that they correspond to different levels of explanation. We then comment on the role of theoretical research on the quest for suitable programming abstractions, recalling the importance of changing the working framework and the way of looking every so often. This paper is not meant to be a survey of modern mainstream programming languages: it would be very incomplete in that sense. It aims instead at pointing out a number of remarks and connect them under an evolutionary perspective, in order to grasp a unifying, but not simplistic, view of the programming languages development process
Modelling the Evolution of Programming Languages
Programming languages are engineered languages that allow to instruct a
machine and share algorithmic information; they have a great influence on the
society since they underlie almost every information technology artefact, and
they are at the core of the current explosion of software technology. The
history of programming languages is marked by innovations, diversifications,
lateral transfers and social influences; moreover, it represents an
intermediate case study between the evolution of human languages and the
evolution of technology. In this paper we study the application of the
Darwinian explanation to the programming languages evolution by discussing to
what extent the evolutionary mechanisms distinctive of biology can be applied
to this area. We show that a number of evolutionary building blocks can be
recognised in the realm of computer languages, but we also identify critical
issues. Far from being crystal clear, this fine-grained study shows to be a
useful tool to assess recent results about programming languages phylogenies.
Finally, we show that rich evolutionary patterns, such as co-evolution,
macro-evolutionary trends, niche construction and exaptation, can be
effectively applied to programming languages and provide for interesting
explanatory tools
Behavioural Types for Actor Systems
Recent mainstream programming languages such as Erlang or Scala have renewed
the interest on the Actor model of concurrency. However, the literature on the
static analysis of actor systems is still lacking of mature formal methods. In
this paper we present a minimal actor calculus that takes as primitive the
basic constructs of Scala's Actors API. More precisely, actors can send
asynchronous messages, process received messages according to a pattern
matching mechanism, and dynamically create new actors, whose scope can be
extruded by passing actor names as message parameters. Drawing inspiration from
the linear types and session type theories developed for process calculi, we
put forward a behavioural type system that addresses the key issues of an actor
calculus. We then study a safety property dealing with the determinism of
finite actor com- munication. More precisely, we show that well typed and
balanced actor systems are (i) deadlock-free and (ii) any message will
eventually be handled by the target actor, and dually no actor will
indefinitely wait for an expected messag
Piattaforma o non piattaforma? Considerazioni a margine dell'art. 1, comma 1, lett. c), del d.l. 101/2019
L'articolo sviluppa un commento critico rispetto alla definizione di piattaforma digitale contenuta nel d.l. 101/2019, attualmente in sede di discussione parlamentare ai fini della conversione in legge. Gli autori affrontano il problema in chiave comparatistica ed interdisciplinare, e sviluppano una proposta di modifica del testo legislativo
Causality in concurrent systems
Concurrent systems identify systems, either software, hardware or even
biological systems, that are characterized by sets of independent actions that
can be executed in any order or simultaneously. Computer scientists resort to a
causal terminology to describe and analyse the relations between the actions in
these systems. However, a thorough discussion about the meaning of causality in
such a context has not been developed yet. This paper aims to fill the gap.
First, the paper analyses the notion of causation in concurrent systems and
attempts to build bridges with the existing philosophical literature,
highlighting similarities and divergences between them. Second, the paper
analyses the use of counterfactual reasoning in ex-post analysis in concurrent
systems (i.e. execution trace analysis)
Logical Characterizations of Behavioral Relations on Transition Systems of Probability Distributions
Probabilistic nondeterministic processes are commonly modeled as probabilistic LTSs (PLTSs). A number of logical characterizations of the main behavioral relations on PLTSs have been studied. In particular, Parma and Segala [2007] and Hermanns et al. [2011] define a probabilistic Hennessy-Milner logic interpreted over probability distributions, whose corresponding logical equivalence/preorder when restricted to Dirac distributions coincide with standard bisimulation/simulation between the states of a PLTS. This result is here extended by studying the full logical equivalence/preorder between (possibly non-Dirac) distributions in terms of a notion of bisimulation/simulation defined on a LTS whose states are distributions (dLTS). We show that the well-known spectrum of behavioral relations on nonprobabilistic LTSs as well as their corresponding logical characterizations in terms of Hennessy-Milner logic scales to the probabilistic setting when considering dLTSs
On the reactive nature of financial networks
We propose to model financial networks as distributed and reactive systems. Both financial institutions and financial contracts such as loans, assets or derivatives, are embodied as concurrent entities. These entities operate in parallel and dynamically update their state as a reaction to events issued by other entities. e.g. a macroeconomic shock or a bank default. The model is given in terms of an architectural pattern that can be directly implemented as an Actor system. We show how this reactive model can be used to study the systemic risk of financial networks and to design and conduct very flexible stress tests that include macroeconomic shocks and derivative contracts such as Credit Default Swaps
- …
