comp.lang.ada
 help / color / mirror / Atom feed
From: Martin Krischik <krischik@users.sourceforge.net>
Subject: Re: New Ada portable GUI Library?
Date: Tue, 15 Jan 2008 17:05:44 +0100
Date: 2008-01-15T17:05:44+01:00	[thread overview]
Message-ID: <478cd9d8$1@news.post.ch> (raw)
In-Reply-To: <4744d0de-5739-4e6c-a338-a8f95217be14@l1g2000hsa.googlegroups.com>

Ludovic Brenta schrieb:

> Martin Krischik wrote:
>> Ludovic Brenta schrieb:
>>
>>> Martin Krischik wrote:
>>>> I have another suggestion: A GUI Library based on OpenStep [1].
>>> [...]
>>>> [1] http://en.wikipedia.org/wiki/OpenStep
>>> Do you mean a reimplementation of the OpenStep specification in Ada,
>>> or an Ada binding to GNUstep (http://www.gnustep.org) ?
>> The later. AFAIK GNUStep uses only a small message based dynamically
>> typed API with a plain C specification. Qt and Gtk+ use huge OO API's in
>> C++ or some kind of strange OO-C.
>>
>> To make use of that API easier special languages like Objective-C and
>> Objective-C++ are used. Those languages can be implemented by a
>> preprocessor (currently they are not) so I believe creating an
>> Objective-Ada preprocessor should be possible - especially since Ada
>> does not use '[' ']' and '@' ;-).
> 
> An "Objective-Ada" preprocessor is unnecessary because Ada is already
> object-oriented, and now even has interfaces similar to Objective-C's
> protocols. Therefore, one would only need a binding generator that
> would produce Ada specifications with pragma Import statements from
> Objective-C specifications. Of course, such a binding generator would
> have to know how the particular Objective-C compiler mangles names.

Same for C++ - still they created Objective-C++. Read this Article to
see why a static mapping won't make any sense:

http://objc.toodarkpark.net/coreobjc.html#1522

Almost all the work is done by just one function: objc_msgSend. Mind
you, just saw a little problem here. objc_msgSend is the most important
function from OpenStep/GNUStep and it's a vararg function :-| .

> The stumbling blocks would be to implement Objective-C's reflection,
> dynamic typing and garbage collection in Ada. In particular,
> reflection and dynamic typing are alien to Ada's philosophy.

You don't - you use the objc runtime which should provide all those via
 plain C functions.

> 
>> We would not be the first: Google-ing shows that Objective-TCL [1],
>> Objective-Perl [2] already exists and Objective-Cobol and
>> Objective-Fortran are rumoured [3] - even talk about Objective-Ada isn't
>> new [3].
> 
> That was before Ada 95 added tagged types.

:-)

>> The advantage is that once we have an preprocessor the hole library
>> becomes available. That's unlike Gtk or Qt where we have to write a
>> separate binding for each class we want to use and where - forever - we
>> will be hobbling behind.
> 
> I don't think the preprocessor you speak of would solve anything; the
> binding generator might but beware of the stumbling blocks I
> mentioned.

But it will solve the biggest problem: the endless amount of methods. A
GUI lib easily got 100 classes. Defining 100 classes is doable - but
each class will have what about 20 methods. Yes 20 is realistic for GUI
lib. That would be 2000 pragma imports - endless work.

But here comes the beauty of OpenStep: all method calls are done by
objc_msgSend.

The Objective-XXX call:

[anObject setOrigin:0.0 :0.0];

becomes:

objc_msgSend (anObject, "setOrigin", 0.0, 0.0);

And yes: that is a string. And no: it's not as slow as you think - there
are caches employed to speed things up.

>>> The latter
>>> would require both the Ada and Objective-C runtime libraries...
>> Indeed - but that is not different from Gtk+ and Qt approach. And bare
>> metal is only feasible for Windows but not for X11.
> 
> OK, Qt requires a C++ runtime like GNUstep requires an Objective-C
> runtime. However, GTK+ only requires the C runtime

That might have been the original idea, but soon they needed Glib2 - to
make things easier. And then a few more: ATK, Cairo, Fontconfig,
FreeType, Pango, Poppler, libPNG, libXML, libiconv, librsvg, pkg-config
as of my last counting:

http://gnuada.sourceforge.net/pmwiki.php/Main/PartnerProjects

Of course, you would not notice in Debian as those libs are all part of
the default installation - but you do on for example Solaris.

> and that's
> intentional: one of the design goals of GTK+ from the onset is to
> facilitate bindings to other languages.

Ahh, "design goals" - Well Gtk+ is full of broken promises.

