scispace - formally typeset
Search or ask a question
Journal ArticleDOI

Domain Specific Languages

25 Feb 2010-International Journal of Computer Applications (Foundation of Computer Science FCS)-Vol. 1, Iss: 21, pp 105-111
TL;DR: A number of DSLs spanning various phases of software development life cycle in terms of features that elucidates their advantages over general purpose languages and perform in depth study by practically applying a few open source DSLs: ‘Cascading’, Naked Objects Framework and RSpec.
Abstract: To match the needs of the fast paced generation, the speed of computing has also increased enormously. But, there is a limit to which the processor speed can be amplified. Hence in order to increase productivity, there is a need to change focus from processing time to programming time. Reduction in programming time can be achieved by identifying the domain to which the task belongs and using an appropriate Domain Specific Language (DSL). DSLs are constrained to use terms and concepts pertaining to an explicit domain making it much easier for the programmers to understand and learn, and cuts down the development time drastically. In this paper, we will understand what a DSL is; explore a number of DSLs spanning various phases of software development life cycle in terms of features that elucidates their advantages over general purpose languages and perform in depth study by practically applying a few open source DSLs: ‘Cascading’, Naked Objects Framework and RSpec.

Content maybe subject to copyright    Report

Citations
More filters
Book
08 Aug 2012
TL;DR: NoSQL Distilled shows how to implement evolutionary design with schema migration: an essential technique for applying NoSQL databases and describes how NoSQL is ushering in a new age of Polyglot Persistence, where multiple data-storage worlds coexist, and architects can choose the technology best optimized for each type of data access.
Abstract: The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational NoSQL databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program. NoSQL Distilled is a concise but thorough introduction to this rapidly emerging technology. Pramod J. Sadalage and Martin Fowler explain how NoSQL databases work and the ways that they may be a superior alternative to a traditional RDBMS. The authors provide a fast-paced guide to the concepts you need to know in order to evaluate whether NoSQL databases are right for your needs and, if so, which technologies you should explore further. The first part of the book concentrates on core concepts, including schemaless data models, aggregates, new distribution models, the CAP theorem, and map-reduce. In the second part, the authors explore architectural and design issues associated with implementing NoSQL. They also present realistic use cases that demonstrate NoSQL databases at work and feature representative examples using Riak, MongoDB, Cassandra, and Neo4j. In addition, by drawing on Pramod Sadalages pioneering work, NoSQL Distilled shows how to implement evolutionary design with schema migration: an essential technique for applying NoSQL databases. The book concludes by describing how NoSQL is ushering in a new age of Polyglot Persistence, where multiple data-storage worlds coexist, and architects can choose the technology best optimized for each type of data access.

520 citations


Cites methods from "Domain Specific Languages"

  • ...See CAP theorem buckets (Riak), 82 default values for consistency for, 84 domain, 83 storing all data together in, 82 business transactions, 61 C caching performance of, 39, 137 stale data in, 50 Cages library, 104 Index 157 CAP (Consistency, Availability, and Partition tolerance) theorem, 53–56 for document databases, 93 for Riak, 86 CAS (compare-and-set) operations, 62 Cassandra DB, 10, 21–22, 99–109 availability in, 104–105 column families in: commands for, 105–106 standard, 101 super, 101–102 columns in, 100 expiring, 108–109 indexing, 106–107 reading, 107 super, 101 compaction in, 103 consistency in, 103–104 ETL tools for, 139 hinted handoff in, 104 keyspaces in, 102–104 memtables in, 103 queries in, 105–107 repairs in, 103–104 replication factor in, 103 scaling in, 107 SSTables in, 103 timestamps in, 100 transactions in, 104 wide/skinny rows in, 23 clients, processing on, 67 Clojure language, 145 cloud computing, 149 clumping, 39 clusters, 8–10, 67–72, 76, 149 in file systems, 8 in Riak, 87 resiliency of, 8 column-family databases, 21–23, 99–109 ACID transactions in, 109 columns for materialized views in, 31 combining peer-to-peer replication and sharding in, 43–44 consistency in, 103–104 modeling for, 34 performance in, 103 schemalessness of, 28 vs. key-value databases, 21 wide/skinny rows in, 23 combinable reducers, 70–71 compaction (Cassandra), 103 compatibility, backward, 126, 131 concurrency, 145 in file systems, 141 in relational databases, 4 offline, 62 conditional updates, 48, 62–63 conflicts key, 82 read-write, 49–50 resolving, 64 write-write, 47–48, 64 consistency, 47–59 eventual, 50, 84 in column-family databases, 103–104 in graph databases, 114 in master-slave replication, 52 in MongoDB, 91 logical, 50 optimistic/pessimistic, 48 read, 49–52, 56 read-your-writes, 52 relaxing, 52–56 replication, 50 session, 52, 63 trading off, 57 update, 47, 56, 61 vs. availability, 54 write, 92 See also CAP theorem content hashes, 62–63 content management systems, 98, 108 CouchDB, 10, 91 conditional updates in, 63 replica sets in, 94 counters, for version stamps, 62–63 CQL (Cassandra Query Language), 10, 106 CQRS (Command Query Responsibility Segregation), 143 cross-document operations, 98 C-Store DB, 21 Cypher language, 115–119 D Data Mapper and Repository pattern, 151 data models, 13, 25 aggregate-oriented, 14–23, 30 document, 20 key-value, 20 relational, 13–14 Index158 data redundancy, 94 databases choosing, 7, 147–152 deploying, 139 encapsulating in explicit layer, 151 NoSQL, definition of, 10–11 shared integration of, 4, 6 Datastax Ops Center, 139 DBDeploy framework, 125 DBMaintain tool, 126 deadlocks, 48 demo access, 108 Dependency Network pattern, 77 deployment complexity, 139 Dijkstra’s algorithm, 118 disaster recovery, 94 distributed file systems, 76, 141 distributed version control systems, 48 version stamps in, 64 distribution models, 37–43 See also replications, sharding, single server approach document databases, 20, 23, 89–98 availability in, 93 embedding child documents into, 90 indexes in, 25 master-slave replication in, 93 performance in, 91 queries in, 25, 94–95 replica sets in, 94 scaling in, 95 schemalessness of, 28, 98 XML support in, 146 domain buckets (Riak), 83 Domain-Driven Design, 14 DTDs (Document Type Definitions), 146 durability, 56–57 DynamoDB, 9, 81, 100 shopping carts in, 55 Dynomite DB, 10 E early prototypes, 109 e-commerce data modeling for, 14 flexible schemas for, 98 polyglot persistence of, 133–138 shopping carts in, 55, 85, 87 edges (graph databases), 26, 111 eligibility rules, 26 enterprises commercial support of NoSQL for, 138–139 concurrency in, 4 DB as backing store for, 4 event logging in, 97 integration in, 4 polyglot persistence in, 138–139 security of data in, 139 error handling, 4, 145 etags, 62 ETL tools, 139 Evans, Eric, 10 event logging, 97, 107–108 event sourcing, 138, 142, 144 eventual consistency, 50 in Riak, 84 expiring usage, 108–109 F failovers, automated, 94 file systems, 141 as backing store for RDBMS, 3 cluster-aware, 8 concurrency in, 141 distributed, 76, 141 performance of, 141 queries in, 141 FlockDB, 113 data model of, 27 node distribution in, 115 G Gilbert, Seth, 53 Google, 9 Google BigTable....

    [...]

  • ...If there are destructive changes, that is updates and deletes, then we can avoid some recomputation by breaking up the reduce operation into steps and only recalculating those steps whose inputs have changed—essentially, using a Dependency Network [Fowler DSL] to organize the computation....

    [...]

