/~didier/.common/about.fr /~didier/.common/lectures.fr /~didier/.common/research.fr.s /~didier/.common/software.fr /~didier/.common/blog.fr
« I don't know if this code works; I have not tested it, only proven it correct » -- Donald Knuth
didierverna.com
MySpace
Facebook

Moods Blog

Dojo Shin Kaï

RSS Feed
Thank you !

XHTML 1.0 conformant
CSS 2.0 conformant
/~didier/.common/topleft Papers /~didier/.common/topright

2017

Programmatic Manipulation of Common Lisp Type Specifiers
  • ELS 2017
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • In this article we contrast the use of the s-expression with the BDD (Binary Decision Diagram) as a data structure for programmatically manipulating Common Lisp type specifiers. The s-expression is the de facto standard surface syntax and also programmatic representation of the type specifier, but the BDD data structure offers advantages: most notably, type equivalence checks using s-expressions can be computationally intensive, whereas the type equivalence check using BDDs is a check for object identity. As an implementation and performance experiment, we define the notion of maximal disjoint type decomposition, and discuss implementations of algorithms to compute it: a brute force iteration, and as a tree reduction. The experimental implementations represent type specifiers by both aforementioned data structures, and we compare the performance observed in each approach.

2016

Type Checking of Heterogeneous Sequences in Common Lisp
  • ELS 2016
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • Live recording
  • We introduce the abstract concept of rational type expression and show its relationship to rational language theory. We further present a concrete syntax, regular type expression, and a Common Lisp implementation thereof which allows the programmer to declaratively express the types of heterogeneous sequences in a way which is natural in the Common Lisp language. The implementation uses techniques well known and well founded in rational language theory, in particular the use of the Brzozowski derivative and deterministic automata to reach a solution which can match a sequence in linear time. We illustrate the concept with several motivating examples, and finally explain many details of its implementation.

2015

Context-Oriented Image Processing
  • COP 2015
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • Genericity aims at providing a very high level of abstraction in order, for instance, to separate the general shape of an algorithm from specific implementation details. Reaching a high level of genericity through regular object-oriented techniques has two major drawbacks, however: code cluttering (e.g. class / method proliferation) and performance degradation (e.g. dynamic dispatch). In this paper, we explore a potential use for the Context-Oriented programming paradigm in order to maintain a high level of genericity in an experimental image processing library, without sacrificing either the performance or the original object-oriented design of the application.

2013

The incredible tale of the author who didn't want to do the publisher's job
  • TUG 2013
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • In this article, I relate on a recent experience of mine: writing a book chapter for a publisher who doesn't have a clue about typesetting. I confess my futile attempt at using TeX for writing the chapter in question. I describe the hell that descended upon me for daring to do that. I however admit that the hell in question would have been even greater, hadn't I done so. This article is both a nervous breakdown and a laughter, and I am seeking for the reader's comfort.
TiCL: the Prototype (Star TeX: the Next Generation, Season 2)
  • TUG 2013
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Code correspondant
  • Reference: BibTeX
  • At TUG 2012, we presented some ideas about using one of the oldest programming languages (Lisp), in order to modernize one of the oldest typesetting systems (TeX). This talk was mostly focused on justifying the technical fitness of Lisp for this task. This time, we would like to take the opposite view and demonstrate a prototype, from the user's perspective. This involves showing what a TiCL document could look like, the implications in terms of typesetting vs. programmatic features, and also in terms of extensibility (relate this to class / style authoring).

2012

Standard Output Streams Default Behavior in Terminal Sessions
  • Common Document Repository #11
  • Article: PDF, HTML
  • Reference: BibTeX
  • The Common Lisp standard mandates the existence of several streams such as *standard-output*, *erroroutput* and *@query-io*. The purpose of these streams, however, is only informally described, leading to implementation-specific behavior. This can be problematic for Lisp sessions started from a terminal (without a graphical user interface) and standalone command-line executables. As illustrated in the next section, the current behavior of some standard output streams, notably with respect to shell redirection may not only be different across implementations, but also contrary to the user's expectations. The purpose of this document is hence to illustrate the problem and suggest that all Common Lisp implementations agree on one particular scheme (one actually already adopted by two of them).
