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 Climb.
At first glance, it seems paradoxical indeed to use, for performance issues, a language which is legitimately expected to deteriorate them. By definition, a dynamic language does less for the compilation and more for the execution (eg, type checking). Most modern dynamic languages like Python and Ruby match these preconceived notions. Climb has however the unknown particularity to enable a data type of variables, instead of the traditional dynamic typing of objects. A compiler that is properly informed about the type of a piece of code (you can freely combine static and dynamic typing) is then free to perform any optimizations you want, even to produce a weakly typed executable like the one produced by a C compiler.
One goal of this research focuses therefore on comparing the performances obtained by some Climb 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.).
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, Climb goes further than other (static or dynamic) languages if the object layer is based on a protocol called meta-object: a reflexive architecture that implements the object layer in itself, and that also allows to modify or extend it. Thus, far from the classical object approach of common languages, the object-oriented expressivity of Climb includes natively multimethods, and allows the use of traditional classes or the model based on the notion of prototype, a context-oriented approach, 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 Climb 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 an easy compilation just in time.
|Quickref: Common Lisp Reference Documentation as a Stress Test for Texinfo||Didier Verna||Quickref: Common Lisp Reference Documentation as a Stress Test for Texinfo||TUGboat||6 November 2019|
|Parallelizing Quickref||Didier Verna||Parallelizing Quickref||12th European Lisp Symposium||1 April 2019|
|Implementing Baker's SUBTYPEP decision procedure||Léo Valais|
|Implementing Baker's SUBTYPEP decision procedure||12th European Lisp Symposium||1 April 2019|
|Finite Automata Theory Based Optimization of Conditional Variable Binding||Jim Newton|
|Finite Automata Theory Based Optimization of Conditional Variable Binding||European Lisp Symposium||14 January 2019|
|Recognizing heterogeneous sequences by rational type expression||Jim Newton|
|Recognizing heterogeneous sequences by rational type expression||Proceedings of the Meta'18: Workshop on Meta-Programming Techniques and Reflection||14 September 2018|
|Approaches in Typecase Optimization||Jim Newton|
|Approaches in Typecase Optimization||European Lisp Symposium||5 April 2018|
|Method Combinators||Didier Verna||Method Combinators||11th European Lisp Symposium||25 March 2018|
|Programmatic Manipulation of Common Lisp Type Specifiers||Jim Newton|
|Programmatic Manipulation of Common Lisp Type Specifiers||European Lisp Symposium||6 February 2017|
|Type-Checking of Heterogeneous Sequences in Common Lisp||Jim Newton|
|Type-Checking of Heterogeneous Sequences in Common Lisp||European Lisp Symposium||25 March 2016|
|Context-Oriented Image Processing||Didier Verna|
|Context-Oriented Image Processing||Context-Oriented Programming Workshop||1 January 2015|
|The incredible tale of the author who didn't want to do the publisher's job||Didier Verna||The incredible tale of the author who didn't want to do the publisher's job||TUGboat||1 January 2013|
|TiCL: the Prototype (Star TeX: the Next GenerationSeason 2)||Didier Verna||TiCL: the Prototype (Star TeX: the Next GenerationSeason 2)||TUGboat||1 January 2013|
|Generic Image Processing with Climb||Laurent Senta|
|Generic Image Processing with Climb||European Lisp Symposium||1 May 2012|
|Star TeX : the Next Generation||Didier Verna||Star TeX : the Next Generation||TUGboat||1 January 2012|
|Biological Realms in Computer Science: the Way You Don't (Want To) Think About Them||Didier Verna||Biological Realms in Computer Science: the Way You Don't (Want To) Think About Them||Onward! 2011||1 January 2011|
|Towards LaTeX Coding Standards||Didier Verna||Towards LaTeX Coding Standards||TUGboat||1 January 2011|
|Classes, Styles, Conflicts: the Biological Realm of LaTeX||Didier Verna||Classes, Styles, Conflicts: the Biological Realm of LaTeX||TUGboat||9 March 2010|
|CLoX: Common Lisp objects for XEmacs||Didier Verna||CLoX: Common Lisp objects for XEmacs||Proceedings of the 3rd European Lisp Symposium||9 March 2010|
|Binary Methods Programming: the CLOS Perspective||Didier Verna||Binary Methods Programming: the CLOS Perspective||Proceedings of the First European Lisp Symposium||31 March 2009|
|CLOS Efficiency: Instantiation||Didier Verna||CLOS Efficiency: Instantiation||Proceedings of the International Lisp Conference||13 January 2009|
|Revisiting the Visitor: the Just Do It Pattern||Didier Verna||Revisiting the Visitor: the Just Do It Pattern||Proceedings of the ACCU Conference 2009||29 December 2008|
|Report on the 5th Workshop ELW at ECOOP 2008||Didier Verna|
|Report on the 5th Workshop ELW at ECOOP 2008||Object-Oriented Technology. ECOOP 2008 Workshop Reader||1 July 2008|
|How to make Lisp go faster than C||Didier Verna||How to make Lisp go faster than C||Proceedings of the International MultiConference of Engineers and Computer Scientists||11 June 2007|
|CLOS solutions to binary methods||Didier Verna||CLOS solutions to binary methods||Proceedings of the International MultiConference of Engineers and Computer Scientists||22 January 2007|
|Beating C in Scientific Computing Applications||Didier Verna||Beating C in Scientific Computing Applications||Third European Lisp Workshop at ECOOP||11 July 2006|
|Virtual reality and tele-operation: a common framework||Didier Verna||Virtual reality and tele-operation: a common framework||Proceedings of the 5th World Multi-Conference on Systemics, Cybernetics and Informatics (SCI)—Emergent Computing and Virtual Engineering||1 July 2001|
|Urbi et Orbi: unusual design and implementation choices for distributed virtual environments||Yoann Fabre|
|Urbi et Orbi: unusual design and implementation choices for distributed virtual environments||Proceedings of the 6th International Conference on Virtual Systems and MultiMedia (VSMM)—Intelligent Environments Workshop||1 October 2000|
|Action recognition: how intelligent virtual environments can ease human-machine interaction||Didier Verna||Action recognition: how intelligent virtual environments can ease human-machine interaction||Proceedings of the 6th International Conference on Virtual Systems and MultiMedia (VSMM)—Intelligent Environments Workshop||1 October 2000|
|A Theoretical and Numerical Analysis of the Worst-Case Size of Reduced Ordered Binary Decision Diagrams||Jim Newton|
|A Theoretical and Numerical Analysis of the Worst-Case Size of Reduced Ordered Binary Decision Diagrams||ACM Transactions on Computational Logic||28 August 2018|
|Lisp, Jazz, Aikido||Didier Verna||Lisp, Jazz, Aikido||The Art, Science and Engineering of Programming Journal||5 February 2018|
|Revisiting the Visitor: the Just Do It Pattern||Didier Verna||Revisiting the Visitor: the Just Do It Pattern||Journal of Universal Computer Science||1 January 2010|
|Binary Methods Programming: the CLOS Perspective (extended version)||Didier Verna||Binary Methods Programming: the CLOS Perspective (extended version)||Journal of Universal Computer Science||1 January 2008|
|How to make Lisp go faster than C||Didier Verna||How to make Lisp go faster than C||IAENG International Journal of Computer Science||1 December 2006|
|Extensible languages: blurring the distinction between DSLs and GPLs||Didier Verna||Extensible languages: blurring the distinction between DSLs and GPLs||Formal and Practical Aspects of Domain-Specific Languages: Recent Developments||1 September 2012|