Difference between revisions of "Climb"

From LRDE

Line 45: Line 45:
 
| ?Has title = Title
 
| ?Has title = Title
 
| ?Published in
 
| ?Published in
| ?News date#MEDIAWIKI=Date
+
| ?News date#MEDIAWIKI=Date>2006
 
| order = descending
 
| order = descending
 
| sort = News date
 
| sort = News date

Revision as of 13:46, 18 October 2013

It appears that if all the projects of the LRDE involve various application areas, a common underlying problem is how to reconcile two aspects that are usually contradictory: performance and genericity.

This issue has led the lab's teams to develop a long-term software engineering based on technical C++ with many templates. This approach has its drawbacks. Disadvantages include the fact that C++ is a heavy language with an extremely complex and ambiguous syntax, that the template system is actually a completely different language from standard C++, and finally that it is a static language. This last point has significant implications on the application, insofar as it imposes a strict chain of Compilation => Development => Run => Debug, making for example rapid prototyping or human-machine interfacing activities difficult. It becomes therefore essential to equip the involved projects with a third language infrastructure that is rather based on scripting languages.

Facing these problems, another team of the laboratory has chosen to focus on the persistent question of performance and genericity with a transversal approach, that is to say focused on alternative languages rather than on a particular application domain. The purpose of this research is therefore to examine the solutions offered by languages other than C++, especially dynamic languages, and we chose Common Lisp.

Perfomance

At first glance, it seems paradoxical indeed to use, for performance issues, a language which is legitimately expected to deteriorate them. Almost by definition, a dynamic language does less at compile-time and more at run-time (eg, type checking). Most modern dynamic languages like Python and Ruby match these preconceived notions. Common Lisp, however, has this ability to let you static type pieces of the code you write, and let the rest be dynamically typed. A compiler that is properly informed about such types is then free to perform any possible optimization, even to produce a weakly typed executable as a C compiler would do.

Therefore, one goal of this research focuses on comparing the performance obtained by some Common Lisp compilers with those of equivalent programs written in C or C++. This work involves a substantial set of performance measurements on micro-benchmarks to evaluate the cost of some basic operations (arithmetic, object instantiation, access to their members, dynamic dispatch, etc.).

Genericity

Once the issue of performance is resolved, we still have to demonstrate the benefits of a dynamic language for genericity. The basis of this approach lies in a fact that is this time widely recognized: dynamic languages are more expressive. By eliminating especially the static typing, and consequently, by expanding the scope of polymorphism, dynamic languages provide paradigms that are impossible or difficult to obtain in static languages. If we take simply the paradigm of object-oriented programming, Common Lisp goes further than other (static or dynamic) languages if that the object layer is based on a so-called meta-object protocol: a reflexive architecture that implements the object layer in itself, and that also allows to modify or extend it. Thus, far from the classical OO approach of traditional languages, the object-oriented layer of Common Lisp includes natively multimethods, and allows the use (and mix) of traditional classes-based, prototype-based, context-oriented approaches, etc.

The second line of research in this work consists in the study of all these new programming paradigms in terms of what they bring to the notion of genericity. To do this, we have chosen to clone one of the oldest projects of the laboratory (Olena) and to express the same issues following an axis of dynamic genericity.

Finally, a longer-term perspective will be to reconcile these aspects of dynamic genericity with the performances of a dedicated code. This step should also be made significantly easier than the manipulation of C++ templates because of the structural reflexivity of Lisp (code and data are represented in the same way). The system of macros in Common Lisp is unique because it can perform any function written in Lisp itself during the compilation, these functions themselves having access to the code to compile. This allows in particular to rewrite the code on the fly and provides for native JIT-compilation.

Publications

Conferences
 AuthorTitlePublished inDate>2006
The Cost of Dynamism in Static Languages for Image ProcessingBaptiste Esteban
Edwin Carlinet
Guillaume Tochon
Didier Verna
The Cost of Dynamism in Static Languages for Image ProcessingProceedings of the 21st International Conference on Generative Programming: Concepts & Experiences (GPCE 2022)10 October 2022
Généricité dynamique pour des algorithmes morphologiquesBaptiste Esteban
Edwin Carlinet
Guillaume Tochon
Didier Verna
Généricité dynamique pour des algorithmes morphologiques28e Colloque sur le traitement du signal et des images15 June 2022
Estimation de la fonction de niveau de bruit pour des images couleurs en utilisant la morphologie mathématiqueBaptiste Esteban
Guillaume Tochon
Edwin Carlinet
Didier Verna
Estimation de la fonction de niveau de bruit pour des images couleurs en utilisant la morphologie mathématique28e Colloque sur le traitement du signal et des images15 June 2022
Estimation of the noise level function for color images using mathematical morphology and non-parametric statisticsBaptiste Esteban
Guillaume Tochon
Edwin Carlinet
Didier Verna
Estimation of the noise level function for color images using mathematical morphology and non-parametric statisticsProceedings of the 26th International Conference on Pattern Recognition8 April 2022
ETAP: Experimental Typesetting Algorithms PlatformDidier VernaETAP: Experimental Typesetting Algorithms Platform15th European Lisp Symposium1 March 2022
A Corpus Processing and Analysis Pipeline for QuickrefAntoine Hacquard
Didier Verna
A Corpus Processing and Analysis Pipeline for QuickrefProceedings of the 14th European Lisp Symposium (ELS)1 May 2021
Quickref: Common Lisp Reference Documentation as a Stress Test for TexinfoDidier VernaQuickref: Common Lisp Reference Documentation as a Stress Test for TexinfoTUGboat6 November 2019
Parallelizing QuickrefDidier VernaParallelizing Quickref12th European Lisp Symposium1 April 2019
Implementing Baker's SUBTYPEP decision procedureLéo Valais
Jim Newton
Didier Verna
Implementing Baker's SUBTYPEP decision procedure12th European Lisp Symposium1 April 2019
Finite Automata Theory Based Optimization of Conditional Variable BindingJim Newton
Didier Verna
Finite Automata Theory Based Optimization of Conditional Variable BindingEuropean Lisp Symposium14 January 2019
Recognizing Heterogeneous Sequences by Rational Type ExpressionJim Newton
Didier Verna
Recognizing Heterogeneous Sequences by Rational Type ExpressionProceedings of the Meta'18: Workshop on Meta-Programming Techniques and Reflection14 September 2018
Approaches in Typecase OptimizationJim Newton
Didier Verna
Approaches in Typecase OptimizationEuropean Lisp Symposium5 April 2018
Method CombinatorsDidier VernaMethod Combinators11th European Lisp Symposium25 March 2018
Programmatic Manipulation of Common Lisp Type SpecifiersJim Newton
Didier Verna
Maximilien Colange
Programmatic Manipulation of Common Lisp Type SpecifiersEuropean Lisp Symposium6 February 2017
Type-Checking of Heterogeneous Sequences in Common LispJim Newton
Akim Demaille
Didier Verna
Type-Checking of Heterogeneous Sequences in Common LispEuropean Lisp Symposium25 March 2016
Context-Oriented Image ProcessingDidier Verna
François Ripault
Context-Oriented Image ProcessingContext-Oriented Programming Workshop1 January 2015
The incredible tale of the author who didn't want to do the publisher's jobDidier VernaThe incredible tale of the author who didn't want to do the publisher's jobTUGboat1 January 2013
TiCL: the Prototype (Star TeX: the Next GenerationSeason 2)Didier VernaTiCL: the Prototype (Star TeX: the Next GenerationSeason 2)TUGboat1 January 2013
Generic Image Processing with ClimbLaurent Senta
Christopher Chedeau
Didier Verna
Generic Image Processing with ClimbEuropean Lisp Symposium1 May 2012
Star TeX : the Next GenerationDidier VernaStar TeX : the Next GenerationTUGboat1 January 2012
Biological Realms in Computer Science: the Way You Don't (Want To) Think About ThemDidier VernaBiological Realms in Computer Science: the Way You Don't (Want To) Think About ThemOnward! 20111 January 2011
Towards LaTeX Coding StandardsDidier VernaTowards LaTeX Coding StandardsTUGboat1 January 2011
Classes, Styles, Conflicts: the Biological Realm of LaTeXDidier VernaClasses, Styles, Conflicts: the Biological Realm of LaTeXTUGboat9 March 2010
CLoX: Common Lisp objects for XEmacsDidier VernaCLoX: Common Lisp objects for XEmacsProceedings of the 3rd European Lisp Symposium9 March 2010
Binary Methods Programming: the CLOS PerspectiveDidier VernaBinary Methods Programming: the CLOS PerspectiveProceedings of the First European Lisp Symposium31 March 2009
CLOS Efficiency: InstantiationDidier VernaCLOS Efficiency: InstantiationProceedings of the International Lisp Conference13 January 2009
Revisiting the Visitor: the Just Do It PatternDidier VernaRevisiting the Visitor: the Just Do It PatternProceedings of the ACCU Conference 200929 December 2008
Report on the 5th Workshop ELW at ECOOP 2008Didier Verna
Charlotte Herzeel
Christophe Rhodes
Hans Hübner
Report on the 5th Workshop ELW at ECOOP 2008Object-Oriented Technology. ECOOP 2008 Workshop Reader1 July 2008
How to make Lisp go faster than CDidier VernaHow to make Lisp go faster than CProceedings of the International MultiConference of Engineers and Computer Scientists11 June 2007
CLOS solutions to binary methodsDidier VernaCLOS solutions to binary methodsProceedings of the International MultiConference of Engineers and Computer Scientists22 January 2007
Beating C in Scientific Computing ApplicationsDidier VernaBeating C in Scientific Computing ApplicationsThird European Lisp Workshop at ECOOP11 July 2006
Virtual reality and tele-operation: a common frameworkDidier VernaVirtual reality and tele-operation: a common frameworkProceedings of the 5th World Multi-Conference on Systemics, Cybernetics and Informatics (SCI)—Emergent Computing and Virtual Engineering1 July 2001
Urbi et Orbi: unusual design and implementation choices for distributed virtual environmentsYoann Fabre
Guillaume Pitel
Didier Verna
Urbi et Orbi: unusual design and implementation choices for distributed virtual environmentsProceedings of the 6th International Conference on Virtual Systems and MultiMedia (VSMM)—Intelligent Environments Workshop1 October 2000
Action recognition: how intelligent virtual environments can ease human-machine interactionDidier VernaAction recognition: how intelligent virtual environments can ease human-machine interactionProceedings of the 6th International Conference on Virtual Systems and MultiMedia (VSMM)—Intelligent Environments Workshop1 October 2000
Journals
 AuthorTitlePublished inDate
A Theoretical and Numerical Analysis of the Worst-Case Size of Reduced Ordered Binary Decision DiagramsJim Newton
Didier Verna
A Theoretical and Numerical Analysis of the Worst-Case Size of Reduced Ordered Binary Decision DiagramsACM Transactions on Computational Logic28 August 2018
Lisp, Jazz, AikidoDidier VernaLisp, Jazz, AikidoThe Art, Science and Engineering of Programming Journal5 February 2018
Revisiting the Visitor: the Just Do It PatternDidier VernaRevisiting the Visitor: the Just Do It PatternJournal of Universal Computer Science1 January 2010
Binary Methods Programming: the CLOS Perspective (extended version)Didier VernaBinary Methods Programming: the CLOS Perspective (extended version)Journal of Universal Computer Science1 January 2008
How to make Lisp go faster than CDidier VernaHow to make Lisp go faster than CIAENG International Journal of Computer Science1 December 2006


Book chapters
 AuthorTitlePublished inDate
Extensible languages: blurring the distinction between DSLs and GPLsDidier VernaExtensible languages: blurring the distinction between DSLs and GPLsFormal and Practical Aspects of Domain-Specific Languages: Recent Developments1 September 2012