Extensible Languages: Blurring the Distinction between DSLs and GPLs
  • Chapter 1 of: Formal and Practical Aspects of Domain Specific Languages: Recent Developments
  • Reference: BibTeX
  • Out of a concern for focus and concision, domain-specific languages (DSLs) are usually very different from general purpose programming languages (GPLs), both at the syntactic and the semantic levels. One approach to DSL implementation is to write a full language infrastructure, including parser, interpreter or even compiler. Another approach however, is to ground the DSL into an extensible GPL, giving you control over its own syntax and semantics. The DSL may then be designed merely as an extension to the original GPL, and its implementation may boil down to expressing only the differences with it. The task of DSL implementation is hence considerably eased. The purpose of this chapter is to provide a tour of the features that make a GPL extensible, and to demonstrate how, in this context, the distinction between DSL and GPL can blur, sometimes to the point of complete disappearance.
Star TeX: the Next Generation
  • TUG 2012
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • While TeX is unanimously praised for its typesetting capabilities, it is also regularly blamed for its poor programmatic offerings. A macro-expansion system is indeed far from the best choice in terms of general-purpose programming. Several solutions have been proposed to modernize TeX on the programming side. All of them currently involve a heterogeneous approach in which TeX is mixed with a full-blown programming language. This paper advocates another, homogeneous approach in which TeX is first rewritten in a modern language, Common Lisp, which serves both at the core of the program and at the scripting level. All programmatic macros of TeX are hence rendered obsolete, as the underlying language itself can be used for user-level programming.
Generic Image Processing with Climb
  • ELS 2012
  • Article: PDF, HTML
  • Reference: BibTeX
  • We present Climb, an experimental generic image processing library written in Common Lisp. Most image processing libraries are developed in static languages such as C or C++ (often for performance reasons). The motivation behind Climb is to provide an alternative view of the same domain, from the perspective of dynamic languages. More precisely, the main goal of Climb is to explore the dynamic way(s) of addressing the question of genericity, while applying the research to a concrete domain. Although still a prototype, Climb already features several levels of genericity and ships with a set of built-in algorithms as well as means to combine them.
JSPP: Morphing C++ into JavaScript
  • Technical Report #201201-TR
  • Article: PDF, HTML
  • Reference: BibTeX
  • In a time where the differences between static and dynamic languages are starting to fade away, this report brings one more element to the "convergence" picture by showing that thanks to the novelties from the recent C++0x standard, it is relatively easy to implement a JavaScript layer on top of C++. By that, we not only mean to implement the language features, but also to preserve as much of its original notation as possible. In doing so, we provide the programmer with a means to freely incorporate highly dynamic JavaScript-like code into a regular C++ program.

2011

Biological Realms in Computer Science
  • Onward!'11
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • In biology, evolution is usually seen as a tinkering process, different from what an engineer does when he plans the development of his systems. Recently, studies have shown that even in biology, there is a part of good engineering. As computer scientists, we have much more difficulty to admit that there is also a great deal of tinkering in what we do, and that our software systems behave more and more like biological realms every day. This essay relates my personal experience about this discovery.
Towards LaTeX Coding Standards
  • TUG 2011
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • Live recording
  • Because LaTeX is only a macro-expansion system, the language does not impose any kind of good software engineering practice, program structure or coding style. Maybe because in the LaTeX world, collaboration is not so widespread, the idea of some LaTeX Coding Standards is not so pressing as with other programming languages. Over the years, the permanent flow of personal development experiences contributed to shape our own taste in terms of coding style. In this paper, we report on all these experiences and describe what we think are good programming practices.
File-Local Variables
  • Common Document Repository #9
  • Article: PDF, HTML
  • Reference: BibTeX
  • The Common Lisp standard defines two special variables, *package* and *readtable*, that are treated in a special way: the functions load and compile-file establish a new dynamic binding for each of them, so that any modification to their value at load or compile time becomes local to the file being processed. The motivation for the present document is the claim that this behavior could be useful for other, user-defined variables, although there is currently no way to do so in standard Common Lisp.
