index.xml 7.65 KB
Newer Older
1
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
2
<page output="index.php">
3
4
5
6
7
8
9
10
11
12
13
14

<title>CDuce</title>
<banner>
  <img title="CDuce" src="img/cduce_logo.jpg" width="400" height="206"
       alt="CDuce"/>
</banner>

<!-- ********* Left panel ********* -->
<navig>

<toc/>

15
16
<box>
<ul>
17
<li><a href="plan.php">Site map</a></li>
18
<li><a href="/cgi-bin/cduce">Online demo</a></li>
19
20
21
22
<li><a href="papers.php">Papers and talks</a></li>
<li><a href="team.php">CDuce team</a></li>
<li><a href="bench.php">Benchmarks</a></li>
<li><a href="examples.php">Examples</a></li>
23
24
<li><a href="memento.php">Memento</a></li>
<li><a href="tutorial.php">Tutorial</a></li>
25
26
27
</ul>
</box>

28
29
30
<box>

<p> CDuce ("seduce") is a new typed functional language with
31
innovative features.</p>
32
33
34
35
36
37
38
39
40

<p> Although CDuce is a general programming language, it features
several characteristics that make it adapted to XML documents
manipulation (transformation, extraction of information, creation of
documents).  
<a href="http://www.w3.org/XML/">XML</a> is a syntax to
describe tree-like documents (aka semi-structured data), and XML
documents often come with a description of their type. The type is
expressed in a system like DTD, or 
41
42
<a href="http://www.w3.org/XML/Schema">XML Schema</a>.
XML types play a central role in CDuce.
43
  </p>
44

45
46
47
</box>

<box>
48
<p> All pages of this site were automatically generated from an XML description of
49
50
the content by <a href="examples.php#site"> the following CDuce program</a>.
</p><p> 
51
52
53
54
55
56
57
58
59
60
61
62
<img src="img/cducepower2.jpg" alt="Powered by CDuce"/></p>
</box>

<toc/>


</navig>

<!-- ********* Main panel ********* -->

<main>

63
64
65
66
67
68
69
70
<box title="What is CDuce ?" link="whatis">

<p> <b>CDuce</b> is modern programming language, adapted to the
manipulation of XML documents.  It is developped by the <a
href="http://www.di.ens.fr/~castagna/EQUIPE"><b>Languages</b></a>
group of ENS in Paris and the <a
href="http://www.lri.fr/bd"><b>Databases</b></a> group of LRI in
Orsay, two <a href="http://www.cnrs.fr">CNRS</a> labs.
71
72
See also the <a href="team.php">CDuce team</a> page,
our <a href="papers.php">technical papers</a>.
73
</p>
74
75
76
77
78

<section title="Online running prototype">
<p> The only available implementation of CDuce is an <a
href="cgi-bin/cduce">online prototype</a>. To get a feeling of CDuce,
you can try the examples and play with them, or have a look at this <a
79
80
href="memento.php">memento</a> which briefly explains the syntax of
the language. We also have some <a href="examples.php">larger
81
examples</a>. </p>
82

83
84
85
<p>We are planning to distribute a first public release in the next
few weeks.</p> 
</section>
86
87
</box>

88
89
90
91
92
<box title="Design and features" link="whatis">
<p> Our point of view and our guideline for the design of CDuce is
that a programming language for XML should take XML types (
DTD, XML Schema, Relax-NG, ...) seriously. We expect the following
benefits:</p>
93

94
95
96
97
98
99
100
101
<ul>
<li> <b>static verifications</b>
(e.g.: ensure that a transformation produces a valid document);</li>
<li> in particular, we aim at <b>smooth and safe</b> compositions
of XML transformations, and incremental programming;</li>
<li> static <b>optimizations</b> and <b>efficient execution model</b>
(knowing the type of a document is crucial to extract information 
efficiently).</li> 
102
103
</ul>

104
105
106
<p>
Some of CDuce peculiar features:
</p>
107
<ul>
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<li> XML objects can be manipulated as first-class citizen values:
     elements, sequences, tags, characters and strings, attribute
     sets; sequences of XML elements can be specified by 
     <b>regular expressions</b>, which also apply to
     characters strings; </li>
<li> functions themselves are <b>first-class</b> values, they
     can be manipulated, stored in data structure, returned by
     a function,...</li>
<li> a powerful <b>pattern matching</b> operation can perform
     complex extractions from sequences of XML elements; </li>
