A Modelling Language for the Effective Design of Java Annotations
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Reflection, Zips, and Generalised Casts Abstract
Scrap More Boilerplate: Reflection, Zips, and Generalised Casts Ralf L a¨mmel Vrije Universiteit & CWI, Amsterdam Abstract Writing boilerplate code is a royal pain. Generic programming promises to alleviate this pain b y allowing the programmer to write a generic #recipe$ for boilerplate code, and use that recipe in many places. In earlier work we introduced the #Scrap y our boilerplate$ approach to generic p rogramming, which exploits Haskell%s exist- ing type-class mechanism to support generic transformations and queries. This paper completes the picture. We add a few extra #introspec- tive$ or #reflective$ facilities, that together support a r ich variety of serialisation and de-serialisation. We also show how to perform generic #zips$, which at first appear to be somewhat tricky in our framework. Lastly, we generalise the ability to over-ride a generic function with a type-specific one. All of this can be supported in Haskell with independently-useful extensions: higher-rank types and type-safe cast. The GHC imple- mentation of Haskell readily derives the required type classes for user-defined data types. Categories and Subject Descriptors D.2. 13 [Software Engineering]: Reusable Software; D.1.1 [Programming Techniques]: Functional Programming; D.3. 1 [Programming Languages]: Formal Definitions and Theory General Terms Design, Languages Keywords Generic p rogramming, reflection, zippers, type cast 1 Introduction It is common to find that large slabs of a program consist of #boil- erplate$ code, which conceals b y its b ulk a smaller amount of #in- teresting$ code. So-called generic p rogramming techniques allow Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or c ommercial advantage and that copies b ear this notice and the full citation on the first page. -
Template Meta-Programming for Haskell
Template Meta-programming for Haskell Tim Sheard Simon Peyton Jones OGI School of Science & Engineering Microsoft Research Ltd Oregon Health & Science University [email protected] [email protected] Abstract C++, albeit imperfectly... [It is] obvious to functional programmers what the committee did not realize until We propose a new extension to the purely functional programming later: [C++] templates are a functional language evalu- language Haskell that supports compile-time meta-programming. ated at compile time...” [12]. The purpose of the system is to support the algorithmic construction of programs at compile-time. Robinson’s provocative paper identifies C++ templates as a ma- The ability to generate code at compile time allows the program- jor, albeit accidental, success of the C++ language design. De- mer to implement such features as polytypic programs, macro-like spite the extremely baroque nature of template meta-programming, expansion, user directed optimization (such as inlining), and the templates are used in fascinating ways that extend beyond the generation of supporting data structures and functions from exist- wildest dreams of the language designers [1]. Perhaps surprisingly, ing data structures and functions. in view of the fact that templates are functional programs, func- tional programmers have been slow to capitalize on C++’s success; Our design is being implemented in the Glasgow Haskell Compiler, while there has been a recent flurry of work on run-time meta- ghc. programming, much less has been done on compile-time meta- This version is very slightly modified from the Haskell Workshop programming. The Scheme community is a notable exception, as 2002 publication; a couple of typographical errors are fixed in Fig- we discuss in Section 10. -
Metaprogramming Concepts of Programming Languages
Metaprogramming Concepts of Programming Languages Alexander Schramm Institut für Softwaretechnik und Programmiersprachen 2. November 2015 A. Schramm 2. November 2015 1/39 Table of Contents Introduction Runtime Reflection in Java Runtime Metaprogramming in Ruby C++ Templates Haskell Templates Lisp Macros Conclusion A. Schramm 2. November 2015 2/39 Outline Introduction Runtime Reflection in Java Runtime Metaprogramming in Ruby C++ Templates Haskell Templates Lisp Macros Conclusion A. Schramm 2. November 2015 3/39 Motivation Which issues do we want to tackle? I Avoid writing boilerplate code I Write code that shows our intention I Expand the syntax of languages I Write type independent code in strongly typed languages A. Schramm 2. November 2015 4/39 What is Metaprogramming Definition: Metaprogramming Metaprograming describes different ways to generate and manipulate code Differentations: I Compile time vs. runtime metaprogramming I Domain language vs. host language A. Schramm 2. November 2015 5/39 Differentations of Metaprograms Compile time Metaprogramming Ways to manipulate or generate code during compilation, e.g: Macros, Templates Runtime Metaprogramming Ways to manipulate or generate code, while it is executed, e.g: dynamic methods, Reflections A. Schramm 2. November 2015 6/39 Differentations of Metaprograms Domain Language The Programming Language, in which the metaprogram is written Host Language The Programming Language of the generated code I Can be different (YACC, Compilers) I Domain language can be a subset of the host language (C++ Templates) I Domain language can be an integral part of the host language (Ruby) A. Schramm 2. November 2015 7/39 Outline Introduction Runtime Reflection in Java Runtime Metaprogramming in Ruby C++ Templates Haskell Templates Lisp Macros Conclusion A. -
Studying Social Tagging and Folksonomy: a Review and Framework
Studying Social Tagging and Folksonomy: A Review and Framework Item Type Journal Article (On-line/Unpaginated) Authors Trant, Jennifer Citation Studying Social Tagging and Folksonomy: A Review and Framework 2009-01, 10(1) Journal of Digital Information Journal Journal of Digital Information Download date 02/10/2021 03:25:18 Link to Item http://hdl.handle.net/10150/105375 Trant, Jennifer (2009) Studying Social Tagging and Folksonomy: A Review and Framework. Journal of Digital Information 10(1). Studying Social Tagging and Folksonomy: A Review and Framework J. Trant, University of Toronto / Archives & Museum Informatics 158 Lee Ave, Toronto, ON Canada M4E 2P3 jtrant [at] archimuse.com Abstract This paper reviews research into social tagging and folksonomy (as reflected in about 180 sources published through December 2007). Methods of researching the contribution of social tagging and folksonomy are described, and outstanding research questions are presented. This is a new area of research, where theoretical perspectives and relevant research methods are only now being defined. This paper provides a framework for the study of folksonomy, tagging and social tagging systems. Three broad approaches are identified, focusing first, on the folksonomy itself (and the role of tags in indexing and retrieval); secondly, on tagging (and the behaviour of users); and thirdly, on the nature of social tagging systems (as socio-technical frameworks). Keywords: Social tagging, folksonomy, tagging, literature review, research review 1. Introduction User-generated keywords – tags – have been suggested as a lightweight way of enhancing descriptions of on-line information resources, and improving their access through broader indexing. “Social Tagging” refers to the practice of publicly labeling or categorizing resources in a shared, on-line environment. -
Expressive and Strongly Type-Safe Code Generation
Expressive and Strongly Type-Safe Code Generation Thomas Winant, Jesper Cockx, and Dominique Devriese imec-DistriNet, KU Leuven [email protected] Meta-programs are useful to avoid writing boilerplate code, for polytypic programming, etc. However, when a meta-program passes the type checker, it does not necessarily mean that the programs it generates will be free of type errors, only that generating object programs will proceed without type errors. For instance, this well-typed Template Haskell [5] meta-program generates the ill-typed object program not 'X'. notX :: Q Exp notX = [j not 'X' j] Fortunately, Template Haskell will type-check the generated program after generation, and detect the type error. We call such meta-programming systems weakly type-safe. Even though weakly type-safe meta-programming suffices for guaranteeing that the resulting program is type-safe, it has important downsides. Type errors in the generated code are presented to the application developer, who may simply be a user of the meta-program. If the meta-program is part of a library, the developer has little recourse other than contacting the meta-program authors about the bug in their code. Moreover, composing weakly type-safe meta-programs can be brittle because the type of generated programs is not specified in a machine-checked way. We are interested in what we call strongly type-safe meta-programming, which offers a stronger guarantee: when a meta-program is strongly type-safe, all generated programs are guaranteed to be type-safe too. As such, bugs in meta-programs are detected as early as possible. -
Instructions on the Annotation of Pdf Files
P-annotatePDF-v11b INSTRUCTIONS ON THE ANNOTATION OF PDF FILES To view, print and annotate your chapter you will need Adobe Reader version 9 (or higher). This program is freely available for a whole series of platforms that include PC, Mac, and UNIX and can be downloaded from http://get.adobe.com/reader/. The exact system requirements are given at the Adobe site: http://www.adobe.com/products/reader/tech-specs.html. Note: if you opt to annotate the file with software other than Adobe Reader then please also highlight the appropriate place in the PDF file. PDF ANNOTATIONS Adobe Reader version 9 Adobe Reader version X and XI When you open the PDF file using Adobe Reader, the To make annotations in the PDF file, open the PDF file using Commenting tool bar should be displayed automatically; if Adobe Reader XI, click on ‘Comment’. not, click on ‘Tools’, select ‘Comment & Markup’, then click If this option is not available in your Adobe Reader menus on ‘Show Comment & Markup tool bar’ (or ‘Show then it is possible that your Adobe Acrobat version is lower Commenting bar’ on the Mac). If these options are not than XI or the PDF has not been prepared properly. available in your Adobe Reader menus then it is possible that your Adobe Acrobat version is lower than 9 or the PDF has not been prepared properly. This opens a task pane and, below that, a list of all (Mac) Comments in the text. PDF ANNOTATIONS (Adobe Reader version 9) The default for the Commenting tool bar is set to ‘off’ in version 9. -
Sample Webpage Using Html
Sample Webpage Using Html If necrophiliac or protective Paul usually incenses his gibbons jettison shoreward or hedge quirkily and nutritionally, how schizogonous is Skelly? Nealon never calumniates any Beelzebub amounts hydraulically, is Zacherie heterotypic and other enough? Symbolical and rhinocerotic Duffie never slags languishingly when Wendell dunt his etherealisation. Dup is using html documents have no one troubling me how about html tags you can be Example HTML Document. HTML Hyperlink Codes. Trydo Creative Agency and Portfolio Bootstrap Template. How to use a webpage using a particular group multiple selectors. Corporation for html commands and percentage value pairs within the webpage document to push it is to the internet, like the only. Just add a webpage using two things, java servlets and expand your webpages are a blog and its incredible portfolio. Create various simple contact form in HTML and CSS by some our HTML contact form code tutorial However remind you margin to build your contact-us page create a jiffy. W3CSS Templates. 13 cool tricks for HTML Freelancercom. Appco has a good understanding how to amend the first step is all about getting familiar with pictures and implement content or anything else that focuses your studies! Believe it or addict that is all i need to create a basic web page letter of hero it's foreign to. HTML Tags Chart source wwwweb-sourcenet Tag Name Code Example Browser View. Another advantage exactly as a little more time and creativity makes a no one above, sierra provides all the information is it is it. You wonder look its the underlying HTML of any document by clicking on View and then select Source in Netscape You first use thrift to learn a new tags Using. -
Advanced-Java.Pdf
Advanced java i Advanced java Advanced java ii Contents 1 How to create and destroy objects 1 1.1 Introduction......................................................1 1.2 Instance Construction.................................................1 1.2.1 Implicit (Generated) Constructor.......................................1 1.2.2 Constructors without Arguments.......................................1 1.2.3 Constructors with Arguments........................................2 1.2.4 Initialization Blocks.............................................2 1.2.5 Construction guarantee............................................3 1.2.6 Visibility...................................................4 1.2.7 Garbage collection..............................................4 1.2.8 Finalizers...................................................5 1.3 Static initialization..................................................5 1.4 Construction Patterns.................................................5 1.4.1 Singleton...................................................6 1.4.2 Utility/Helper Class.............................................7 1.4.3 Factory....................................................7 1.4.4 Dependency Injection............................................8 1.5 Download the Source Code..............................................9 1.6 What’s next......................................................9 2 Using methods common to all objects 10 2.1 Introduction...................................................... 10 2.2 Methods equals and hashCode........................................... -
Type Annotations Specification
Type Annotations Specification (JSR 308) Michael D. Ernst [email protected] May 2, 2013 The JSR 308 webpage is http://types.cs.washington.edu/jsr308/. It contains the latest version of this document, along with other information such as a FAQ, the reference implementation, and sample annotation processors. Contents 1 Introduction 2 2 Java language syntax extensions 2 2.1 Source locations for annotations on types . 2 2.1.1 Implicit type uses are not annotatable . 5 2.1.2 Not all type names are annotatable . 5 2.2 Java language grammar changes . 6 2.2.1 Syntax of array annotations . 8 2.2.2 Syntax of annotations on qualified types . 9 2.3 Target meta-annotations for type annotations . 9 3 Class file format extensions 11 3.1 The type annotation structure . 12 3.2 The target type field: the type of annotated element . 13 3.3 The target info field: identifying a program element . 13 3.3.1 Type parameters . 13 3.3.2 Class supertypes: extends and implements clauses . 14 3.3.3 Type parameter bounds . 14 3.3.4 Method return type, receiver, and fields . 15 3.3.5 Method formal parameters . 15 3.3.6 throws clauses . 15 3.3.7 Local variables and resource variables . 15 3.3.8 Exception parameters (catch clauses) . 16 3.3.9 Type tests, object creation, and method/constructor references . 16 3.3.10 Casts and type arguments to constructor/method invocation/references . 16 3.4 The type path structure: Identifying part of a compound type . 17 A Examples of classfile structure 18 A.1 Examples of type parameter bounds . -
Folksannotation: a Semantic Metadata Tool for Annotating Learning Resources Using Folksonomies and Domain Ontologies
FolksAnnotation: A Semantic Metadata Tool for Annotating Learning Resources Using Folksonomies and Domain Ontologies Hend S. Al-Khalifa and Hugh C. Davis Learning Technology Research Group, ECS, The University of Southampton, Southampton, UK {hsak04r/hcd}@ecs.soton.ac.uk Abstract Furthermore, web resources stored in social bookmarking services have potential for educational There are many resources on the Web which are use. In order to realize this potential, we need to add suitable for educational purposes. Unfortunately the an extra layer of semantic metadata to the web task of identifying suitable resources for a particular resources stored in social bookmarking services; this educational purpose is difficult as they have not can be done via adding pedagogical values to the web typically been annotated with educational metadata. resources so that they can be used in an educational However, many resources have now been annotated in context. an unstructured manner within contemporary social In this paper, we will focus on how to benefit from 2 bookmaking services. This paper describes a novel tool social bookmarking services (in particular del.icio.us ), called ‘FolksAnnotation’ that creates annotations with as vehicles to share and add semantic metadata to educational semantics from the del.icio.us bookmarked resources. Thus, the research question we bookmarking service, guided by appropriate domain are tackling is: how folksonomies can support the ontologies. semantic annotation of web resources from an educational perspective ? 1. Introduction The organization of the paper is as follows: Section 2 introduces folksonomies and social bookmarking Metadata standards such as Dublin Core (DC) and services. In section 3, we review some recent research IEEE-LOM 1 have been widely used in e-learning on folksonomies and social bookmarking services. -
Supporting Source Code Annotations with Metadata-Aware Development Environment
Proceedings of the Federated Conference on DOI: 10.15439/2019F161 Computer Science and Information Systems pp. 411–420 ISSN 2300-5963 ACSIS, Vol. 18 Supporting Source Code Annotations with Metadata-Aware Development Environment Ján Juhár Department of Computers and Informatics Technical University of Košice Letná 9, 042 00 Košice, Slovakia Email: [email protected] Abstract—To augment source code with high-level metadata Recovering approaches use intrinsic metadata, which either with the intent to facilitate program comprehension, a program- define source code elements themselves or can be derived from mer can use annotations. There are several types of annotations: these elements. In contrast to them, preserving approaches either those put directly in the code or external ones. Each type comes with a unique workflow and inherent limitations. focus on extrinsic metadata, which complement the intrinsic In this paper, we present a tool providing uniform annotation ones by adding custom, high-level details explicitly recorded process, which also adds custom metadata-awareness for an by programmers. On one side, the more accurate preserved industrial IDE. We also report an experiment in which we sought knowledge may help to bridge the abstraction gap better than whether the created annotating support helps programmers to the lower-level recovered one. On the other side, recording annotate code with comments faster and more consistently. The experiment showed that with the tool the annotating consistency programmer’s mental model of the code brings in an additional was significantly higher but also that the increase in annotating cost: the programmer must spend extra time to record it. -
Model Oriented Programming: Bridging the Code-Model Divide
Model Oriented Programming: Bridging the Code-Model Divide Omar Badreddin Timothy C. Lethbridge School of Electrical Engineering and Computer Science School of Electrical Engineering and Computer Science University of Ottawa University of Ottawa Ottawa, Canada Ottawa, Canada [email protected] [email protected] Abstract—Model Driven Engineering proposes the use of models as the main development artifacts. This methodology II. STATE OF THE ART MODELING PRACTICES involves generating code from models and then perhaps adding Modeling enables developers to work at a higher level of some details to the generated code. Frequently, it is required to abstraction. This view seems to be well accepted in both also reverse-engineer code to generate models. Despite the wide academia and industry. However, the overwhelming majority acceptance of modeling benefits, the use of Model Driven Engineering practices remains limited. We present model of developers still treat source code as their primary work oriented programming as a new paradigm to reduce the ever- medium [2]. Software engineers may draw diagrams when present tension between model-centric and code-centric explaining concepts in design meetings, and include some of development styles. The core of this approach is to add UML them in design documents, but relatively few use models to abstractions such as associations and state machines directly into actually drive development effort. Some communities, like the a high-level programming language code. In this approach, model open source developers, remain entirely code-centric. diagrams become just another abstract view of the code. The need for reverse engineering is eliminated, since everything in the A.