Clarification Proposal for CLHS 22.3
  • Common Document Repository #7
  • Article: PDF, HTML
  • Reference: BibTeX
  • Section 22.3 "Formatted Output" of the Common Lisp Hyperspec describes the syntax and semantics of format directives. We believe that the standard is underspecified. We propose to clarify that section, and suggest that Common Lisp implementations conform to the current behavior of CMU-CL, CCL, CLISP, Allegro and LispWorks.

2010

Classes, Styles, Conflicts: the Biological Realm of LaTeX
  • TUG 2010
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • Live recording
  • The LaTeX world is composed of thousands of software components, most notably classes and styles. Classes and styles are born, evolve or die, interact with each other, compete or cooperate, very much as living organisms do at the cellular level. This paper attempts to draw an extended analogy between the LaTeX biotope and cellular biology. By considering LaTeX documents as living organisms and styles as viruses that infect them, we are able to exhibit a set of behavioral patterns common to both worlds. We analyze infection methods, types and cures, and we show how LaTeX or cellular organisms are able to survive in a world of perpetual war.
  • "I really enjoy Didier Verna's paper (pp. 162-172). His analogies between LaTeX and microbiology is truly exciting! Being neither a TeXnician nor a (micro) biologist, the paper gives me more insight about LaTeX while at the same time giving me a glimpse to a world beyond my narrow field of knowledge. Please do extend my compliments to the author."
    -- A TUGBoat reader.
CLoX: Common Lisp Objects for XEmacs
  • ELS 2010
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • CLoX is an ongoing attempt to provide a full Emacs Lisp implementation of the Common Lisp Object System, including its underlying meta-object protocol, for XEmacs. This paper describes the early development stages of this project. CLoX currently consists in a port of Closette to Emacs Lisp, with some additional features, most notably, a deeper integration between types and classes and a comprehensive test suite. All these aspects are described in the paper, and we also provide a feature comparison with an alternative project called Eieio.
Revisiting the Visitor: the Just Do It Pattern
  • JUCS (Journal of Universal Computer Science)
  • Reference: BibTeX
  • While software design patterns are a generally useful concept, they are often (and mistakenly) seen as ready-made universal recipes for solving common problems. In a way, the danger is that programmers stop thinking about their actual problem, and start looking for pre-cooked solutions in some design pattern book instead. What people usually forget about design patterns is that the underlying programming language plays a major role in the exact shape such or such pattern will have on the surface. The purpose of this paper is twofold: we show why design pattern expression is intimately linked to the expressiveness of the programming language in use, and we also demonstrate how a blind application of them can in fact lead to very poorly designed code.

2009

CLOS Efficiency: Instantiation -- On the Behavior and Performance of Lisp, Part 2.1
  • ILC 2009
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • This article reports the results of an ongoing experimental research on the behavior and performance of CLOS, the Common Lisp Object System. Our purpose is to evaluate the behavior and performance of the 3 most important characteristics of any dynamic object oriented system: class instantiation, slot access and dynamic dispatch. This paper describes the results of our experiments on instantiation. We evaluate the efficiency of the instantiation process in both C++ and Lisp under a combination of parameters such as slot types or classes hierarchy. We show that in a non-optimized configuration where safety is given priority on speed, the behavior of C++ and Lisp instantiation can be quite different, which is also the case amongst different Lisp compilers. On the other hand, we demonstrate that when compilation is tuned for speed, instantiation in Lisp can become faster than in C++.

2008

Binary Methods Programming: the CLOS Perspective (extended version).
  • JUCS (Journal of Universal Computer Science)
  • Reference: BibTeX
  • Implementing binary methods in traditional object-oriented languages is difficult: numerous problems arise regarding the relationship between types and classes in the context of inheritance, or the need for privileged access to the internal representation of objects. Most of these problems occur in the context of statically typed languages that lack multi-methods (polymorphism on multiple arguments). The purpose of this paper is twofold: first, we show why some of these problems are either non-issues, or easily solved in Common-Lisp. Then, we demonstrate how the Common-Lisp Object System (CLOS) allows us not only to implement binary methods in a straightforward way, but also to support the concept directly, and even enforce it at different levels (usage and implementation).