Martin
-- 
mailto://krischik@users.sourceforge.net
Ada programming at: http://ada.krischik.com



  reply	other threads:[~2008-01-15 16:05 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-12 13:37 New Ada portable GUI Library? Tomek Walkuski
2008-01-12 15:19 ` Martin Krischik
2008-01-12 18:12   ` Lucretia
2008-01-12 20:40     ` Tomek Walkuski
2008-01-12 23:01       ` Lucretia
2008-01-13  5:17         ` Vadim Godunko
2008-01-13  9:07           ` Lucretia
2008-01-13 10:49             ` Vadim Godunko
2008-01-16  9:45               ` I. Levashew
2008-01-13  8:13         ` Dmitry A. Kazakov
2008-01-13  9:11           ` Lucretia
2008-01-13 10:06             ` Dmitry A. Kazakov
2008-01-13 10:25               ` Tomek Walkuski
2008-01-13 12:36                 ` Dmitry A. Kazakov
2008-01-13 19:58                   ` Michael Bode
2008-01-13 21:00                     ` Dmitry A. Kazakov
2008-01-13 21:53                       ` Michael Bode
2008-01-14  9:11                         ` Dmitry A. Kazakov
2008-01-13 23:08                     ` Gary Scott
2008-01-13 23:31                       ` Michael Bode
2008-01-13 23:50                         ` Gary Scott
2008-01-14 19:12                           ` Michael Bode
2008-01-13 11:27               ` Lucretia
2008-01-13 11:29               ` Lucretia
2008-01-15  7:34               ` Martin Krischik
2008-01-15  8:38                 ` Ludovic Brenta
2008-01-15  8:54                   ` Martin Krischik
2008-02-11 22:10               ` Martin
2008-02-12 18:35                 ` Martin Krischik
2008-02-12 21:43                   ` Tomek Walkuski
2008-01-13 11:14           ` Martin Krischik
2008-01-13 11:31             ` Lucretia
2008-01-14 17:58             ` Ben
2008-01-14 18:21               ` Dmitry A. Kazakov
2008-01-14 20:47                 ` Gautier
2008-01-14 21:32                   ` Dmitry A. Kazakov
2008-01-13 13:28         ` Stephen Leake
2008-01-13 14:14           ` Pascal Obry
2008-01-13 14:22             ` Pascal Obry
2008-01-15  7:54               ` Martin Krischik
2008-01-16  7:54                 ` Brian May
2008-01-16  8:47                   ` Dmitry A. Kazakov
2008-01-16  8:52                   ` Martin Krischik
2008-01-16 18:26                     ` tmoran
2008-01-13 22:22           ` Lucretia
2008-01-14 10:07             ` Stephen Leake
2008-01-12 18:36 ` (slightly OT) Open Source licences? (was: Re: New Ada portable GUI Library?) framefritti
2008-01-12 18:57   ` Maciej Sobczak
2008-01-12 19:27   ` Tomek Walkuski
2008-01-12 19:39   ` (slightly OT) Open Source licences? Gautier
2008-01-12 20:26   ` Dmitry A. Kazakov
2008-01-12 21:58   ` Robert A Duff
2008-01-13  0:04   ` (slightly OT) Open Source licences? (was: Re: New Ada portable GUI Library?) Georg Bauhaus
2008-01-12 22:37 ` Georg Bauhaus
2008-01-13 11:04 ` New Ada portable GUI Library? Gautier
2008-01-15  7:56   ` Martin Krischik
2008-01-15 17:41     ` Gautier
2008-01-16  8:16     ` tmoran
2008-01-16  8:56       ` Martin Krischik
2008-01-16 19:34       ` Gautier
2008-01-16 22:51         ` Randy Brukardt
2008-01-17 20:32           ` Gautier
2008-01-18  1:41             ` Robert A Duff
2008-01-18 17:53               ` tmoran
2008-01-18 18:59                 ` Robert A Duff
2008-01-18 19:28                   ` Pascal Obry
2008-01-20 22:38                     ` Robert A Duff
2008-01-20  1:38                 ` Jerrid Kimball
2008-01-20 12:30                   ` Ludovic Brenta
2008-01-20 13:40                   ` Stephen Leake
2008-01-20 14:36                     ` Dmitry A. Kazakov
2008-01-15  8:17 ` Martin Krischik
2008-01-15  9:14   ` Ludovic Brenta
2008-01-15 10:39     ` Martin Krischik
2008-01-15 14:01       ` Ludovic Brenta
2008-01-15 16:05         ` Martin Krischik [this message]
2008-01-15 17:31           ` Ludovic Brenta
2008-01-16  8:28             ` Martin Krischik
2008-01-17  2:21   ` I. Levashew
2008-01-17  7:34     ` OpenStep/GNUStep/Cocoa (Was: New Ada portable GUI Library?) Martin Krischik
2008-01-17  9:06       ` Ivan Levashew
2008-01-17 10:25         ` Martin Krischik
2008-01-18  3:28           ` Ivan Levashew
2008-01-18  7:24             ` Martin Krischik
2008-01-15 21:51 ` New Ada portable GUI Library? Phaedrus
2008-01-16  0:04   ` Jeffrey R. Carter
2008-01-16  0:20     ` Phaedrus
2008-01-16  1:09       ` Randy Brukardt
2008-01-16  1:47         ` Phaedrus
2008-01-20 14:07 ` Andre
2008-01-21 23:14 ` Frederik Sausmikat
2008-01-27 11:26   ` Lucretia
2008-01-27 16:47     ` Gary Scott
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox