44,208 research outputs found
Constraint Logic Programming for Natural Language Processing
This paper proposes an evaluation of the adequacy of the constraint logic
programming paradigm for natural language processing. Theoretical aspects of
this question have been discussed in several works. We adopt here a pragmatic
point of view and our argumentation relies on concrete solutions. Using actual
contraints (in the CLP sense) is neither easy nor direct. However, CLP can
improve parsing techniques in several aspects such as concision, control,
efficiency or direct representation of linguistic formalism. This discussion is
illustrated by several examples and the presentation of an HPSG parser.Comment: 15 pages, uuencoded and compressed postscript to appear in
Proceedings of the 5th Int. Workshop on Natural Language Understanding and
Logic Programming. Lisbon, Portugal. 199
Thinking Tracks for Integrated Systems Design
The paper investigates systems thinking and systems engineering. After a short literature review, the paper presents, as a means for systems thinking, twelve thinking tracks. The tracks can be used as creativity starter, checklist, and as means to investigate effects of design decisions taken early in the process. Tracks include thinking about time, risk and safety, and different types of life-cycles. The thinking tracks are based on literature, teaching experience and practice as a system designer. By using the tracks a more complete picture of the system under design, the issue to be solved, the context, stakeholders and the rest of the world is created
Building Efficient Query Engines in a High-Level Language
Abstraction without regret refers to the vision of using high-level
programming languages for systems development without experiencing a negative
impact on performance. A database system designed according to this vision
offers both increased productivity and high performance, instead of sacrificing
the former for the latter as is the case with existing, monolithic
implementations that are hard to maintain and extend. In this article, we
realize this vision in the domain of analytical query processing. We present
LegoBase, a query engine written in the high-level language Scala. The key
technique to regain efficiency is to apply generative programming: LegoBase
performs source-to-source compilation and optimizes the entire query engine by
converting the high-level Scala code to specialized, low-level C code. We show
how generative programming allows to easily implement a wide spectrum of
optimizations, such as introducing data partitioning or switching from a row to
a column data layout, which are difficult to achieve with existing low-level
query compilers that handle only queries. We demonstrate that sufficiently
powerful abstractions are essential for dealing with the complexity of the
optimization effort, shielding developers from compiler internals and
decoupling individual optimizations from each other. We evaluate our approach
with the TPC-H benchmark and show that: (a) With all optimizations enabled,
LegoBase significantly outperforms a commercial database and an existing query
compiler. (b) Programmers need to provide just a few hundred lines of
high-level code for implementing the optimizations, instead of complicated
low-level code that is required by existing query compilation approaches. (c)
The compilation overhead is low compared to the overall execution time, thus
making our approach usable in practice for compiling query engines
- …