Binary Methods Programming: the CLOS Perspective
  • ELS 2008
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • Implementing binary methods in traditional object-oriented languages is difficult: numerous problems arise regarding the relationship between types and classes in the context of inheritance, or the need for privileged access to the internal representation of objects. Most of these problems occur in the context of statically typed languages that lack multi-methods (polymorphism on multiple arguments). The purpose of this paper is twofold: first, we show why some of these problems are either non-issues, or easily solved in Common-Lisp. Then, we demonstrate how the Common-Lisp Object System (CLOS) allows us not only to implement binary methods in a straightforward way, but also to support the concept directly, and even enforce it at different levels (usage and implementation).

2007

CLOS solutions to binary methods (invited talk)
  • IMECS 07
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • Implementing binary methods in traditional object oriented languages is difficult: numerous problems arise, such as typing (covariance vs. contra-variance of the arguments), polymorphism on multiple arguments (lack of multi-methods) etc. The purpose of this paper is to demonstrate how those problems are either solved, or nonexistent in the Common Lisp Object System (CLOS). Several solutions for different levels of binary methods support in CLOS are proposed. They mainly consist in re-programming a binary method specific object system through the CLOS meta-object protocol.

2006

LaTeX Curricula Vitae with the CurVe Class
  • PracTeX Journal
  • Article: PDF, HTML
  • Reference: BibTeX
  • This paper presents CurVe, a curriculum vitae class for LaTeX2e, in a progressive approach going from a first contact with the class, through concrete examples of customization, and some aspects of advanced usage.
Beating C in Scientific Computing Applications -- On the Behavior and Performance of Lisp, Part I
  • ELW 06
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • This paper presents an ongoing research on the behavior and performance of LISP with respect to C in the context of scientific numerical computing. Several simple image processing algorithms are used to evaluate the performance of pixel access and arithmetic operations in both languages. We demonstrate that the behavior of equivalent LISP and C code is similar with respect to the choice of data structures and types, and also to external parameters such as hardware optimization. We further demonstrate that properly typed and optimized LISP code runs as fast as the equivalent C code, or even faster in some cases.
  • Best paper award
How to make Lisp go faster than C
  • International Journal on Computer Science
  • Contrary to popular belief, Lisp code can be very efficient today: it can run as fast as equivalent C code or even faster in some cases. In this paper, we explain how to tune Lisp code for performance by introducing the proper type declarations, using the appropriate data structures and compiler information. We also explain how efficiency is achieved by the compilers. These techniques are applied to simple image processing algorithms in order to demonstrate the announced performance on pixel access and arithmetic operations in both languages.
How to make Lisp go faster than C
  • IMECS 06
  • Article: PDF, HTML
  • Transparents: PDF, HTML
  • Reference: BibTeX
  • Contrary to popular belief, Lisp code can be very efficient today: it can run as fast as equivalent C code or even faster in some cases. In this paper, we explain how to tune Lisp code for performance by introducing the proper type declarations, using the appropriate data structures and compiler information. We also explain how efficiency is achieved by the compilers. These techniques are applied to simple image processing algorithms in order to demonstrate the announced performance on pixel access and arithmetic operations in both languages.
  • Best paper award

2003

CV formatting with CurVe
  • TUGBoat
  • Article: PDF, HTML
  • Reference: BibTeX
  • This paper relates the history of the development of Curve, a LaTeX2e class package for typesetting curricula vitae, and describes its specificities as well as the main aspects of it use.

2001

