From: Stephen Leake <Stephe.Leake@nasa.gov>
Subject: Re: Custom model in gtkada?
Date: Thu, 29 Jun 2006 13:11:12 -0400
Date: 2006-06-29T13:11:12-04:00 [thread overview]
Message-ID: <uhd23yjin.fsf@nasa.gov> (raw)
In-Reply-To: 10aj6ifazzw9q$.1ks15eefzi4kn.dlg@40tude.net
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
>> How many GUI programs have you written? With how many different toolkits?
>>
>> I've used Visual Basic (essentially tagged, I think :), Borland's C++
>> framework (tagged/dispatching), Windex (Ada tagged), GWindows (mixed
>> tagged/pointers), and Gtk (pointers).
>
> I used MACRO-11/Asynchronous System Traps + full-duplex terminal driver, (I
> guess, it should be classified as callbacks (:-)), FORTRAN/FMS,
> Ada83/C/TPU, C curses, Borland Turbo Pascal and later Delphi, C/C++
> X11/Open Look, ANSI C LabVindows/CVI, Ada/C++ Windows API, LabView, Diadem
> (graphical languages), now GtkAda.
Excellent; we have some experience in common.
>> I think Gtk is the best model, although the C underpinnings make
>> things difficult sometimes. In particular, it is difficult to detect
>> some errors at compile time, that the fully Ada systems can detect. At
>> root, the C pointers are not strongly typed.
>
> I don't see how Ada could help there. An event is either handled or not.
> "Event" is not an Ada term, so the compiler cannot check anything. An
> abstract primitive subprogram is.
An Ada pointer to a subprogram is also strongly typed; that's what's
missing in the C code. You can easily specify a pointer to a
subprogram with the wrong parameter profile. If you are lucky, the
error will be caught at runtime, with a sort-of-helpful error message.
> BTW, Gtk_Tree_Model is a clear candidate to become an interface. Thanks to
> Maxim Reznik, I made an abstract tagged type from his code. It works fine
> by now.
Yes, there are many places where GtkAda can be made better thru Ada's
typing mechanisms.
> 1. There are many communication / synchronization / notification
> mechanisms. Among them events are not necessarily the best.
Well, of course. But that's not a very helpful statement.
For the specific case of windowing Graphical User Interfaces, I think
events are the best. For many other applications, they are not.
> 2. I don't see how events may influence the choice between pointers to
> subprograms and primitive operations.
You are correct, that is an orthogonal choice.
> 3. I designed soft-real time GUI libraries for Windows, where control over
> resources and multitasking was essential. Especially because the data rates
> (1-10ms) were sufficiently higher than the visualization rates (100ms). I
> don't think that event/callback mindset is any good for such things. At
> least it would require a lot of acrobatics.
Clearly you don't generate GUI events for every real-time data point.
What is better than events, for this application, in your opinion? And
most importantly, why?
>>> Another point, a list of pointers to subprograms is in no way better than a
>>> list of tagged objects (with primitive subprograms).
>>
>> Why?
>>
>> I would find a list of tagged objects confusing.
>
> As I understood it, the point was made that procedures are good to chain a
> list of event handlers. I see no difference between maintaining a list of
> procedures vs. a list of handlers (objects). They are equivalent.
Ok, at the level of "maintain a list", yes, they are equivalent.
--
-- Stephe
next prev parent reply other threads:[~2006-06-29 17:11 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-13 18:01 Custom model in gtkada? Dmitry A. Kazakov
2006-06-13 19:53 ` M E Leypold
2006-06-14 7:17 ` Dmitry A. Kazakov
2006-06-14 21:00 ` Maxim Reznik
2006-06-15 7:38 ` Dmitry A. Kazakov
2006-06-15 15:31 ` Georg Bauhaus
2006-06-15 16:24 ` Ed Falis
2006-06-15 18:44 ` M E Leypold
2006-06-15 16:25 ` Dmitry A. Kazakov
2006-06-17 15:13 ` Georg Bauhaus
2006-06-17 16:44 ` Dmitry A. Kazakov
2006-06-22 7:16 ` Emmanuel Briot
2006-06-22 8:31 ` Dmitry A. Kazakov
2006-06-22 12:08 ` Emmanuel Briot
2006-06-23 12:32 ` Stephen Leake
2006-06-23 13:58 ` Dmitry A. Kazakov
2006-06-29 17:11 ` Stephen Leake [this message]
2006-06-30 12:29 ` Dmitry A. Kazakov
2006-07-02 15:17 ` Stephen Leake
2006-07-03 18:23 ` Dmitry A. Kazakov
2006-07-04 13:51 ` Stephen Leake
2006-07-05 13:06 ` Dmitry A. Kazakov
2006-07-06 7:10 ` Stephen Leake
2006-06-23 16:59 ` Jeffrey R. Carter
2006-06-23 17:37 ` Ed Falis
2006-06-23 18:11 ` Dmitry A. Kazakov
2006-06-29 17:20 ` Stephen Leake
2006-06-29 20:08 ` Jeffrey R. Carter
2006-06-30 10:28 ` Alex R. Mosteo
2006-06-30 16:07 ` Stephen Leake
2006-06-30 19:45 ` Jeffrey R. Carter
2006-06-30 22:41 ` Randy Brukardt
2006-07-01 5:11 ` Jeffrey R. Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox