scholarly journals The Design Space of Type Checkers for XML Transformation Languages

2004 ◽  
Vol 11 (34) ◽  
Author(s):  
Anders Møller ◽  
Michael I. Schwartzbach

We survey work on statically type checking XML transformations, covering a wide range of notations and ambitions. The concept of <em>type</em> may vary from idealizations of DTD to full-blown XML Schema or even more expressive formalisms. The notion of <em>transformation</em> may vary from clean and simple transductions to domain-specific languages or integration of XML in general-purpose programming languages. Type annotations can be either explicit or implicit, and type checking ranges from exact decidability to pragmatic approximations.<br /> <br />We characterize and evaluate existing tools in this design space, including a recent result of the authors providing practical type checking of full unannotated XSLT 1.0 stylesheets given general DTDs that describe the input and output languages.

Author(s):  
Liliana María Favre

MDA requires the ability to understand different languages such as general purpose languages, domain specific languages, modeling languages or programming languages. An underlying principle of MDA for integrating semantically in a unified and interoperable way such languages is using metamodeling techniques.


Author(s):  
Didier Verna

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.


Author(s):  
Athanasios Iliopoulos ◽  
John G. Michopoulos

The need for more efficient, more abstract and easier to use parallel programming interfaces has been recently intensified with the introduction and remarkable evolution of technologies such as the General Purpose Graphics Processing Units (GPG-PUs) and multi-core Central Processing Units (CPUs). In the present paper we present the introduction of the uBlasCL system as a Domain Specific Embedded Language within C++ that implements a Basic Linear Algebra Interface for OpenCL. The system is architecture agnostic, in the sense that it can be programmed independently of the targeted architecture, is massively parallel, and achieves efficiency that tracks well the increase in hardware performance advances. Our effort is based on the utilization of template metaprogramming and domain specific languages fundamentals, for developing a system that has the syntactic flexibility of a symbolic term processing system for expressing mathematics, and the semantic and executional power to exploit the parallelism offered by the hardware in an automated, transparent to the user, and efficiently mapped on the hardware manner. We also describe its relation to C++, template programming, domain specific languages and OpenCL. In the effort to develop uBlasCL we also developed a middleware library named CL++, as a convenient C++ interface to OpenCL. After the architectural and the implementation descriptions of the system, we present performance testing results demonstrating its potential power.


2008 ◽  
Vol 5 (2) ◽  
pp. 1-17 ◽  
Author(s):  
Maria Pereira ◽  
Marjan Mernik ◽  
Cruz da ◽  
Pedro Henriques

In the past, we have been looking for program comprehension tools that are able to interconnect operational and behavioral views, aiming at aiding the software analyst to relate problem and program domains in order to reach a full understanding of software systems. In this paper we are concerned with Program Comprehension issues applied to Domain Specific Languages (DSLs). We are now willing to understand how techniques and tools for the comprehension of traditional programming languages fit in the understanding of DSLs. Being the language tailored for the description of problems in a specific domain, we believe that specific visualizations (at a higher abstraction level, closer to the problem level) could and should be defined to enhance the comprehension of the descriptions in that particular domain. .


2015 ◽  
Author(s):  
Βασίλειος Καρακόιδας

