1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Babel in a Nutshell</TITLE>
<META NAME="description" CONTENT="Babel in a Nutshell">
<META NAME="keywords" CONTENT="users_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="users_guide.css">
<LINK REL="next" HREF="node3.html">
<LINK REL="previous" HREF="node1.html">
<LINK REL="up" HREF="node1.html">
<LINK REL="next" HREF="node3.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html377"
HREF="node3.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html371"
HREF="node1.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html365"
HREF="node1.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html373"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html375"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html378"
HREF="node3.html">Scope of this Manual</A>
<B> Up:</B> <A NAME="tex2html372"
HREF="node1.html">Preface</A>
<B> Previous:</B> <A NAME="tex2html366"
HREF="node1.html">Preface</A>
<B> <A NAME="tex2html374"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html376"
HREF="node317.html">Index</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00110000000000000000"></A><A NAME="s:preface-nutshell"></A><A NAME="278"></A>
<BR>
Babel in a Nutshell
</H1>
<P>
Babel is a tool that enables software written in different
languages to communicate. It accomplishes this task by
using an Interface Definition Language (IDL) similar to
COM and CORBA. Babel relies on the Scientific Interface Definition
Language (SIDL) that is specifically tuned for scientific applications.
By expressing software interfaces, or APIs<A NAME="tex2html1"
HREF="footnode.html#foot279"><SUP><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A>, in SIDL the appropriate glue code stubs and
skeletons can be generated to facilitate language interoperability.
Features unique to SIDL are:
<UL>
<LI>Dynamic multi-dimensional arrays
</LI>
<LI>Complex numbers (e.g. <SPAN CLASS="MATH"><IMG
WIDTH="44" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img2.png"
ALT="$2 + 3i$"></SPAN>)
</LI>
<LI>In-process optimizations
</LI>
<LI>Special directives for large-scale parallel distributed programming (future)
</LI>
<LI>Syntax for specifying interface behavior (future)
</LI>
</UL>
<P>
Babel enables true object-oriented techniques even in
non object-oriented languages. The object model that SIDL
supports is similar to Java and Objective C where a class
can extend at most one class, but implement many interfaces.
In C++ speak, an interface is simply a class of all pure-virtual
methods. Furthermore, if library developers want object-oriented
features but are required to be 100% ANSI C compliant,
Babel can meet those constraints. Although the Babel code
generator is implemented in Java, the runtime libraries and
generated files for C bindings are 100% ANSI C compliant.
<P>
Babel can be used as the basis for a component framework, but it is
<SPAN CLASS="textit">not</SPAN> a complete framework by itself. We've added a tiny CCA-compliant framework, called
<SPAN CLASS="textit">Decaf</SPAN><A NAME="284"></A><A NAME="285"></A>, in our examples/ directory.
Decaf demonstrates how Babel can be used to implement a component
framework.
<P>
SIDL is also a useful communications tool for code development teams since
it only expresses the public API. That is, implementation details, which
often prove distracting during collaborative design, can be safely avoided
by restricting discussions to the interfaces described in SIDL.
Furthermore, since SIDL is simple and clean it can be used by Computer
Scientists, Math Programmers, and
Application Scientists to debate APIs even using only email.
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html377"
HREF="node3.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html371"
HREF="node1.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html365"
HREF="node1.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html373"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html375"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html378"
HREF="node3.html">Scope of this Manual</A>
<B> Up:</B> <A NAME="tex2html372"
HREF="node1.html">Preface</A>
<B> Previous:</B> <A NAME="tex2html366"
HREF="node1.html">Preface</A>
<B> <A NAME="tex2html374"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html376"
HREF="node317.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<br><br>babel-0.10.2<br>users_guide Last Modified 2005-03-23<br><br><a href="http://www.llnl.gov/CASC/components">http://www.llnl.gov/CASC/components</a><br><a href="mailto:components@llnl.gov">components@llnl.gov</a>
</ADDRESS>
</BODY>
</HTML>
|