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]

    No full text
    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

    Full text link
    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

    Full text link
    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

    No full text
    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

    No full text
    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

    No full text
    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

    No full text
    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

    No full text
    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

    Full text link
    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

    No full text
    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
    corecore