Virtual Reality and Tele-Operation: a Common Framework
  • SCI 01
  • Article: PDF, HTML
  • Reference: BibTeX
  • This paper proposes an overview of a study that conceptually unify the fields of virtual reality and tele-operation, by analyzing the notion of "assistance" to the operator of a virtual reality or tele-operation system. This analysis demonstrates that cases of assistance that are usually considered to belong to virtual reality are not conceptually different from what has been done in tele-operation since long before virtual reality appeared. With this common framework for virtual reality and tele-operation, we hope to provide a theoretical formalization of many ideas acquired empirically, and hence a basis onto which further discussion could be undertaken in a constructive manner.

2000

Action Recognition: How Intelligent Virtual Environments Can Ease Human-Machine Interaction
  • VSMM 00
  • Article: PDF, HTML
  • Reference: BibTeX
  • This paper describes a research that has been conducted in the field of cognitive assistance to human-machine interaction in virtual environments. The idea is to design a system which, bearing in mind the actions performed by the operator at present and the current state of the environment, attempts to determine the global operation that the user is in the process of executing, and eventually takes control of the same process in order to complete it automatically. This idea implies the conception of an action recognition mechanism based on a specific knowledge representation model. This mechanism is implemented in a computer demonstrator, known as the ToASt system, which is also presented.
Urbi et Orbi: Unusual Design and Implementation Choices for Distributed Virtual Environments
  • VSMM 00
  • Article: PDF, HTML
  • Reference: BibTeX
  • This paper describes Urbi et Orbi, a distributed virtual environment (DVE) project that is being conducted in the Research and Development Laboratory at Epita. Our ultimate goal is to provide support for large scale multi-user virtual worlds on end-user machines. The incremental development of this project led us to take unusual design and implementation decisions that we propose to relate in this paper. Firstly, a general overview of the project is given, along with the initial requirements we wanted to meet. Then, we go on with a description of the system's architecture. Lastly, we describe and justify the unusual choices we have made in the project's internals.
Télé-Opération et Réalité Virtuelle: Assistance à l'Opérateur par Modélisation Cognitive de ses Intentions
  • Thèse de Doctorat
  • Article: PDF, HTML
  • Reference: BibTeX
  • Ce travail traite de la notion d'assistance cognitive à l'Interaction Homme-Machine dans les environnements virtuels, and met en évidence les avantages d'une approche telle que la détection d'intentions comme source possible d'assistance intelligente. Le travail est organisé en trois grandes parties: l'élaboration d'un point de vue cognitif sur la notion de réalité virtuelle, une étude théorique sur la notion d'assistance dans les systèmes de réalité virtuelle, et une approche fondée sur la détection d'intentions.

1999

Augmented Reality, the Other Way Around
  • EGVE 99
  • Reference: BibTeX
  • This paper aims at showing that the notion of augmented reality has been developed in a biased way: mostly in destination to the operator, and at the level of his perceptions. This demonstration is achieved through a model describing a situation of tele-operation, on which we represent major cases of augmented reality encountered in recent applications. By taking advantage of the symmetry of the model, we are able to show how augmented reality can be seen "the other way around", that is, in destination to the environment, and at the level of the operator's actions.
Définir le Virtuel: une Vision Cognitive
  • ReViCo 99
  • Article: PDF, HTML
  • Reference: BibTeX
  • Cet article décrit l'élaboration théorique d'une caractérisation cognitive du virtuel. Plutôt que de définir le virtuel en tant que tel, nous montrons qu'il est plus intéressant de définir les processus de virtualisation, c'est à dire les mécanismes cognitifs qui font qu'à partir d'une situation réelle, l'humain entre progressivement dans le virtuel. Dans un premier temps, un modèle cognitif décrivant l'interaction entre un humain et son environnement est proposé, le modèle MrIC. Les processus de virtualisation sont ensuite définis et nous permettent d'obtenir un certain nombre de variantes de ce modèle, décrivant les grandes catégories de situations virtualisées: situations de type CAO (avec nv), situations dites «immersives» (avec représentation virtuelle de l'humain) etc.
