6,651 research outputs found
A Foreign Function Interface Generator for occam-pi
Abstract. occam-pi is a programming language based on the CSP process algebra and the pi-calculus, and has a powerful syntax for expressing concurrency. occam-pi does not however, come with interfaces to a broad range of standard libraries (such as those used for graphics or mathematics). Programmers wishing to use these must write their own wrappers using occam-pi?s foreign function interface, which can be tedious and time consuming. SWIG offers automatic generation of wrappers for libraries written in C and C++, allowing access to these for the target languages supported by SWIG. This paper describes the occam-pi module for SWIG, which will allow automatic wrapper generation for occam-pi, and will ensure that occam-pi?s library base can be grown in a quick and efficient manner. Access to database, graphics and hardware interfacing libraries can all be provided with relative ease when using SWIG to automate the bulk of the work
pony - The occam-pi Network Environment
Although concurrency is generally perceived to be a `hard' subject, it can in fact be very simple --- provided that the underlying model is simple. The occam-pi parallel processing language provides such a simple yet powerful concurrency model that is based on CSP and the pi-calculus. This paper presents pony, the occam-pi Network Environment. occam-pi and pony provide a new, unified, concurrency model that bridges inter- and intra-processor concurrency. This enables the development of distributed applications in a transparent, dynamic and highly scalable way. The first part of this paper discusses the philosophy behind pony, explains how it is used, and gives a brief overview of its implementation. The second part evaluates pony's performance by presenting a number of benchmarks
A rational approach to Pi, Notes of a lecture held on the occasion of Pi-day on July 5, 2000 in Leiden
This article is based on notes for the lecture with the same title, which was held by the author on the occasion of the `Pi in de Pieterskerk' event (Pi-day) on July 5, 2000. The present article expands these notes with short proofs of most of the theorems given, but not proved, during the lecture
Video Processing in occam-pi
The occam-pi language provides many novel features for concurrent software development. This paper describes a video processing framework that explores the use of these features for multimedia applications. Processes are used to encapsulate operations on video and audio streams; mobile data types are used to transfer data between them efficiently, and mobile channels allow the process network to be dynamically reconfigured at runtime. We present demonstration applications including an interactive video player. Preliminary benchmarks show that the framework has comparable overhead to multimedia systems programmed using traditional methods
The Polymorphic Pi-Calculus: Theory and Implementation
We investigate whether the Pi-calculus is able to serve as a good foundation for the design and implementation of a strongly-typed concurrent programming language. The first half of the dissertation examines whether the Pi-calculus supports a simple type system which is flexible enough to provide a suitable foundation for the type system of a concurrent programming language. The second half of the dissertation considers how to implement the Pi-calculus efficiently, starting with an abstract machine for Pi-calculus and finally presenting a compilation of Pi-calculus to C.
We start the dissertation by presenting a simple, structural type system for Pi-calculus, and then, after proving the soundness of our type system, show how to infer principal types for Pi-terms. This simple type system can be extended to include useful type-theoretic constructions such as recursive types and higher-order polymorphism. Higher-order polymorphism is important, since it gives us the ability to implement abstract datatypes in a type-safe manner, thereby providing a greater degree of modularity for Pi-calculus programs.
The functional computational paradigm plays an important part in many programming languages. It is well-known that the Pi-calculus can encode functional computation. We go further and show that the type structure of lambda-terms is preserved by such encodings, in the sense that we can relate the type of a lambda-term to the type of its encoding in the Pi-calculus. This means that a Pi-calculus programming language can genuinely support typed functional programming as a special case.
An efficient implementation of Pi-calculus is necessary if we wish to consider Pi-calculus as an operational foundation for concurrent programming. We first give a simple abstract machine for Pi-calculus and prove it correct. We then show how this abstract machine inspires a simple, but efficient, compilation of Pi-calculus to C (which now forms the basis of the Pict programming language implementation)
A Unified Model for Inter- and Intra-processor Concurrency
Although concurrency is generally perceived to be a `hard' subject, it can in fact be very simple --- provided that the underlying model is simple. The occam-pi parallel processing language provides such a simple yet powerful concurrency model that is based on CSP and the pi-calculus. This thesis presents pony, the occam-pi Network Environment. occam-pi and pony provide a new, unified, concurrency model that bridges inter- and intra-processor concurrency. This enables the development of distributed applications in a transparent, dynamic and highly scalable way. The author specified the layout of the pony system as presented in this thesis, and carried out about 90% of the implementation. This thesis is structured into three main parts, as well as an introduction and an appendix. In the introduction, the need for a unified concurrency model is examined in detail. Thereupon, the pony environment is presented as a solution that provides such a unified model. The first part of this thesis is concerned with the usage of the pony environment for the development of distributed applications. It presents the interface between pony and the user-level code, as well as pony's configuration and a sample application. The second part presents the design and implementation of the pony environment. It explains the internal structure of pony, the implementation of pony's components and public processes, and the integration of pony in the KRoC compiler. The third part evaluates pony's performance and contains the final conclusions. It presents a number of performance tests and concludes with a discussion of the work presented in this thesis, along with an outline of possible future research
Bigraph Metaprogramming for Distributed Computation
Ubiquitous computing is a paradigm that emphasises integration of computing activities into the fabric of everyday life. With the increasing availability of small, cheap computing devices, the ubiquitous computing model seems more and more likely to supplant desktop computing as the dominant paradigm. Similarly, the presence of high-speed network connectivity between vast numbers of computers has already made distributed computing the preferred paradigm for many application domains. Unfortunately, traditional approaches to software development are not necessarily well-suited to developing software in a post-desktop world. We present an extension to the bigraphical reactive systems formalism that enables us to construct a programming language based upon it. We believe that this programming language provides programmers with an environment better suited to the challenges that arise when creating software within a distributed or ubiquitous computing paradigm. We detail our modification to the theory of bigraphical reactive systems that enables metaprogramming. Finally, we provide a description of our prototype implementation of a programming language that enables metaprogramming of bigraphical reactive systems
Guppy: Process-Oriented Programming on Embedded Devices
Guppy is a new and experimental process-oriented programming language, taking much inspiration (and some code-base) from the existing occam-pi language. This paper reports on a variety of aspects related to this, specifically language, compiler and run-time system development, enabling Guppy programs to run on desktop and embedded systems. A native code-generation approach is taken, using C as the intermediate language, and with stack-space requirements determined at compile-time
"I' ll tell you a story that will make you believe" in narratives: the role of metafiction in the novel and in the film Life of Pi
Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro de Comunicação e Expressão, Programa de Pós-Graduação em Inglês: Estudos Linguísticos e Literários, Florianópolis, 2015.Recentes estudos propõem que adaptações cinematográficas sejam entendidas como fonte de criação, os quais refletem contextos e interpretações diferentes do texto em que são baseadas. Nessa dissertação, propõe-se uma análise comparativa do romance Life of Pi (2001), de Yann Martel e do filme homônimo dirigido por Ang Lee (2012). A análise tem como objetivo identificar a presença e o modo em que a metaficção é construída no romance e no filme, e quais são alguns significados produzidos por ela em ambos os textos, tanto o literário quanto o fílmico. A concepção de metafição se baseia nas definições de Linda Hutcheon e Patricia Waugh. Por metaficção, entende-se a ficção consciente de si, que expõe o processo de escrita ao leitor e o convida a ter um papel ativo na construção do significado. Após uma análise comparativa dos dois textos, conclui-se que a metaficção está presente em ambos, tanto tematicamente como estruturalmente. As reflexões sobre narrativas apresentadas pelos personagens, o uso de vários níveis narrativos e de intertextualidade revelam diferentes usos da metafição em ambos. A diferença mais importante entre o romance e o filme Life of Pi está no uso dos níveis narrativos. Enquanto o romance possui um ?autor? sem nome que apresenta a história aos leitores, o filme possui um diretor implícito que deixa pistas de qual versão da história de Pi é ?real? no contexto da narrativa. Essa diferença dá ao romance um final aberto, em que o leitor deve escolher qual versão da história ele acredita, enquanto o filme possui uma resolução para essa questão. O filme, então, pode ser entendido como um testemunho, uma narrativa de trauma de um sobrevivente de um naufrágio e da experiência de migração, enquanto o livro não apresenta uma decisão em relação às versões da história, deixando o leitor aberto a qualquer possibilidade.Abstract : Recent studies propose that Film Adaptations should be understood as sources of creation, which also reflect a different context and interpretation from the text upon which they were based. In this thesis, I propose a comparative analysis of the novel Life of Pi (2001), by Yann Martel, and the homonymous film directed by Ang Lee (2012). The analysis has the objective of identifying the presence and the way in which metafiction is constructed in the novel and in the film, and what are some of the meanings produced by it in both texts, the filmic and the literary. The concept of metafiction was based on the definitions by Linda Hutcheon and Patricia Waugh. It is understood as the self-conscious fictional text, which exposes the writing process to the readers and invites them to have an active role in the construction of meaning. In the comparative analyses of the two texts, I have proved that metafiction is present in the two texts, both thematically and structurally. The reflections of the characters on narrative itself as well as the use of different narrative levels and intertextual references reveal different uses of metanarrative in both film and novel. The most important difference between the novel and the film Life of Pi is in their uses of different narrative levels. While the novel has an unnamed =author? who presents the story to the readers, the film has an implicit director who leaves =clues? of which version of Pi?s story is ?real? in the context of the narrative. This difference gives to the novel an open end, facein which the readers must choose which version of the story they believe in, while the film presents a resolution to this question. The film, thus, can be understood as a testimony narrative, a narrative of the trauma of a survivor from a shipwreck and from the experience of migration, while the novel does not decide for one of the versions of the story, enabling a more inconclusive reading
Life of occam-Pi
This paper considers some questions prompted by a brief review of the history of computing. Why is programming so hard? Why is concurrency considered an “advanced” subject? What’s the matter with Objects? Where did all the Maths go? In searching for answers, the paper looks at some concerns over fundamental ideas within object orientation (as represented by modern programming languages), before focussing on the concurrency model of communicating processes and its particular expression in the occam family of languages. In that focus, it looks at the history of occam, its underlying philosophy (Ockham’s Razor), its semantic foundation on Hoare’s CSP, its principles of process oriented design and its development over almost three decades into occam-? (which blends in the concurrency dynamics of Milner’s ?-calculus). Also presented will be an urgent need for rationalisation – occam-? is an experiment that has demonstrated significant results, but now needs time to be spent on careful review and implementing the conclusions of that review. Finally, the future is considered. In particular, is there a future
- …
