On Saturday, July 31, 2010 at 6:01, Frank Heckenbach wrote:
For the 3 big things I mentioned, I know C++ has them already. I don't know if Ada does, perhaps you can give us some information here, e.g., is its object model comparable to those GPC supports or that of C++;
I am not familiar with objects in GPC, and only tangentially familiar with C++ (i.e., have not done any serious programming in it). However, the short answer is yes; objects are called "tagged types" in Ada.
There is a guide that discusses comparable Ada and C++ features here:
http://www.adahome.com/Ammo/Cplpl2Ada.html
or more nicely formatted here:
http://home.agh.edu.pl/~jpi/download/ada/guide-c2ada.pdf
It has a section devoted to the Ada object model:
http://www.adahome.com/Ammo/Cplpl2Ada.html#3
(Note that this guide discusses Ada 95, which superceded the original Ada 83, and has itself been superceded by Ada 2005. As such, it is a bit out of date, although language revisions have been kept backward-compatible. Ada undergoes periodic improvements; the next language revision is scheduled for 2012.)
does Ada supported exception handling and how;
Yes; see:
http://www.adahome.com/Ammo/Cplpl2Ada.html#1.2.7
does it support something like templates (IOW, how can one implement, say, a generic list, applicable to any given type, with strong type-checking).
Yes; templates are called "generics" in Ada. See:
http://www.adahome.com/Ammo/Cplpl2Ada.html#4
Packed arrays/records and array slices can be implemented in C++ code with moderate effort....
Indeed, any language may be used as the intermediate for GPC. However, I would expect that the effort required to write a translator would vary, depending on the closeness of the mapping between GPC and that language. My impression is that C++ doesn't map particularly well to Pascal's type structure (subranges, sets, packed structures), and while that may be overcome with moderate effort, as you say, that effort may be less with a different choice of intermediate language. Granted, though, that this mapping is just one of several variables influencing that choice.
I fear this might only be true for more traditional Pascal, while I stated that I'm particularly interested in more "modern" features that I know from C++. Of course, if Ada also supports them, it would make it more interesting.
"Modern" features, such as templates and exception handling, have been present in Ada from the beginning (1983). :-)
-- Dave