Difference between revisions of "Climb"

From LRDE

(Publications)
(Publications)
Line 39: Line 39:
 
==== Publications ====
 
==== Publications ====
  
 +
{{Publications/AuthorList|Didier Verna}}
 +
 +
<!--
 
===== Conferences =====
 
===== Conferences =====
  
Line 74: Line 77:
 
| ?News date#MEDIAWIKI=date
 
| ?News date#MEDIAWIKI=date
 
| format = ul
 
| format = ul
 +
-->
 
| template = PublicationItem
 
| template = PublicationItem
 
| order = descending
 
| order = descending

Revision as of 12:22, 29 January 2019

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

    Conference papers

    Title Authors Published in Date
    verna.19.els Parallelizing Quickref Didier Verna 12th European Lisp Symposium 1 April 2019
    valais.19.els Implementing Baker's SUBTYPEP decision procedure Léo Valais, Jim Newton, Didier Verna 12th European Lisp Symposium 1 April 2019
    newton.19.els Finite Automata Theory Based Optimization of Conditional Variable Binding Jim Newton, Didier Verna European Lisp Symposium 14 January 2019
    newton.18.meta.pdf Recognizing heterogeneous sequences by rational type expression Jim Newton, Didier Verna Proceedings of the Meta'18: Workshop on Meta-Programming Techniques and Reflection 14 September 2018
    newton.18.els Approaches in Typecase Optimization Jim Newton, Didier Verna European Lisp Symposium 5 April 2018
    verna.18.els Method Combinators Didier Verna 11th European Lisp Symposium 25 March 2018
    newton.17.els Programmatic Manipulation of Common Lisp Type Specifiers Jim Newton, Didier Verna, Maximilien Colange European Lisp Symposium 6 February 2017
    newton.16.els Type-Checking of Heterogeneous Sequences in Common Lisp Jim Newton, Akim Demaille, Didier Verna European Lisp Symposium 25 March 2016
    verna.15.cop Context-Oriented Image Processing Didier Verna, François Ripault Context-Oriented Programming Workshop 1 January 2015
    verna.13.tug-1 The incredible tale of the author who didn't want to do the publisher's job Didier Verna TUGboat 1 January 2013
    verna.13.tug-2 TiCL: the Prototype (Star TeX: the Next GenerationSeason 2) Didier Verna TUGboat 1 January 2013
    senta.12.els Generic Image Processing with Climb Laurent Senta, Christopher Chedeau, Didier Verna European Lisp Symposium 1 May 2012
    verna.12.tug Star TeX : the Next Generation Didier Verna TUGboat 1 January 2012
    verna.11.onward Biological Realms in Computer Science: the Way You Don't (Want To) Think About Them Didier Verna Onward! 2011 1 January 2011
    verna.11.tug Towards LaTeX Coding Standards Didier Verna TUGboat 1 January 2011
    verna.10.tug Classes, Styles, Conflicts: the Biological Realm of LaTeX Didier Verna TUGboat 9 March 2010
    verna.10.els CLoX: Common Lisp objects for XEmacs Didier Verna Proceedings of the 3rd European Lisp Symposium 9 March 2010
    verna.08.els Binary Methods Programming: the CLOS Perspective Didier Verna Proceedings of the First European Lisp Symposium 31 March 2009
    verna.09.ilc CLOS Efficiency: Instantiation Didier Verna Proceedings of the International Lisp Conference 13 January 2009
    verna.09.accu Revisiting the Visitor: the Just Do It Pattern Didier Verna Proceedings of the ACCU Conference 2009 29 December 2008
    verna.08.lncs Report on the 5th Workshop ELW at ECOOP 2008 Didier Verna, Charlotte Herzeel, Christophe Rhodes, Hans Hübner Object-Oriented Technology. ECOOP 2008 Workshop Reader 1 July 2008
    verna.06.imecs How to make Lisp go faster than C Didier Verna Proceedings of the International MultiConference of Engineers and Computer Scientists 11 June 2007
    verna.07.imecs CLOS solutions to binary methods Didier Verna Proceedings of the International MultiConference of Engineers and Computer Scientists 22 January 2007
    verna.06.ecoop Beating C in Scientific Computing Applications Didier Verna Third European Lisp Workshop at ECOOP 11 July 2006
    verna.01.sci Virtual reality and tele-operation: a common framework Didier Verna Proceedings of the 5th World Multi-Conference on Systemics, Cybernetics and Informatics (SCI)—Emergent Computing and Virtual Engineering 1 July 2001
    verna.00.vsmm Action recognition: how intelligent virtual environments can ease human-machine interaction Didier Verna Proceedings of the 6th International Conference on Virtual Systems and MultiMedia (VSMM)—Intelligent Environments Workshop 1 October 2000
    fabre.00.vsmm Urbi et Orbi: unusual design and implementation choices for distributed virtual environments Yoann Fabre, Guillaume Pitel, Didier Verna Proceedings of the 6th International Conference on Virtual Systems and MultiMedia (VSMM)—Intelligent Environments Workshop 1 October 2000

    Journal papers

    Title Authors Published in Date
    newton.18.tocl A Theoretical and Numerical Analysis of the Worst-Case Size of Reduced Ordered Binary Decision Diagrams Jim Newton, Didier Verna ACM Transactions on Computational Logic 28 August 2018
    verna.18.programming Lisp, Jazz, Aikido Didier Verna The Art, Science and Engineering of Programming Journal 5 February 2018
    verna.10.jucs Revisiting the Visitor: the Just Do It Pattern Didier Verna Journal of Universal Computer Science 1 January 2010
    verna.08.jucs Binary Methods Programming: the CLOS Perspective (extended version) Didier Verna Journal of Universal Computer Science 1 January 2008
    verna.06.ijcs How to make Lisp go faster than C Didier Verna IAENG International Journal of Computer Science 1 December 2006

    Book chapters

    Title Authors Published in Date
    verna.12.dsl Extensible languages: blurring the distinction between DSLs and GPLs Didier Verna Formal and Practical Aspects of Domain-Specific Languages: Recent Developments 1 September 2012

    Technical reports

    Title Authors Published in Date
    chedeau.12.tr JSPP: Morphing C++ into JavaScript Christopher Chedeau, Didier Verna 1 January 2012

| template = PublicationItem | order = descending | sort = News date | named args = yes }}