Οι Γλώσσες Ειδικού Πεδίου (Domain-specific Languages), γνωστές και ως μικρό-γλώσσες (mi- cro languages), αποτελούν γλώσσες προγραμματισμού των οποίων ο σχεδιασμός εστιάζει στην αντιμετώπιση προβλημάτων ενός συγκεκριμένου πεδίου ενδιαφέροντος. Πολύ συχνά, οι γλώσσες ειδικού πεδίου χρησιμοποιούνται στη βελτιστοποίηση της διαδικασίας ανάπτυξης λογισμικού (Soft- ware Development Process). Γνωστές γλώσσες ειδικού πεδίου αποτελούν οι κανονικές εκφράσεις (regular expressions), η γλώσσα markdown και η SQL. Στην αντίπερα όχθη, οι Γενικές Γλώσσες Προγραμματισμού (General-purpose Languages) έχουν ευρύτερες δυνατότητες. Αυτές παρέχουν όλες τις απαραίτητες δομές επεξεργασίας οι οποίες τις καθιστούν αποδοτικές σε ένα μεγαλύτερο εύρος προβλημάτων. Τυπικά παραδείγματα γενικών γλωσσών προγραμματισμού αποτελούν οι γλώσσες Java, C++ και Scala. Οι σύγχρονες προσεγγίσεις στην ανάπτυξη λογισμικού επιβάλουν οι γλώσσες ειδικού πεδίου να χρησιμοποιούνται παράλληλα με τις γενικές γλώσσες προγραμματισμού. Για παράδειγμα, η ενσωμάτωση της SQL σε διάφορες γενικές γλώσσες προγραμματισμού αποτέλεσε το πεδίο ενδια- φέροντος για πολλούς ερευνητές. Στην περίπτωση της Java, για την ενσωμάτωση της γλώσσας προγραμματισμού χρησιμοποιείται η βιβλιοθήκη εφαρμογής της Συνδετικότητας Βάσης Δεδομένων (JDBC, Java Database Connectivity). Ο προγραμματιστής εκτελεί το ερώτημα SQL στη βάση ως συμβολοσειρά (string). Μέσω αυτής της διαδικασίας ο μεταγλωττιστής της Java (Java compiler) αγνοεί εντελώς την SQL που περιέχεται στον κώδικα της Java, με αποτέλεσμα πολλά σφάλματα τύπων (type errors) ή συντακτικά σφάλματα (syntax errors) να εντοπίζονται τελικά κατά την εκτέλεση του προγράμματος. Ορισμένα από τα εν λόγω σφάλματα παραμένουν μη ανιχνεύσιμα ακόμα και μετά από παρατεταμένες δοκιμές κατά το στάδιο ανάπτυξης του λογισμικού. Υπάρχουν βέβαια και πιο εξελιγμένες μέθοδοι, η πλειοψηφία των οποίων χρησιμοποιούν κοινές τεχνικές προερχόμενες από μεταγλωττιστές και μεταπρογραμματισμό. Όλες όμως αυτές οι προσεγ- γίσεις πάσχουν κατά κανόνα ατό μια ή παραπάνω από τις κάτωθι αδυναμίες: - Αντιμετωπίζουν το πρόβλημα για ένα μόνο ζεύγος γλωσσών, μια γλώσσα ειδικού πεδίου και μια γλώσσα γενικού προγραμματισμού. Η ενσωμάτωση και άλλων γλωσσών ειδικού πεδίου είτε δεν υποστηρίζεται ή υποστηρίζεται μέσω πολύπλοκων συντακτικών μηχανισμών. - Συστήνουν σύνθετες λύσεις οι οποίες επιβαρύνουν τις κύριες γλώσσες προγραμματισμού, υποχρεώνοντας τους προγραμματιστές να χρησιμοποιούν πολύπλοκες σημασιολογίες οι οπ- οίες δεν είναι εναρμονισμένες με τη φιλοσοφία της εκάστοτε γλώσσας προγραμματισμού και των καλών πρακτικών προγραμματισμού. - Δεν είναι πρακτικές, αφού εισαγάγουν νέες γλώσσες προγραμματισμού, οι οποίες ενώ αντιμετωπίζουν το πρόβλημα αποτελεσματικά, απαιτούν την επανεγγραφή πολύπλοκων βιβλιοθηκών εφαρμογής για την εκάστοστε γλώσσα ειδικού πεδίου. Οι προτεινόμενες γλώσσες προγραμματισμού αποτελούν την επέκταση μιας υπάρχουσας γλώσσας, ή μιας νέας γλώσσας με τελείως διαφορετική σύνταξη. Η παρούσα διδακτορική διατριβή εισαγάγει την J%(j-mod), μια επέκταση της Java για την αποδοτική υποστήριξη γλωσσών ειδικού πεδίου. H επέκταση J% παρέχει έναν τρόπο ενσωμάτωσης γλωσσών ειδικού πεδίου στην Java με τη μορφή τμημάτων (modules) στον μεταγλωττιστή. Κατα την συγγραφή της παρούσης, το J% υποστηρίζει τη γλώσσα SQL και τις κανονικές εκφράσεις. Εκμεταλεύεται τις ήδη υπάρχουσες προγραμματιστικές διεπαφές της Java, όπως για παράδειγμα τη βιβλιοθήκη της Συνδετικότητας Βάσης Δεδομένων (JDBC). Εισαγάγει δε, τα κάτωθι χαρακτηρiστικά: - Τμηματικό Σχεδιασμό- Στατικό Έλεγχο Τύπων- Έλεγχος Συνταντικού Γλώσσας Ειδικού Πεδίου- Διατήρηση Συντακτικού Γλώσσας Ειδικού Πεδίου- Πρακτική- Βελτιστοποιήσεις Ειδικού Πεδίου