<li> a rich <b>type algebra</b>, with recursive types and arbitrary
     boolean combinations (union, intersection, complement) allows
     precise definitions of data structures and XML types;
     <b>general purpose types</b> and types constructors are taken seriously
     (products, extensible records, arbitrary precision integers with interval
     constraints,  Unicode characters);</li>
<li> <b>polymorphism</b> through a natural notion of <b>subtyping</b>,
     and <b>overloaded functions</b> with dynamic dispatch; </li>
<li> an highly-effective <b>type-driven compilation schema</b>. </li>
127
128
</ul>

129
<p>
130
131
<a href="bench.php">Preliminary benchmarks</a> suggest that despite the
overhead for static type verification, a CDuce
132
133
134
135
136
137
138
program can run faster (30% to 60%) than an equivalent XSLT
style-sheet (we performed benchmarks with
the xsltproc tools from the Gnome libxslt library).
</p>
</box>

<box title="Research directions" link="research">
139

140
141
<p>Our plans concerning the design of the core language
include:</p>
142
<ul>
143
144
145
 <li>a module system to support incremental programming;</li>
 <li>parametric polymorphism;</li>
 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
146
147
</ul>

148
149
150
151
152
153
154
155
156
157
<p>
Apart from the core language design and implementation, 
our research projects include:
</p>
<ul>
<li> integration of a <b>query sub-language</b> into CDuce, using
     types as a primary optimization strategy for request evaluation;</li>
<li> study of <b>security</b> (confidentiality, ...) properties in the
     setting of XML transformations.</li>
</ul>
158

159
<p>
160
We wrote several <a href="papers.php">technical papers</a> about
161
162
163
the language design and its theoretical foundations.
</p>
</box>
164

165
166
<box title="XDuce and CDuce" link="xduce">
<p>
167

168
169
170
171
The starting point of our work on CDuce was the
<a href="http://xduce.sourceforge.net/">XDuce</a> language developped
at the UPenn DB group. Many of CDuce features originate from XDuce.
Some of our achievements:
172

173
174
175
176
177
178
179
180
181
182
</p>
<ul>
<li>integration of first-class and overloaded functions, arbitrary boolean
    connectives, and extensible (or not) records, to the semantic
    definition of subtyping;</li>
<li>a subtyping algorithm without backtracking;</li>
<li>extending pattern matching to capture non consecutive
    subsequences; removing tail condition for exact matching
    (they arrived independently to another solution);</li>
<li>efficient evaluation model that takes profit of static type information;</li>
183
</ul>
184
185
186
187
188
189
<p>
Of course, the work on XDuce continued during our, and they
developped nice ideas: mixed attribute-element types (same
expressive power as our records, but they can sometimes avoid exponential
explosion where we cannot); powerful filter operation.
</p>
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
</box>

<box title="Related links" link="links">
<ul>
<li> <link url="http://www.research.avayalabs.com/user/wadler/xml/"
title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
</li> </ul> </box>


<meta>
<p>
<a href="comeon.htm">
<img style="border:0;width:88px;height:31px"
     src="img/cducepower3.png" 
     alt="Powered by CDuce"/>
</a>

207
<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
208
209
210
211
212
<img style="border:0;width:88px;height:31px"
     src="http://www.w3.org/Icons/valid-xhtml10"
     alt="Valid XHTML 1.0!"/>
</a>

213
<a href="http://jigsaw.w3.org/css-validator/validator?uri=http://www.cduce.org">
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<img style="border:0;width:88px;height:31px"
     src="http://jigsaw.w3.org/css-validator/images/vcss" 
     alt="Valid CSS!"/>
</a>

<a href="http://www.ens.fr">
<img style="border:0"
     src="img//symbENSmio.gif"
     alt="ENS" title="ENS"/>
</a>

<a href="http://www.u-psud.fr">
<img style="border:0" 
     src="img//symbP11mio.gif" 
     alt="Paris 11" title="Paris 11"/>
</a>

<a href="http://www.cnrs.fr">
<img style="border:0" 
     src="img//symbCNRSmio.gif" 
     alt="CNRS" title="CNRS"/>
</a>
</p>
<p>
238
<a href="mailto:Alain.Frisch@ens.fr">Webmaster</a> -
239
<a href="plan.php">Site map</a>
240
241
242
243
244
</p>
</meta>

</main>
</page>