Proceedings ArticleDOI
17 Oct 2010
TL;DR: This tutorial explains how to define a language and a statically typed, EMF-based Abstract Syntax Tree using only a grammar, and shows how literally every as- pects of the language and its complementary tool support can be customized using Dependency Injection.
Abstract: Whether there is an (emerging or legacy) Domain-Specific Language to increase the expressiveness of your coworkers or whether you are about to invent a new General Purpose Prgramming Language: Tool support that goes beyond a parser/compiler is essential to make other people adopt your language and to be more productive. Xtext is an award- winning framework to build such tooling.In this tutorial we explain how to define a language and a statically typed, EMF-based Abstract Syntax Tree using only a grammar. We then generate a parser, a serializer and a smart editor from it. The editor provides many features out-of-the-box, such as syntax highlighting, content-assist, folding, jump-to-declaration and reverse-reference lookup across multiple files. Then, it is shown how literally every as- pects of the language and its complementary tool support can be customized using Dependency Injection, especially how this can be done for linking, formatting and validation. As an outlook, we will demonstrate how to integrate a custom language with Java, how Xtext maintains a workspace-wide index of named elements and how to implement incremental code generation or attach an interpreter.

368 citations

Journal ArticleDOI
TL;DR: FAMILIAR is presented as a Domain-Specific Language (DSL) that is dedicated to the large scale management of feature models and that complements existing tool support and demonstrates their applicability to different domains and use for different purposes.

196 citations

Proceedings ArticleDOI
W. Taha1
01 Nov 2008
TL;DR: Instead of aiming to be the best for solving any kind of computing problem, DSLs aim to be particularly good for solving a specific class of problems, and in doing so they are often more accessible to the general public than traditional programming languages.
Abstract: Computer science is undergoing a revolution today, in which language designers are shifting attention from general purpose programming languages to so-called domain-specific languages (DSLs). General-purpose languages like Java, C#, C++, and C have long been the primary focus of language research. The idea was to create one language that would be better suited for programming than any other language. Ironically, we now have so many different general purpose languages that it is hard to imagine how this goal could be attained. Instead of aiming to be the best for solving any kind of computing problem, DSLs aim to be particularly good for solving a specific class of problems, and in doing so they are often much more accessible to the general public than traditional programming languages.

188 citations


Cites background from "Domain Specific Languages"

  • ...In the rest of this section, we explain each of these characteristics in the context of familiar, everyday domains....

    [...]

References
More filters
Journal ArticleDOI
TL;DR: The literature available on the topic of domain-specific languages as used for the construction and maintenance of software systems is surveyed, and a selection of 75 key publications in the area is listed.
Abstract: We survey the literature available on the topic of domain-specific languages as used for the construction and maintenance of software systems. We list a selection of 75 key publications in the area, and provide a summary for each of the papers. Moreover, we discuss terminology, risks and benefits, example domain-specific languages, design methodologies, and implementation techniques.

1,538 citations

Book
23 Sep 2010
TL;DR: This book covers a variety of different techniques available for DSLs and can be used with whatever programming language you happen to be using, most of the examples are in Java or C#.
Abstract: Designed as a wide-ranging guide to Domain Specific Languages (DSLs) and how to approach building them, this book covers a variety of different techniques available for DSLs. The goal is to provide readers with enough information to make an informed choice about whether or not to use a DSL and what kinds of DSL techniques to employ. Part I is a 150-page narrative overview that gives you a broad understanding of general principles. The reference material in Parts II through VI provides the details and examples you willneed to get started using the various techniques discussed. Both internal and external DSL topics are covered, in addition to alternative computational models and code generation. Although the general principles and patterns presented can be used with whatever programming language you happen to be using, most of the examples are in Java or C#.

908 citations