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 156
|
<!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>Scientific Interface Definition Language (SIDL)</TITLE>
<META NAME="description" CONTENT="Scientific Interface Definition Language (SIDL)">
<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="node18.html">
<LINK REL="previous" HREF="node16.html">
<LINK REL="up" HREF="node15.html">
<LINK REL="next" HREF="node18.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html742"
HREF="node18.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html736"
HREF="node15.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html730"
HREF="node16.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html738"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html740"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html743"
HREF="node18.html">Benefits to Customers</A>
<B> Up:</B> <A NAME="tex2html737"
HREF="node15.html">Introduction</A>
<B> Previous:</B> <A NAME="tex2html731"
HREF="node16.html">Babel Facilitates Language Interoperability</A>
<B> <A NAME="tex2html739"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html741"
HREF="node317.html">Index</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION01120000000000000000"></A><A NAME="559"></A>
<BR>
Scientific Interface Definition Language (SIDL)
</H1>
<P>
In order to support multi-language interoperability, Babel relies
on the specification of interfaces in the
Scientific Interface Definition Language (SIDL) (pronounced
``SIGH-dull''). SIDL is similar to COM<A NAME="560"></A> and CORBA<A NAME="561"></A> IDLs,
but was designed with an emphasis on scientific computing.
Specifically, SIDL currently supports dynamic multi-dimensional arrays and
has built-in complex numbers. It will acquire
a set of directives to aid in the description of
massively parallel distributed objects and additional syntax for specifying
interface behavior.
<P>
When it comes to deciding what programming idioms
to support across all languages and which ones to reject,
SIDL strikes a careful balance between minimalism and
completeness. It is <SPAN CLASS="textit">not</SPAN> a lowest common denominator solution.
SIDL is minimal to keep the learning curve as low as possible.
It is complete so developers do not feel
constrained in how to express their solutions.
<P>
SIDL is object-oriented<A NAME="563"></A>. Its object model closely resembles that of
Java and Objective C. In this model there is single inheritance of
implementation and multiple inheritance of interfaces. It supports the
typical notions of virtual, static, and final methods. SIDL also
provides a basic set of features by defining and implementing the basic
types for interfaces, classes and exceptions. All types implicitly
inherit from these basic types.
<P>
The most important concept to grasp about SIDL is that SIDL only
defines a public interface that other programs may use to access your code.
As a result, all methods defined as part of a SIDL file are public,
if you do not want a method to be globally useable, simply do not
define it in your SIDL file. Furthermore, all object and class data
is implicitly private. There is no way to declare or define data in a
SIDL file. Instead, any data required for your code should be declared
in the implementation language files. This way, the languages that use
your code through Babel may create your objects and pass them around
just like any normal piece of data, but they may only access the data
through the provided interface.
<P>
SIDL also has a complete set of fundamental data types<A NAME="564"></A>, from
booleans to double precision complex numbers. It also supports
more sophisticated types such as enumerations, strings,
objects, and dynamic multi-dimensional arrays.
<P>
SIDL is still a work in progress.
Of particular research interest are directives that will be
added for parallel distributed object interaction and
features to specify behavioral semantics associated with
the interfaces.
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html742"
HREF="node18.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html736"
HREF="node15.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html730"
HREF="node16.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html738"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html740"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html743"
HREF="node18.html">Benefits to Customers</A>
<B> Up:</B> <A NAME="tex2html737"
HREF="node15.html">Introduction</A>
<B> Previous:</B> <A NAME="tex2html731"
HREF="node16.html">Babel Facilitates Language Interoperability</A>
<B> <A NAME="tex2html739"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html741"
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>
|