The Multicast Support in XEmacs
  • M17N 99
  • Article: PDF, HTML
  • Reference: BibTeX
  • This paper describes the recent multicast support that have been added to XEmacs, publicly available for the first time in XEmacs 21.0. First, a general overview of the "multicast" technology is given. Then, the internal support within XEmacs is described and the first multicast package for XEmacs is presented. The current problems and perspectives with this support are finally detailed.
Ergonomics and HMI concerns in Mule
  • M17N 99
  • Article: PDF, HTML
  • Reference: BibTeX
  • This paper presents some ergonomics and Human Machine Interaction problems that several input methods (notably the French ones) introduce in all Emacs flavors. First, a general overview of the available input methods is given. Then, some ergonomics problems are described. Finally, some ideas are proposed to improve the quality of these input methods.

1998

Can we define Virtual Reality? the MrIC model.
  • VW 98
  • Reference: BibTeX
  • In this paper, we propose a reasoning model aimed at helping to decide on the virtual status of a given situation, from a human point of view rather than from a technological one. We first describe how a human and his environment interact. The notion of "reality" will be seen through this description. Then, we propose a set of possible "cognitive deviations" of reality leading to situations of virtual reality. This model provides three major benefits to the field of virtual reality: first, a global definition and a systematic mean of categorizing related situations; secondly, the ability to discuss on the virtual status of real situations and not only synthetic, computer generated ones; thirdly, a demonstration on how the field of tele-operation is heavily related to virtual reality concepts, and some perspectives on future tele-operation intelligent user interfaces.
Sémantique et Localisation de l'Assistance en Réalité Virtuelle
  • GTRV 98
  • Reference: BibTeX
  • Dans cette communication, nous nous proposons d'examiner les caractères de sémantique et de localisation de la notion d'assistance dans un contexte de réalité virtuelle. Pour cela, nous modélisons les composantes impliquées dans une situation où l'utilisateur interagit avec un environnement au travers d'un système artificiel. Ensuite, nous localisons sur le modèle un certain nombre de cas d'assistance courament rencontrés. L'organisation à la fois sémantique et géographique de ces cas d'assistance sur le modèle nous permet de les extrapoler à de nouveaux cas d'assistance moins évidents, et de montrer comment ces nouveaux exemples, particulièrement utiles en télé-opération, sont encore étroitement reliés à la notion de réalité virtuelle.

1997

Comment Définir le Virtuel? Le Modèle MrIC
  • Rapport Technique
  • Reference: BibTeX
  • Le but de ce document est de fournir une réflexion approfondie sur la notion de réalité virtuelle. La démarche proposée consiste en l'élaboration d'un modèle représentant l'humain en interaction avec son environnement. C'est au travers de ce modèle qu'est perçue la notion de «réalité». Le concept de «réalité virtuelle» sera ensuite examiné en termes d'écart par rapport à une situation réelle. Cette démarche nous permet de préciser certains termes communément employés par la communauté scientifique, ainsi que de nous positionner par rapport aux définitions existantes.
Télé-Opération et Réalité Virtuelle: Assistance à l'Opérateur par Modélisation Cognitive de ses Intentions
  • IHM 97
  • Reference: BibTeX
  • Notre travail se situe dans un contexte de télé-opération en monde virtuel. Nous appelons «monde virtuel» une situation, réelle ou simulée, dans laquelle les informations d'action et de perception sont transmises par des moyens artificiels. Un opérateur interagit donc avec un environnement qui n'est pas son environnement «direct». Dans une telle situation, notre approche consiste à étudier l'amélioration de la communication homme-machine en termes d'intelligence. Nous examinons la possibilité d'une communication se situant au niveau des intentions de l'opérateur: le système analyse la situation pour en déduire les intentions possibles de l'opérateur. Une fois l'intention détectée, le système propose une assistance totale ou partielle pour l'exécution de l'action correspondante.

1996

Assistance Cognitive à la Télé-Opération en Monde Virtuel
/~didier/.common/btmleft /~didier/.common/btmright
French Flag English Flag
Copyright © 2006 -- 2013 Didier Verna didier@lrde.epita.fr
Dernière modification: Tuesday 20 June 2017 à 17:06