/[svn]/web/index.xml
ViewVC logotype

Contents of /web/index.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 898 - (show annotations)
Tue Jul 10 18:10:00 2007 UTC (5 years, 11 months ago) by abate
File MIME type: text/xml
File size: 10590 byte(s)
[r2003-12-01 16:34:26 by afrisch] Handle large files

Original author: afrisch
Date: 2003-12-01 16:34:26+00:00
1 <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
2 <page name="index">
3
4 <title>Home page</title>
5 <banner>
6 <img title="CDuce" src="img/cduce_logo.jpg" width="400" height="206"
7 alt="CDuce"/>
8 </banner>
9
10 <left>
11 <p>On this page:</p>
12 <boxes-toc/>
13 <p>Under this page:</p>
14 <pages-toc/>
15 </left>
16
17 <external href="/cgi-bin/cduce" title="Online demo" name="proto"/>
18 <include file="download.xml"/>
19 <include file="bench.xml"/>
20 <include file="papers.xml"/>
21 <include file="documentation.xml"/>
22 <include file="examples.xml"/>
23 <include file="hacking.xml"/>
24 <include file="mailing.xml"/>
25 <include file="team.xml"/>
26 <include file="sitemap.xml"/>
27
28
29 <left>
30
31 <p> CDuce ("seduce") is a new typed functional language with
32 innovative features.</p>
33
34 <p> Although CDuce is a general programming language, it features
35 several characteristics that make it adapted to XML documents
36 manipulation (transformation, extraction of information, creation of
37 documents).
38 <a href="http://www.w3.org/XML/">XML</a> is a syntax to
39 describe tree-like documents (aka semi-structured data), and XML
40 documents often come with a description of their type. The type is
41 expressed in a system like DTD, or
42 <a href="http://www.w3.org/XML/Schema">XML Schema</a>.
43 XML types play a central role in CDuce.
44 </p>
45
46 </left>
47
48 <left>
49 <p> All pages of this site were automatically generated from an XML description of
50 the content by <a href="examples.html#site">the following CDuce program</a>.
51 </p><p>
52 <img src="img/cducepower2.jpg" alt="Powered by CDuce"/></p>
53 </left>
54
55 <box title="Latest News" link="news">
56 <section title="2003, October 26th, Sunday: New addition to papers.">
57 <p>
58 If you want a simple and basic introduction to the theoretical foundations
59 of CDuce, there is a new entry in the <a href="papers.html">papers page</a>: <i>"A Gentle
60 Introduction to Semantic Subtyping"</i>.
61 </p>
62 <br/>
63 </section>
64
65 <section title="2003, October 17th, Friday: CVS publicly available.">
66 <p>
67 You can now download the development version directly from the cvs tree. See instructions at the <a href="download.html">usual place</a>. Be careful, it may not work, and many features are experimental and undocumented.
68 </p>
69 <br/>
70 </section>
71
72
73 <section title="2003, September 23rd, Wednesday: Volunteers sought.">
74 <p>
75 We look for volunteers to prepare an emacs mode for CDuce and to implement a native Win32 or MinGW port. If your are interested please contact
76 us.
77 </p>
78 <br/>
79 </section>
80
81
82 <section title="2003, August 16th, Saturday: Version 0.1.1 released.">
83 <p>
84 This version has several bug-fixes and encodes reference types. You can now use
85 <code>:=</code> and <code>;</code>. It is available at the <a href="download.html">usual place</a>. Try this
86 <a href="http://www.cduce.org/cgi-bin/cduce?example=reference">code</a> on
87 the on-line demo for an example on how to use them, and refer to the
88 <a href="manual_expressions.html#ref">manual pages</a> for more
89 information.
90 </p>
91 <br/>
92 </section>
93 </box>
94
95
96 <box title="What is CDuce ?" link="whatis">
97
98 <p> <b>CDuce</b> is modern programming language, adapted to the
99 manipulation of XML documents. It is developed by the <a
100 href="http://www.di.ens.fr/~castagna/EQUIPE"><b>Languages</b></a>
101 group of ENS in Paris and the <a
102 href="http://www.lri.fr/bd"><b>Databases</b></a> group of LRI in
103 Orsay, two <a href="http://www.cnrs.fr">CNRS</a> labs.
104 See also the <local href="team">CDuce team</local> page,
105 our <local href="papers">technical papers</local>.
106 </p>
107
108 <section title="Getting more information">
109
110 <p>
111 If you want more information about CDuce you can send a mail to
112 <tt>info_at_cduce.org</tt> (replace <tt>_at_</tt> with <tt>@</tt>), or
113 to the most appropriate <a href="mailing.html">CDuce mailing list</a>.
114 </p>
115
116 </section>
117
118 <section title="Online running prototype">
119 <p> To get a feeling of CDuce,
120 you can play with the <local href="proto">on-line prototype</local>,
121 try the examples and modify them. We also have some
122 <local href="examples">larger examples</local>. </p>
123
124 <p>We are planning to distribute a stable release in the next
125 few weeks. To help us prepare this release, you can download a
126 <local href="download">beta version</local>, and send your comments.
127 </p>
128
129 </section>
130 </box>
131
132 <box title="Design and features" link="design">
133 <p> Our point of view and our guideline for the design of CDuce is
134 that a programming language for XML should take XML types (
135 DTD, XML Schema, Relax-NG, ...) seriously. The benefit are the following:</p>
136
137 <ul>
138 <li> <b>static verifications</b>
139 (e.g.: ensure that a transformation produces a valid document
140 <footnote>
141
142 Valid with respect to validity constraints
143 that can be expressed by the type system (thus typically excluding
144 constraints like <a
145 href="http://www.w3.org/TR/REC-xml#sec-attribute-types">ID</a> and
146 <a href="http://www.w3.org/TR/REC-xml#sec-attribute-types">IDREF</a>).
147
148 </footnote>);</li>
149 <li> in particular, we aim at <b>smooth and safe</b> compositions
150 of XML transformations, and incremental programming;</li>
151 <li> static <b>optimizations</b> and <b>efficient execution model</b>
152 (knowing the type of a document is crucial to extract information
153 efficiently).</li>
154 </ul>
155
156 <p>
157 Some features particular to CDuce:
158 </p>
159 <ul>
160 <li> XML objects can be manipulated as first-class citizen values:
161 elements, sequences, tags, characters and strings, attribute
162 sets; sequences of XML elements can be specified by
163 <b>regular expressions</b>, which also apply to
164 characters strings; </li>
165 <li> functions themselves are <b>first-class</b> values, they
166 can be manipulated, stored in data structure, returned by
167 a function,...</li>
168 <li> a powerful <b>pattern matching</b> operation can perform
169 complex extractions from sequences of XML elements; </li>
170 <li> a rich <b>type algebra</b>, with recursive types and arbitrary
171 boolean combinations (union, intersection, complement) allows
172 precise definitions of data structures and XML types;
173 <b>general purpose types</b> and types constructors are taken seriously
174 (products, extensible records, arbitrary precision integers with interval
175 constraints, Unicode characters);</li>
176 <li> <b>polymorphism</b> through a natural notion of <b>subtyping</b>,
177 and <b>overloaded functions</b> with dynamic dispatch; </li>
178 <li> an highly-effective <b>type-driven compilation schema</b>. </li>
179 </ul>
180
181 <p>CDuce is fast, functional,
182 type-safe, and <b>conforms to basic standards</b>: <a href="http://www.unicode.org">Unicode</a>, <a href="http://www.w3.org/XML/">XML</a>, <a href="http://www.w3.org/TR/REC-xml#dt-doctype">DTD</a>,
183 <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces</a> are fully supported, partial support of <a href="http://www.w3.org/TR/xmlschema-1/">XML Schema</a> validation is
184 in alpha testing (and undocumented) while queries are being
185 implemented.
186 </p>
187
188 <p>
189 <local href="bench">Preliminary benchmarks</local> suggest that despite the
190 overhead for static type verification, a CDuce
191 program can run faster (30% to 60%) than an equivalent XSLT
192 style-sheet (we performed benchmarks with
193 the xsltproc tools from the Gnome libxslt library).
194 </p>
195
196 <p>
197 The named CDuce was coined by Francesco Zappa Nardelli.
198 </p>
199
200 </box>
201
202 <box title="Research directions" link="research">
203
204 <p>Our plans concerning the design of the core language
205 include:</p>
206 <ul>
207 <li>interface with other languages and type systems;</li>
208 <li>efficient evaluation strategies, high-level optimizations;</li>
209 <li>a module system to support incremental programming;</li>
210 <li>parametric polymorphism;</li>
211 <li>XML-friendly primitives, to mimic XSLT transformations.</li>
212 </ul>
213
214 <p>
215 Apart from the core language design and implementation,
216 our research projects include:
217 </p>
218 <ul>
219 <li> integration of a <b>query sub-language</b> into CDuce, using
220 types as a primary optimization strategy for request evaluation;</li>
221 <li> study of <b>security</b> (confidentiality, ...) properties in the
222 setting of XML transformations.</li>
223 </ul>
224
225 <p>
226 We wrote several <local href="papers">technical papers</local> about
227 the language design and its theoretical foundations.
228 </p>
229 </box>
230
231 <box title="XDuce and CDuce" link="xduce">
232 <p>
233
234 The starting point of our work on CDuce was the
235 <a href="http://xduce.sourceforge.net/">XDuce</a> language developed
236 at the UPenn DB group. Many of CDuce features originate from XDuce.
237 Some of our achievements:
238
239 </p>
240 <ul>
241 <li>integration of first-class and overloaded functions, arbitrary boolean
242 connectives, and extensible (or not) records, to the semantic
243 definition of subtyping;</li>
244 <li>a subtyping algorithm without backtracking;</li>
245 <li>extending pattern matching to capture non consecutive
246 subsequences; removing tail condition for exact matching
247 (they arrived independently to another solution);</li>
248 <li>efficient evaluation model that takes profit of static type information;</li>
249 </ul>
250 <p>
251 Of course, the work on XDuce continued during our, and they
252 developed nice ideas: mixed attribute-element types (same
253 expressive power as our records, but they can sometimes avoid exponential
254 explosion where we cannot); powerful filter operation.
255 </p>
256
257 </box>
258
259 <box title="Related links" link="links">
260 <ul>
261 <li> <link url="http://www.w3.org/XML/"
262 title="Extensible Markup Language (XML)"> The W3C page on XML. </link>
263 </li>
264 <li> <link url="http://www.research.avayalabs.com/user/wadler/xml/"
265 title="XML: Some hyperlinks minus the hype"> By Philip Wadler. </link>
266 </li>
267 <li> <link url="http://xduce.sourceforge.net/"
268 title="XDuce"> XDuce home page. </link> </li>
269 </ul> </box>
270
271
272 <meta>
273 <p>
274 <a href="comeon.htm">
275 <img style="border:0;width:88px;height:31px"
276 src="img/cducepower3.png"
277 alt="Powered by CDuce"/>
278 </a>
279
280 <a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cduce.org">
281 <img style="border:0;width:88px;height:31px"
282 src="http://www.w3.org/Icons/valid-xhtml10"
283 alt="Valid XHTML 1.0!"/>
284 </a>
285
286 <a href="http://jigsaw.w3.org/css-validator/">
287 <img style="border:0;width:88px;height:31px"
288 src="http://jigsaw.w3.org/css-validator/images/vcss"
289 alt="Valid CSS!"/>
290 </a>
291
292 <a href="http://www.ens.fr">
293 <img style="border:0"
294 src="img//symbENSmio.gif"
295 alt="ENS" title="ENS"/>
296 </a>
297
298 <a href="http://www.u-psud.fr">
299 <img style="border:0"
300 src="img//symbP11mio.gif"
301 alt="Paris 11" title="Paris 11"/>
302 </a>
303
304 <a href="http://www.cnrs.fr">
305 <img style="border:0"
306 src="img//symbCNRSmio.gif"
307 alt="CNRS" title="CNRS"/>
308 </a>
309 </p>
310 <p>
311 <a href="mailto:Alain.Frisch@ens.fr">Webmaster</a> -
312 <local href="sitemap">Site map</local>
313 </p>
314 </meta>
315
316 </page>

CVS Admin">CVS Admin
ViewVC Help
Powered by ViewVC 1.1.5