2010 ◽  
Vol 7 (2) ◽  
pp. 247-264 ◽  
Author(s):  
Tomaz Kosar ◽  
Nuno Oliveira ◽  
Marjan Mernik ◽  
Varanda Pereira ◽  
Matej Crepinsek ◽  
...  

Many domain-specific languages, that try to bring feasible alternatives for existing solutions while simplifying programming work, have come up in recent years. Although, these little languages seem to be easy to use, there is an open issue whether they bring advantages in comparison to the application libraries, which are the most commonly used implementation approach. In this work, we present an experiment, which was carried out to compare such a domain-specific language with a comparable application library. The experiment was conducted with 36 programmers, who have answered a questionnaire on both implementation approaches. The questionnaire is more than 100 pages long. For a domain-specific language and the application library, the same problem domain has been used - construction of graphical user interfaces. In terms of a domain-specific language, XAML has been used and C# Forms for the application library. A cognitive dimension framework has been used for a comparison between XAML and C# Forms.


2010 ◽  
Vol 7 (2) ◽  
pp. 309-329 ◽  
Author(s):  
Matej Crepinsek ◽  
Tomaz Kosar ◽  
Marjan Mernik ◽  
Julien Cervelle ◽  
Rémi Forax ◽  
...  

Grammar metrics have been introduced to measure the quality and the complexity of the formal grammars. The aim of this paper is to explore the meaning of these notions and to experiment, on several grammars of domain specific languages and of general-purpose languages, existing grammar metrics together with the new metrics that are based on grammar LR automaton and on the language recognized. We discuss the results of this experiment and focus on the comparison between grammars of domain specific languages as well as of general-purpose languages and on the evolution of the metrics between several versions of the same language.


2021 ◽  
Vol 5 (OOPSLA) ◽  
pp. 1-29
Author(s):  
Weili Fu ◽  
Fabian Krause ◽  
Peter Thiemann

Dependently-typed programming languages are gaining importance, because they can guarantee a wide range of properties at compile time. Their use in practice is often hampered because programmers have to provide very precise types. Gradual typing is a means to vary the level of typing precision between program fragments and to transition smoothly towards more precisely typed programs. The combination of gradual typing and dependent types seems promising to promote the widespread use of dependent types. We investigate a gradual version of a minimalist value-dependent lambda calculus. Compile-time calculations and thus dependencies are restricted to labels, drawn from a generic enumeration type. The calculus supports the usual Pi and Sigma types as well as singleton types and subtyping. It is sufficiently powerful to provide flexible encodings of variant and record types with first-class labels. We provide type checking algorithms for the underlying label-dependent lambda calculus and its gradual extension. The gradual type checker drives the translation into a cast calculus, which extends the original language. The cast calculus comes with several innovations: refined typing for casts in the presence of singletons, type reduction in casts, and fully dependent Sigma types. Besides standard metatheoretical results, we establish the gradual guarantee for the gradual language.


Sign in / Sign up

Export Citation Format

Share Document