Piccola1(ID:3318/pic005)Piccola1, the first version of Piccola can be characterized as a combination of PiL-calculus with some abstractions to ease the definition and usage of functions. The PiL-calculus is the pi-calculus where forms are communicated instead of tuples. A variant of this first prototype is Piccola(F) where forms can be restricted and the presence of labels can be tested. TPiccola is work in progress on a typed version of Piccola. Related languages
References: Abstract Experience has shown us that object-oriented technology alone is not enough to guarantee that the systems we develop will be flexible and adaptable. Even "well-designed'' object-oriented software may be difficult to understand and adapt to new requirements. We propose a conceptual framework that will help yield more flexible object-oriented systems by encouraging explicit separation of computational and compositional elements. We distinguish between components that adhere to an architectural style, scripts that specify compositions, and glue that may be needed to adapt components' interfaces and contracts. We also discuss a prototype of an experimental composition language called Piccola that attempts to combine proven ideas from scripting languages, coordination models and languages, glue techniques, and architectural specification. in Software Architectures - Advances and Applications, Leonor Barroca, Jon Hall and Patrick Hall (Eds.), Springer-Verlag, 1999 view details Abstract Object oriented languages cannot express certain composition abstractions due to restricted abstraction power. A number of approaches, like SOP or AOP overcome this restriction, thus giving the programmer more possibilities to get a higher degree of separation of concern. We propose forms, extensible mappings from labels to values, as vehicle to implement and reason about composition abstractions. Forms unify a variety of concepts such as interfaces, environments, and contexts. We are prototyping a composition language where forms are the only and ubiquitous first class value. Using forms, it is possible compose software artifacts focusing on a single concern and thus achieve a high degree of separation of concern. We believe that using forms it also possible to compare and reason about the different composition mechanisms proposed. pdf in Workshop on Multi-Dimensional Separation of Concerns in Software Engineering (ICSE 2000), Limerick, Ireland, June 2000 view details Abstract The fact that so many different kinds of coordination models and languages have been proposed suggests that no one single approach will be the best for all coordination problems. Different coordination styles exhibiting different properties may be more suitable for some problems than others. Like other architectural styles, coordination styles can be expressed in terms of components, connectors and composition rules. We propose an approach in which coordination styles are expressed as component algebras: components of various sorts can be combined using operators that realize their coordination, yielding other sorts of components. We show how several coordination styles can be defined and applied using Piccola, a small language for composing software components. We furthermore show how glue abstractions can be used to bridge coordination styles when more than one style is needed for a single application. pdf in Coordination-2000, António Porto and Gruia-Catalin Roman (Eds.), LNCS, vol. 1906, Springer-Verlag, Limassol, Cyprus, September 2000, view details Abstract A namespace is a mapping from labels to values. Most programming languages support different forms of namespaces, such as records, dictionaries, objects, environments, packages and even keyword based parameters. Typically only a few of these notions are first-class, leading to arbitrary restrictions and limited abstraction power in the host language. Piccola is a small language that unifies various notions of namespaces as first-class forms, or extensible, immutable records. By making namespaces explicit, Piccola is easily able to express various abstractions that would normally require more heavyweight techniques, such as language extensions or metaprogramming. in Modular Programming Languages, Jürg Gutknecht and Wolfgang Weck (Eds.), LNCS, vol. 1897, Springer-Verlag, Zürich, Switzerland, September 2000 view details in Modular Programming Languages, Jürg Gutknecht and Wolfgang Weck (Eds.), LNCS, vol. 1897, Springer-Verlag, Zürich, Switzerland, September 2000 view details |