    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: C++/CLI, Ecma TC39/TG5,and SC22/WG21</title>
        <link>https://members.accu.org/index.php/journals/206</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 16, #2 - Apr 2004 + Programming Topics</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c103/">162</a>
                    (8)
<br />

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c65/">Programming</a>
                    (877)
<br />

                                            <a href="https://members.accu.org/index.php/journals/c103-65/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/journals/c103+65/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;C++/CLI, Ecma TC39/TG5,and SC22/WG21</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 01 April 2004 22:53:48 +01:00 or Thu, 01 April 2004 22:53:48 +01:00</p>
<p><strong>Summary:</strong>&nbsp;<p>There have been many languages for writing applications, but
relatively few foundation platforms which support applications that
are written in various different languages. We've had assembler
(proprietary), then C (an ISO standard), and now we have the Common
Language Infrastructure (CLI). The CLI standard is ISO/IEC 23271;
the same content is also available online at <a href=
"http://www.ecma-international.org/publications/standards/Ecma-335.htm"
target=
"_top">http://www.ecma-international.org/publications/standards/Ecma-335.htm</a>.</p>
</p>
<p><strong>Body:</strong>&nbsp;<p>For years, C++ has been the most popular language for
applications and middleware, but it has usually been hosted on a C
base library. Very seldom is a C++ base library made available for
use by other diverse languages. For example, libraries that make
extensive use of templates (like the standard C++ library does) are
difficult or impossible to be used by languages other than C++.</p>
<p>The important features of CLI as a base library have historical
roots in a variety of previous technologies:</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p>Robust (strongly typesafe, like Ada)</p>
</li>
<li>
<p>Inheritance (single, like Smalltalk)</p>
</li>
<li>
<p>Garbage collected (like Smalltalk)</p>
</li>
<li>
<p>Hardware-oriented datatypes (like C)</p>
</li>
<li>
<p>Twos-complement (8-16-32-64, like all modern PCs and
workstations)</p>
</li>
<li>
<p>Exception-handling (like Ada and C++)</p>
</li>
<li>
<p>Object (single root of all inheritance, like Smalltalk)</p>
</li>
<li>
<p>Universal Intermediate Language, or &quot;IL&quot; (with JIT compiler,
like ANDF)</p>
</li>
<li>
<p>Shared libraries available to all languages (like C)</p>
</li>
</ul>
</div>
<p>CLI provides a base which can support applications written in
ECMAScript (Javascript, Jscript), COBOL, Perl, Java, C#, etc., as
well as C++.</p>
<p>CLI types are allocated into the CLI heap, using accurate
garbagecollection (&quot;GC&quot;). In C++ these are the &quot;managed types&quot;.
Microsoft's first extensions of C++ for CLI were called &quot;managed
C++&quot;. Programmers complained about the awkward &quot;bolt-on&quot; feel and
asked for a smoother integration. The new integrated design is
known as C++/CLI. Microsoft offered the C++/CLI spec to Ecma
International for standardization within the Ecma process. Ecma
Technical Committee 39 (TC39) is the group which has already
standardized ECMAScript, C#, and CLI, and is currently
standardizing Eiffel. Within TC39, Task Group 5 (TG5) is
standardizing C++/CLI; the author is convener of TG5.</p>
<p>Here are a few comparisons between development within Ecma
versus the national-body process within ISO/IEC JTC 1. The members
of Ecma are companies; they include Apple, HP, Intel, IBM, and
Microsoft. Ecma is supported by one fairly large annual fee per
member company, and its standards are then given away for free via
internet or CD-ROM. (Nonprofit organisations such as universities
and government laboratories can join Ecma for free.) The members of
ISO, IEC, JTC 1, and SC22 are national standards bodies.
National-body development is typically supported by a mixture of
fees for documents and fees for individual participation.
Development within Ecma is usually quicker than development within
JTC 1. The original CLI and C# standards were developed in about
one year, using monthly face-to-face meetings with a teleconference
midway between each face-to-face. The schedule of TG5 is somewhat
less accelerated; our meetings are spaced about six weeks apart,
with occasional teleconferences.</p>
<p>TG5 met first in College Station (Texas), then in Kona (Hawaii);
we will meet early March in Melbourne (Australia). Participant
companies include Microsoft, IBM, Plum Hall, EDG, and Dinkumware.
Invited experts have included Bjarne Stroustrup, Gabriel Dos Reis,
and Jon Jagger. TG5 has established liaison with SC22/WG21, whereby
members of WG21 national-body C++ panels can participate in a TG5
reflector, receive TG5 documents, and attend TG5 meetings. Since
WG21 is actively engaged in the next revision of the ISO C++
standard (&quot;C++0x&quot;), TG5 wants to avoid pre-empting or conflicting
with that ongoing revision; the liaison process provides feedback
to TG5 in this regard.</p>
<p>C++/CLI tries to avoid breaking or changing the behaviour of
alreadyexisting C++ code. We have used creative methods for giving
the C++/CLI programmer a first-class ease-of-use while minimizing
(perhaps eliminating) clashes with existing user-space identifiers.
As of February 2004, the C++/CLI draft still clashes with one
identifier, namely the keyword <tt class="literal">gcnew</tt>. In
C# any name can be prefixed with &quot;<tt class="literal">@</tt>&quot; to
indicate &quot;I'm not a reserved word, I'm an identifier&quot;, such as
<tt class="literal">@gcnew</tt>. This allows the use of CLI fields,
enums, etc., written in various other languages which don't use the
same keywords. Whether C++/CLI will use the &quot; <tt class=
"literal">@</tt>&quot; like C#, or a different syntax, is still being
decided.</p>
<p>C++ has always been a multi-paradigm language, and C++/CLI will
add even more choices. C++/CLI can be used as a producer language
to create CLI base libraries and middleware which can be used by
the full range of CLI consumer languages. In this paradigm, we aim
to equal the expressiveness and efficiency of C#. But C++/CLI can
also be used as a consumer language for CLI applications, using the
full power of native C++ and linking with any APIs that are
currently available to native C++. Even in the latter case, the
C++/CLI software can still publish CLI APIs to any other CLI
language. (But the native C++ parts are likely to be unverifiable,
and therefore unsuitable for use in security-conscious
applications.)</p>
<p>In this latter paradigm, the unmanaged and managed C++ can
seamlessly call each other without cumbersome &quot;glue harnesses&quot; like
JNI. The intent is to integrate native C++ with C++ which runs on a
vendorneutral &quot;virtual machine&quot; (i.e. a Virtual Execution System or
VES, as it's called in the CLI standard). One challenging aspect of
this integration arises on platforms where one or more of the
native C++ types are different in size and/or representation from
the standardized CLI types; this is a front-burner issue in TG5
today.</p>
<p>Some of the issues considered by TG5 are enhancements that are
conceptually simple but make a noticeable difference in
ease-of-use. For example, TG5 has requested WG21 to consider
changes that would allow two consecutive &quot;close-angle-braces&quot; at
the end of template parameter lists such as <tt class=
"literal">list&lt;vector&lt;int&gt;&gt;</tt>, because the C#
committee has chosen to implement the new &quot;generics&quot; parameter
lists with this ease-of-use enhancement.</p>
<p>Plum Hall is currently developing a test suite for C++/CLI,
similar in scope and technique to our existing suites for C, C++,
Java, and C#. TG5's current target is completion of the C++/CLI
standard by September 2004, about one year from the initial
creation of TG5. This is not an imposed requirement, and can be
changed by decision of TG5, but reflects our current estimate.</p>
<p>Your TG5 convener welcomes your comments; please contact
<tt class="email">&lt;<a href=
"mailto:tplum@plumhall.com">tplum@plumhall.com</a>&gt;</tt>.</p>
<p>[Dedicated to the memory of David Kelly, long-time resident of
Oxford, who was still alive when WG21 last met in Oxford.]</p>
<div class="sidebar">
<p>This feature was provided by Microsoft as part of their
sponsorship of the Spring Conference 2004. ACCU would like to thank
Microsoft for their support of this event.</p>
</div></p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
