@MISC{_declarativeworld, author = {}, title = {Declarative world inspiration}, year = {} }
Share
OpenURL
Abstract
The techniques for compilation and optimiza-tion of the declarative (logic and functional) programming languages are quite different from those used for procedural (imperative) languages, especially on the low level. There are however several reasons why they are still relevant even for the typically procedural lan-guage compilers like GCC: On higher level we can observe similarities, and due to more sys-tematic design of the declarative languages the development in these areas is usually more ad-vanced. In some contexts it is also consid-ered a good style to use declarative program-ming techniques (recursion, generic program-ming, callbacks) even in imperative languages; currently the performance penalties for these constructs are usually quite large. The paper quickly summarizes the similari-ties and differences between compilation of declarative and imperative languages. We then investigate the techniques used for declara-tive languages—tail recursion and general re-cursion optimizations, advanced inlining tech-niques (partial inlining, function specialisa-tion, partial evaluation), program analysis, in-termodular optimizations, etc., their usability and implementability in GCC.