File: node2.html

package info (click to toggle)
babel 0.10.2-1
  • links: PTS
  • area: contrib
  • in suites: sarge
  • size: 43,932 kB
  • ctags: 29,707
  • sloc: java: 74,695; ansic: 73,142; cpp: 40,649; sh: 18,411; f90: 10,062; fortran: 6,727; python: 6,406; makefile: 3,866; xml: 118; perl: 48
file content (155 lines) | stat: -rw-r--r-- 5,982 bytes parent folder | download | duplicates (2)
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>
 &nbsp; <B>  <A NAME="tex2html374"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <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>
 &nbsp; <B>  <A NAME="tex2html374"
  HREF="node14.html">Contents</A></B> 
 &nbsp; <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>